Агуулгын хүснэгт:

4-20ma генератор/Arduino ашиглан шалгагч: 8 алхам
4-20ma генератор/Arduino ашиглан шалгагч: 8 алхам

Видео: 4-20ma генератор/Arduino ашиглан шалгагч: 8 алхам

Видео: 4-20ma генератор/Arduino ашиглан шалгагч: 8 алхам
Видео: Обзор модуля ввода/вывода EBYTE Modbus RTU 2024, Арваннэгдүгээр
Anonim
4-20ma генератор/Arduino ашиглан шалгагч
4-20ma генератор/Arduino ашиглан шалгагч

Ebay дээр 4-20мА генератор байдаг, гэхдээ би өөрөө DIY-ийн эд ангиудыг дуртайяа ашигладаг.

Би scada-ийн уншилтыг шалгаж, 4-20 мА багажны гаралтыг шалгахын тулд PLC-ийн аналог оролтыг туршиж үзэхийг хүссэн юм. Ebay дээр arduino -ийн хүчдэл хувиргагч руу гүйдэл, гүйдлийн хувиргагч руу хүчдэл их байдаг боловч тэдгээрийг тохируулах шаардлагатай байдаг. Би үүнийг ашиглан ebay болон үүнээс олдсон хөрвүүлэгчдийн аль нэгийг тохируулах боломжтой.

Би DIY генератор, шалгагч хийхээр шийдсэн. Одоогийн байдлаар энэ нь хийгдэж буй ажил бөгөөд прототип хэвээр байна.

Би хуучин 2.1 дууны системтэй байсан (жижиг чанга яригч). Тиймээс би чанга яригчийн нэг хайрцгийг хашлага болгон ашигласан. Би бас аянгын улмаас нас барсан өсгөгчтэй байсан тул салхи холбохын тулд чанга яригчийн терминалыг тэр өсгөгчөөс салгасан. Би ирээдүйд ПХБ хийж, илүү сайн хашлага хийх бодолтой байна.

Хангамж:

Эд ангиудын жагсаалт.

LCD // 20x4 (хэрэв таных жижиг бол кодыг тохируулна уу)

LM7808 // 8 вольтын зохицуулагч

LED // Ямар ч төрөл, хэмжээтэй

LED -ийн резистор // LED төрөл ба 8 вольтын хувьд тохиромжтой

100 ом эсэргүүцэл + 47 ом эсэргүүцэл цуврал // Шунт эсэргүүцэл болгон ашиглах болно

10K резистор // Өндөр хүчдэлээс хамгаалах Arduino аналог

22K эсэргүүцэл // A0 -ийн хөвөхийг зогсоох

Trimpot 100 ом + 47 ом эсэргүүцэл цувралаар // PT100 симулятор

35 вольтын конденсатор // Би тэжээлийн хүчдэлийн хэлбэлзлийг бууруулахын тулд 470uF ашигладаг байсан

RTD (PT100 хувиргагч) // Хамрах хүрээ хамаагүй (хүрээ)

DIODE (туйлшралыг хамгаалах зориулалттай)

INA219

Ардуино

1-р алхам:

Зураг
Зураг

Схемийн дагуу та эд ангиудыг хаана нэмж, утсаар холбож эхлэх хэрэгтэй.

LM7808 нь дээд тал нь 25 вольтын оролтыг зөвшөөрдөг бөгөөд энэ нь PLC системд тохиромжтой бөгөөд ихэвчлэн 24 вольтын тэжээлийн хангамжийг ашигладаг. Дулаан шингээгчийг зохицуулагчид нэмж, удаан хугацаагаар бүү ашиглаарай. 16 вольтыг бууруулснаар зохицуулагч нь маш их дулаан ялгаруулдаг.

Оролтын хангамж нь зохицуулагчийг тэжээж, INA219 VIN -тэй холбогддог бөгөөд энэ тохиргоонд INA219 нь тэжээлийн зөв хүчдэлийг диодоос хүчдэлийн уналтыг хасч хэмжих боломжтой болно. Та диодын хүчдэлийн уналтыг хэмжиж, кодыг нэмж оруулах хэрэгтэй бөгөөд ингэснээр тэжээлийн хүчдэлийн зөв уншилтыг авах боломжтой болно.

INA219 VOUT -аас RTD+ хүртэл RTD -ийг идэвхжүүлдэг. RTD- газардуулга нь хэлхээг дуусгадаг.

PLC аналог картыг туршихын тулд та RTD-ийг аналог карт дээрх оролттой холбож, картаас arduino газар руу холбоно. (Туршилт хийж буй сувагтай холбогдсон бүх хэрэгслийг салгахаа мартуузай).

R5 ба LED1 нь системийг асааж байгааг илтгэнэ.

Зохицуулагч нь arduino VIN -ийг тэжээдэг (arduino нь 5 вольт хүртэл зохицуулагчтай).

Arduino 5V зүү нь самбар дээрх чипийг тэжээхийн тулд INA219 руу явдаг. INA219 GND нь arduino ground руу.

RTD PIN1 рүү савны арчигчийг, RTD зүү 2 -оос 3 -р зүсэлт хийх нь PT100 холболтыг дуурайх болно. (Хажуугийн савыг цагийн зүүний дагуу эргүүлэх нь мА -ийг нэмэгдүүлэхгүй бол утсыг солино уу).

Алхам 2: Багажны гаралтын тест

Багажны гаралтыг шалгахын тулд шунт эсэргүүцэл гэх мэт нэмэлт хэсгүүд шаардлагатай болно. Ердийн 0.25 Вт резистор нь ажлыг сайн гүйцэтгэдэг. Та шунт эсэргүүцэгчийг орхиж, багажийн гаралтыг шалгахын тулд хоёр дахь INA219 нэмж болно. Надад ганц л үлдсэн тул оронд нь резистор ашигласан.

Шунт ашиглан туршилтыг зөвхөн төхөөрөмжийн сөрөг тал дээр хийж болно. Хэрэв та эерэг талыг ашиглавал arduino -г зөвшөөрөгдсөн хүчдэлээс 4 дахин их хүчээр хангаж, утаа гарах болно.

Төхөөрөмжийн сөрөг утастай шунт эсэргүүцэгчийг цувралаар нэмнэ. Төхөөрөмжид хамгийн ойр байрлах шунтын тал нь arduino -ийн эерэг аналог болно. Цахилгаан тэжээлд хамгийн ойр байрлах шунтын нөгөө тал нь аналог оролтын хэлхээг дуусгах arduino газар болно.

150 омын шунт эсэргүүцэл нь arduino ашиглахад ашиглах ёстой үнэмлэхүй дээд хэмжээ юм. Резистор нь хүчдэлийн бууралтаар дамждаг мА -ийн шугаман шугамтай. МА их байх тусам хүчдэл их байх болно.

20mA гүйдлийн үед # 150ohm*0.02A = 3 вольт arduino.

4mA гүйдлийн үед # 150ohm*0.004A = 0.6 вольт arduino.

Одоо та хүчдэлийг 5 вольтод ойртуулахыг хүсч магадгүй юм. (Сайн санаа биш).

RTD нь 30.2mA гаралт хийх боломжтой (Минийх хийдэг). 150 Ом*0.03А = 4.8 вольт. Энэ нь миний хүсч байгаа шиг ойрхон байна.

Өөр нэг вэбсайтад 250 ом эсэргүүцэл ашиглахыг зааж өгсөн болно.

20mA гүйдлийн үед # 250ohm*0.02A = 5 вольт arduino.

30mA гүйдлийн үед # 250ohm*0.03A = 7.5 вольт arduino.

Та ADC болон arduino -г шатаах эрсдэлтэй.

Багаж хэрэгслийг туршиж үзэхийн тулд 12 вольтын батерей авч, тэжээлийн оролттой холбоно уу. Гадаад тэжээлийн эх үүсвэр ашиглах нь одоогийн PLC тохиргоонд нөлөөлөхгүй.

Аналог оролтын картыг туршиж үзэхийн тулд 12 вольтын батерейг өөртөө авч яваарай. Багажийг + хэлхээнээс салга. Газардуулгыг газардуулгын газар, RTD- салгагдсан багажны утас руу холбоно уу.

Алхам 3: Калибровк хийх

Тохируулгын
Тохируулгын

Шунт резисторын заалтыг тохируулахын тулд RTD- антентыг шунт руу залгаарай. Үүсгэсэн мА нь 4мА байхаар тохируулаарай. Хэрэв таны төхөөрөмжийн mA тэнцүү биш бол 84 -р мөр дэх кодын эхний утгыг өөрчилнө үү. Энэ утгыг нэмэгдүүлэх нь mA уншилтыг бууруулна.

Дараа нь засах саваа 20 мА үүсгэхээр тохируулаарай. Хэрэв таны төхөөрөмжийн mA тэнцүү биш бол 84 -р мөрөн дэх кодын хоёр дахь утгыг өөрчилнө үү.

Тиймээс таны 4-20mA одоо 0.6-3 вольт болно (онолын хувьд). Хангалттай хүрээнээс илүү. ERCaGuy -ийн номын санг ашиглан хэт их түүвэрлэлт хийх нь танд илүү сайн, тогтвортой уншилт өгөх болно.

Та үүнийг уншсан гэж найдаж байна. Энэ бол миний анхны зааварчилгаа тул хэрэв би хаа нэгтээ алдаа гаргасан эсвэл ямар нэгэн зүйл орхисон бол тайвшираарай.

Энэ төсөл бол үүнийг хэрэгжүүлэх хамгийн сайн арга биш байж магадгүй, гэхдээ энэ нь надад ашигтай бөгөөд үүнийг хийх нь хөгжилтэй байсан.

Надад нэмэлт санаа байгаа зарим санаа …

Хайрцаг доторх обудны савыг эргүүлэхийн тулд servo нэмнэ үү.

Сервог зүүн эсвэл баруун тийш эргүүлэхийн тулд товчлууруудыг нэмнэ үү.

Аюултай дулаанаас сэрэмжлүүлэхийн тулд зохицуулагчийн радиаторт дижитал температур мэдрэгчийг нэмнэ үү.

Алхам 4: Arduino програмчлах

#оруулах

// #include // Хэрэв та ээлжийн бүртгэлтэй LCD ашигладаг бол сэтгэгдэл бичихгүй.

#оруулах

#оруулах

#оруулах

#оруулах

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Хэрэв та ээлжийн бүртгэлтэй LCD ашиглаж байгаа бол сэтгэгдэл бичихгүй.

// | | | _ түгжээний зүү

// | / _ Цагийн зүү

// / _ Өгөгдөл/Пин идэвхжүүлэх

byte bitsOfResolution = 12; // хэт дээж авсан нарийвчлалыг тушаасан

гарын үсэг зураагүй урт numSamplesToAvg = 20; // авахыг хүсч буй хэт давж заалдсан шийдвэрийн дээжийн тоо ба дундаж

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

гарын үсэг зураагүй урт өмнөхMillis = 0;

хөвөх шунтын хүчдэл = 0.0; // INA219 -ээс

хөвөх автобусны хүчдэл = 0.0; // INA219 -ээс

float current_mA = 0.0; // INA219 -ээс

хөвөх ачааллын хүчдэл = 0.0; // INA219 -ээс

хөвөх ардуиновольт = 0.0; // Хүчдэлийг A0 зүүгээр тооцоолох

Гарын үсэг зураагүй урт A0analogReading = 0;

байт аналогIn = A0;

float ma_mapped = 0.0; // А0-аас 4-20мА хүртэлх газрын зургийн хүчдэл

хүчингүй тохиргоо () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219. эхлэх ();

ina219.setCalibration_32V_30mA (); // MA дээр илүү нарийвчлалтай байхын тулд номын санг өөрчилсөн

lcd.begin (20, 4); // LCD дэлгэцийг эхлүүлэх

lcd.clear ();

lcd.home (); // гэртээ харь

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

саатал (2000);

lcd.clear ();

}

хоосон давталт ()

{

тэмдэггүй урт гүйдэлMillis = millis ();

const урт интервал = 100;

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

I2C төхөөрөмжийг үе үе уншиж, тооцоолол хий

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

if (currentMillis - previousMillis> = интервал) {

өмнөхMillis = одоогийнMillis;

Интервал ();

}

Print_To_LCD (); // Надад LCD дэлгэцийг ийм хурдан шинэчлэх шаардлагагүй байж магадгүй бөгөөд үүнийг Интервал () доор шилжүүлж болно.

}

хоосон

Интервал () {

shuntvoltage = ina219.getShuntVoltage_mV ();

автобусны хүчдэл = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

ачааллын хүчдэл = (автобусны хүчдэл + (шунт хүчдэл / 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 -д хуваана.

// Хүчдэлийн тооцооллын зураглал нь түүхий adc уншилтыг ашиглан илүү тогтвортой уншилтыг өгдөг.

хэрэв (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Ачаалалгүй бол INA219 нь -0.01 -ээс доош унших хандлагатай байдаг бол минийх сайн уншдаг.

{

current_mA = 0;

автобусны хүчдэл = 0;

ачааллын хүчдэл = 0;

шунт хүчдэл = 0;

}

}

хоосон

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Ямар ч гүйдэл байхгүй бол энэ нь миний mA уншилт тул би үүнийг зүгээр л хуулж авлаа.

lcd.print (" * 4-20mA генератор *");

}

өөр {

lcd.print ("** аналог шалгагч **");

}

lcd.setCursor (0, 1);

lcd.print ("Төхөөрөмж:");

lcd.setCursor (10, 1);

if (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 (current_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Нийлүүлэлт:");

lcd.setCursor (10, 3);

lcd.хэвлэх (ачааллын хүчдэл);

lcd.print ("V");

}

Алхам 5: Бусад зургууд

Өөр хэдэн зураг
Өөр хэдэн зураг

Өсгөгч чанга яригч терминал. LED нь одоогийн үүсгүүр (RTD) -ээр удирддаг. Аналог картын утас нь LED -ийг орлуулах болно.

Зүүн талын терминал нь нийлүүлэлтийн оролт юм. Баруун талын терминалууд нь багажны оролтонд зориулагдсан болно.

Алхам 6: Тохируулах

Тохирох
Тохирох

Бүх зүйл тохирсон юм шиг байна. Би зарим зүйлийг түр зуур барихын тулд силикон ашигласан. Бүрээсний савыг баруун дээд буланд силиконоор хийсэн. Жижиг нүхийг урьдчилан өрөмдсөн. Би хайрцгийн дээд талаас гүйдлийг тохируулж чадна.

Алхам 7: Зөвхөн зураг

Зүгээр л зурагнууд
Зүгээр л зурагнууд
Зүгээр л зурагнууд
Зүгээр л зурагнууд
Зүгээр л зурагнууд
Зүгээр л зурагнууд
Зүгээр л зурагнууд
Зүгээр л зурагнууд

Алхам 8: Эцсийн үгс

Би энэ төхөөрөмжийн гаралтыг Allan Bradley PLC ашиглан туршиж үзсэн. Үр дүн нь маш сайн байсан. Би энэ төхөөрөмжийг 4-20мА даралт мэдрэгч бүхий LCD дэлгэцтэй туршиж үзсэн. Дахин хэлэхэд үр дүн маш сайн байсан. Миний уншлага хэдэн аравтын бутархайгаар тасарсан.

Би arduino кодоо таб дээр бичдэг. PLC -д тэдгээрийг дэд горим гэж нэрлэдэг. Миний дибаг хийхийг хялбар болгодог.

Тэдгээр табуудын текст файлуудыг хавсаргав.

Зөвлөмж болгож буй: