INHOUDSOPGAWE:
- Stap 1:
- Stap 2: Instrumentuitvoertoets
- Stap 3: Kalibrasie
- Stap 4: Arduino programmeer
- Stap 5: Nog 'n paar foto's
- Stap 6: Inpas
- Stap 7: Net foto's
- Stap 8: Finale woorde
Video: 4-20ma generator/toetser wat Arduino gebruik: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
4-20mA kragopwekkers is beskikbaar op eBay, maar ek hou van die DIY-deel van dinge en die gebruik van onderdele wat ek het.
Ek wou die analoog insette van ons PLC toets om ons scada-metings te verifieer en die uitset van 4-20mA-instrumente te toets. Daar is baie stroom na spanning omsetters en spanning na stroom omsetters vir arduino op eBay, maar hulle benodig egter kalibrasie. Ek kan dit gebruik om enige van die omsetters wat op eBay en dies meer gevind word, te kalibreer.
Ek het besluit dat ek 'n kragopwekker en toetser gaan doen. Op hierdie tydstip is dit nog steeds 'n werk aan die gang en 'n prototipe.
Ek het 'n ou 2.1 klankstelsel gehad wat nie gebruik is nie (klein luidsprekers). Ek gebruik dus een van die luidsprekerkaste as 'n omhulsel. Ek het ook 'n versterker gehad wat dood is as gevolg van weerlig, ek het die luidsprekeraansluiting van die versterker verwyder om 'n briesie te maak. Ek is van plan om in die toekoms 'n PCB en 'n beter omhulsel te maak.
Benodighede:
Onderdele lys.
LCD // 20x4 (pas kode aan as joune kleiner is)
LM7808 // 8volt regulator
LED // Enige tipe of grootte
Weerstand vir LED // Geskik vir die tipe LED en 8volt
100 ohm weerstand + 47 ohm weerstand in serie // Sal as shuntweerstand gebruik word
10K -weerstand // Arduino -analoog ter beskerming teen hoogspanning
22K weerstand // Om te keer dat A0 dryf
Trimpot 100 ohm + 47 ohm weerstand in serie // PT100 simulator
35 volt -kondensator // Ek het 470uF gebruik, net om die skommelinge van die voedingsspanning te beperk
RTD (PT100 transducer) // Span maak nie saak nie (omvang)
DIODE (vir polariteitsbeskerming)
INA219
Arduino
Stap 1:
As u die skematiese aanwysing volg, moet u begin met die plek waar u die dele moet byvoeg en dit moet bedraad.
Die LM7808 laat 'n maksimum van 25 volt ingang toe, wat goed is vir PLC -stelsels; hulle gebruik gewoonlik 24 volt kragbronne. Voeg 'n heatsink by die regulator en moenie dit vir lang periodes gebruik nie. Deur 16 volt te laat sak, veroorsaak die reguleerder baie hitte.
Die ingangstoevoer voed die reguleerder en maak verbinding met die INA219 VIN, in hierdie opset kan die INA219 ook die korrekte voedingsspanning minus die spanningsval van die diode meet. U moet die daling van die diodespanning meet en dit by die kode voeg sodat u die korrekte voedingsspanning kan aflees.
Van die INA219 VOUT tot die RTD+ skakel die RTD aan. RTD- tot grond voltooi die kring.
Om 'n analoge PLC-kaart te toets, sou u RTD- verbind met die ingang op die analoogkaart en die grond van die kaart na die arduino-grond. (Maak seker dat u enige instrument wat aan die kanaal getoets is, ontkoppel).
R5 en LED1, wat aandui dat die stelsel aangeskakel is.
Die reguleerder voer die arduino VIN in (arduino het 'n ingeboude reguleerder tot 5 volt).
Die Arduino 5V-pen gaan na INA219 om die ingeboude chip aan te dryf. INA219 GND tot arduino gemaal.
Sny potveër na RTD PIN1 en Knip potpen 3 tot RTD -pen 2 na, sal 'n PT100 -verbinding naboots. (Ruil die drade om as die afwerkingspot met die kloksgewys draai nie die mA verhoog nie).
Stap 2: Instrumentuitvoertoets
Om die uitvoer van die instrument te toets, is ekstra dele nodig, soos 'n shuntweerstand. Normale 0.25W weerstande sal die werk goed doen. U kan die shuntweerstand verlaat en 'n tweede INA219 byvoeg om die uitvoer van die instrument te toets. Ek het net een oor, so ek het eerder 'n weerstand gebruik.
Toets met 'n shunt kan slegs aan die negatiewe kant van die toestel gedoen word. As u die positiewe kant gebruik, voorsien u meer as 4 keer die toegelate spanning van u arduino en laat die rook uit.
Voeg die shuntweerstand in serie met die negatiewe draad van die instrument. Die kant van die shunt naaste aan die toestel sal die positiewe analoog vir arduino word. Die ander kant van die shunt wat die naaste aan die kragtoevoer is, word die arduino -grond wat die analoog ingangskring voltooi.
150 ohm shuntweerstand is die absolute maksimum wat gebruik moet word by die gebruik van 'n arduino. Die weerstand het 'n spanningsval wat lineêr is na die mA wat daardeur vloei. Hoe groter die mA hoe groter die spanning.
By 20mA stroom # 150ohm*0.02A = 3volt na arduino.
By 4mA stroom # 150ohm*0.004A = 0.6volt na arduino.
Nou wil u miskien hê dat die spanning nader aan 5 volt moet wees, sodat u die volledige ADC -reeks van die arduino kan gebruik. (Nie 'n goeie idee nie).
RTD's kan 'n uitset van 30,2 mA bereik (myne doen dit). 150ohm*0,03A = 4,8 volt. Dit is so naby as wat ek sou wou wees.
'N Ander webwerf dui aan dat 'n weerstand van 250 ohm gebruik word.
By 20mA stroom # 250ohm*0.02A = 5volt na arduino.
By 'n stroom van 30 mA # 250ohm*0,03A = 7,5 volt na arduino.
U loop die risiko om u ADC en arduino te verbrand.
Om 'n instrument in die veld te toets, neem 'n 12 volt -battery saam en koppel dit aan die voedingsingang. Die gebruik van 'n eksterne kragbron sal nie die huidige PLC -opstelling beïnvloed nie.
Om 'n analoog ingangskaart in die veld te toets, neem 'n 12 volt -battery saam. Ontkoppel die instrument + van die stroombaan. Koppel die grond aan die instrumentaarde en die RTD- met die ontkoppelde instrumentdraad.
Stap 3: Kalibrasie
Om u shuntweerstandlesing te kalibreer, dra RTD- na die shunt Analog in. Stel u trimpot in sodat die gegenereerde mA 4mA is. As u toestel se mA nie gelyk is nie, verander dan die eerste waarde in die kode op reël 84. Deur hierdie waarde te verhoog, word die mA -uitlees verlaag.
Stel dan u snypot in om 20mA op te wek. As u toestel -mA nie gelyk is nie, verander die tweede waarde in die kode op reël 84.
Dus word u 4-20mA nou 0,6-3volt (teoreties). Meer as genoeg omvang. Deur die biblioteek van eRCaGuy te gebruik, bied oorsampling u 'n beter en stabiele uitlees.
Hopelik lees jy dit. Dit is my eerste instruksie, so neem dit rustig as ek iewers 'n fout gemaak het of iets weggelaat het.
Hierdie projek is waarskynlik nie die beste manier om dit te doen nie, maar dit werk vir my en was baie lekker om dit te doen.
'N Paar idees wat ek ekstra het …
Voeg 'n servo by om die snypot in die boks te draai.
Voeg drukknoppies by om die servo na links of regs te draai.
Voeg 'n digitale temperatuursensor by die koeler van die reguleerder om te waarsku vir gevaarlike hitte.
Stap 4: Arduino programmeer
#insluit
// #include // Uncomment as jy 'n LCD met 'n skofregister gebruik.
#insluit
#insluit
#insluit
#insluit
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Gee kommentaar as u 'n LCD met 'n skofregister gebruik.
// | | | _ Grendelpen
// | / _ Klokpen
// / _ Data/Aktiveer speld
byte bitsOfResolution = 12; // beveel oorbeelde resolusie
ongetekende lang numSamplesToAvg = 20; // aantal monsters BY DIE OORSAMPLEDE RESOLUTIE wat u wil neem en gemiddeld
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
ongetekende lang vorigeMillis = 0;
float shuntvoltage = 0.0; // Vanaf INA219
vlot busspanning = 0.0; // Vanaf INA219
dryfstroom_mA = 0.0; // Vanaf INA219
float load voltage = 0.0; // Vanaf INA219
float arduinovoltage = 0.0; // Spanningsberekening vanaf A0 -pen
Ongetekende lang A0analogReading = 0;
byte analoogIn = A0;
float ma_mapped = 0.0; // Kaartspanning van A0 tot 4-20mA
ongeldige opstelling () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t huidige frekwensie;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // Gewysigde biblioteek vir meer presisie oor mA
lcd.begin (20, 4); // initialiseer die LCD
lcd.clear ();
lcd.home (); // gaan huis toe
lcd.print ("*********************");
vertraging (2000);
lcd.clear ();
}
leemte lus ()
{
ongetekende lang stroomMillis = millis ();
konst lang interval = 100;
//&&&&&&&&&&&&&&&&&
Lees I2C -toestelle met tussenposes en doen 'n paar berekeninge
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis> = interval) {
vorigeMillis = currentMillis;
Interval ();
}
Print_To_LCD (); // Ek hoef waarskynlik nie die LCD so vinnig op te dateer nie, en ek kan dit onder Interval () skuif
}
nietig
Interval () {
shuntvoltage = ina219.getShuntVoltage_mV ();
busvoltage = ina219.getBusVoltage_V ();
current_mA = ina219.getCurrent_mA ();
lasspanning = (busspanning + (shuntspanning / 1000)) + 0,71; // +0,71 is my diodespanningsval
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5.0 * A0analogReading); // Bereken tot mV
ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10.0; // Kaart kan nie vlotte gebruik nie. Voeg 'n 0 agter die gekarteerde waarde by en deel met 10 om 'n float -uitlees te kry.
// Die kartering van die spanningberekening gee 'n meer stabiele uitlees dan die gebruik van die rou ADC -lesing.
if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Met geen las is die INA219 geneig om onder -0.01 te lees, wel myne.
{
huidige_mA = 0;
busspanning = 0;
laaispanning = 0;
shuntspanning = 0;
}
}
nietig
Print_To_LCD () {
lcd.setCursor (0, 0);
if (ma_mapped <1.25) {// Met geen stroom is dit my mA -lesing, so ek gooi dit net weg.
lcd.print (" * 4-20mA Generator *");
}
anders {
lcd.print ("** Analoog Tester **");
}
lcd.setCursor (0, 1);
lcd.print ("Toestel:");
lcd.setCursor (10, 1);
as (ma_kaart <1.25) {
lcd.print ("geen toestel");
}
anders {
lcd.print (ma_kaart);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Genereer:");
lcd.setCursor (10, 2);
lcd.print (huidige_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Verskaf:");
lcd.setCursor (10, 3);
lcd.print (laaispanning);
lcd.print ("V");
}
Stap 5: Nog 'n paar foto's
Versterker luidspreker terminale. LED aangedryf deur die stroomopwekker (RTD). Bedrading van 'n analoog kaart vervang die LED.
Terminal heel links is vir toevoerinvoer. Terminale aan die regterkant is vir instrumentinvoer.
Stap 6: Inpas
Alles blyk te pas. Ek het silikoon gebruik om dinge tydelik bymekaar te hou. Die afwerkingpot is regs bo in silikoon. 'N Klein gaatjie is voorgeboor. Ek kan die stroom aan die bokant van die boks aanpas.
Stap 7: Net foto's
Stap 8: Finale woorde
Ek het die uitvoer van hierdie toestel getoets met 'n Allan Bradley PLC. Die resultate was baie goed. Ek het die hele reeks bereik. Ek het hierdie toestel ook getoets met 'n druksensor van 4-20 mA met 'n ingeboude LCD-skerm. Weereens was die resultate baie goed. My lesings was met 'n paar desimale af.
Ek skryf my arduino -kode op oortjies. In PLC's word dit subroetines genoem. Maak ontfouting makliker vir my.
Aangeheg is tekslêers van die oortjies.
Aanbeveel:
Renegade-i (programmeerbare IC-toetser wat soos die regte ding voel): 3 stappe (met foto's)
Renegade-i (programmeerbare IC-toetser wat soos die ware ding voel): DIE MILJOEN DOLLAR DROOM. Het u al ooit daarvan gedroom om u eie IC-toetser tuis te hê? Nie net 'n gadget wat IC kan toets nie, maar 'n 'programmeerbare' masjien wat voel soos een van die vlagskip -produkte van die grootste spelers in die semikon -toetsbedryf, slaag
Wat is in 'n servo en hoe om dit te gebruik met die volledige tutoriaal van Arduino: 6 stappe
Wat is in 'n servo en hoe om dit te gebruik met die volledige tutoriaal van Arduino: kom ons kyk in hierdie tutoriaal wat 'n servowatch is in hierdie video -tutoriaal
Wat is 'n SVE, wat doen dit en hoe om dit op te los: 5 stappe
Wat is 'n SVE, wat doen dit en hoe om dit op te los: Elke dag vind u hier die terme " CPU " of " Verwerker " as ek rondgegooi word, maar weet u regtig wat dit beteken?
Hoe om die DC -ratmotor te beheer deur die 160A geborstelde elektroniese snelheidsbeheerder en servo -toetser te gebruik: 3 stappe
Hoe om die DC-ratmotor te beheer deur 160A geborstelde elektroniese snelheidsbeheerder en servotester te gebruik: spesifikasie: spanning: 2-3S Lipo of 6-9 NiMH deurlopende stroom: 35A Burststroom: 160A BEC: 5V / 1A, lineêre modus Modusse: 1. vorentoe &omgekeerde; 2. vorentoe &rem; 3. vorentoe & rem & omgekeerde gewig: 34g Grootte: 42*28*17mm
Generator - DC -generator wat rietskakelaar gebruik: 3 stappe
Generator - GS -generator wat rietskakelaar gebruik: eenvoudige DC -kragopwekker 'n Gelykstroomgenerator is 'n elektriese masjien wat meganiese energie omskakel in gelykstroom -elektrisiteit. verander