Talaan ng mga Nilalaman:
- Hakbang 1:
- Hakbang 2: Pagsubok ng Output ng Instrumento
- Hakbang 3: Pagkakalibrate
- Hakbang 4: Programming Arduino
- Hakbang 5: Ilang Higit pang Mga Larawan
- Hakbang 6: Pagkakasundo
- Hakbang 7: Larawan lang
- Hakbang 8: Pangwakas na Mga Salita
Video: 4-20ma Generator / Tester Gamit ang Arduino: 8 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:10
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:
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
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
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
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
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:
Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: 4 na Hakbang
Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: " Push-It " Interactive na laro gamit ang isang hubad na Arduino board, walang mga panlabas na bahagi o mga kable na kinakailangan (gumagamit ng isang capacitive 'touch' input). Ipinapakita sa itaas, ipinapakita ang pagtakbo nito sa dalawang magkakaibang board. Push-Mayroon itong dalawang layunin. Upang mabilis na maipakita / v
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang
Internet Clock: Display Date and Time With an OLED Gamit ang ESP8266 NodeMCU With NTP Protocol: Kumusta mga tao sa mga itinuturo na ito na magtatayo kami ng isang orasan sa internet na magkakaroon ng oras mula sa internet kaya't ang proyektong ito ay hindi mangangailangan ng anumang RTC upang tumakbo, kakailanganin lamang nito ang isang nagtatrabaho koneksyon sa internet At para sa proyektong ito kailangan mo ng isang esp8266 na magkakaroon ng
Wireless Remote Gamit ang 2.4Ghz NRF24L01 Module Sa Arduino - Nrf24l01 4 Channel / 6 Channel Transmitter Receiver para sa Quadcopter - Rc Helicopter - Rc Plane Gamit ang Arduino: 5 Hakbang (na may Mga Larawan)
Wireless Remote Gamit ang 2.4Ghz NRF24L01 Module Sa Arduino | Nrf24l01 4 Channel / 6 Channel Transmitter Receiver para sa Quadcopter | Rc Helicopter | Rc Plane Gamit ang Arduino: Upang mapatakbo ang isang Rc car | Quadcopter | Drone | RC eroplano | RC boat, palagi kaming nangangailangan ng isang reciever at transmitter, kumbaga para sa RC QUADCOPTER kailangan namin ng isang 6 channel transmitter at receiver at ang uri ng TX at RX ay masyadong magastos, kaya gagawa kami ng isa sa aming
Generator - DC Generator Gamit ang Reed Switch: 3 Hakbang
Generator mga pagbabago
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c