Cuprins:
- Pasul 1:
- Pasul 2: Test de ieșire instrument
- Pasul 3: Calibrare
- Pasul 4: Programarea Arduino
- Pasul 5: Mai multe fotografii
- Pasul 6: Montare
- Pasul 7: Doar fotografii
- Pasul 8: Cuvinte finale
Video: Generator / Tester 4-20ma folosind Arduino: 8 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Generatoarele de 4-20mA sunt disponibile pe eBay, dar mie îmi place, pentru prima dată, partea DIY a lucrurilor și folosirea pieselor pe care le așez.
Am vrut să testez intrările analogice ale PLC-ului nostru pentru a verifica citirile noastre scada și pentru a testa ieșirea instrumentelor de 4-20mA. Există o mulțime de convertoare de curent la tensiune și convertoare de tensiune la curent pentru arduino pe eBay, totuși au nevoie de calibrare. Pot folosi acest lucru pentru a calibra oricare dintre convertoarele găsite pe eBay și like-uri.
Am decis că voi crea un generator și un tester. În acest moment, este încă o lucrare în curs și un prototip.
Aveam un sistem de sunet 2.1 vechi care nu era folosit (difuzoare mici). Așa că am folosit una dintre casetele difuzoarelor ca o incintă. De asemenea, am avut un amplificator care a murit din cauza fulgerului, am scos terminalul difuzorului din acel amplificator pentru a face conectarea ușoară. Intenționez să fac un PCB în viitor și o incintă mai bună.
Provizii:
Lista de componente.
LCD // 20x4 (adaptați codul dacă al dvs. este mai mic)
Regulator LM7808 // 8volt
LED // Orice tip sau dimensiune
Rezistor pentru LED // Potrivit pentru tipul LED și 8 volt
Rezistor de 100 ohmi + rezistor de 47 ohmi în serie // Va fi folosit ca rezistor de șunt
10K rezistor // Arduino analog în protecție împotriva tensiunii ridicate
22K rezistor // Pentru a opri plutirea A0
Trimpot 100 ohm + 47 ohm rezistor în serie // PT100 simulator
Condensator de 35 volți // Am folosit 470uF, doar pentru a menține fluctuațiile tensiunii de alimentare
RTD (traductor PT100) // Intervalul nu contează (interval)
DIODĂ (pentru protecția polarității)
INA219
Arduino
Pasul 1:
În urma schemei ar trebui să începeți să adăugați piesele și să le conectați.
LM7808 permite o intrare de maximum 25 volți, ceea ce este bine pentru sistemele PLC, în general utilizează surse de alimentare de 24 de volt. Adăugați un radiator la regulator și nu-l utilizați pentru perioade lungi de timp. Scăderea a 16 volți determină regulatorul să genereze multă căldură.
Sursa de intrare alimentează regulatorul și se conectează la INA219 VIN, în această configurație INA219 va putea măsura și tensiunea de alimentare corectă minus căderea de tensiune din diodă. Ar trebui să vă măsurați căderea de tensiune a diodei și să o adăugați la cod, astfel încât să obțineți citirea corectă a tensiunii de alimentare.
De la INA219 VOUT la RTD + pornește RTD. RTD- la masă completează circuitul.
Pentru a testa o placă analogică PLC, ați conecta RTD- la intrarea de pe placa analogică și la masă de la placă la masă arduino. (Asigurați-vă că deconectați orice instrument atașat la canalul testat).
R5 și LED1, indicând faptul că sistemul este pornit.
Regulatorul se alimentează în arduino VIN (arduino a încorporat regulatorul la 5 volți).
Pinul Arduino 5V merge la INA219 pentru a alimenta cipul integrat. INA219 GND la sol arduino.
Tăiați ștergătorul potului la RTD PIN1 și Tundeți pinul 3 la pinul RTD 2 va simula o conexiune PT100. (Schimbați firele dacă rotirea vasului de tăiere în sensul acelor de ceasornic nu mărește mA).
Pasul 2: Test de ieșire instrument
Pentru a testa ieșirea instrumentului este nevoie de piese suplimentare, cum ar fi un rezistor de șunt. Rezistoarele normale de 0,25 W vor face treaba foarte bine. Puteți părăsi rezistorul de șunt și puteți adăuga un al doilea INA219 pentru a testa ieșirea instrumentului. Mi-a rămas doar unul, așa că am folosit în schimb un rezistor.
Testarea folosind un șunt poate fi făcută numai pe partea negativă a dispozitivului. Dacă utilizați partea pozitivă, veți furniza arduino cu mai mult de 4 ori tensiunea permisă și veți lăsa fumul să iasă.
Adăugați rezistorul de șunt în serie cu fir negativ al instrumentului. Partea shuntului cea mai apropiată de dispozitiv va deveni analogul pozitiv pentru arduino. Cealaltă parte a șuntului cea mai apropiată de sursa de alimentare va deveni masa arduino care completează circuitul de intrare analogică.
Rezistența de șunt de 150 ohmi este maximul absolut care ar trebui utilizat atunci când se utilizează un arduino. Rezistorul are o cădere de tensiune liniară față de mA care curge prin el. Cu cât mA este mai mare, cu atât este mai mare tensiunea.
La 20mA curent # 150ohm * 0,02A = 3 volt la arduino.
La 4mA curent # 150ohm * 0,004A = 0,6 volt la arduino.
Acum s-ar putea să doriți ca tensiunea să fie mai aproape de 5 volți, astfel încât să ne puteți furniza întreaga gamă ADC a arduino-ului. (Nu-i o idee buna).
RTD-urile pot atinge 30,2 mA de ieșire (al meu o face). 150ohm * 0,03A = 4,8 volți. Asta este cât de aproape aș vrea să fiu.
Un alt site web a indicat utilizarea unui rezistor de 250ohm.
La 20mA curent # 250ohm * 0,02A = 5 volt la arduino.
La 30mA curent # 250ohm * 0,03A = 7,5 volt la arduino.
Risti să îți arzi ADC-ul și arduino-ul.
Pentru a testa un instrument pe teren, luați cu dvs. o baterie de 12 volți și conectați-o la intrarea de alimentare. Utilizarea unei surse externe de alimentare nu va influența configurarea curentă a PLC-ului.
Pentru a testa un card de intrare analogic pe teren, luați cu dvs. o baterie de 12 volt. Deconectați instrumentul + de la circuit. Conectați masa la masa instrumentului și RTD- la firul instrumentului deconectat.
Pasul 3: Calibrare
Pentru a calibra citirea rezistorului de șunt, conectați RTD- la șuntul analogic de șuntare. Setați potul tăiat astfel încât mA generat să fie de 4 mA. Dacă dispozitivul dvs. mA nu este egal, modificați prima valoare din cod la linia 84. Creșterea acestei valori va reduce citirea mA.
Apoi setați vasul tăiat pentru a genera 20mA. Dacă dispozitivul dvs. mA nu este egal, modificați a doua valoare din codul de la linia 84.
Deci, 4-20mA dvs. va deveni acum 0,6-3 volți (teoretic). Gama mai mult decât suficientă. Folosind biblioteca de la eRCaGuy, eșantionarea vă va oferi o citire mai bună și mai stabilă.
Să sperăm că ai citit asta. Acesta este primul meu instructable, așa că vă rog să-l luați ușor dacă am făcut o greșeală undeva sau am lăsat ceva deoparte.
Acest proiect nu este probabil cel mai bun mod de a face acest lucru, dar funcționează pentru mine și a fost distractiv să îl fac.
Câteva idei am în plus …
Adăugați un servo pentru a roti vasul de tăiere în interiorul cutiei.
Adăugați butoane pentru a roti servo la stânga sau la dreapta.
Adăugați un senzor digital de temperatură la radiatorul regulatorului pentru a preveni căldura periculoasă.
Pasul 4: Programarea Arduino
#include
// #include // Decomentează dacă folosești un ecran LCD cu un registru de schimbare.
#include
#include
#include
#include
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Decomentați dacă utilizați un LCD cu un registru de schimbare.
// | | | _ Știft de blocare
// | / _ Clock Pin
// / _ Date / Activare Pin
octeți bitsOfResolution = 12; // a comandat rezoluție supra-eșantionată
numSamples longSamplesToAvg = 20; // numărul de probe LA REZOLUȚIA SUPRAESEMPLUATĂ pe care doriți să le luați și mediați
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
unsigned long previousMillis = 0;
tensiune de șuntare plutitoare = 0,0; // Din INA219
tensiunea autobuzului plutitor = 0,0; // Din INA219
float current_mA = 0,0; // Din INA219
tensiunea de încărcare a plutitorului = 0,0; // Din INA219
arduinovoltaj plutitor = 0,0; // Calculul tensiunii de la pinul A0
Unsigned long A0analogReading = 0;
octet analogIn = A0;
float ma_mapped = 0,0; // Harta tensiunii de la A0 la 4-20mA
configurare nulă () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t currentFrequency;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // Bibliotecă modificată pentru mai multă precizie pe mA
lcd.inceput (20, 4); // inițializați ecranul LCD
lcd.clear ();
lcd.home (); // du-te acasă
lcd.print ("********************");
întârziere (2000);
lcd.clear ();
}
bucla nulă ()
{
curent lung nesemnat Millis = millis ();
const interval lung = 100;
//&&&&&&&&&&&&&&&&&
Citiți dispozitivele I2C la intervale și faceți câteva calcule
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis> = interval) {
previousMillis = curentMillis;
Interval();
}
Print_To_LCD (); // Probabil că nu trebuie să actualizez LCD-ul atât de repede și pot fi mutat sub Interval ()
}
nul
Interval () {
shuntvoltage = ina219.getShuntVoltage_mV ();
busvoltage = ina219.getBusVoltage_V ();
current_mA = ina219.getCurrent_mA ();
loadvoltage = (busvoltage + (shuntvoltage / 1000)) + 0,71; // +0.71 este căderea de tensiune a diodei mele
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5.0 * A0analogReading); // Calculat la mV
ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Harta nu poate folosi flotante. Adăugați un 0 în spatele valorii mapate și împărțiți la 10 pentru a obține citirea float.
// Cartografierea din calculul tensiunii oferă o citire mai stabilă, apoi folosind citirea ADC brută.
if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Fără sarcină INA219 tinde să citească mai jos -0.01, bine al meu.
{
current_mA = 0;
busvoltage = 0;
tensiune de sarcină = 0;
shuntvoltage = 0;
}
}
nul
Print_To_LCD () {
lcd.setCursor (0, 0);
if (ma_mapped <1,25) {// Fără curent, aceasta este citirea mea de mA, așa că am aruncat-o.
lcd.print ("* 4-20mA Generator *");
}
altceva {
lcd.print ("** Tester analogic **");
}
lcd.setCursor (0, 1);
lcd.print ("Dispozitiv:");
lcd.setCursor (10, 1);
if (ma_mapped <1,25) {
lcd.print („fără dispozitiv”);
}
altceva {
lcd.print (ma_mapped);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Generare:");
lcd.setCursor (10, 2);
lcd.print (current_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Furnizare:");
lcd.setCursor (10, 3);
lcd.print (tensiune de încărcare);
lcd.print ("V");
}
Pasul 5: Mai multe fotografii
Terminal amplificator difuzor. LED acționat de generatorul de curent (RTD). Cablarea cardului analogic va înlocui LED-ul.
Terminalul din stânga este pentru intrarea de alimentare. Terminalele din dreapta sunt pentru intrarea instrumentului.
Pasul 6: Montare
Totul pare să se potrivească. Am folosit silicon pentru a ține temporar unele lucruri împreună. Ghiveciul de tăiere este siliconat în partea dreaptă sus. O gaură mică a fost pre-forată. Pot regla curentul din partea de sus a casetei.
Pasul 7: Doar fotografii
Pasul 8: Cuvinte finale
Am testat ieșirea acestui dispozitiv cu un PLC Allan Bradley. Rezultatele au fost foarte bune. Am o gamă completă. Am testat și acest dispozitiv cu senzor de presiune de 4-20 mA care are un ecran LCD încorporat. Din nou, rezultatele au fost foarte bune. Citirile mele au fost oprite de câteva zecimale.
Scriu codul meu arduino în file. În PLC-uri se numesc sub rutine. Îmi facilitează depanarea.
Atașate sunt fișiere text ale acestor file.
Recomandat:
DIY -- Cum se face un robot Spider care poate fi controlat folosind un smartphone folosind Arduino Uno: 6 pași
DIY || Cum să faci un robot Spider care poate fi controlat folosind un smartphone Utilizând Arduino Uno: În timp ce faci un robot Spider, poți învăța atât de multe lucruri despre robotică. În acest videoclip vă vom arăta cum să realizați un robot Spider, pe care să îl putem utiliza cu smartphone-ul nostru (Androi
Led de control peste tot în lume folosind Internet folosind Arduino: 4 pași
Led de control peste tot în lume folosind internetul folosind Arduino: Bună, eu sunt Rithik. Vom face un led controlat de internet folosind telefonul dvs. Vom folosi software cum ar fi Arduino IDE și Blynk. Este simplu și dacă ați reușit puteți controla cât mai multe componente electronice doriți Lucruri de care avem nevoie: Hardware:
Cum se face o dronă folosind Arduino UNO - Realizați un Quadcopter folosind microcontrolerul: 8 pași (cu imagini)
Cum se face o dronă folosind Arduino UNO | Realizați un Quadcopter folosind microcontrolerul: Introducere Vizitați canalul meu Youtube O dronă este un gadget (produs) foarte scump de cumpărat. În această postare voi discuta, cum o fac la prețuri ieftine ?? Și cum poți să-ți faci propriile tale la prețuri ieftine … Ei bine, în India toate materialele (motoare, ESC-uri
Control radio RF 433MHZ folosind HT12D HT12E - Realizarea unei telecomenzi RF folosind HT12E și HT12D cu 433mhz: 5 pași
Control radio RF 433MHZ folosind HT12D HT12E | Efectuarea unei telecomenzi RF Utilizarea HT12E și HT12D Cu 433mhz: În acest instructiv vă voi arăta cum să realizați o telecomandă RADIO folosind modulul receptor 433mhz transmițător cu codare HT12E & IC decodificator HT12D. În acest instructable veți putea trimite și primi date folosind COMPONENTE foarte ieftine CA: HT
Generator - Generator de curent continuu folosind comutatorul Reed: 3 pași
Generator - Generator de curent continuu utilizând comutatorul Reed: Generator de curent continuu simplu Un generator de curent continuu (DC) este o mașină electrică care convertește energia mecanică în electricitate de curent continuu. schimbări