Სარჩევი:

4-20 მ გენერატორი/ტესტერი არდუინოს გამოყენებით: 8 ნაბიჯი
4-20 მ გენერატორი/ტესტერი არდუინოს გამოყენებით: 8 ნაბიჯი

ვიდეო: 4-20 მ გენერატორი/ტესტერი არდუინოს გამოყენებით: 8 ნაბიჯი

ვიდეო: 4-20 მ გენერატორი/ტესტერი არდუინოს გამოყენებით: 8 ნაბიჯი
ვიდეო: ГОСПОДИН 420 / КЛАССИКА ИНДИЙСКОГО КИНО 2024, ნოემბერი
Anonim
4-20 მ გენერატორი/ტესტერი არდუინოს გამოყენებით
4-20 მ გენერატორი/ტესტერი არდუინოს გამოყენებით

4-20mA გენერატორები ხელმისაწვდომია ebay– ზე, მაგრამ მე მიყვარს ნივთების წვრილმანი ნაწილი და მათი ნაწილების გამოყენება.

მე მინდოდა ჩვენი PLC– ის ანალოგური შეყვანის შესამოწმებლად ჩვენი სკადის კითხვების გადამოწმება და 4-20 mA ინსტრუმენტების გამომუშავების შესამოწმებლად. არსებობს დატვირთვა მიმდინარე ძაბვის გადამყვანებზე და ძაბვა მიმდინარე კონვერტორებზე arduino– ზე ebay– ზე, თუმცა მათ კალიბრაცია სჭირდებათ. მე შემიძლია გამოვიყენო ebay– ზე ნაპოვნი ნებისმიერი კონვერტორის და მის მსგავსების დასაკალიბრებლად.

მე გადავწყვიტე, რომ მე გავაკეთებ გენერატორსა და ტესტერს. ამ დროისათვის ის ჯერ კიდევ მიმდინარეობს სამუშაოები და პროტოტიპი.

მე მქონდა ძველი 2.1 ხმოვანი სისტემა, რომელსაც არ ვიყენებდი (პატარა დინამიკები). ასე რომ, მე გამოვიყენე ერთ -ერთი სპიკერი ყუთი, როგორც დანართი. მე ასევე მქონდა გამაძლიერებელი, რომელიც ელვის გამო დაიღუპა, მე ამოვიღე დინამიკის ტერმინალი ამ გამაძლიერებელიდან, რათა ნიავი შემეერთებინა. მე ვაპირებ მომავალში გავაკეთო PCB და უკეთესი დანართი.

მასალები:

ნაწილების სია.

LCD // 20x4 (შეცვალეთ კოდი, თუ თქვენი უფრო მცირეა)

LM7808 // 8 ვოლტიანი რეგულატორი

LED // ნებისმიერი ტიპის ან ზომის

LED რეზისტორი // შესაბამისი LED ტიპისა და 8 ვოლტისთვის

100 ohm რეზისტორი + 47 ohm resistor სერიაში // გამოყენებული იქნება როგორც shunt resistor

10K რეზისტორი // არდუინოს ანალოგი მაღალი ძაბვისგან დაცვის მიზნით

22K რეზისტორი // რომ შეაჩეროს A0 მცურავი

Trimpot 100 ohm + 47 ohm რეზისტორი სერიაში // PT100 სიმულატორი

35 ვოლტიანი კონდენსატორი // მე გამოვიყენე 470uF, მხოლოდ ძაბვის რყევების შესანარჩუნებლად

RTD (PT100 გადამყვანი) // ხანგრძლივობას მნიშვნელობა არ აქვს (დიაპაზონი)

დიოდი (პოლარობის დაცვის მიზნით)

INA219

არდუინო

Ნაბიჯი 1:

გამოსახულება
გამოსახულება

სქემატურიდან გამომდინარე, თქვენ უნდა დაიწყოთ სად დაამატოთ ნაწილები და დააკავშიროთ ისინი.

LM7808 საშუალებას იძლევა მაქსიმუმ 25 ვოლტიანი შეყვანა, რაც კარგია PLC სისტემებისთვის, ისინი ძირითადად იყენებენ 24 ვოლტის დენის წყაროს. დაამატეთ გამაგრილებელი რეგულატორს და არ გამოიყენოთ იგი დიდი ხნის განმავლობაში. 16 ვოლტის ვარდნა იწვევს რეგულატორს გამოიმუშაოს ბევრი სითბო.

შეყვანის მარაგი კვებავს მარეგულირებელს და უკავშირდება INA219 VIN- ს, ამ კონფიგურაციაში INA219 ასევე შეძლებს გაზომოს სწორი მიწოდების ძაბვა გამოკლებული დიოდიდან ძაბვის ვარდნა. თქვენ უნდა გაზომოთ თქვენი დიოდური ძაბვის ვარდნა და დაამატოთ იგი კოდში ისე, რომ მიიღოთ მიწოდების ძაბვის სწორი მაჩვენებელი.

INA219 VOUT– დან RTD+ - მდე აძლიერებს RTD– ს. RTD- მიწა ასრულებს წრეს.

PLC ანალოგური ბარათის შესამოწმებლად თქვენ დააკავშირებთ RTD- ს ანალოგურ ბარათზე შეყვანისას და მიწიდან ბარათიდან არდუინოს მიწაზე. (დარწმუნდით, რომ გათიშეთ ტესტირების არხზე მიმაგრებული ნებისმიერი ინსტრუმენტი).

R5 და LED1, რაც მიუთითებს, რომ სისტემა ჩართულია.

მარეგულირებელი იკვებება არდუინოს VIN– ით (არდუინოს აქვს რეგულირება 5 ვოლტამდე).

Arduino 5V პინი მიდის INA219 ბორტზე ჩიპის გასაძლიერებლად. INA219 GND არდუინოს ადგილზე.

მოაწყვეთ ქოთნის გამწმენდი RTD PIN1– ზე და მორთვა ქოთნის pin 3 RTD pin 2– ს მოახდენს PT100 კავშირის სიმულაციას. (შეცვალეთ მავთულები, თუ მორთვა ქოთანში საათის ისრის მიმართულებით არ გაზრდის mA).

ნაბიჯი 2: ინსტრუმენტის გამოყვანის ტესტი

ინსტრუმენტის გამომუშავების შესამოწმებლად საჭიროა დამატებითი ნაწილები, როგორიცაა შუნტის რეზისტორი. ნორმალური 0.25 ვატიანი რეზისტორები მშვენივრად შეასრულებენ საქმეს. შეგიძლიათ დატოვოთ შუნტის რეზისტორი და დაამატოთ მეორე INA219 ინსტრუმენტის გამოსასვლელად. მე მხოლოდ ერთი დამრჩა, ამიტომ მის ნაცვლად რეზისტორი გამოვიყენე.

შუნტის გამოყენებით ტესტირება შესაძლებელია მხოლოდ მოწყობილობის უარყოფით მხარეზე. თუ თქვენ იყენებთ დადებით მხარეს, თქვენს არდუინოს მიაწოდებთ 4 -ჯერ მეტს ძაბვაზე და გამოუშვებთ კვამლს.

დაამატეთ შუნტის რეზისტორი სერიაში ინსტრუმენტის უარყოფითი მავთულით. მოწყობილობასთან ყველაზე ახლოს შუნტის მხარე არდუინოს დადებითი ანალოგი გახდება. შუნტის მეორე მხარე დენის წყაროსთან ყველაზე ახლოს გახდება არდუინოს გრუნტი, რომელიც ავსებს ანალოგურ შეყვანის წრეს.

150 ohm shunt რეზისტორი არის აბსოლუტური მაქსიმუმი, რომელიც უნდა იქნას გამოყენებული არდუინოს გამოყენებისას. რეზისტორს აქვს ძაბვის ვარდნა წრფივი mA– ში, რომელიც მიედინება მასში. რაც უფრო დიდია mA მით უფრო დიდია ძაბვა.

20mA მიმდინარე # 150ohm*0.02A = 3 ვოლტი არდუინოზე.

4mA მიმდინარე # 150ohm*0.004A = 0.6 ვოლტი არდუინოზე.

ახლა თქვენ შეიძლება გინდათ რომ ძაბვა იყოს 5 ვოლტთან ახლოს, ასე რომ თქვენ შეგიძლიათ მოგვაწოდოთ arduino– ს სრული დიაპაზონი. (არ არის კარგი იდეა).

RTD– ს შეუძლია მიაღწიოს 30.2 mA გამომუშავებას (ჩემია). 150ohm*0.03A = 4.8 ვოლტი. ეს იმდენად ახლოსაა, რამდენადაც მსურს ვიყო.

სხვა ვებგვერდზე მითითებულია გამოიყენოთ 250ohm რეზისტორი.

20mA დენით # 250ohm*0.02A = 5 ვოლტი არდუინოზე.

30mA მიმდინარე # 250ohm*0.03A = 7.5 ვოლტი არდუინოზე.

თქვენ რისკავთ თქვენი ADC და arduino– ს დაწვას.

საველე ინსტრუმენტის შესამოწმებლად, თქვენთან ერთად მიიღეთ 12 ვოლტიანი ბატარეა და შეაერთეთ იგი კვების ბლოკთან. გარე კვების წყაროს გამოყენება გავლენას არ მოახდენს PLC– ის მიმდინარე კონფიგურაციაზე.

ველში ანალოგური შეყვანის ბარათის შესამოწმებლად, თქვენთან ერთად მიიღეთ 12 ვოლტიანი ბატარეა. გათიშეთ ინსტრუმენტი + წრიდან. შეაერთეთ მიწა ინსტრუმენტის მიწასთან და RTD- გათიშული ინსტრუმენტის მავთულთან.

ნაბიჯი 3: კალიბრაცია

კალიბრაცია
კალიბრაცია

თქვენი შუნტის რეზისტორის კითხვის დასადგენად, შეაერთეთ RTD- შუნტის ანალოგიში. დააყენეთ მორთვა ქოთანში ისე, რომ გამომუშავებული mA იყოს 4mA. თუ თქვენი მოწყობილობა mA არ არის თანაბარი, შეცვალეთ კოდის პირველი მნიშვნელობა 84 -ე სტრიქონში. ამ მნიშვნელობის გაზრდა შეამცირებს mA- ს წაკითხვას.

შემდეგ დააყენეთ მორთვა ქვაბში, რომ გამოიმუშაოს 20mA. თუ თქვენი მოწყობილობა mA არ არის თანაბარი, შეცვალეთ მეორე მნიშვნელობა კოდში 84 სტრიქონში.

თქვენი 4-20mA გახდება 0.6-3 ვოლტი (თეორიული). საკმარისზე მეტი დიაპაზონი. ERCaGuy– ს ბიბლიოთეკის გამოყენებით, გადაჭარბებული შერჩევა მოგცემთ უკეთეს და სტაბილურ კითხვას.

იმედია წაიკითხავთ ამას. ეს არის ჩემი პირველი ინსტრუქცია, ასე რომ გთხოვთ დამშვიდდეთ, თუ სადმე დავუშვი შეცდომა ან რაიმე გამოვტოვე.

ეს პროექტი ალბათ არ არის საუკეთესო გზა ამის გასაკეთებლად, მაგრამ ის მუშაობს ჩემთვის და სახალისო იყო ამის გაკეთება.

რამდენიმე იდეა მაქვს დამატებით…

დაამატეთ სერვო, რომ მორთოთ ქვაბი ყუთში შიგნით.

დაამატეთ ბიძგი ღილაკებს, რათა სერვერი გადატრიალდეს მარცხნივ ან მარჯვნივ.

დაამატეთ ციფრული ტემპერატურის სენსორი მარეგულირებელ გამაცხელებელთან, რათა გააფრთხილოს საშიში სითბო.

ნაბიჯი 4: არდუინოს დაპროგრამება

#ჩართეთ

// #მოიცავს // დატოვეთ კომენტარი, თუ თქვენ იყენებთ LCD ცვლის რეგისტრატორს.

#ჩართეთ

#ჩართეთ

#ჩართეთ

#ჩართეთ

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR LCD (3, 4, 2); // კომენტარის დატოვება, თუ თქვენ იყენებთ LCD ცვლის რეგისტრატორს.

// | | | _ დამჭერი პინი

// | / _ საათის პინი

// / _ მონაცემები/პინის ჩართვა

ბაიტი bitsOfResolution = 12; // უბრძანა oversampled რეზოლუცია

ხელმოუწერელი გრძელი numSamplesToAvg = 20; // ნიმუშების რაოდენობა გადაჭარბებული გადაწყვეტილებით, რომლის აღებაც გსურთ და საშუალო

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

ხელმოუწერელი გრძელი წინამილის = 0;

float shuntvoltage = 0.0; // INA219– დან

float busvoltage = 0.0; // INA219– დან

float current_mA = 0.0; // INA219– დან

float loadvoltage = 0.0; // INA219– დან

float arduinovoltage = 0.0; // ძაბვის გაანგარიშება A0 პინიდან

ხელმოუწერელი გრძელი A0analogReading = 0;

ბაიტი analogIn = A0;

float ma_mapped = 0.0; // რუქის ძაბვა A0– დან 4-20 mA– მდე

void setup () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t მიმდინარე სიხშირე;

ina219. დასაწყისი ();

ina219.setCalibration_32V_30mA (); // შეცვლილი ბიბლიოთეკა mA– ზე მეტი სიზუსტისთვის

lcd. დასაწყისი (20, 4); // LCD– ის ინიციალიზაცია

lcd. წმინდა ();

LCD. მთავარი (); // სახლში წასვლა

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

დაგვიანება (2000);

lcd. წმინდა ();

}

ბათილი მარყუჟი ()

{

ხელმოუწერელი გრძელი მიმდინარემილის = მილილი ();

const ხანგრძლივი ინტერვალი = 100;

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

წაიკითხეთ I2C მოწყობილობები ინტერვალებით და გააკეთეთ გამოთვლები

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

if (currentMillis - previousMillis> = ინტერვალი) {

previousMillis = მიმდინარე მილი;

ინტერვალი ();

}

Print_To_LCD (); // მე ალბათ არ მჭირდება LCD– ის ასე სწრაფად განახლება და მისი გადატანა შესაძლებელია ინტერვალის ქვემოთ ()

}

სიცარიელე

ინტერვალი () {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

loadvoltage = (busvoltage + (shuntvoltage / 1000)) + 0.71; // +0.71 არის ჩემი დიოდური ძაბვის ვარდნა

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // გამოითვლება mV- მდე

ma_mapped = რუკა (arduinovoltage, 752, 8459, 30, 220) / 10.0; // რუქას არ შეუძლია გამოიყენოს მცურავი. დაამატეთ 0 დაგეგმილი მნიშვნელობის უკან და გაყავით 10 -ზე, რომ მიიღოთ float წაკითხვა.

// ძაბვის გაანგარიშებიდან რუქა იძლევა უფრო სტაბილურ წაკითხვას, ვიდრე ნედლი ადკ კითხვის გამოყენებით.

თუ (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // დატვირთვის გარეშე INA219 მიდრეკილია წაიკითხოს ქვემოთ -0.01, კარგად მუშაობს ჩემი.

{

მიმდინარე_mA = 0;

busvoltage = 0;

დატვირთვა = 0;

shuntvoltage = 0;

}

}

სიცარიელე

Print_To_LCD () {

lcd.setCursor (0, 0);

თუ (ma_mapped <1.25) {// მიმდინარეობის გარეშე ეს არის ჩემი mA კითხვა, ამიტომ მე უბრალოდ ჩავაგდე იგი.

lcd.print (" * 4-20mA გენერატორი *");

}

სხვა {

lcd.print ("** ანალოგური ტესტერი **");

}

lcd.setCursor (0, 1);

lcd.print ("მოწყობილობა:");

lcd.setCursor (10, 1);

თუ (ma_mapped <1.25) {

lcd.print ("მოწყობილობა არ არის");

}

სხვა {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("გენერირება:");

lcd.setCursor (10, 2);

lcd.print (მიმდინარე_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("მიწოდება:");

lcd.setCursor (10, 3);

lcd.print (დატვირთვის ძაბვა);

lcd.print ("V");

}

ნაბიჯი 5: კიდევ რამდენიმე ფოტო

კიდევ რამდენიმე ფოტო
კიდევ რამდენიმე ფოტო

გამაძლიერებელი სპიკერის ტერმინალი. LED ახორციელებს მიმდინარე გენერატორი (RTD). ანალოგური ბარათის გაყვანილობა შეცვლის LED- ს.

ტერმინალი მარცხნივ არის მიწოდების შეყვანისთვის. ტერმინალები მარჯვნივ არის ინსტრუმენტის შეყვანისთვის.

ნაბიჯი 6: მორგება

მორგება
მორგება

როგორც ჩანს, ყველაფერი ჯდება. მე სილიკონი გამოვიყენე, რომ დროებით შემეძლო რაღაცების ერთმანეთთან ერთად შენახვა. მორთული ქოთანი სილიკონისაა ზედა მარჯვნივ. პატარა ხვრელი იყო წინასწარ გაჭედილი. შემიძლია შეცვალო დენი ყუთის ზემოდან.

ნაბიჯი 7: უბრალოდ ფოტოები

უბრალოდ ფოტოები
უბრალოდ ფოტოები
უბრალოდ ფოტოები
უბრალოდ ფოტოები
უბრალოდ ფოტოები
უბრალოდ ფოტოები
უბრალოდ ფოტოები
უბრალოდ ფოტოები

ნაბიჯი 8: საბოლოო სიტყვები

მე გამოვცადე ამ მოწყობილობის გამომუშავება ალან ბრედლის PLC– ით. შედეგები იყო ძალიან კარგი. მე მივიღე სრული დიაპაზონი. მე ასევე გამოვცადე ეს მოწყობილობა 4-20mA წნევის სენსორით, რომელსაც აქვს ჩაშენებული LCD დისპლეი. ისევ და ისევ, შედეგები ძალიან კარგი იყო. ჩემი წაკითხვა შეწყვეტილია რამდენიმე ათწილადის მიერ.

მე ვწერ ჩემს არდუინოს კოდს ჩანართებში. PLC– ში მათ ეწოდება ქვე -რუტინები. ხდის გამართვას ჩემი.

თანდართულია ამ ჩანართების ტექსტური ფაილები.

გირჩევთ: