Indholdsfortegnelse:
- Trin 1:
- Trin 2: Instrument Output Test
- Trin 3: Kalibrering
- Trin 4: Programmering af Arduino
- Trin 5: Nogle flere fotos
- Trin 6: Tilpasning
- Trin 7: Bare fotos
- Trin 8: Afsluttende ord
Video: 4-20ma generator/tester ved hjælp af Arduino: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
4-20mA generatorer er tilgængelige på ebay, men jeg elsker for det første DIY-delen af tingene og bruger dele, jeg har lagt rundt.
Jeg ville teste vores PLCs analoge indgange for at verificere vores scada-aflæsninger og for at teste output fra 4-20mA-instrumenter. Der er masser af strøm til spændingsomformere og spænding til strømomformere til arduino på ebay, de har dog brug for kalibrering. Jeg kan bruge dette til at kalibrere enhver af de konvertere, der findes på ebay og lignende.
Jeg besluttede, at jeg ville lave en generator og tester. På dette tidspunkt er det stadig et igangværende arbejde og en prototype.
Jeg havde et gammelt 2.1 lydsystem, der ikke blev brugt (små højttalere). Så jeg brugte en af højttalerkasserne som et kabinet. Jeg havde også en forstærker, der døde på grund af lyn, jeg fjernede højttalerterminalen fra forstærkeren for at gøre forbindelsen til en leg. Jeg agter at lave et printkort i fremtiden og et bedre kabinet.
Tilbehør:
Liste over dele.
LCD // 20x4 (tilpass kode hvis din er mindre)
LM7808 // 8 volt regulator
LED // Enhver type eller størrelse
Modstand til LED // Egnet til LED -typen og 8volt
100 ohm modstand + 47 ohm modstand i serie // Vil blive brugt som shuntmodstand
10K modstand // Arduino analog til beskyttelse mod højspænding
22K modstand // For at stoppe A0 fra at flyde
Trimpot 100 ohm + 47 ohm modstand i serie // PT100 simulator
35 volt kondensator // Jeg brugte 470uF, bare for at holde udsving i forsyningsspændingen nede
RTD (PT100 transducer) // Spænding er ligegyldigt (område)
DIODE (til polaritetsbeskyttelse)
INA219
Arduino
Trin 1:
Ved at følge skematikken skal du komme i gang med, hvor du skal tilføje delene og koble dem.
LM7808 tillader maksimalt 25 volt input, hvilket er fint til PLC -systemer, de bruger generelt 24 volt strømforsyninger. Tilføj en kølelegeme til regulatoren, og brug den ikke i længere perioder. Fald af 16 volt får regulatoren til at generere meget varme.
Indgangsforsyningen tilfører regulatoren og opretter forbindelse til INA219 VIN, i denne konfiguration vil INA219 også være i stand til at måle den korrekte forsyningsspænding minus spændingsfaldet fra dioden. Du bør måle dit diodespændingsfald og tilføje det til koden, så du får den korrekte aflæsning af forsyningsspændingen.
Fra INA219 VOUT til RTD+ tænder RTD'en. FTU- til jorden fuldender kredsløbet.
For at teste et analogt PLC-kort ville du slutte RTD- til indgangen på det analoge kort og jorden fra kortet til arduino-jorden. (Sørg for at afbryde ethvert instrument, der er knyttet til den kanal, der testes).
R5 og LED1, der angiver, at systemet er tændt.
Regulatoren føder ind i arduino VIN (arduino har indbygget regulator til 5 volt).
Arduino 5V pin går til INA219 for at drive den indbyggede chip. INA219 GND til arduinojord.
Trim pot -visker til RTD PIN1 og Trim pot pin 3 til RTD pin 2 vil simulere en PT100 -forbindelse. (Skift ledningerne, hvis drejning af gryden med uret ikke øger mA).
Trin 2: Instrument Output Test
For at teste instrumentets output er der brug for ekstra dele, som en shuntmodstand. Normale 0,25W modstande klarer jobbet fint. Du kan forlade shuntmodstanden og tilføje en anden INA219 for at teste instrumentets output. Jeg havde kun en tilbage, så jeg brugte en modstand i stedet.
Test med en shunt kan kun udføres på enhedens negative side. Hvis du bruger den positive side, vil du forsyne din arduino med mere end 4 gange den tilladte spænding og slippe røgen ud.
Tilføj shuntmodstanden i serie med instrumentets negative ledning. Siden af shunten tættest på enheden bliver den positive analog for arduino. Den anden side af shunten tættest på strømforsyningen bliver arduino -jorden, der fuldender det analoge indgangskredsløb.
150 ohm shuntmodstand er det absolutte maksimum, der skal bruges, når du bruger en arduino. Modstanden har et spændingsfald lineært til mA, der strømmer gennem den. Jo større mA jo større spænding.
Ved 20mA strøm # 150ohm*0,02A = 3volt til arduino.
Ved 4mA strøm # 150ohm*0.004A = 0.6volt til arduino.
Nu vil du måske have spændingen til at være tættere på 5 volt, så du kan give os det fulde ADC -område af arduinoen. (Ikke en god idé).
FTU’er kan nå 30,2 mA output (Mine gør). 150ohm*0,03A = 4,8 volt. Det er så tæt, som jeg gerne vil være.
Et andet websted angav at bruge en 250ohm modstand.
Ved 20mA strøm # 250ohm*0.02A = 5volt til arduino.
Ved 30mA strøm # 250ohm*0,03A = 7,5volt til arduino.
Du risikerer at brænde din ADC og arduino.
For at teste et instrument ude i marken skal du tage et 12 volt batteri med dig og tilslutte det til forsyningsindgangen. Brug af en ekstern strømkilde påvirker ikke den nuværende PLC -opsætning.
For at teste et analogt indgangskort i feltet, skal du tage et 12 volt batteri med dig. Afbryd instrumentet + fra kredsløbet. Tilslut jord til instrumentjord og RTD- til den frakoblede instrumentledning.
Trin 3: Kalibrering
For at kalibrere din shuntmodstandsaflæsning, led RTD- til shunten Analog. Indstil din trimpotte, så den genererede mA er 4mA. Hvis din enheds mA ikke er lig, skal du ændre den første værdi i koden på linje 84. Forøgelse af denne værdi vil sænke mA -aflæsningen.
Indstil derefter din trimpotte til at generere 20mA. Hvis din enheds mA ikke er lig, skal du ændre den anden værdi i koden på linje 84.
Så din 4-20mA bliver nu til 0,6-3volt (teoretisk). Mere end nok rækkevidde. Ved hjælp af biblioteket fra eRCaGuy vil oversampling give dig en bedre og stabil aflæsning.
Forhåbentlig læser du dette. Dette er min første instruerbare, så tag det roligt, hvis jeg har begået en fejl et sted eller udeladt noget.
Dette projekt er nok ikke den bedste måde at gøre det på, men det fungerer for mig og var sjovt at gøre det.
Nogle ideer jeg har ekstra …
Tilføj en servo for at rotere trimgryden inde i æsken.
Tilføj trykknapper for at rotere servoen til venstre eller højre.
Tilføj en digital temperatursensor til regulatorens kølelegeme for at advare om farlig varme.
Trin 4: Programmering af Arduino
#omfatte
// #include // Fjern kommentar, hvis du bruger en LCD med et skiftregister.
#omfatte
#omfatte
#omfatte
#omfatte
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Fjern kommentar hvis du bruger en LCD med et skiftregister.
// | | | _ Låsestift
// | / _ Urnål
// / _ Data/Aktiver pin
byte bitsOfResolution = 12; // kommanderet oversamplet opløsning
usigneret lang numSamplesToAvg = 20; // antal prøver I OVERSAMPLED OPLØSNING, som du vil tage og gennemsnit
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
unsigned long previousMillis = 0;
float shunt spænding = 0,0; // Fra INA219
flydebusspænding = 0,0; // Fra INA219
flyde strøm_mA = 0,0; // Fra INA219
float belastningsspænding = 0,0; // Fra INA219
float arduinovoltage = 0,0; // Spændingsberegning fra A0 pin
Usigneret lang A0analogReading = 0;
byte analogIn = A0;
float ma_mapped = 0,0; // Kortspænding fra A0 til 4-20mA
ugyldig opsætning () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t currentFrequency;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // Ændret bibliotek for mere præcision på mA
lcd.begin (20, 4); // initialiser LCD'et
lcd.clear ();
lcd.home (); // gå hjem
lcd.print ("*********************");
forsinkelse (2000);
lcd.clear ();
}
hulrum ()
{
usigneret lang strømMillis = millis ();
konstant langt interval = 100;
//&&&&&&&&&&&&&&&&&
Læs I2C -enheder med intervaller og foretag nogle beregninger
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
hvis (currentMillis - previousMillis> = interval) {
previousMillis = currentMillis;
Interval();
}
Print_To_LCD (); // Jeg har sandsynligvis ikke brug for at opdatere LCD'en så hurtigt og kan flyttes til under Interval ()
}
ugyldig
Interval () {
shuntvoltage = ina219.getShuntVoltage_mV ();
busvoltage = ina219.getBusVoltage_V ();
current_mA = ina219.getCurrent_mA ();
belastningsspænding = (busspænding + (shuntspænding / 1000)) + 0,71; // +0,71 er mit diodespændingsfald
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5,0 * A0analogReading); // Beregnet til mV
ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Kortet kan ikke bruge floats. Tilføj et 0 bag den kortlagte værdi, og del med 10 for at få float -aflæsning.
// Kortlægning fra spændingsberegning giver mere stabil aflæsning derefter ved hjælp af den rå adc -læsning.
hvis (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Uden belastning har INA219 en tendens til at læse under -0.01, det gør min.
{
nuværende_mA = 0;
busspænding = 0;
belastningsspænding = 0;
shuntspænding = 0;
}
}
ugyldig
Print_To_LCD () {
lcd.setCursor (0, 0);
hvis (ma_mapped <1,25) {// Uden strøm er dette min mA -læsning, så jeg smider det bare væk.
lcd.print (" * 4-20mA Generator *");
}
andet {
lcd.print ("** Analog Tester **");
}
lcd.setCursor (0, 1);
lcd.print ("Enhed:");
lcd.setCursor (10, 1);
hvis (ma_mapped <1,25) {
lcd.print ("ingen enhed");
}
andet {
lcd.print (ma_mapped);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Generer:");
lcd.setCursor (10, 2);
lcd.print (nuværende_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Supply:");
lcd.setCursor (10, 3);
lcd.print (belastningsspænding);
lcd.print ("V");
}
Trin 5: Nogle flere fotos
Forstærker højttaler terminal. LED drevet af strømgeneratoren (RTD). Ledninger til analoge kort erstatter LED'en.
Terminal yderst til venstre er til forsyningsindgang. Terminaler til højre er til instrumentindgang.
Trin 6: Tilpasning
Alt ser ud til at passe. Jeg brugte silikone til midlertidigt at holde nogle ting sammen. Trimgryden er silikone øverst til højre. Et lille hul blev forboret. Jeg kan justere strømmen fra toppen af boksen.
Trin 7: Bare fotos
Trin 8: Afsluttende ord
Jeg har testet denne enheds output med en Allan Bradley PLC. Resultaterne var meget gode. Jeg har fuld rækkevidde. Jeg har også testet denne enhed med 4-20mA tryksensor, der har et indbygget LCD-display. Igen var resultaterne meget gode. Mine aflæsninger blev slukket med et par decimaler.
Jeg skriver min arduino -kode i faner. I PLC'er kaldes de sub -rutiner. Gør debugging lettere for min.
Vedhæftede er tekstfiler på disse faner.
Anbefalede:
DIY -- Sådan laver du en edderkoprobot, der kan kontrolleres ved hjælp af smartphone ved hjælp af Arduino Uno: 6 trin
DIY || Sådan laver du en edderkoprobot, der kan styres ved hjælp af smartphone Brug af Arduino Uno: Mens du laver en edderkoprobot, kan man lære så mange ting om robotik. Ligesom at lave robotter er underholdende såvel som udfordrende. I denne video vil vi vise dig, hvordan du laver en Spider -robot, som vi kan betjene ved hjælp af vores smartphone (Androi
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: 4 trin
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: Hej, jeg er Rithik. Vi kommer til at lave en internetstyret LED ved hjælp af din telefon. Vi kommer til at bruge software som Arduino IDE og Blynk.Det er enkelt, og hvis det lykkedes dig, kan du styre så mange elektroniske komponenter, du ønskerTing We Need: Hardware:
Sådan laver du en drone ved hjælp af Arduino UNO - Lav en quadcopter ved hjælp af mikrokontroller: 8 trin (med billeder)
Sådan laver du en drone ved hjælp af Arduino UNO | Lav en Quadcopter ved hjælp af mikrokontroller: Introduktion Besøg min Youtube -kanal En Drone er en meget dyr gadget (produkt) at købe. I dette indlæg vil jeg diskutere, hvordan jeg gør det billigt ?? Og hvordan kan du lave din egen sådan til en billig pris … Nå i Indien alle materialer (motorer, ESC'er
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores
Generator - DC -generator ved hjælp af Reed Switch: 3 trin
Generator - DC Generator Brug af Reed Switch: Enkel DC generator En jævnstrøm (DC) generator er en elektrisk maskine, der konverterer mekanisk energi til jævnstrøm. ændringer