Sisukord:

4-20ma generaator/tester Arduino abil: 8 sammu
4-20ma generaator/tester Arduino abil: 8 sammu

Video: 4-20ma generaator/tester Arduino abil: 8 sammu

Video: 4-20ma generaator/tester Arduino abil: 8 sammu
Video: Leap Motion SDK 2024, November
Anonim
4-20ma generaator/tester Arduino abil
4-20ma generaator/tester Arduino abil

Ebayst on saadaval 4-20 mA generaatorid, kuid mulle meeldib ühe asjade isetegemise osa ja nende osade kasutamine, mis mul on.

Tahtsin testida meie PLC analoogsisendeid, et kontrollida meie scada näitu ja testida 4-20 mA instrumentide väljundit. Ebay -l on palju voolu ja pinge muundureid ning arduino jaoks voolu muundureid, kuid need vajavad kalibreerimist. Ma saan seda kasutada kõigi ebayst leitud muundurite jms kalibreerimiseks.

Otsustasin, et teen DIY generaatori ja testri. Praegu on see veel pooleli ja prototüüp.

Mul oli vana 2.1 helisüsteem, mida ei kasutatud (väikesed kõlarid). Niisiis kasutasin korpuseks ühte kõlarikarpi. Mul oli ka võimendi, mis välgu tõttu suri, eemaldasin selle võimendi kõlariklemmi, et ühendada imelihtne. Kavatsen tulevikus teha trükkplaadi ja parema ümbrise.

Tarvikud:

Osade nimekiri.

LCD // 20x4 (kohandage koodi, kui teie oma on väiksem)

LM7808 // 8 -voldine regulaator

LED // Mis tahes tüüpi või suurusega

LED -takisti // Sobib LED -i tüübile ja 8 -voldisele

100 oomi takisti + 47 oomi takisti järjestikku // Kasutatakse šundtakistina

10K takisti // Arduino analoog kaitseks kõrgepinge eest

22K takisti // A0 hõljumise peatamiseks

Trimpot 100 oomi + 47 oomi takisti järjestikku // PT100 simulaator

35 -voldine kondensaator // Ma kasutasin 470uF, lihtsalt toitepinge kõikumiste hoidmiseks

RTD (PT100 andur) // Vahemik pole oluline (vahemik)

DIODE (polaarsuse kaitseks)

INA219

Arduino

Samm 1:

Pilt
Pilt

Skeemi järgides peaksite alustama osade lisamise ja juhtmete ühendamise kohaga.

LM7808 võimaldab maksimaalselt 25 -voldist sisendit, mis sobib PLC -süsteemide jaoks, tavaliselt kasutavad nad 24 -voldiseid toiteallikaid. Lisage regulaatorile jahutusradiaator ja ärge seda pikemat aega kasutage. 16 volti mahalaskmine tekitab regulaatorile palju soojust.

Sisendtoide toidab regulaatorit ja ühendub INA219 VIN -iga, selles konfiguratsioonis saab INA219 mõõta ka õiget toitepinget miinus dioodi pingelangus. Mõõtke oma dioodi pingelangus ja lisage see koodile, et saada õige toitepinge näit.

Alates INA219 VOUT kuni RTD+ võimendab RTD. RTD- maandus lõpetab vooluringi.

PLC analoogkaardi testimiseks ühendage RTD- analoogkaardi sisendiga ja maandus kaardilt arduino maandusele. (Ühendage kindlasti lahti kõik testitava kanali külge kinnitatud instrumendid).

R5 ja LED1, mis näitab, et süsteem on sisse lülitatud.

Regulaator toidab arduino VIN -i (arduino on sisseehitatud 5 -voldise regulaatori).

Arduino 5V pin läheb pardal oleva kiibi toiteks INA219. INA219 GND arduino maapinnale.

Kärpimispoti klaasipuhasti RTD PIN1 -ga ja kärpimispoldi tihvti 3 RTD tihvtiga 2 simuleerib PT100 ühendust. (Vahetage juhtmed, kui trimmipotti päripäeva keeramine ei suurenda mA).

2. samm: instrumendi väljundi test

Instrumendi väljundi testimiseks on vaja täiendavaid osi, näiteks šundtakisti. Tavalised 0,25 W takistid teevad selle töö suurepäraselt. Võite jätta šundtakisti ja lisada instrumendi väljundisse teise INA219. Mul jäi ainult üks, nii et kasutasin selle asemel takistit.

Šundi abil saab katsetada ainult seadme negatiivsel poolel. Kui kasutate positiivset külge, varustate oma arduino rohkem kui 4 korda lubatud pingega ja lasete suitsu välja.

Lisage šundtakisti järjestikku instrumendi negatiivse juhtmega. Šundi seadmele lähim külg muutub arduino positiivseks analoogiks. Toiteallikale kõige lähemal asuvast šundi teisest küljest saab arduino maandus, mis täiendab analoogsisendiahelat.

150 oomi šundtakisti on absoluutne maksimum, mida tuleks arduino kasutamisel kasutada. Takistil on pingelangus lineaarselt läbi selle voolava mA suhtes. Mida suurem on mA, seda suurem on pinge.

20 mA voolu korral # 150 oomi*0,02 A = 3 volti arduinole.

4 mA voolu korral # 150 oomi*0,004A = 0,6 volti kuni arduino.

Nüüd võiksite soovida, et pinge oleks lähemal kui 5 volti, et saaksite kasutada kogu arduino ADC valikut. (Pole hea mõte).

RTD -d võivad jõuda 30,2 mA väljundini (minu omad). 150 oomi*0,03A = 4,8 volti. See on nii lähedal kui tahaksin olla.

Teine veebisait soovitas kasutada 250 oomi takistit.

20 mA voolu korral # 250 oomi*0,02 A = 5 volti arduinole.

30 mA voolu korral # 250 oomi*0,03 A = 7,5 volti arduinole.

Te riskite oma ADC ja arduino põletamisega.

Instrumendi väljas katsetamiseks võtke 12 -voldine aku kaasa ja ühendage see toite sisendiga. Välise toiteallika kasutamine ei mõjuta praegust PLC seadistust.

Väljas analoogsisendkaardi testimiseks võtke 12 -voldine aku kaasa. Ühendage instrument + vooluahelast lahti. Ühendage maandus instrumendi maandusega ja RTD- lahti ühendatud instrumendi juhtmega.

3. samm: kalibreerimine

Kalibreerimine
Kalibreerimine

Šundtakisti lugemise kalibreerimiseks ühendage RTD- šundi analoogiga. Seadke oma trimmipott nii, et genereeritud mA oleks 4 mA. Kui teie seadme mA pole võrdne, muutke rea 84. koodi esimest väärtust. Selle väärtuse suurendamine vähendab mA näitu.

Seejärel seadistage oma trimmipott 20mA genereerimiseks. Kui teie seadme mA pole võrdne, muutke rea 84 väärtuses oleva koodi teist väärtust.

Nii et teie 4-20 mA muutub nüüd 0,6-3 voltiks (teoreetiline). Vahemik on enam kui piisav. Kasutades eRCaGuy raamatukogu, annab üleproovimine teile parema ja stabiilsema näidu.

Loodetavasti lugesite seda. See on minu esimene juhend, nii et palun võtke rahulikult, kui olen kusagil vea teinud või midagi välja jätnud.

See projekt ei ole ilmselt parim viis selle saavutamiseks, kuid see töötab minu jaoks ja oli lõbus seda teha.

Mõned ideed on mul veel…

Lisage servo, et pöörata trimmipott kasti sees.

Lisage servo vasakule või paremale pööramiseks nuppe.

Lisage regulaatori radiaatorile digitaalne temperatuuriandur, et hoiatada ohtliku kuumuse eest.

Samm: Arduino programmeerimine

#kaasake

// #Include // Uncomment, kui kasutate nihkeregistriga LCD -d.

#kaasake

#kaasake

#kaasake

#kaasake

// A4 = (SDA)

A5 = (SCL)

Adafruit_INA219 ina219;

LiquidCrystal LCD (12, 11, 5, 4, 3, 2);

// LiquidCrystal_SR lcd (3, 4, 2); // Tühistage kommentaar, kui kasutate nihkeregistriga LCD -d.

// | | | _ Riivi tihvt

// | / _ Kella tihvt

// / _ Andmed/Luba kinnitus

bait bittiOfResolution = 12; // käsutas üleproovitud eraldusvõime

allkirjastamata pikad numSamplesToAvg = 20; // proovide arv ÜLDNÄIDISTUD RESOLUTSIOONIL, mida soovite võtta, ja keskmine

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

allkirjastamata kaua eelmineMillis = 0;

ujuki šuntpinge = 0,0; // INA219 -st

ujuki pinge = 0,0; // INA219 -st

ujukivool_mA = 0,0; // INA219 -st

ujuki koormuspinge = 0,0; // INA219 -st

ujuki arduinovoltage = 0,0; // Pinge arvutamine A0 tihvtist

Allkirjata pikk A0analogReading = 0;

bait analoogIn = A0;

ujuk kaardistatud = 0,0; // Kaardi pinge vahemikus A0 kuni 4-20 mA

tühine seadistus () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Modifitseeritud teek mA täpsemaks muutmiseks

lcd.algus (20, 4); // LCD initsialiseerimine

lcd.clear ();

lcd.home (); // mine koju

lcd.print ("********************");

viivitus (2000);

lcd.clear ();

}

tühine tsükkel ()

{

allkirjata pikk voolMillis = millis ();

const pikk intervall = 100;

//&&&&&&&&&&&&&&&&&

Lugege intervallidega I2C -seadmeid ja tehke mõned arvutused

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

if (currentMillis - previousMillis> = intervall) {

previousMillis = currentMillis;

Intervall ();

}

Print_To_LCD (); // Tõenäoliselt ei pea ma LCD -d nii kiiresti värskendama ja selle saab viia intervalli alla ()

}

tühine

Intervall () {

šuntpinge = ina219.getShuntVoltage_mV ();

siinipinge = ina219.getBusVoltage_V ();

praegune_mA = ina219.getCurrent_mA ();

koormuspinge = (siinipinge + (šuntpinge / 1000)) + 0,71; // +0,71 on minu dioodi pingelangus

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5,0 * A0analogReading); // Arvutatud mV

kaardistatud = kaart (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Kaart ei saa kasutada ujukeid. Lisage 0 kaardistatud väärtuse taha ja jagage 10 -ga, et saada ujuki näitu.

// Pingearvutuse kaardistamine annab stabiilsema näidu kui toore adc -näidu kasutamine.

kui (šuntpinge> = -0,10 && šuntpinge <= -0,01) // Ilma koormuseta kipub INA219 lugema alla -0,01, minu oma teeb seda.

{

praegune_mA = 0;

siinipinge = 0;

koormuspinge = 0;

šuntpinge = 0;

}

}

tühine

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Ilma vooluta on see minu mA näit, seega panen selle lihtsalt ära.

lcd.print (" * 4-20mA generaator *");

}

muu {

lcd.print ("** analoogtestija **");

}

lcd.setCursor (0, 1);

lcd.print ("Seade:");

lcd.setCursor (10, 1);

if (kaardistatud <1,25) {

lcd.print ("seadet pole");

}

muu {

lcd.print (kaardistatud);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Loo:");

lcd.setCursor (10, 2);

lcd.print (praegune_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Pakkumine:");

lcd.setCursor (10, 3);

lcd.print (koormuspinge);

lcd.print ("V");

}

Samm: veel mõned fotod

Veel mõned fotod
Veel mõned fotod

Võimendi kõlarite terminal. LED, mida juhib voolugeneraator (RTD). Analoogkaardi juhtmestik asendab LED -i.

Vasakpoolses klemmis on toite sisend. Paremal asuvad klemmid on instrumendi sisestamiseks.

6. samm: paigaldamine

Sobituma
Sobituma

Kõik tundub sobivat. Kasutasin silikooni, et mõnda kraami ajutiselt kokku hoida. Viimistluspott on paremas ülanurgas silikoonitud. Eelnevalt puuriti väike auk. Ma saan voolu reguleerida kasti ülaosast.

Samm: lihtsalt fotod

Lihtsalt Fotod
Lihtsalt Fotod
Lihtsalt Fotod
Lihtsalt Fotod
Lihtsalt Fotod
Lihtsalt Fotod
Lihtsalt Fotod
Lihtsalt Fotod

8. samm: lõppsõnad

Olen testinud selle seadme väljundit Allan Bradley PLC -ga. Tulemused olid väga head. Mul on täielik valik. Olen seda seadet testinud ka 4-20 mA rõhuanduriga, millel on sisseehitatud LCD-ekraan. Tulemused olid jällegi väga head. Minu näidud lülitati paari kümnendkoha võrra maha.

Kirjutan vahekaartidele oma arduino koodi. PLC -des nimetatakse neid alamrutiinideks. Muudab silumise minu jaoks lihtsamaks.

Manustatud on nende vahekaartide tekstifailid.

Soovitan: