Përmbajtje:

4-20ma Gjenerator/Testues duke përdorur Arduino: 8 hapa
4-20ma Gjenerator/Testues duke përdorur Arduino: 8 hapa

Video: 4-20ma Gjenerator/Testues duke përdorur Arduino: 8 hapa

Video: 4-20ma Gjenerator/Testues duke përdorur Arduino: 8 hapa
Video: GENERADOR AR del año 1940 Dynamotor Generator 2024, Dhjetor
Anonim
4-20ma Gjenerator/Testues duke përdorur Arduino
4-20ma Gjenerator/Testues duke përdorur Arduino

Gjeneratorët 4-20mA janë në dispozicion në ebay, por unë për vete e dua pjesën DIY të gjërave dhe përdorimin e pjesëve që kam vendosur përreth.

Doja të testoja hyrjet analoge të PLC-së tonë për të verifikuar leximet tona scada dhe për të testuar daljen e instrumenteve 4-20mA. Ka ngarkesa të konvertuesve të rrymës në tension dhe tension në konvertues të rrymës për arduino në ebay, megjithatë ato kanë nevojë për kalibrim. Unë mund ta përdor këtë për të kalibruar ndonjë nga ata konvertuesit që gjenden në ebay dhe të ngjashme.

Vendosa që të bëj DIY një gjenerator dhe testues. Në këtë pikë në kohë është ende një punë në progres dhe një prototip.

Unë kisha një sistem të vjetër zanor 2.1 që nuk po përdorej (altoparlantë të vegjël). Kështu që unë përdor një nga kutitë e altoparlantëve si një rrethim. Unë gjithashtu kisha një përforcues që vdiq për shkak të rrufesë, e hoqa terminalin e altoparlantit nga ai përforcues për të bërë lidhjen me një fllad. Kam ndërmend të bëj një PCB në të ardhmen dhe një rrethim më të mirë.

Furnizimet:

Lista e Pjesëve.

LCD // 20x4 (përshtatni kodin nëse i juaji është më i vogël)

LM7808 // rregullator 8 volt

LED // Çdo lloj ose madhësi

Rezistencë për LED // E përshtatshme për llojin LED dhe 8volt

Rezistencë 100 ohm + Rezistencë 47 ohm në seri // Do të përdoret si rezistencë shunt

Rezistencë 10K // Analog Arduino në mbrojtje kundër tensionit të lartë

Rezistencë 22K // Për të ndaluar lundrimin e A0

Rezistenca Trimpot 100 ohm + 47 ohm në seri // imituesi PT100

Kondensator 35 volt // Kam përdorur 470uF, vetëm për të mbajtur poshtë luhatjet e tensionit të furnizimit

RTD (dhënës PT100) // Hapësira nuk ka rëndësi (diapazoni)

DIODE (për mbrojtjen e polaritetit)

INA219

Arduino

Hapi 1:

Imazhi
Imazhi

Duke ndjekur skemën, duhet të filloni se ku të shtoni pjesët dhe t'i lidhni ato.

LM7808 lejon një hyrje maksimale prej 25 volt, e cila është e mirë për sistemet PLC, ato në përgjithësi përdorin furnizime me energji 24 volt. Shtoni një heatsink në rregullatorin dhe mos e përdorni atë për periudha të zgjatura. Rënia e 16 volt shkakton që rregullatori të prodhojë shumë nxehtësi.

Furnizimi hyrës ushqen rregullatorin dhe lidhet me INA219 VIN, në këtë konfigurim INA219 gjithashtu do të jetë në gjendje të masë tensionin e saktë të furnizimit minus rënien e tensionit nga dioda. Ju duhet të matni rënien e tensionit të diodës tuaj dhe ta shtoni atë në kod në mënyrë që të merrni leximin e saktë të tensionit të furnizimit.

Nga INA219 VOUT tek RTD+ fuqizon RTD. RTD- toka përfundon qarkun.

Për të testuar një kartë analoge PLC ju do të lidhni RTD- me hyrjen në kartën analoge dhe tokën nga karta në tokën arduino. (Sigurohuni që të shkëputni çdo instrument të bashkangjitur në kanalin që po testohet).

R5 dhe LED1, duke treguar se sistemi është ndezur.

Rregullatori ushqehet me arduino VIN (arduino ka ndërtuar rregullatorin në 5 volt).

Kunja Arduino 5V shkon në INA219 për të fuqizuar çipin në bord. INA219 GND në terren arduino.

Prerja e fshirësit të tenxhere në RTD PIN1 dhe shkurtimi i kunjit të tenxhere 3 në pinin RTD 2 do të simulojnë një lidhje PT100. (Ndërroni telat nëse rrotullimi i tenxheres në drejtim të akrepave të orës nuk e rrit mA).

Hapi 2: Testi i daljes së instrumentit

Për të testuar daljen e instrumentit nevojiten pjesë shtesë, si një rezistencë shunt. Rezistentët normalë 0.25W do ta bëjnë punën mirë. Mund të lini rezistencën e shmangies dhe të shtoni një INA219 të dytë për të testuar daljen e instrumentit. Më kishte mbetur vetëm një, kështu që unë përdor një rezistencë në vend.

Testimi duke përdorur një shunt mund të bëhet vetëm në anën negative të pajisjes. Nëse përdorni anën pozitive, ju do të furnizoni arduinon tuaj me më shumë se 4 herë tensionin e lejuar dhe do të lini tymin jashtë.

Shtoni rezistencën e shuntit në seri me tela negative të instrumentit. Ana e shuntit më e afërt me pajisjen do të bëhet analoge pozitive për arduino. Ana tjetër e shunt -it më afër furnizimit me energji elektrike do të bëhet toka arduino që përfundon qarkun e hyrjes analoge.

Rezistenca shunt 150 ohm është maksimumi absolut që duhet të përdoret kur përdorni një arduino. Rezistori ka një rënie të tensionit lineare në mA që rrjedh përmes tij. Sa më i madh të jetë mA aq më i madh është tensioni.

Në 20mA aktuale # 150ohm*0.02A = 3volt në arduino.

Në 4mA aktuale # 150ohm*0.004A = 0.6volt në arduino.

Tani mund të dëshironi që voltazhi të jetë më afër 5 volt, në mënyrë që të na jepni gamën e plotë ADC të arduino. (Nuk është ide e mirë).

RTD -të mund të arrijnë 30.2mA dalje (e imja arrin). 150ohm*0.03A = 4.8volt. Kjo është aq afër sa do të doja të isha.

Një faqe në internet e treguar për të përdorur një rezistencë 250ohm.

Në 20mA aktuale # 250ohm*0.02A = 5volt në arduino.

Në 30mA aktuale # 250ohm*0.03A = 7.5volt në arduino.

Ju rrezikoni të digjni ADC dhe arduino tuaj.

Për të testuar një instrument në terren, merrni një bateri 12 volt me vete dhe lidheni atë me hyrjen e furnizimit. Përdorimi i një burimi të jashtëm të energjisë nuk do të ndikojë në konfigurimin aktual të PLC.

Për të provuar një kartë analoge të hyrjes në terren, merrni me vete një bateri 12 volt. Shkëputeni instrumentin + nga qarku. Lidhni tokën me tokëzimin e instrumentit dhe RTD- me tela instrumenti të shkëputur.

Hapi 3: Kalibrimi

Kalibrimi
Kalibrimi

Për të kalibruar leximin e rezistencës së shuntit, lidhni RTD- te shunt Analog in. Vendoseni tenxheren tuaj të zbukurimit në mënyrë që mA e gjeneruar të jetë 4mA. Nëse pajisja juaj mA nuk është e barabartë atëherë modifikoni vlerën e parë në kod në rreshtin 84. Rritja e kësaj vlere do të ulë leximin e mA.

Pastaj vendoseni tenxheren tuaj të zbukurimit të prodhojë 20mA. Nëse pajisja juaj mA nuk është e barabartë, atëherë modifikoni vlerën e dytë në kodin në rreshtin 84.

Pra, 4-20mA juaj tani do të bëhet 0.6-3volt (teorik). Gama më shumë se e mjaftueshme. Duke përdorur bibliotekën nga eRCaGuy, marrja e tepërt e mostrave do t'ju japë një lexim më të mirë dhe të qëndrueshëm.

Shpresoj ta lexoni këtë. Ky është udhëzimi im i parë, kështu që ju lutem mos e merrni me lehtësi nëse kam bërë një gabim diku ose kam lënë diçka jashtë.

Ky projekt ndoshta nuk është mënyra më e mirë për ta bërë atë, por funksionon për mua dhe ishte argëtuese ta bëja atë.

Disa ide që kam shtesë…

Shtoni një servo për të rrotulluar tenxheren e zbukuruar brenda kutisë.

Shtoni butona shtytës për të rrotulluar servo majtas ose djathtas.

Shtoni një sensor dixhital të temperaturës në ngrohësin e rregullatorit për të paralajmëruar për nxehtësi të rrezikshme.

Hapi 4: Programimi i Arduino

#përfshi

// #include // Mos komentoni nëse përdorni një LCD me regjistër ndërrimi.

#përfshi

#përfshi

#përfshi

#përfshi

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Mos komentoni nëse përdorni një LCD me regjistër ndërrimi.

// | | | _ Kunja e shulit

// | / _ Kunja e orës

// / _ Të dhënat/Aktivizo kunjin

bit bajtOfResolution = 12; // zgjidhja e komanduar e tejmbushur

numSamplesToAvg i gjatë i panënshkruar = 20; // numri i mostrave N R ZGJIDHJEN MBYSHMARR që dëshironi të merrni dhe mesatarisht

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

pa shenjë e mëparshmeMillis = 0;

float shuntvoltage = 0.0; // Nga INA219

voltazhi notues = 0.0; // Nga INA219

rryma notuese_mA = 0.0; // Nga INA219

tensioni i ngarkesës së notit = 0.0; // Nga INA219

arduinovoltazhi notues = 0.0; // Llogaritja e tensionit nga kunja A0

I panënshkruar i gjatë A0analogReading = 0;

byte analogIn = A0;

noton ma_mapped = 0.0; // Tensioni i hartës nga A0 në 4-20mA

void setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t aktualeFrekuenca;

ina219.filloj ();

ina219.setCalibration_32V_30mA (); // Biblioteka e modifikuar për më shumë saktësi në mA

lcd.filloni (20, 4); // inicializoni LCD -në

lcd.qartë ();

lcd. shtëpi (); // Shko në shtëpi

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

vonesa (2000);

lcd.qartë ();

}

lak void ()

{

rrymë e gjatë e panënshkruarMillis = millis ();

inter interval i gjatë = 100;

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

Lexoni pajisjet I2C në intervale dhe bëni disa llogaritje

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

if (aktualeMillis - previousMillis> = interval) {

previousMillis = aktualMillis;

Intervali ();

}

Print_To_LCD (); // Ndoshta nuk kam nevojë të azhurnoj LCD kaq shpejt dhe mund të zhvendoset në më poshtë Intervali ()

}

i pavlefshëm

Intervali () {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

tension i ngarkesës = (tensioni i autobusit + (shuntvoltage / 1000)) + 0.71; // +0.71 është rënia e tensionit tim në diodë

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltazh = (5.0 * A0analogLexim); // Llogaritet në mV

ma_mapped = harta (arduinovoltazhi, 752, 8459, 30, 220) / 10.0; // Harta nuk mund të përdorë noton. Shtoni një 0 prapa vlerës së hartuar dhe ndani me 10 për të marrë leximin e notit.

// Hartimi nga llogaritja e tensionit jep lexim më të qëndrueshëm sesa përdorimi i leximit të papërpunuar të adc.

nëse (shuntvoltage> = -0,10 && shuntvoltage <= -0,01) // Pa asnjë ngarkesë INA219 ka tendencë të lexojë më poshtë -0,01, mirë e imja.

{

aktuale_mA = 0;

tensioni i autobusit = 0;

tension ngarkues = 0;

tension shuntv = 0;

}

}

i pavlefshëm

Print_To_LCD () {

lcd.setCursor (0, 0);

nëse (ma_mapped <1.25) {// Me asnjë rrymë kjo është leximi im mA, kështu që thjesht e largova atë.

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

}

tjeter {

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

}

lcd.setCursor (0, 1);

lcd.print ("Pajisja:");

lcd.setCursor (10, 1);

nëse (ma_mapped <1.25) {

lcd.print ("pa pajisje");

}

tjeter {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Gjeneroni:");

lcd.setCursor (10, 2);

lcd.print (aktuale_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Furnizimi:");

lcd.setCursor (10, 3);

lcd.print (tension i ngarkesës);

lcd.print ("V");

}

Hapi 5: Disa fotografi të tjera

Disa fotografi të tjera
Disa fotografi të tjera

Terminali i altoparlantit të amplifikatorit. LED i drejtuar nga gjeneratori aktual (RTD). Instalimet me kartë analoge do të zëvendësojnë LED.

Terminali në të majtë është për hyrje të furnizimit. Terminalet në të djathtë janë për hyrjen e instrumenteve.

Hapi 6: Përshtatja

Përshtatja në
Përshtatja në

Gjithçka duket se përshtatet. Kam përdorur silikon për të mbajtur përkohësisht disa gjëra së bashku. Tenxhere e zbukuruar është silikon në të djathtën e sipërme. Një vrimë e vogël ishte paraprirur. Unë mund të rregulloj rrymën nga maja e kutisë.

Hapi 7: Vetëm Fotografi

Vetëm Fotografi
Vetëm Fotografi
Vetëm Fotografi
Vetëm Fotografi
Vetëm Fotografi
Vetëm Fotografi
Vetëm Fotografi
Vetëm Fotografi

Hapi 8: Fjalët e fundit

Unë kam testuar daljen e kësaj pajisjeje me një PLC Allan Bradley. Rezultatet ishin shumë të mira. Kam marrë gamën e plotë. Unë gjithashtu e kam testuar këtë pajisje me sensor presioni 4-20mA që ka një ekran LCD të integruar. Përsëri rezultatet ishin shumë të mira. Leximet e mia u mbyllën nga disa dhjetore.

Unë shkruaj kodin tim arduino në skeda. Në PLC -të ato quhen nën -rutina. E bën më të lehtë debugimin për timen.

Bashkangjitur janë skedarët e tekstit të atyre skedave.

Recommended: