Taula de continguts:
- Pas 1:
- Pas 2: Prova de sortida de l'instrument
- Pas 3: calibració
- Pas 4: Programació d'Arduino
- Pas 5: algunes fotos més
- Pas 6: adaptació
- Pas 7: només fotos
- Pas 8: Paraules finals
Vídeo: Generador / provador de 4-20ma amb Arduino: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
Hi ha generadors de 4-20 mA disponibles a ebay, però a mi m’encanta la part de les coses de bricolatge i l’ús de peces que tinc al voltant.
Volia provar les entrades analògiques del nostre PLC per verificar les nostres lectures scada i provar la sortida dels instruments de 4-20 mA. Hi ha un munt de convertidors de corrent a voltatge i convertidors de tensió a corrent per a arduino a ebay, però, cal calibrar-los. Puc utilitzar-ho per calibrar qualsevol d'aquests convertidors que es troben a ebay i similars.
Vaig decidir que faré un generador i un provador de bricolatge. En aquest moment encara és un treball en curs i un prototip.
Tenia un sistema de so 2.1 que no s’utilitzava (altaveus petits). Així que vaig utilitzar una de les caixes d’altaveus com a recinte. També vaig tenir un amplificador que va morir a causa d’un llamp, vaig treure el terminal dels altaveus d’aquest amplificador per facilitar la connexió. Tinc la intenció de fer un PCB en el futur i un millor recinte.
Subministraments:
Llista de peces.
LCD // 20x4 (adapteu el codi si el vostre és més petit)
Regulador LM7808 // 8volt
LED // Qualsevol tipus o mida
Resistència per a LED // Apte per al tipus de LED i 8 volt
Resistència de 100 ohm + 47 ohm en sèrie // S'utilitzarà com a resistència de derivació
Resistència 10K // Arduino analògic en protecció contra alta tensió
Resistència 22K // Per evitar que A0 suri
Trimpot 100 ohm + 47 ohm resistència en sèrie // PT100 simulador
Condensador de 35 volts // He utilitzat 470uF, només per reduir les fluctuacions de tensió de subministrament
RTD (transductor PT100) // L’espai no importa (rang)
DIODE (per protegir la polaritat)
INA219
Arduino
Pas 1:
Seguint l'esquema, hauríeu de començar a afegir les peces i connectar-les.
El LM7808 permet un màxim d’entrada de 25 volts, cosa que està bé per als sistemes de PLC, normalment utilitzen fonts d’alimentació de 24 volts. Afegiu un dissipador de calor al regulador i no l’utilitzeu durant períodes prolongats. Si baixa 16 volts, el regulador genera molta calor.
L'alimentació d'entrada alimenta el regulador i es connecta al INA219 VIN; en aquesta configuració, l'INA219 també podrà mesurar la tensió d'alimentació correcta menys la caiguda de tensió del díode. Heu de mesurar la caiguda de tensió del díode i afegir-la al codi per obtenir la lectura correcta de la tensió d'alimentació.
Des de l'INA219 VOUT fins a l'RTD + s'encén l'RTD. RTD- a terra completa el circuit.
Per provar una targeta analògica de PLC, hauríeu de connectar RTD- a l'entrada de la targeta analògica i a la terra de la targeta a la terra arduino. (Assegureu-vos de desconnectar qualsevol instrument connectat al canal que s'està provant).
R5 i LED1, que indiquen que el sistema està engegat.
El regulador s’introdueix al VIN arduino (arduino ha incorporat un regulador a 5 volts).
El pin Arduino de 5 V passa a INA219 per alimentar el xip incorporat. INA219 GND a terra arduino.
Retallar el netejador de pot a RTD PIN1 i Retallar el pin 3 a RTD pin 2 simularà una connexió PT100. (Canvieu els cables si girar el pot d'ajust en sentit horari no augmenta el mA).
Pas 2: Prova de sortida de l'instrument
Per provar la sortida de l’instrument es necessiten parts addicionals, com una resistència de derivació. Les resistències normals de 0,25 W faran la feina bé. Podeu deixar la resistència de derivació i afegir un segon INA219 per provar la sortida de l’instrument. Només em quedava una, de manera que he utilitzat una resistència.
La prova amb un derivació només es pot fer des del costat negatiu del dispositiu. Si utilitzeu el costat positiu, subministrareu al vostre arduino més de 4 vegades el voltatge permès i deixareu sortir el fum.
Afegiu la resistència de derivació en sèrie amb fil negatiu de l’instrument. El costat de la derivació més proper al dispositiu es convertirà en l'analògic positiu per a arduino. L’altra cara de la derivació més propera a la font d’alimentació es convertirà en la terra arduino que completa el circuit d’entrada analògica.
La resistència de derivació de 150 ohm és el màxim absolut que s’ha d’utilitzar quan s’utilitza un arduino. La resistència té una caiguda de tensió lineal al mA que hi circula. Com més gran sigui el mA, major serà el voltatge.
A 20mA de corrent # 150ohm * 0,02A = 3 volt a arduino.
A 4mA de corrent # 150ohm * 0,004A = 0,6 volt a arduino.
Ara és possible que vulgueu que la tensió sigui més propera a 5 volts, de manera que pugueu obtenir tota la gamma ADC de l’arduino. (No és una bona idea).
Els RTD poden arribar a 30,2 mA de sortida (el meu sí). 150ohm * 0,03A = 4,8 volts. Això és tan proper com voldria ser.
Un altre lloc web va indicar utilitzar una resistència de 250ohm.
A 20mA de corrent # 250ohm * 0,02A = 5 volt a arduino.
A 30mA de corrent # 250ohm * 0,03A = 7,5 volt a arduino.
Es corre el risc de cremar el vostre ADC i arduino.
Per provar un instrument al camp, porteu una bateria de 12 volt i connecteu-la a l’entrada de subministrament. L'ús d'una font d'alimentació externa no influirà en la configuració actual del PLC.
Per provar una targeta d'entrada analògica al camp, porteu-vos una bateria de 12 volt. Desconnecteu l'instrument + del circuit. Connecteu la terra a la terra de l’instrument i el RTD- al cable de l’instrument desconnectat.
Pas 3: calibració
Per calibrar la lectura de la resistència de derivació, connecteu RTD- a la connexió analògica de derivació. Establiu la pota de retallada de manera que el mA generat sigui de 4 mA. Si el mA del vostre dispositiu no és igual, modifiqueu el primer valor del codi a la línia 84. Si augmenteu aquest valor, disminuirà la lectura de mA.
A continuació, configureu el pot de retallada perquè generi 20 mA. Si el mA del vostre dispositiu no és igual, modifiqueu el segon valor del codi a la línia 84.
Així, el vostre 4-20mA ara es convertirà en 0,6-3 volts (teòric). Abast més que suficient. Mitjançant la biblioteca d’eRCaGuy, el mostreig excessiu us proporcionarà una lectura millor i estable.
Esperem que llegiu això. Aquest és el meu primer instructiu, així que, si us plau, calmeu-lo si he comès un error en algun lloc o he deixat alguna cosa fora.
Probablement, aquest projecte no és la millor manera d’aconseguir-ho, però em funciona i em va agradar fer-ho.
Algunes idees que tinc extra …
Afegiu un servo per girar l’olla de retall dins de la caixa.
Afegiu botons per girar el servo cap a l’esquerra o cap a la dreta.
Afegiu un sensor de temperatura digital al dissipador de calor del regulador per advertir de calor perillosa.
Pas 4: Programació d'Arduino
#incloure
// #include // Descomenta si fas servir una pantalla LCD amb un registre de desplaçament.
#incloure
#incloure
#incloure
#incloure
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Descomenteu si feu servir una pantalla LCD amb un registre de desplaçament.
// | | | _ Pinça de tancament
// | / _ Pin del rellotge
// / _ Dades / Activa el PIN
bytes bitsOfResolution = 12; // va ordenar una resolució sobreeixamplada
numSamplesToAvg llarg sense signar = 20; // nombre de mostres A LA RESOLUCIÓ SOBREMOSTREADA que voleu prendre i mitjà
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
unsigned long previousMillis = 0;
tensió de derivació flotant = 0,0; // Des de INA219
tensió bus flotant = 0,0; // Des de INA219
float current_mA = 0,0; // Des de INA219
tensió de càrrega flotant = 0,0; // Des de INA219
flotació arduinovoltatge = 0,0; // Càlcul de tensió a partir del pin A0
Llarg A0analogReading sense signar = 0;
byte analogIn = A0;
float ma_mapped = 0,0; // Mapa del voltatge d’A0 a 4-20mA
configuració nul·la () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t freqüència actual;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // Biblioteca modificada per obtenir més precisió a mA
lcd.begin (20, 4); // inicialitzar la pantalla LCD
lcd.clear ();
lcd.home (); // anar a casa
lcd.print ("********************");
endarreriment (2000);
lcd.clear ();
}
bucle buit ()
{
corrent llarg sense signar Millis = millis ();
intervall llarg const = 100;
//&&&&&&&&&&&&&&&&&
Llegiu els dispositius I2C a intervals i feu alguns càlculs
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (Miles actuals - Miles anteriors> = interval) {
anteriorMillis = actualMillis;
Interval();
}
Imprimeix_A_LCD (); // Probablement no necessiteu actualitzar la pantalla LCD tan ràpidament i es pot moure a sota d'interval ()
}
buit
Interval() {
shuntvoltage = ina219.getShuntVoltage_mV ();
busvoltage = ina219.getBusVoltage_V ();
current_mA = ina219.getCurrent_mA ();
tensió de càrrega = (busvoltage + (shuntvoltage / 1000)) + 0,71; // +0,71 és la meva caiguda de tensió del díode
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5.0 * A0analogReading); // Calculat a mV
ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10,0; // El mapa no pot fer servir flotants. Afegiu un 0 darrere del valor assignat i dividiu-lo per 10 per obtenir una lectura flotant.
// El mapatge a partir del càlcul de voltatge proporciona una lectura més estable que després mitjançant la lectura de ADC en brut.
if (shuntvoltage> = -0,10 && shuntvoltage <= -0,01) // Sense càrrega, l'INA219 tendeix a llegir a sota de -0,01, bé, el meu sí.
{
current_mA = 0;
tensió de bus = 0;
tensió de càrrega = 0;
voltatge de derivació = 0;
}
}
buit
Imprimeix_A_CD () {
lcd.setCursor (0, 0);
if (ma_mapped <1,25) {// Sense corrent, aquesta és la meva lectura de mA, així que la vaig deixar de banda.
lcd.print ("* Generador de 4-20 mA *");
}
més {
lcd.print ("** Analog Tester **");
}
lcd.setCursor (0, 1);
lcd.print ("Dispositiu");
lcd.setCursor (10, 1);
if (ma_mapped <1,25) {
lcd.print ("sense dispositiu");
}
més {
lcd.print (ma_mapped);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Generar:");
lcd.setCursor (10, 2);
lcd.print (current_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Subministrament:");
lcd.setCursor (10, 3);
lcd.print (tensió de càrrega);
lcd.print ("V");
}
Pas 5: algunes fotos més
Terminal d'altaveus amplificador. LED accionat pel generador de corrent (RTD). El cablejat de la targeta analògica substituirà el LED.
La terminal de l'extrem esquerre serveix per a l'entrada de subministrament. Els terminals de la dreta són per a l'entrada d'instruments.
Pas 6: adaptació
Tot sembla encaixar. Vaig utilitzar silicona per mantenir temporalment algunes coses juntes. El pot de retall està siliconat a la part superior dreta. Es va foradar un petit forat. Puc ajustar el corrent des de la part superior del quadre.
Pas 7: només fotos
Pas 8: Paraules finals
He provat la sortida d'aquest dispositiu amb un PLC Allan Bradley. Els resultats van ser molt bons. Tinc una gamma completa. També he provat aquest dispositiu amb un sensor de pressió de 4-20 mA que té una pantalla LCD integrada. De nou els resultats van ser molt bons. Les meves lectures es van desactivar per un parell de decimals.
Escric el meu codi arduino a les pestanyes. Als PLC s’anomenen subrutines. Em facilita la depuració.
S'adjunten fitxers de text d'aquestes pestanyes.
Recomanat:
Provador de bateria Arduino amb interfície d'usuari WEB: 5 passos
Comprobador de bateries Arduino amb interfície d'usuari WEB: Avui en dia, els equips electrònics utilitzen bateries de seguretat per estalviar l'estat en què es va deixar l'operació quan es va apagar l'equip o quan, per accident, es va apagar l'equip. L'usuari, en activar-se, torna al punt on es va quedar
Provador de capacitat de la bateria Arduino de bricolatge - V2.0: 11 passos (amb imatges)
Provador de capacitat de la bateria Arduino de bricolatge: V2.0: actualment hi ha a tot arreu bateries falses de liti i de NiMH que es venen publicitat amb capacitats superiors a la seva capacitat real. Per tant, és realment difícil distingir entre una bateria real i una falsa. De la mateixa manera, és difícil conèixer el
Provador de capacitat de la bateria Arduino de bricolatge - V1.0: 12 passos (amb imatges)
Provador de capacitat de la bateria Arduino de bricolatge - V1.0: [Reprodueix el vídeo] He recuperat tantes bateries antigues (18650) per tornar-les a utilitzar en els meus projectes solars. És molt difícil identificar les cèl·lules bones del paquet de bateries. Abans, en un dels meus Power Bank instructable, he dit, com identificar
Generador de música basat en el temps (generador de midi basat en ESP8266): 4 passos (amb imatges)
Generador de música basat en el temps (generador de midi basat en ESP8266): Hola, avui explicaré com fer el vostre propi generador de música basat en el temps. Es basa en un ESP8266, que és com un Arduino, i respon a la temperatura, a la pluja i intensitat lumínica. No espereu que faci cançons senceres o progrés d’acords
Provador de díodes Arduino Zener: 6 passos (amb imatges)
Arduino Zener Diode Tester: el provador de díodes Zener està controlat per Arduino Nano. Tester de mesura de la tensió Zener per a díodes de 1,8V a 48V. La potència de dissipació dels díodes mesurats podria ser de 250 mW a uns pocs watts. La mesura és senzilla, només cal que connecteu el díode i premeu el botó