Talaan ng mga Nilalaman:

4-20ma Generator / Tester Gamit ang Arduino: 8 Hakbang
4-20ma Generator / Tester Gamit ang Arduino: 8 Hakbang

Video: 4-20ma Generator / Tester Gamit ang Arduino: 8 Hakbang

Video: 4-20ma Generator / Tester Gamit ang Arduino: 8 Hakbang
Video: 4-20mA sensor explained with a simple Arduino example! 2024, Nobyembre
Anonim
4-20ma Generator / Tester Gamit ang Arduino
4-20ma Generator / Tester Gamit ang Arduino

Ang mga 4-20mA na generator ay magagamit sa ebay, ngunit para sa isang pag-ibig ang bahagi ng DIY ng mga bagay at paggamit ng mga bahagi na inilalagay ko.

Nais kong subukan ang mga analog input ng aming PLC upang mapatunayan ang aming pagbabasa ng scada at upang subukan ang output ng 4-20mA na mga instrumento. Mayroong maraming karga sa mga converter ng boltahe at boltahe sa kasalukuyang mga converter para sa arduino sa ebay, kailangan pa rin nila ang pagkakalibrate. Maaari kong gamitin ito upang i-calibrate ang alinman sa mga converter na matatagpuan sa ebay at mga gusto.

Napagpasyahan kong DIY ako ng isang generator at tester. Sa puntong ito ng oras ay gumagana pa rin ito at isang prototype.

Mayroon akong isang lumang 2.1 sound system na hindi ginagamit (maliit na nagsasalita). Kaya ginamit ko ang isa sa mga kahon ng speaker bilang isang enclosure. Mayroon din akong isang amplifier na namatay dahil sa kidlat, inalis ko ang terminal ng speaker mula sa amplifier na iyon upang makakonekta sa isang simoy. Nilalayon kong gumawa ng isang PCB sa hinaharap at isang mas mahusay na enclosure.

Mga Pantustos:

Listahan ng Mga Bahagi.

LCD // 20x4 (iakma ang code kung mas maliit ang sa iyo)

LM7808 // 8volt regulator

LED // Anumang uri o sukat

Resistor para sa LED // Naaangkop para sa uri ng LED at 8volt

100 ohm risistor + 47 ohm risistor sa serye // Ay gagamitin bilang shunt resistor

10K risistor // Arduino analog sa proteksyon laban sa mataas na boltahe

22K risistor // Upang ihinto ang A0 mula sa paglutang

Trimpot 100 ohm + 47 ohm risistor sa serye // PT100 simulator

35 volt capacitor // Gumamit ako ng 470uF, upang mapanatili lamang ang pagbagu-bago ng boltahe ng suplay

RTD (PT100 transducer) // Span ay hindi mahalaga (saklaw)

DIODE (para sa proteksyon ng polarity)

INA219

Arduino

Hakbang 1:

Larawan
Larawan

Ang pagsunod sa eskematiko ay dapat magsimula sa kung saan idaragdag ang mga bahagi at i-wire ang mga ito.

Pinapayagan ng LM7808 ang maximum na 25volts input na mainam para sa mga system ng PLC, sa pangkalahatan ay gumagamit sila ng 24volt power supplies. Magdagdag ng isang heatsink sa regulator at huwag gamitin ito para sa pinahabang panahon. Ang pagbagsak ng 16volts ay sanhi ng regulator upang makabuo ng maraming init.

Ang input supply ay nagpapakain sa regulator at kumokonekta sa INA219 VIN, sa pagsasaayos na ito ang INA219 ay masusukat din ang tamang boltahe ng suplay na minus ang pagbagsak ng boltahe mula sa diode. Dapat mong sukatin ang iyong drop ng boltahe ng diode at idagdag ito sa code upang makuha mo ang tamang readout ng boltahe ng suplay.

Mula sa INA219 VOUT hanggang sa RTD + ay pinapagana ang RTD. Ang RTD- sa lupa ay nakumpleto ang circuit.

Upang subukan ang isang PLC analog card ay ikonekta mo ang RTD- sa input sa analog card at sa lupa mula sa card hanggang sa arduino ground. (Tiyaking idiskonekta ang anumang instrumento na nakakabit sa sinusubukan na channel).

Ang R5 at LED1, na nagpapahiwatig ng system ay pinalakas.

Ang regulator ay kumakain sa arduino VIN (ang arduino ay nakabuo ng regulator hanggang 5volts).

Ang Arduino 5V pin ay pupunta sa INA219 upang mapagana ang on-board chip. INA219 GND sa arduino ground.

Trim pot wiper sa RTD PIN1 at Trim pot pin 3 hanggang RTD pin 2 ay gayahin ang isang koneksyon sa PT100. (Ipagpalit ang mga wires kung ang pag-ikot ng trim pot na pakaliwa ay hindi nadaragdagan ang mA).

Hakbang 2: Pagsubok ng Output ng Instrumento

Upang masubukan ang output ng instrumento kailangan ng labis na mga bahagi, tulad ng isang shunt risistor. Ang mga normal na resistors na 0.25W ay gagawin lamang ang trabaho. Maaari mong iwanan ang shunt resistor at magdagdag ng pangalawang INA219 upang subukan ang output ng instrumento. Isa lang ang natira sa akin kaya gumamit ako ng resistor sa halip.

Ang pagsubok sa paggamit ng isang paglilipat ay magagawa lamang sa negatibong bahagi ng aparato. Kung gagamitin mo ang positibong panig ay bibigyan mo ang iyong arduino ng higit sa 4 na beses ang pinapayagan na boltahe at palabasin ang usok.

Idagdag ang resistor ng shunt sa serye na may negatibong kawad ng instrumento. Ang panig ng shunt na pinakamalapit sa aparato ay magiging positibong analog para sa arduino. Ang kabilang panig ng shunt na pinakamalapit sa power supply ay magiging arduino ground na kinukumpleto ang analog input circuit.

Ang 150 ohm shunt risistor ay ang ganap na maximum na dapat gamitin kapag gumagamit ng isang arduino. Ang risistor ay may linear drop drop sa mA na dumadaloy dito. Ang mas malaki ang mA mas malaki ang boltahe.

Sa 20mA kasalukuyang # 150ohm * 0.02A = 3volt sa arduino.

Sa 4mA kasalukuyang # 150ohm * 0.004A = 0.6volt sa arduino.

Ngayon ay maaaring gusto mo ang boltahe na maging mas malapit sa 5 volts upang maaari mong sa amin ang buong saklaw ng ADC ng arduino. (Hindi magandang ideya).

Ang RTD's ay maaaring umabot sa 30.2mA output (Ang akin ay). 150ohm * 0.03A = 4.8volts. Malapit iyon sa nais kong maging.

Ang isa pang website ay ipinahiwatig na gumamit ng isang risistor na 250ohm.

Sa 20mA kasalukuyang # 250ohm * 0.02A = 5volt sa arduino.

Sa 30mA kasalukuyang # 250ohm * 0.03A = 7.5volt sa arduino.

Mapanganib mong sunugin ang iyong ADC at arduino.

Upang subukan ang isang instrumento sa patlang, kumuha ng 12volt na baterya sa iyo at ikonekta ito sa input input. Ang paggamit ng isang panlabas na mapagkukunan ng kuryente ay hindi makaka-impluwensya sa kasalukuyang pag-setup ng PLC.

Upang subukan ang isang analog input card sa patlang, kumuha ng 12volt na baterya. Idiskonekta ang instrumento + mula sa circuit. Ikonekta ang lupa sa ground ground ng instrumento at ang RTD- sa hindi naka-link na wire ng instrumento.

Hakbang 3: Pagkakalibrate

Pagkakalibrate
Pagkakalibrate

Upang i-calibrate ang iyong pagbabasa ng shunt resistor, wire RTD- sa shunt Analog sa. Itakda ang iyong trim pot upang ang nabuong mA ay 4mA. Kung ang iyong aparato mA ay hindi pantay-pantay pagkatapos ay baguhin ang unang halaga sa code sa linya 84. Ang pagdaragdag ng halagang ito ay babaan ang readout ng mA.

Pagkatapos itakda ang iyong trim pot upang makabuo ng 20mA. Kung ang iyong aparato mA ay hindi pantay-pantay pagkatapos ay baguhin ang pangalawang halaga sa code sa linya 84.

Kaya't ang iyong 4-20mA ay magiging 0.6-3volts (panteorya) pa rin. Higit sa sapat na saklaw. Gamit ang library mula sa eRCaGuy, bibigyan ka ng oversampling ng isang mas mahusay at matatag na pagbabasa.

Sana basahin mo ito. Ito ang aking kauna-unahang itinuro, kaya't mangyaring gawin itong madali kung nagkamali ako sa kung saan o naiwan ang isang bagay.

Ang proyektong ito ay marahil hindi ang pinakamahusay na paraan upang magawa ito, ngunit gumagana ito para sa akin at masaya itong ginagawa.

Ang ilang mga ideya mayroon akong dagdag…

Magdagdag ng isang servo upang paikutin ang trim pot sa loob ng kahon.

Magdagdag ng mga push button upang paikutin ang servo pakaliwa o pakanan.

Magdagdag ng isang digital temperatura sensor sa regulator heatsink upang balaan para sa mapanganib na init.

Hakbang 4: Programming Arduino

# isama

// #include // Uncomment kung gumagamit ka ng isang LCD na may shift register.

# isama

# isama

# isama

# isama

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

// LiquidCrystal_SR lcd (3, 4, 2); // Uncomment kung gumagamit ka ng isang LCD na may shift register.

// | | | _ Latch Pin

// | / _ Clock Pin

// / _ Data / Paganahin ang Pin

byte bitsOfResolution = 12; // utos ng labis na resolusyon

unsigned mahabang numSamplesToAvg = 20; // bilang ng mga sample SA OVERSAMPLED RESOLUTION na nais mong kunin at i-average

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

unsigned matagal na nakaraangMillis = 0;

float shuntvoltage = 0.0; // Mula sa INA219

float busvoltage = 0.0; // Mula sa INA219

float current_mA = 0.0; // Mula sa INA219

float loadvoltage = 0.0; // Mula sa INA219

float arduinovoltage = 0.0; // Pagkalkula ng boltahe mula sa A0 pin

Hindi naka-sign na mahabang A0analogReading = 0;

byte analogIn = A0;

float ma_mapped = 0.0; // Map voltage mula A0 hanggang 4-20mA

walang bisa ang pag-setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t kasalukuyangFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Binago ang library para sa mas tumpak sa mA

lcd.begin (20, 4); // ipasimula ang LCD

lcd.clear ();

lcd.home (); // umuwi kana

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

pagkaantala (2000);

lcd.clear ();

}

walang bisa loop ()

{

unsigned long currentMillis = millis ();

Const long interval = 100;

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

Basahin ang mga aparato ng I2C sa mga agwat at gumawa ng ilang mga kalkulasyon

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

kung (currentMillis - nakaraangMillis> = agwat) {

nakaraangMillis = kasalukuyangMillis;

Agwat ();

}

Print_To_LCD (); // Marahil ay hindi ko kailangang i-update ang LCD nang mabilis at maaaring ilipat sa ibaba ng pagitan ()

}

walang bisa

Agwat () {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

kasalukuyang_mA = ina219.getCurrent_mA ();

loadvoltage = (busvoltage + (shuntvoltage / 1000)) + 0.71; // +0.71 ay ang aking drop ng boltahe ng diode

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // Kinakalkula sa mV

ma_mapped = mapa (arduinovoltage, 752, 8459, 30, 220) / 10.0; // Map ay hindi maaaring gumamit ng float. Magdagdag ng isang 0 sa likod ng na-map na halaga at hatiin ng 10 upang makakuha ng float readout.

// Ang pagmamapa mula sa pagkalkula ng boltahe ay nagbibigay ng mas matatag na pagbabasa pagkatapos gamit ang hilaw na pagbasa ng adc.

kung (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Nang walang pag-load ang INA219 ay may gawi na basahin sa ibaba -0.01, mabuti ang ginagawa ng minahan.

{

kasalukuyang_mA = 0;

busvoltage = 0;

loadvoltage = 0;

shuntvoltage = 0;

}

}

walang bisa

Print_To_LCD () {

lcd.setCursor (0, 0);

kung (ma_mapped <1.25) {// Nang walang kasalukuyang ito ang aking pagbasa ng mA, kaya't tinanggal ko lamang ito.

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

}

iba pa {

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

}

lcd.setCursor (0, 1);

lcd.print ("Device:");

lcd.setCursor (10, 1);

kung (ma_mapa <1.25) {

lcd.print ("walang aparato");

}

iba pa {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Bumuo:");

lcd.setCursor (10, 2);

lcd.print (kasalukuyang_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Supply:");

lcd.setCursor (10, 3);

lcd.print (loadvoltage);

lcd.print ("V");

}

Hakbang 5: Ilang Higit pang Mga Larawan

Ilang Higit pang Mga Larawan
Ilang Higit pang Mga Larawan

Terminal ng speaker ng amplifier. Ang LED ay hinihimok ng kasalukuyang generator (RTD). Papalitan ng mga kable ng analog card ang LED.

Ang terminal sa kaliwang kaliwa ay para sa input ng supply. Ang mga terminal sa kanan ay para sa input ng instrumento.

Hakbang 6: Pagkakasundo

Pagkakasundo
Pagkakasundo

Parang umaangkop ang lahat. Gumamit ako ng silicone upang pansamantalang magkasama ng ilang mga bagay-bagay. Ang trim pot ay silikon sa kanang tuktok. Ang isang maliit na butas ay predrilled. Maaari kong ayusin ang kasalukuyang mula sa tuktok ng kahon.

Hakbang 7: Larawan lang

Larawan lang
Larawan lang
Larawan lang
Larawan lang
Larawan lang
Larawan lang
Larawan lang
Larawan lang

Hakbang 8: Pangwakas na Mga Salita

Nasubukan ko ang output ng aparatong ito sa isang Allan Bradley PLC. Napakabuti ng mga resulta. Nakuha ko ang buong saklaw. Nasubukan ko rin ang aparatong ito na may 4-20mA pressure sensor na may built in na LCD display. Muli ang mga resulta ay napakahusay. Ang aking mga pagbasa ay na-off ng isang pares ng mga decimal.

Isusulat ko ang aking arduino code sa mga tab. Sa PLC ay tinatawag silang mga sub routine. Ginagawang mas madali ang pag-debug para sa aking.

Nakalakip ang mga text file ng mga tab na iyon.

Inirerekumendang: