Innholdsfortegnelse:
- Trinn 1:
- Trinn 2: Instrumentutgangstest
- Trinn 3: Kalibrering
- Trinn 4: Programmering av Arduino
- Trinn 5: Noen flere bilder
- Trinn 6: Montering
- Trinn 7: Bare bilder
- Trinn 8: Siste ord
Video: 4-20ma generator/tester som bruker Arduino: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:20
4-20mA generatorer er tilgjengelig på ebay, men jeg elsker en DIY-delen av ting og bruk av deler jeg har rundt meg.
Jeg ønsket å teste PLCs analoge innganger for å bekrefte våre scada-avlesninger og for å teste utgangen til 4-20mA-instrumenter. Det er masse strøm til spenning omformere og spenning til strøm omformere for arduino på ebay, men de trenger kalibrering skjønt. Jeg kan bruke dette til å kalibrere noen av de omformerne som finnes på ebay og lignende.
Jeg bestemte meg for at jeg skulle lage en generator og tester. På dette tidspunktet er det fremdeles et pågående arbeid og en prototype.
Jeg hadde et gammelt 2.1 lydsystem som ikke ble brukt (små høyttalere). Så jeg brukte en av høyttalerkassene som et kabinett. Jeg hadde også en forsterker som døde på grunn av lyn, jeg fjernet høyttalerterminalen fra forsterkeren for å gjøre det lett å koble til. Jeg har tenkt å lage en PCB i fremtiden og et bedre kabinett.
Rekvisita:
Deleliste.
LCD // 20x4 (tilpass kode hvis din er mindre)
LM7808 // 8volts regulator
LED // Enhver type eller størrelse
Motstand for LED // Passer for LED -typen og 8volt
100 ohm motstand + 47 ohm motstand i serie // Vil bli brukt som shuntmotstand
10K motstand // Arduino analog i beskyttelse mot høyspenning
22K motstand // For å stoppe A0 fra å flyte
Trimpot 100 ohm + 47 ohm motstand i serie // PT100 simulator
35 volt kondensator // Jeg brukte 470uF, bare for å holde svingningene i forsyningsspenningen nede
RTD (PT100 transduser) // Spenning spiller ingen rolle (område)
DIODE (for polaritetsbeskyttelse)
INA219
Arduino
Trinn 1:
Følgende skjematisk bør komme i gang med hvor du skal legge til delene og koble dem.
LM7808 tillater maks 25 volt inngang som er greit for PLS -systemer, de bruker vanligvis 24 volt strømforsyninger. Legg til en kjøleribbe til regulatoren og ikke bruk den over lengre perioder. Når du slipper 16 volt, får regulatoren mye varme.
Inngangstilførselen mater regulatoren og kobles til INA219 VIN, i denne konfigurasjonen vil INA219 også kunne måle riktig forsyningsspenning minus spenningsfallet fra dioden. Du bør måle diodespenningsfallet og legge det til koden slik at du får riktig avlesning av forsyningsspenningen.
Fra INA219 VOUT til RTD+ slår RTD på. RTD- til bakken fullfører kretsen.
For å teste et PLC-analogt kort vil du koble RTD- til inngangen på det analoge kortet og bakken fra kortet til arduino-bakken. (Sørg for å koble fra ethvert instrument som er festet til kanalen som testes).
R5 og LED1, som indikerer at systemet er slått på.
Regulatoren mates inn i arduino VIN (arduino har innebygd regulator til 5 volt).
Arduino 5V pin går til INA219 for å drive innebygd brikke. INA219 GND til arduino bakken.
Trim gryteviskeren til RTD PIN1 og Trim potten 3 til RTD pin 2 vil simulere en PT100 -tilkobling. (Bytt ledninger hvis du ikke øker mA ved å vri trimpotten med klokken).
Trinn 2: Instrumentutgangstest
For å teste instrumentutgang er det nødvendig med ekstra deler, som en shuntmotstand. Normale 0,25W motstander vil gjøre jobben helt fint. Du kan forlate shuntmotstanden og legge til en ny INA219 for å teste instrumentets utgang. Jeg hadde bare en igjen, så jeg brukte en motstand i stedet.
Testing med shunt kan bare utføres på enhetens negative side. Hvis du bruker den positive siden, vil du forsyne din arduino med mer enn 4 ganger tillatt spenning og slippe røyken ut.
Legg til shuntmotstanden i serie med negativ ledning til instrumentet. Siden av shunten nærmest enheten vil bli den positive analogen for arduino. Den andre siden av shunten nærmest strømforsyningen blir arduino -bakken som fullfører den analoge inngangskretsen.
150 ohm shuntmotstand er det absolutte maksimumet som bør brukes når du bruker en arduino. Motstanden har et spenningsfall lineært til mA som strømmer gjennom den. Jo større mA jo større spenning.
Ved 20mA strøm # 150ohm*0.02A = 3volt til arduino.
Ved 4mA strøm # 150ohm*0.004A = 0.6volt til arduino.
Nå vil du kanskje at spenningen skal være nærmere 5 volt, slik at du kan gi oss hele ADC -serien til arduinoen. (Ikke en god idé).
RTD -er kan nå 30,2mA -utgang (min gjør). 150ohm*0,03A = 4,8 volt. Det er så nært som jeg ønsker å være.
Et annet nettsted indikerte å bruke en 250ohm motstand.
Ved 20mA strøm # 250ohm*0.02A = 5volt til arduino.
Ved 30mA strøm # 250ohm*0,03A = 7,5 volt til arduino.
Du risikerer å brenne ADC og arduino.
For å teste et instrument ute i feltet, ta et 12 volt batteri med deg og koble det til forsyningsinngangen. Bruk av en ekstern strømkilde vil ikke påvirke gjeldende PLC -oppsett.
Ta et 12 volt batteri med deg for å teste et analogt inngangskort i feltet. Koble instrumentet + fra kretsen. Koble jord til instrumentjord og RTD- til den frakoblede instrumentledningen.
Trinn 3: Kalibrering
For å kalibrere shuntmotstandsavlesningen, koble RTD- til shuntanalogen. Sett trimpotten slik at den genererte mA er 4mA. Hvis enheten mA ikke er lik, må du endre den første verdien i koden på linje 84. Hvis du øker denne verdien, reduseres mA -avlesningen.
Sett deretter trimpotten til å generere 20mA. Hvis enheten mA ikke er lik, må du endre den andre verdien i koden på linje 84.
Så din 4-20mA blir nå 0,6-3volt (teoretisk). Mer enn nok rekkevidde. Ved å bruke biblioteket fra eRCaGuy vil oversampling gi deg en bedre og stabil avlesning.
Forhåpentligvis leser du dette. Dette er min første instruks, så ta det med ro hvis jeg har gjort en feil et sted eller utelatt noe.
Dette prosjektet er sannsynligvis ikke den beste måten å gjøre det på, men det fungerer for meg og var morsomt å gjøre det.
Noen ideer jeg har ekstra …
Legg til en servo for å rotere trimpotten inne i esken.
Legg til trykknapper for å rotere servoen til venstre eller høyre.
Legg til en digital temperatursensor i regulatorens kjøleribbe for å advare om farlig varme.
Trinn 4: Programmering av Arduino
#inkludere
// #include // Uncomment hvis du bruker en LCD med et skiftregister.
#inkludere
#inkludere
#inkludere
#inkludere
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Ikke kommenter hvis du bruker en LCD med skiftregister.
// | | | _ Låsestift
// | / _ Klokke Pin
// / _ Data/Aktiver pin
byte bitsOfResolution = 12; // kommandert oversamplet oppløsning
usignert lang numSamplesToAvg = 20; // antall prøver I OVERSAMPLED LØSNING du vil ta og gjennomsnittlig
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
unsigned long previousMillis = 0;
flyte shuntspenning = 0,0; // Fra INA219
flytebusspenning = 0,0; // Fra INA219
float current_mA = 0.0; // Fra INA219
float lastspenning = 0,0; // Fra INA219
flyte arduinspenning = 0,0; // Spenningsberegning fra A0 -pinne
Usignert lang A0analogReading = 0;
byte analogIn = A0;
float ma_mapped = 0.0; // Kartspenning fra A0 til 4-20mA
ugyldig oppsett () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t currentFrequency;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // Endret bibliotek for mer presisjon på mA
lcd.begin (20, 4); // initialiser LCD -skjermen
lcd.clear ();
lcd.home (); // gå hjem
lcd.print ("*********************");
forsinkelse (2000);
lcd.clear ();
}
hulrom ()
{
usignert langstrømMillis = millis ();
konstant langt intervall = 100;
//&&&&&&&&&&&&&&&&&
Les I2C -enheter med intervaller og gjør noen beregninger
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
hvis (currentMillis - previousMillis> = intervall) {
previousMillis = currentMillis;
Intervall ();
}
Print_To_LCD (); // Jeg trenger sannsynligvis ikke oppdatere LCD -skjermen så raskt og kan flyttes til under Intervall ()
}
tomrom
Intervall () {
shuntvoltage = ina219.getShuntVoltage_mV ();
busspenning = ina219.getBusVoltage_V ();
current_mA = ina219.getCurrent_mA ();
lastspenning = (busspenning + (shuntspenning / 1000)) + 0,71; // +0,71 er diodespenningsfallet
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5,0 * A0analogReading); // Beregnet til mV
ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Kartet kan ikke bruke flyter. Legg til en 0 bak den tilordnede verdien og del med 10 for å få float -avlesning.
// Kartlegging fra spenningsberegning gir en mer stabil avlesning enn ved bruk av rå ADC -avlesning.
hvis (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Uten belastning har INA219 en tendens til å lese under -0.01, det gjør vel min.
{
nåværende_mA = 0;
busspenning = 0;
lastspenning = 0;
shuntspenning = 0;
}
}
tomrom
Print_To_LCD () {
lcd.setCursor (0, 0);
if (ma_mapped <1,25) {// Uten strøm er dette min mA -lesning, så jeg bare kaster den vekk.
lcd.print (" * 4-20mA Generator *");
}
annet {
lcd.print ("** Analog Tester **");
}
lcd.setCursor (0, 1);
lcd.print ("Enhet:");
lcd.setCursor (10, 1);
hvis (ma_mapped <1,25) {
lcd.print ("ingen enhet");
}
annet {
lcd.print (ma_mapped);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Generer:");
lcd.setCursor (10, 2);
lcd.print (current_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Supply:");
lcd.setCursor (10, 3);
lcd.print (lastspenning);
lcd.print ("V");
}
Trinn 5: Noen flere bilder
Forsterkerhøyttalerterminal. LED drevet av strømgeneratoren (RTD). Ledninger til analoge kort erstatter lysdioden.
Terminal helt til venstre er for forsyningsinngang. Terminaler til høyre er for instrumentinngang.
Trinn 6: Montering
Alt ser ut til å passe. Jeg brukte silikon for å holde noen ting midlertidig sammen. Trimmegryta er silikon øverst til høyre. Et lite hull ble forboret. Jeg kan justere strømmen fra toppen av boksen.
Trinn 7: Bare bilder
Trinn 8: Siste ord
Jeg har testet enhetens utgang med en Allan Bradley PLC. Resultatene var veldig gode. Jeg har full rekkevidde. Jeg har også testet denne enheten med 4-20mA trykksensor som har en innebygd LCD-skjerm. Igjen var resultatene veldig gode. Avlesningene mine ble slått av med et par desimaler.
Jeg skriver min arduino -kode i faner. I PLS kalles de subrutiner. Gjør feilsøking lettere for meg.
Vedlagt er tekstfiler for disse fanene.
Anbefalt:
Test Bare Arduino, med spillprogramvare som bruker kapasitiv inngang og LED: 4 trinn
Test Bare Arduino, med spillprogramvare som bruker kapasitiv inngang og LED: " Push-It " Interaktivt spill med et rent Arduino -brett, ingen eksterne deler eller ledninger nødvendig (bruker en kapasitiv 'berøringsinngang'). Vist ovenfor, viser at den kjører på to forskjellige brett. Push-It har to formål. For raskt å demonstrere/v
Renegade-i (programmerbar IC-tester som føles som den virkelige tingen): 3 trinn (med bilder)
Renegade-i (programmerbar IC-tester som føles som den virkelige tingen): THE MILLION DOLLAR DREAM. Har du noen gang drømt om å ha din egen IC-tester hjemme? Ikke bare en gadget som kan teste IC, men en "programmerbar" maskin som føles som et av flaggskipsproduktene til de største aktørene i semikon -testindustrien, lykkes
Trådløs fjernkontroll ved bruk av 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sendermottaker for quadcopter - Rc Helikopter - RC -fly som bruker Arduino: 5 trinn (med bilder)
Trådløs fjernkontroll ved bruk av 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sendermottaker for quadcopter | Rc Helikopter | Rc -fly ved bruk av Arduino: For å betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båt, vi trenger alltid en mottaker og sender, anta at for RC QUADCOPTER trenger vi en 6 -kanals sender og mottaker, og den typen TX og RX er for kostbar, så vi lager en på vår
Slik bruker du Mac Terminal og hvordan du bruker viktige funksjoner: 4 trinn
Slik bruker du Mac Terminal og hvordan du bruker viktige funksjoner: Vi viser deg hvordan du åpner MAC Terminal. Vi viser deg også noen få funksjoner i terminalen, for eksempel ifconfig, endring av kataloger, tilgang til filer og arp. Ifconfig lar deg sjekke IP -adressen din og MAC -annonsen din
Hvordan lage en autonom basketballball som bruker en IRobot Lag som base: 7 trinn (med bilder)
Slik lager du en autonom basketballball som bruker en IRobot Lag som base: Dette er min oppføring for iRobot Create -utfordringen. Den vanskeligste delen av hele denne prosessen for meg var å bestemme hva roboten skulle gjøre. Jeg ønsket å demonstrere de kule funksjonene i Create, samtidig som jeg la til litt robo -teft. Alle mine