Mundarija:
- 1 -qadam:
- 2 -qadam: asboblar chiqish testi
- 3 -qadam: Kalibrlash
- 4 -qadam: Arduino dasturlash
- 5 -qadam: Boshqa rasmlar
- 6 -qadam: O'rnatish
- 7 -qadam: faqat rasmlar
- 8 -qadam: Yakuniy so'zlar
Video: Arduino yordamida 4-20ma generator/sinovchi: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:22
Ebayda 4-20mA generatorlar mavjud, lekin men o'zimning DIY qismini yaxshi ko'raman.
Men skada ko'rsatkichlarini tekshirish va 4-20 mA asboblar chiqishini sinab ko'rish uchun PLC analog kirishlarini sinab ko'rmoqchi edim. Ebayda arduino uchun kuchlanish konvertorlariga oqim va oqim konvertorlariga kuchlanish bor, lekin ular sozlanishi kerak. Men buni ebay va shunga o'xshashlardan topilgan konvertorlarning har birini kalibrlash uchun ishlatishim mumkin.
Men DIY generatori va sinov qurilmasini yasashga qaror qildim. Hozirgi vaqtda bu hali ham davom etayotgan ish va prototip.
Menda ishlatilmaydigan eski 2.1 ovozli tizim bor edi (kichik dinamiklar). Shunday qilib, men karnay qutilaridan birini korpus sifatida ishlatardim. Menda chaqmoq tufayli vafot etgan kuchaytirgich bor edi, men shamolni ulash uchun dinamikni shu kuchaytirgichdan olib tashladim. Men kelajakda tenglikni yasashni va undan yaxshi korpus yasamoqchiman.
Ta'minot:
Qismlar ro'yxati.
LCD // 20x4 (agar sizniki kichik bo'lsa, kodni moslashtiring)
LM7808 // 8 voltli regulyator
LED // Har qanday turdagi yoki o'lchamda
LED uchun rezistor // LED turi va 8 volt uchun mos
100 ohmli rezistor + 47 ohmli qarshilik ketma -ket // Shunt qarshilik sifatida ishlatiladi
10K rezistor // Arduino analogi yuqori kuchlanishdan himoyalanishda
22K qarshilik // A0 ning suzishini to'xtatish uchun
Trimpot 100 ohm + 47 ohmli qarshilik ketma -ket // PT100 simulyatori
35 voltli kondansatör // Men 470uF dan foydalanardim, faqat kuchlanish voltajining pasayishini ushlab turish uchun
RTD (PT100 o'tkazgich) // Span muhim emas (diapazon)
DIOD (qutblarni himoya qilish uchun)
INA219
Arduino
1 -qadam:
Sxemadan so'ng siz qismlarni qaerga qo'shish va simlarni ulashni boshlashingiz kerak.
LM7808 maksimal 25 voltli kirishga ruxsat beradi, bu PLC tizimlari uchun yaxshi, ular odatda 24 voltli quvvat manbalaridan foydalanadilar. Sovutgichni regulyatorga qo'shing va uni uzoq vaqt ishlatmang. 16 voltni tushirish regulyatorga juda ko'p issiqlik ishlab chiqarishga olib keladi.
Kirish manbai regulyatorni oziqlantiradi va INA219 VIN -ga ulanadi, bu konfiguratsiyada INA219 shuningdek, dioddan kuchlanish tushishini hisobga olmaganda, to'g'ri etkazib berish voltajini o'lchash imkoniyatiga ega bo'ladi. Siz diodli kuchlanish pasayishini o'lchashingiz va uni kodga qo'shishingiz kerak, shunda siz kuchlanishning to'g'ri o'qilishini olasiz.
INA219 VOUT -dan RTD+ ga qadar RTD -ni quvvatlaydi. RTD- erga o'tish davri tugaydi.
PLC analog kartasini sinab ko'rish uchun siz RTD- ni analog kartadagi kirishga va kartani erdan arduino-ga ulashingiz kerak. (Tekshirilayotgan kanalga ulangan har qanday asbobni uzib qo'yganingizga ishonch hosil qiling).
R5 va LED1, signalizatsiya tizimi yoqilganligini ko'rsatadi.
Regulyator arduino VIN -ga kiradi (arduino 5 voltli regulyatorga o'rnatilgan).
Arduino 5V pin, chipni quvvatlantirish uchun INA219 ga o'tadi. INA219 GND arduino erga.
Idish tozalagichni RTD PIN1 ga, 3 -pinli RTD pinigacha, PT100 ulanishini simulyatsiya qiladi. (Agar trim potini soat yo'nalishi bo'yicha aylantirish mA ni oshirmasa, simlarni almashtiring).
2 -qadam: asboblar chiqish testi
Qurilmaning chiqishini sinab ko'rish uchun rezistor kabi qo'shimcha qismlar kerak bo'ladi. Oddiy 0,25 Vt rezistorlar ishni yaxshi bajaradi. Siz manevr qarshiligini qoldirib, asboblar chiqishini tekshirish uchun ikkinchi INA219 ni qo'shishingiz mumkin. Menda faqat bittasi qoldi, buning o'rniga rezistor ishlatardim.
Shunt yordamida sinov faqat qurilmaning salbiy tomonida amalga oshirilishi mumkin. Agar siz ijobiy tomondan foydalansangiz, siz arduino -ga ruxsat etilgan kuchlanishdan 4 barobar ko'proq etkazib berasiz va tutunni chiqarib yuborasiz.
Qurilmaning manfiy simli ketma -ket manevr qarshiligini qo'shing. Shuntning qurilmaga eng yaqin tomoni arduino uchun ijobiy analogga aylanadi. Quvvat manbaiga yaqinroq bo'lgan shuntning boshqa tomoni analog kirish sxemasini to'ldiruvchi arduino zaminiga aylanadi.
150 ohmli shuntli rezistor - bu arduino ishlatilganda ishlatilishi kerak bo'lgan mutlaq maksimal. Rezistor mA ga to'g'ri keladigan kuchlanish pasayishiga ega. MA qanchalik katta bo'lsa, kuchlanish shunchalik katta bo'ladi.
20mA oqimda # 150ohm*0,02A = 3 voltli arduino.
4mA oqimida # 150ohm*0,004A = 0,6 volt arduino.
Endi siz kuchlanish 5 voltga yaqin bo'lishini xohlashingiz mumkin, shunda siz bizga arduino -ning to'liq ADC diapazonini bera olasiz. (Yaxshi fikr emas).
RTD 30,2 mA quvvatga ega bo'lishi mumkin (meniki). 150 ohm*0,03A = 4,8 volt. Bu men xohlagan darajada yaqin.
Boshqa veb -sayt 250 ohmli rezistordan foydalanishni ko'rsatdi.
20mA oqimda # 250ohm*0,02A = 5 volt arduino.
30mA oqimida # 250ohm*0,03A = 7,5 volt arduino.
Siz ADC va arduino -ni yoqishingiz mumkin.
Asbobni maydonda sinab ko'rish uchun siz bilan 12 voltli batareyani olib, uni quvvat manbaiga ulang. Tashqi quvvat manbaidan foydalanish joriy PLC sozlamalariga ta'sir qilmaydi.
Dalada analog kirish kartasini sinab ko'rish uchun siz bilan 12 voltli batareyani oling. Asbobni + sxemasidan uzing. Topraklama asbobini erga va RTDni uzilgan asbob simiga ulang.
3 -qadam: Kalibrlash
Shlangi rezistor o'qilishini kalibrlash uchun RTD- simini Analog shlangga ulang. Ishlatiladigan idishni 4 mA ga teng qilib sozlang. Agar sizning qurilmangiz ma teng bo'lmasa, kodning birinchi qiymatini 84 -satrda o'zgartiring. Agar bu qiymatni oshirsangiz, mA o'qilishi kamayadi.
Keyin trim idishni 20mA ishlab chiqarishga sozlang. Agar sizning qurilmangiz mA teng bo'lmasa, 84 -qatorda kodning ikkinchi qiymatini o'zgartiring.
Shunday qilib, sizning 4-20mA hozir 0,6-3 voltsga aylanadi (nazariy). Etarli oraliq. ERCaGuy kutubxonasidan foydalanib, ortiqcha namuna olish sizga yaxshiroq va barqaror o'qish imkonini beradi.
Umid qilamanki, siz buni o'qidingiz. Bu mening birinchi o'rgatuvchim, shuning uchun agar biror joyda xato qilgan bo'lsam yoki biror narsani qoldirgan bo'lsam, xotirjam bo'ling.
Bu loyiha, ehtimol, buni amalga oshirishning eng yaxshi usuli emas, lekin bu men uchun ishlaydi va buni qilish juda qiziqarli edi.
Menda qo'shimcha fikrlar bor …
Qutidagi qutini aylantirish uchun servo qo'shing.
Servo chapga yoki o'ngga aylantirish uchun tugmachalarni qo'shing.
Xavfli issiqlik haqida ogohlantirish uchun regulyator sovutgichiga raqamli harorat sensori qo'shing.
4 -qadam: Arduino dasturlash
#qo'shing
// #include // Shift registrli LCD displeydan foydalansangiz, izoh bermang.
#qo'shing
#qo'shing
#qo'shing
#qo'shing
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Shift registrli LCD displeydan foydalansangiz, izoh bermang.
// | | | _ Mandal pin
// | / _ Soat pin
// / _ Ma'lumotlar/Pinni yoqish
bayt bitsOfResolution = 12; // ortiqcha namuna olingan qarorni buyurdi
imzosiz uzun numSamplesToAvg = 20; // siz tanlamoqchi bo'lgan namunalar soni va o'rtacha
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
imzosiz uzoq oldingiMillis = 0;
suzuvchi shunt kuchlanish = 0,0; // INA219 dan
suzuvchi avtobus kuchlanish = 0,0; // INA219 dan
float current_mA = 0.0; // INA219 dan
suzuvchi yuk kuchlanish = 0,0; // INA219 dan
float arduinovoltaj = 0,0; // A0 pinidan kuchlanishni hisoblash
Imzolanmagan uzun A0analogReading = 0;
bayt analogIn = A0;
float ma_mapped = 0.0; // A0 dan 4-20mA gacha bo'lgan kuchlanish xaritasi
bo'sh o'rnatish () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t currentFrequency;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // MA ga aniqlik kiritish uchun kutubxona o'zgartirildi
lcd.begin (20, 4); // LCD -ni ishga tushiring
lcd.clear ();
lcd.home (); // uyga bor
lcd.print ("********************");
kechikish (2000);
lcd.clear ();
}
bo'sh halqa ()
{
belgisiz uzun oqimMillis = millis ();
const uzoq interval = 100;
//&&&&&&&&&&&&&&&&&
I2C qurilmalarini vaqti -vaqti bilan o'qing va ba'zi hisob -kitoblarni bajaring
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis> = interval) {
oldingiMillis = joriyMillis;
Interval ();
}
Print_To_LCD (); // Menga LCD displeyni tezda yangilashning hojati yo'q va uni Interval () ostiga ko'chirish mumkin.
}
bo'sh
Interval () {
shuntvoltaj = ina219.getShuntVoltage_mV ();
avtobus kuchlanish = ina219.getBusVoltage_V ();
joriy_mA = ina219.getCurrent_mA ();
yuk kuchlanish = (busvoltage + (shuntvoltage / 1000)) + 0,71; // +0.71 - bu mening diodli kuchlanish pasayishi
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5.0 * A0analogO'qish); // mV ga hisoblangan
ma_mapped = xarita (arduinovoltaj, 752, 8459, 30, 220) / 10.0; // Xarita floatlardan foydalana olmaydi. Olingan qiymatning ortiga 0 qo'shing va 10 ga bo'ling.
// Voltajni hisoblash xaritasi xom adc o'qish yordamida barqaror o'qishni beradi.
agar (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // INA219 yuklanmagan bo'lsa -0.01 dan past o'qiladi, meniki ham shunday.
{
joriy_mA = 0;
avtobus kuchlanish = 0;
yuk kuchlanish = 0;
shunt kuchlanish = 0;
}
}
bo'sh
Print_To_LCD () {
lcd.setCursor (0, 0);
if (ma_mapped <1.25) {// Oqimsiz bu mening mA o'qishim, shuning uchun men uni o'chirib tashlayman.
lcd.print (" * 4-20mA generator *");
}
boshqa {
lcd.print ("** Analog Tester **");
}
lcd.setCursor (0, 1);
lcd.print ("Qurilma:");
lcd.setCursor (10, 1);
agar (ma_ xaritasi <1.25) {
lcd.print ("qurilma yo'q");
}
boshqa {
lcd.print (ma_mapped);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Yaratish:");
lcd.setCursor (10, 2);
lcd.print (joriy_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Ta'minot:");
lcd.setCursor (10, 3);
lcd.print (yuk kuchlanish);
lcd.print ("V");
}
5 -qadam: Boshqa rasmlar
Kuchaytirgich karnay terminali. LED joriy generator (RTD) tomonidan boshqariladi. Analog karta simlari LEDni almashtiradi.
Chap tarafdagi terminal etkazib berish uchun mo'ljallangan. O'ng tarafdagi terminallar asboblarni kiritish uchun mo'ljallangan.
6 -qadam: O'rnatish
Hamma mos keladiganga o'xshaydi. Vaqti -vaqti bilan ba'zi narsalarni ushlab turish uchun silikon ishlatardim. Trim idish yuqori o'ng tomonda silikon bilan qoplangan. Kichik teshik oldindan burg'ulash qilingan. Men oqimni qutining yuqori qismidan sozlashim mumkin.
7 -qadam: faqat rasmlar
8 -qadam: Yakuniy so'zlar
Men bu qurilmaning chiqishini Allan Bredli PLC bilan sinab ko'rdim. Natijalar juda yaxshi bo'ldi. Men to'liq diapazonga ega bo'ldim, shuningdek, bu qurilmani 4-20 mA bosim sensori bilan sinovdan o'tkazdim, u LCD displeyga ega. Yana natijalar juda yaxshi bo'ldi. Mening o'qishlarim bir necha o'nlik sonlar bilan o'chirilgan.
Men arduino kodimni yorliqlarga yozaman. PLC -da ular "sub -routines" deb nomlanadi. Men uchun disk raskadrovka qilishni osonlashtiradi.
Ushbu yorliqlarning matnli fayllari biriktirilgan.
Tavsiya:
DIY -- Arduino Uno yordamida smartfon yordamida boshqariladigan o'rgimchak robotini qanday yasash mumkin: 6 qadam
DIY || Qanday qilib Arduino Uno yordamida smartfon yordamida boshqariladigan o'rgimchak robotini yasash mumkin: O'rgimchak robotni yaratishda robototexnika haqida ko'p narsalarni bilib olish mumkin. Bu videoda biz sizga o'rgimchak robotini yasashni ko'rsatamiz, uni biz o'z smartfonimiz yordamida boshqaramiz (Androi
Arduino va DFPlayer Mini MP3 pleer moduli yordamida LCD yordamida MP3 pleerni qanday yasash mumkin: 6 qadam
Arduino va DFPlayer Mini MP3 pleer moduli yordamida LCD yordamida MP3 pleerni qanday yasash mumkin: Bugun biz Arduino va DFPlayer mini MP3 pleer moduli yordamida LCD bilan MP3 pleer yasaymiz. Loyiha SD -kartadagi MP3 fayllarni o'qishi va pauza qilishi mumkin. va 10 yil oldingi qurilma bilan bir xil o'ynang. Bundan tashqari, oldingi qo'shiq va keyingi qo'shiq qiziqarli bo'ladi
Arduino DMX 512 sinovchi va nazoratchi: 19 qadam
Arduino DMX 512 tester va nazoratchi: aktualizaciones, ficheros, codigos … inglizcha versiya Este p
Arduino DMX 512 sinovchi va nazoratchi ENG: 19 qadam
Arduino DMX 512 Tester va Controller ENG: Yangilanishlar, fayllar, kodlar, sxemalar … Version en EspañolFacebook DMX-512 protokoli bo'yicha yorug'lik va shou ko'rsatish uchun nazorat vositasi, sobit yoki vaqtinchalik yoritgichlarni tezkor tekshirish uchun ideal. Bu loyiha portabopga bo'lgan ehtiyojdan kelib chiqadi
Arduino bilan 2.4 Gigagertsli NRF24L01 moduli yordamida simsiz masofadan boshqarish - Nrf24l01 4 kanalli / Quadcopter uchun 6 kanalli uzatuvchi qabul qilgich - Rc vertolyoti - Arduino yordamida Rc samolyoti: 5 qadam (rasmlar bilan)
Arduino bilan 2.4 Gigagertsli NRF24L01 moduli yordamida simsiz masofadan boshqarish | Nrf24l01 4 kanalli / Quadcopter uchun 6 kanalli uzatuvchi qabul qilgich | Rc vertolyoti | Arduino yordamida Rc samolyoti: Rc avtomashinasini boshqarish | Kvadrokopter | Drone | RC samolyoti | RC qayig'i, bizga har doim qabul qiluvchi va uzatuvchi kerak bo'ladi, deylik, RC QUADCOPTER uchun bizga 6 kanalli uzatuvchi va qabul qilgich kerak, va bu turdagi TX va RX juda qimmatga tushadi, shuning uchun biz uni o'zimizda ishlab chiqaramiz