Sadržaj:

Generator/tester 4-20ma pomoću Arduina: 8 koraka
Generator/tester 4-20ma pomoću Arduina: 8 koraka

Video: Generator/tester 4-20ma pomoću Arduina: 8 koraka

Video: Generator/tester 4-20ma pomoću Arduina: 8 koraka
Video: Как сделать регулируемый регулятор напряжения с помощью 7805 2024, Novembar
Anonim
Generator/tester 4-20ma pomoću Arduina
Generator/tester 4-20ma pomoću Arduina

Generatori 4-20mA dostupni su na ebayu, ali ja volim dio DIY stvari i korištenja dijelova koje imam okolo.

Htio sam testirati analogne ulaze našeg PLC-a kako bih provjerio očitavanja scada i testirao izlaz 4-20mA instrumenata. Postoji mnogo pretvarača struje u napon i pretvarača napona u struju za arduino na ebayu, ipak ih je potrebno kalibrirati. Ovo mogu koristiti za kalibriranje bilo kojeg od onih pretvarača koji se nalaze na ebayu i sličnim.

Odlučio sam da ću sam napraviti generator i tester. U ovom trenutku to je još uvijek u tijeku i prototip.

Imao sam stari 2.1 zvučni sistem koji se nije koristio (mali zvučnici). Tako sam koristio jednu od kutija za zvučnike kao kućište. Imao sam i pojačalo koje je umrlo od munje, uklonio sam priključak zvučnika s tog pojačala kako bih spojio povjetarac. Nameravam da u budućnosti napravim PCB i bolje kućište.

Potrošni materijal:

Lista delova.

LCD // 20x4 (prilagodite kôd ako je vaš manji)

LM7808 // 8voltni regulator

LED // Bilo koje vrste ili veličine

Otpornik za LED // Odgovara za LED tip i 8 volti

Otpornik od 100 ohma + otpornik od 47 ohma u seriji // Koristit će se kao odvojni otpornik

10K otpornik // Arduino analogni u zaštiti od visokog napona

22K otpornik // Za zaustavljanje plutanja A0

Trimpot 100 ohm + 47 ohm otpornik u seriji // PT100 simulator

35 voltni kondenzator // Koristio sam 470uF, samo da bih smanjio fluktuacije napona

RTD (sonda PT100) // Raspon nije bitan (raspon)

DIODA (za zaštitu polariteta)

INA219

Arduino

Korak 1:

Image
Image

Slijedeći shemu, trebali biste započeti gdje dodati dijelove i spojiti ih.

LM7808 dozvoljava ulaz od 25 volti što je sasvim u redu za PLC sisteme, oni općenito koriste napajanja od 24 volta. Regulatoru dodajte hladnjak i nemojte ga koristiti duže vrijeme. Pad 16 volti dovodi do toga da regulator proizvodi mnogo topline.

Ulaz napaja regulator i povezuje se s INA219 VIN, u ovoj konfiguraciji INA219 će također moći mjeriti ispravan opskrbni napon minus pad napona s diode. Trebali biste izmjeriti pad napona diode i dodati ga kodu kako biste dobili ispravno očitavanje napona napajanja.

Od INA219 VOUT do RTD+ napaja RTD. RTD- uzemljenje dovršava krug.

Da biste testirali PLC analognu karticu, trebali biste spojiti RTD- na ulaz na analognoj kartici i uzemljenje s kartice na arduino masu. (Obavezno odspojite bilo koji instrument priključen na kanal koji se testira).

R5 i LED1, indikacijski sistem je uključen.

Regulator se napaja u arduino VIN (arduino ima ugrađeni regulator na 5 volti).

Arduino 5V pin ide na INA219 za napajanje ugrađenog čipa. INA219 GND na arduino tlo.

Obrišite brisač lonca na RTD PIN1 i Isecite pin 3 na RTD pin 2 simulirat će PT100 vezu. (Zamijenite žice ako okretanje trim lonca u smjeru kazaljke na satu ne povećava mA).

Korak 2: Test izlaza instrumenta

Za ispitivanje izlaza instrumenta potrebni su dodatni dijelovi, poput šanta otpornika. Normalni otpornici od 0,25 W odlično će obaviti posao. Možete ostaviti shunt otpornik i dodati drugi INA219 za testiranje izlaza instrumenta. Ostao mi je samo jedan pa sam umjesto toga upotrijebio otpornik.

Testiranje pomoću šanta može se obaviti samo na negativnoj strani uređaja. Ako koristite pozitivnu stranu, opskrbit ćete svoj arduino više od 4 puta većim dozvoljenim naponom i pustiti dim.

Dodajte shunt otpornik u nizu s negativnom žicom instrumenta. Strana šanta najbliža uređaju postat će pozitivni analog za arduino. Druga strana šanta najbliža napajanju postat će arduino uzemljenje koje završava analogni ulazni krug.

Otpor otpornika od 150 ohma apsolutni je maksimum koji treba koristiti pri upotrebi arduina. Otpornik ima pad napona linearnog prema mA koji protiče kroz njega. Što je veći mA veći je napon.

Na 20mA struje # 150ohm*0.02A = 3volt na arduino.

Na 4mA struje # 150ohm*0,004A = 0,6 volti na arduino.

Sada biste možda htjeli da napon bude bliži 5 volti kako biste mogli koristiti cijeli ADC raspon arduina. (Nije dobra ideja).

RTD -ovi mogu doseći izlaz od 30,2 mA (moj radi). 150ohm*0,03A = 4,8 volti. To je onoliko blizu koliko bih ja želio biti.

Druga web stranica naznačila je da koristi otpornik od 250 ohma.

Na 20mA struje # 250ohm*0,02A = 5volt na arduino.

Na 30mA struje # 250ohm*0,03A = 7,5 volti na arduino.

Rizikujete spaljivanje ADC -a i arduina.

Da biste testirali instrument na terenu, ponesite sa sobom 12 -voltnu bateriju i spojite je na ulaz za napajanje. Korištenje vanjskog izvora napajanja neće utjecati na trenutne postavke PLC -a.

Za testiranje analogne ulazne kartice na terenu, ponesite sa sobom bateriju od 12 volti. Odvojite instrument + od strujnog kola. Spojite uzemljenje na masu instrumenta i RTD- na isključenu žicu instrumenta.

Korak 3: Kalibracija

Kalibracija
Kalibracija

Da biste kalibrirali očitavanje otpornika, spojite RTD- na analogni ulaz šanta. Postavite trim lonac tako da generirana mA bude 4mA. Ako mA vašeg uređaja nije jednaka, promijenite prvu vrijednost u kodu u retku 84. Povećanjem ove vrijednosti smanjit ćete očitavanje mA.

Zatim podesite trim lonac da generira 20mA. Ako mA vašeg uređaja nije jednaka, promijenite drugu vrijednost u kodu u retku 84.

Tako će vaših 4-20mA sada postati 0,6-3 volti (teoretski). Domet više nego dovoljan. Koristeći biblioteku iz eRCaGuy -a, preuzorkovanje će vam omogućiti bolje i stabilnije očitavanje.

Nadam se da ste ovo pročitali. Ovo je moje prvo uputstvo, pa molim vas polako ako sam negdje pogriješio ili nešto izostavio.

Ovaj projekt vjerojatno nije najbolji način za to, ali meni je uspio i bilo mi je zabavno raditi to.

Neke ideje imam dodatno …

Dodajte servo za okretanje trim lonca unutar kutije.

Dodajte tipke za rotiranje servo ulijevo ili udesno.

Dodajte hladnjak regulatora na digitalni senzor temperature kako biste upozorili na opasnu toplinu.

Korak 4: Programiranje Arduina

#include

// #include // Uncomment ako koristite LCD sa registrom pomaka.

#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); // Bez komentara ako koristite LCD sa registrom pomaka.

// | | | _ Pin za zatvaranje

// | / _ Pin sata

// / _ Podaci/Omogući pin

bajtovi bitovaOfResolution = 12; // zadana rezolucija sa uzorkom

bez potpisa dugi numSamplesToAvg = 20; // broj uzoraka NA REZOLUCIJI PRIMERENOG UZORKA koju želite uzeti i prosjek

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

unsigned long previousMillis = 0;

plovni pokretni napon = 0,0; // Iz INA219

plovni napon sabirnice = 0,0; // Iz INA219

plutajuća struja_mA = 0,0; // Iz INA219

napon opterećenja plovka = 0,0; // Iz INA219

plovni arduino napon = 0,0; // Proračun napona sa A0 pina

Nepotpisano dugo A0analogReading = 0;

bajt analogIn = A0;

float ma_mapped = 0.0; // Mapa napona od A0 do 4-20mA

void setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Izmijenjena biblioteka za veću preciznost na mA

lcd.begin (20, 4); // inicijalizacija LCD -a

lcd.clear ();

lcd.home (); // idi kući

lcd.print ("********************");

kašnjenje (2000);

lcd.clear ();

}

void loop ()

{

bez potpisa duga strujaMillis = millis ();

const long interval = 100;

//&&&&&&&&&&&&&&&&&

U intervalima čitajte I2C uređaje i napravite neke proračune

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

if (currentMillis - previousMillis> = interval) {

previousMillis = trenutniMillis;

Interval ();

}

Print_To_LCD (); // Vjerovatno ne moram tako brzo ažurirati LCD i mogu se premjestiti na ispod Interval ()

}

void

Interval () {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

trenutna_mA = ina219.getCurrent_mA ();

napon opterećenja = (napon sabirnice + (shuntvoltage / 1000)) + 0,71; // +0,71 je moj pad napona diode

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // Izračunato na mV

ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10,0; // Karta ne može koristiti float. Dodajte 0 iza mapirane vrijednosti i podijelite s 10 da biste dobili očitavanje s plutanjem.

// Mapiranje iz proračuna napona daje stabilnije očitavanje nego korištenje neobrađenog očitanja ADC -a.

if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Bez opterećenja INA219 ima tendenciju očitavanja ispod -0.01, a moje radi.

{

trenutna_mA = 0;

napon sabirnice = 0;

napon opterećenja = 0;

shuntvoltage = 0;

}

}

void

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Bez struje, ovo je moje očitavanje mA, pa sam ga jednostavno odbacio.

lcd.print (" * 4-20mA Generator *");

}

else {

lcd.print ("** Analogni tester **");

}

lcd.setCursor (0, 1);

lcd.print ("Uređaj:");

lcd.setCursor (10, 1);

if (ma_mapirano <1,25) {

lcd.print ("bez uređaja");

}

else {

lcd.print (ma_mapirano);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Generiši:");

lcd.setCursor (10, 2);

lcd.print (current_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Opskrba:");

lcd.setCursor (10, 3);

lcd.print (napon opterećenja);

lcd.print ("V");

}

Korak 5: Još nekoliko fotografija

Još nekoliko fotografija
Još nekoliko fotografija

Terminal zvučnika pojačala. LED pogonjen generatorom struje (RTD). Ožičenje analogne kartice zamijenit će LED.

Krajnji lijevi priključak služi za ulaz napajanja. Stezaljke na desnoj strani služe za unos instrumenata.

Korak 6: Ugradnja

Fitting In
Fitting In

Čini se da sve pristaje. Koristio sam silikon da privremeno držim neke stvari zajedno. Trim lonac je silikoniziran u gornjem desnom kutu. Mala rupa je prethodno izbušena. Mogu podesiti struju s vrha kutije.

Korak 7: Samo fotografije

Samo fotografije
Samo fotografije
Samo fotografije
Samo fotografije
Samo fotografije
Samo fotografije
Samo fotografije
Samo fotografije

Korak 8: Završne riječi

Testirao sam izlaz ovog uređaja sa PLC -om Allan Bradley. Rezultati su bili vrlo dobri. Dobio sam cijeli raspon. Također sam testirao ovaj uređaj sa senzorom pritiska 4-20mA koji ima ugrađen LCD ekran. Ponovo su rezultati bili veoma dobri. Moja očitanja su bila isključena za nekoliko decimala.

Zapisujem svoj arduino kod u kartice. U PLC -ovima se zovu podrutine. Olakšava otklanjanje grešaka.

U prilogu se nalaze tekstualne datoteke tih kartica.

Preporučuje se: