Mündəricat:
- Addım 1:
- Addım 2: Alət Çıxış Testi
- Addım 3: Kalibrləmə
- Addım 4: Arduino proqramlaşdırılması
- Addım 5: Daha Bir neçə Şəkil
- Addım 6: Daxil edin
- Addım 7: Yalnız Şəkillər
- Addım 8: Son sözlər
Video: Arduino istifadə edərək 4-20ma Generator/Tester: 8 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Ebay-da 4-20mA generatorlar mövcuddur, amma mən bir şeyi sevirəm ki, əşyaların DIY hissəsini və ətrafa qoyduğum hissələri istifadə edirəm.
Scada oxunuşlarımızı yoxlamaq və 4-20mA alətlərinin çıxışını yoxlamaq üçün PLC-nin analoq girişlərini sınamaq istədim. Ebayda arduino üçün gərginlik çeviricilərinə və cərəyan çeviricilərinə gərginlik var, buna baxmayaraq kalibrləmə lazımdır. Bunu ebayda və bəyənmələrdə tapılan çeviricilərdən hər hansı birini kalibr etmək üçün istifadə edə bilərəm.
Bir generator və test cihazı DIY edəcəyimə qərar verdim. Bu nöqtədə hələ də davam edən bir iş və bir prototipdir.
İstifadə edilməyən köhnə 2.1 səs sistemim vardı (kiçik dinamiklər). Beləliklə, karnay kimi dinamik qutularından birini istifadə etdim. İldırımdan ölən bir gücləndiricim də var idi, bir külək bağlamaq üçün dinamikin terminalını həmin gücləndiricidən çıxartdım. Gələcəkdə bir PCB və daha yaxşı bir örtük etmək niyyətindəyəm.
Təchizat:
Parça siyahısı.
LCD // 20x4 (kodunuz daha kiçikdirsə uyğunlaşdırın)
LM7808 // 8 volt tənzimləyici
LED // İstənilən növ və ya ölçü
LED üçün rezistor // LED tipi və 8 volt üçün uyğundur
100 ohm müqavimət + 47 ohm rezistor seriyada // Şunt müqaviməti olaraq istifadə ediləcək
10K rezistor // Yüksək gərginliyə qarşı qorunan Arduino analoqu
22K rezistor // A0 -un üzməsini dayandırmaq üçün
Trimpot 100 ohm + 47 ohm müqavimət seriyası // PT100 simulyatoru
35 voltluq kondansatör // 470uF istifadə etdim, sadəcə təchizat gərginliyinin dalğalanmasını aşağı salmaq üçün
RTD (PT100 çeviricisi) // Aralığın əhəmiyyəti yoxdur (diapazon)
DIODE (polariteyi qorumaq üçün)
INA219
Arduino
Addım 1:
Sxemdən sonra hissələri haradan əlavə edəcəyinizi və tel bağlayacağınıza başlamalısınız.
LM7808, PLC sistemləri üçün ən uyğun olan maksimum 25 volt girişə imkan verir, ümumiyyətlə 24 volt güc təchizatı istifadə edirlər. Tənzimləyiciyə soyuducu əlavə edin və uzun müddət istifadə etməyin. 16 volt düşməsi tənzimləyicinin çox istilik istehsal etməsinə səbəb olur.
Giriş təchizatı tənzimləyicini qidalandırır və INA219 VIN -ə qoşulur, bu konfiqurasiyada INA219, dioddan gerilim düşməsini çıxarmaqla düzgün təchizat gərginliyini ölçə biləcək. Diod geriliminin düşməsini ölçməlisiniz və koda əlavə etməlisiniz ki, düzgün təchizat gərginliyi oxunuşunu əldə edəsiniz.
INA219 VOUT -dan RTD+ -ya qədər RTD -ni gücləndirir. RTD- yerə dövrə tamamlayır.
Bir PLC analoq kartını sınamaq üçün RTD-ni analog kartın girişinə və kartdan arduino topraklamasına bağlayardınız. (Test edilən kanala bağlı olan hər hansı bir cihazı ayırdığınızdan əmin olun).
Sistemin işə salındığını göstərən R5 və LED1.
Tənzimləyici arduino VIN -ə daxil olur (arduino 5 voltluq tənzimləyiciyə malikdir).
Arduino 5V pin, çipi gücləndirmək üçün INA219-a gedir. INA219 GND arduino zəminə.
RTD PIN1 -ə qədər qab təmizləyicisi və RTD pin 2 -ə qədər qazma sancağı PT100 bağlantısını simulyasiya edəcək. (Döşəmə qabını saat yönünde çevirmək mA -nı artırmırsa telləri dəyişdirin).
Addım 2: Alət Çıxış Testi
Cihazın çıxışını yoxlamaq üçün şant rezistoru kimi əlavə hissələrə ehtiyac var. Normal 0.25W rezistorlar işi yaxşı yerinə yetirəcək. Şönt rezistorundan çıxıb cihazın çıxışını yoxlamaq üçün ikinci INA219 əlavə edə bilərsiniz. Məndə yalnız bir ədəd qaldı, buna görə rezistor istifadə etdim.
Bir şant istifadə edərək test yalnız cihazın mənfi tərəfində edilə bilər. Müsbət tərəfi istifadə etsəniz, arduino -ya icazə verilən gərginliyin 4 qatından artıq təmin edəcək və tüstünü buraxacaqsınız.
Alətin mənfi teli olan şönt rezistorunu əlavə edin. Şantın cihaza ən yaxın tərəfi arduino üçün müsbət analoq olacaq. Enerji təchizatına ən yaxın olan şantın digər tərəfi analog giriş dövrəsini tamamlayan arduino zəminə çevriləcəkdir.
150 ohm şunt rezistoru, bir arduino istifadə edərkən istifadə edilməli olan mütləq maksimumdur. Rezistorun içərisindən axan mA -ya doğru bir gerilim düşməsi var. MA nə qədər böyükdürsə, gərginlik də o qədər yüksəkdir.
20mA cərəyanda # 150ohm*0.02A = 3 volt arduino.
4mA cərəyanında # 150ohm*0.004A = 0.6 volt arduino.
İndi arduinonun bütün ADC aralığını edə biləcəyiniz üçün gərginliyin 5 volta yaxın olmasını istəyə bilərsiniz. (Yaxşı fikir deyil).
RTD -lər 30.2mA çıxışa çata bilər (Mənimki belədir). 150ohm*0.03A = 4.8 volt. İstədiyim qədər yaxındır.
Başqa bir veb sayt 250ohm müqavimət istifadə etdiyini göstərdi.
20mA cərəyanda # 250ohm*0.02A = 5 volt arduino.
30mA cərəyanda # 250ohm*0.03A = 7.5 volt arduino.
ADC və arduino yandırmaq riski var.
Bir aləti sınamaq üçün özünüzlə 12 voltluq bir batareya götürün və onu girişə qoşun. Xarici enerji mənbəyinin istifadəsi mövcud PLC quruluşuna təsir etməyəcək.
Sahədə analoq giriş kartını sınamaq üçün özünüzlə 12 voltluq bir batareya götürün. Aləti + dövrədən ayırın. Zəmini cihazın torpağına və RTD-ni kəsilmiş alət telinə qoşun.
Addım 3: Kalibrləmə
Şant rezistorunuzun oxunmasını kalibr etmək üçün, RTD- telini Analog şantına daxil edin. Yaranan mA-nı 4mA-dır. Cihazınız mA bərabər deyilsə, 84 -cü sətirdəki kodun ilk dəyərini dəyişdirin. Bu dəyəri artırmaq mA oxunuşunu azaldacaq.
Sonra trim qazanınızı 20mA yaratmaq üçün qurun. Cihazınız mA bərabər deyilsə, 84 -cü sətirdə kodun ikinci dəyərini dəyişdirin.
Beləliklə, 4-20mA-nız 0.6-3 volt olacaq (nəzəri). Kifayət qədər aralıq. ERCaGuy kitabxanasından istifadə edərək, həddindən artıq nümunə götürmə sizə daha yaxşı və sabit bir oxu verəcək.
İnşallah bunu oxuyarsınız. Bu mənim ilk təlimatımdır, buna görə bir yerdə səhv etmişəmsə və ya bir şey buraxmışamsa, sakitləşin.
Bu layihə, yəqin ki, bu işin ən yaxşı yolu deyil, amma mənim üçün işləyir və bunu etmək çox əyləncəli idi.
Əlavə fikirlərim var …
Qutunun içindəki qazanı döndərmək üçün servo əlavə edin.
Servo sola və ya sağa çevirmək üçün düymələr əlavə edin.
Təhlükəli istidən xəbərdar olmaq üçün tənzimləyicinin soyuducusuna rəqəmsal temperatur sensoru əlavə edin.
Addım 4: Arduino proqramlaşdırılması
#daxil edin
// #daxil edin // Bir keçid qeydli LCD istifadə edirsinizsə şərh yazmayın.
#daxil edin
#daxil edin
#daxil edin
#daxil edin
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Dəyişdirmə qeydli bir LCD istifadə edirsinizsə şərh yazmayın.
// | | | _ Mandal Pin
// | / _ Saat Pin
// / _ Məlumat/Pin aktivləşdir
bayt bitsOfResolution = 12; // həddindən artıq seçilmiş qətnamə əmr etdi
işarəsiz uzun numSamplesToAvg = 20; // götürmək istədiyiniz və ÇOX ÖLMƏK QƏDƏRDƏN nümunələrin sayı
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
işarəsiz uzun əvvəlkiMillis = 0;
float şunt gərginliyi = 0.0; // INA219 -dan
şamandıra gərginliyi = 0.0; // INA219 -dan
float current_mA = 0.0; // INA219 -dan
float yük gərginliyi = 0.0; // INA219 -dan
float arduinovoltage = 0.0; // A0 pinindən gərginliyin hesablanması
İmzasız uzun A0analogReading = 0;
bayt analogIn = A0;
float ma_mapped = 0.0; // Xəritə gərginliyi A0-dan 4-20mA-a qədər
boş quraşdırma () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t currentFrequency;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // MA haqqında daha dəqiqlik üçün dəyişdirilmiş kitabxana
lcd.begin (20, 4); // LCD -ni işə salın
lcd.clear ();
lcd.home (); // evə get
lcd.print ("********************");
gecikmə (2000);
lcd.clear ();
}
boşluq döngəsi ()
{
işarəsiz uzun cariMillis = millis ();
const uzun interval = 100;
//&&&&&&&&&&&&&&&&&
I2C cihazlarını aralıqlarla oxuyun və bəzi hesablamalar aparın
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis> = interval) {
əvvəlkiMillis = cariMillis;
Aralıq ();
}
Print_To_LCD (); // Yəqin ki, LCD -ni bu qədər tez yeniləməyimə ehtiyac yoxdur və Aralıqdan aşağıya köçürülə bilər ()
}
boş
Aralıq () {
shuntvoltage = ina219.getShuntVoltage_mV ();
busvoltage = ina219.getBusVoltage_V ();
cari_mA = ina219.getCurrent_mA ();
yük gərginliyi = (busvoltage + (shuntvoltage / 1000)) + 0,71; // +0.71 mənim diod gərginliyimdir
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5.0 * A0analOxu); // mV -ə hesablanır
ma_mapped = xəritə (arduinovoltage, 752, 8459, 30, 220) / 10.0; // Xəritə floatlardan istifadə edə bilməz. Xəritədə göstərilən dəyərin arxasına 0 əlavə edin və 10 -a bölün, üzgüçülük oxunuşunu əldə edin.
// Gərginlik hesablamasından eşleme, xam adc oxunuşundan istifadə edərək daha sabit bir oxu verir.
əgər (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // INA219 yüklənmədən -0.01 -dən aşağı oxumağa meyllidirsə, mənimki də oxuyur.
{
cari_mA = 0;
avtobus gərginliyi = 0;
yük gərginliyi = 0;
şunt gərginliyi = 0;
}
}
boş
Print_To_LCD () {
lcd.setCursor (0, 0);
if (ma_mapped <1.25) {// Heç bir cərəyan olmadan bu mənim mA oxunuşumdur, ona görə də onu uzaqlaşdırıram.
lcd.print (" * 4-20mA Generator *");
}
başqa {
lcd.print ("** Analog Test cihazı **");
}
lcd.setCursor (0, 1);
lcd.print ("Cihaz:");
lcd.setCursor (10, 1);
əgər (ma_mapped <1.25) {
lcd.print ("cihaz yoxdur");
}
başqa {
lcd.print (ma_mapped);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Yarat:");
lcd.setCursor (10, 2);
lcd.print (cari_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Təchizat:");
lcd.setCursor (10, 3);
lcd çap (yük gərginliyi);
lcd.print ("V");
}
Addım 5: Daha Bir neçə Şəkil
Gücləndirici dinamik terminalı. Cari generator (RTD) tərəfindən idarə olunan LED. Analog kart kabelləri LED -i əvəz edəcək.
Ən soldakı terminal təchizat girişi üçündür. Sağdakı terminallar cihaz girişi üçündür.
Addım 6: Daxil edin
Hər şey uyğun görünür. Bəzi şeyləri müvəqqəti bir yerdə saxlamaq üçün silikondan istifadə etdim. Döşəmə qabı sağ üst silikonla örtülmüşdür. Kiçik bir çuxur əvvəlcədən deşilmişdi. Qutunun yuxarı hissəsindən cərəyanı tənzimləyə bilərəm.
Addım 7: Yalnız Şəkillər
Addım 8: Son sözlər
Bu cihazın çıxışını Allan Bradley PLC ilə sınaqdan keçirdim. Nəticələr çox yaxşı idi. Mən bu cihazı 4-20mA təzyiq sensoru ilə quraşdırılmış LCD displeyə malik sınaqdan keçirdim. Yenə də nəticələr çox yaxşı oldu. Oxumalarım bir neçə ondalıkla bitdi.
Arduino kodumu nişanlara yazıram. PLC -də onlara alt rutinlər deyilir. Hata ayırmağı mənim üçün asanlaşdırır.
Bu nişanların mətn faylları əlavə olunur.
Tövsiyə:
Arduino istifadə edərək İnternetdən istifadə edərək bütün dünyanı idarə et: 4 addım
Arduino istifadə edərək İnternetdən istifadə edərək bütün dünyanı idarə et: Salam, mən Rithikəm. Telefonunuzdan istifadə edərək internetə nəzarət edən bir led quracağıq. Arduino IDE və Blynk kimi proqramlardan istifadə edəcəyik. Bu çox sadədir və uğur qazansanız istədiyiniz qədər elektron komponenti idarə edə bilərsiniz
Python istifadə edərək Raspberry Pi və AIS328DQTR istifadə edərək sürətlənməni izləyin: 6 addım
Python istifadə edərək Raspberry Pi və AIS328DQTR istifadə edərək Sürətləndirməni izləyin: Sürətləndirmə sonsuzdur, düşünürəm ki, Fizikanın bəzi qanunlarına görə. Sahilə çıxan ən sürətli məxluq, bir anda ən yüksək sürətindən istifadə edərək ovunu tutur
Arduino UNO istifadə edərək pilotsuz təyyarə necə etmək olar - Mikrokontrolördən istifadə edərək bir Quadcopter hazırlayın: 8 addım (şəkillərlə)
Arduino UNO istifadə edərək pilotsuz təyyarə necə etmək olar | Mikrokontrolördən istifadə edərək Quadcopter hazırlayın: Giriş Youtube Kanalımı Ziyarət Edin Drone almaq üçün çox bahalı bir gadget (məhsul) təşkil edir. Bu yazıda necə ucuz satacağımı müzakirə edəcəyəm? Ucuz qiymətə öz əlinizlə bunu necə edə bilərsiniz … Yaxşı Hindistanda bütün materiallar (mühərriklər, ESClər
Neopixel Ws2812 M5stick-C ilə Göy qurşağı LED Glow - Arduino IDE -dən istifadə edərək M5stack M5stick C -dən istifadə edərək Neopixel Ws2812 -də Göy qurşağının Çalışması: 5 addım
Neopixel Ws2812 M5stick-C ilə Göy qurşağı LED Glow | Arduino IDE istifadə edərək M5stack M5stick C istifadə edərək Neopixel Ws2812 üzərində Göy qurşağı çalıştırın: Salam uşaqlar bu təlimatlarda Arduino IDE ilə m5stack m5stick-C inkişaf lövhəsi ilə neopixel ws2812 LED və ya led şerit və ya led matris və ya led üzük istifadə etməyi öyrənəcəyik. onunla bir göy qurşağı nümunəsi
HT12D HT12E istifadə edərək RF 433MHZ Radio İdarəetmə - 433mhz ilə HT12E və HT12D istifadə edərək Rf Uzaqdan İdarəetmə edilməsi: 5 addım
HT12D HT12E istifadə edərək RF 433MHZ Radio İdarəetmə | HT12E və HT12D -dən 433mhz istifadə edərək Rf Uzaqdan İdarəetmə edilməsi: Bu təlimatda sizə HT12E kodlu 433mhz ötürücü qəbuledici modulu istifadə edərək RADIO uzaqdan idarə etməyi göstərəcəyəm. HT12D kod deşifratoru IC. Bu təlimatda çox ucuz komponentləri istifadə edərək məlumat göndərə və ala bilərsiniz: HT