Мазмұны:

4-20ma генераторы/сынаушы Arduino көмегімен: 8 қадам
4-20ma генераторы/сынаушы Arduino көмегімен: 8 қадам

Бейне: 4-20ma генераторы/сынаушы Arduino көмегімен: 8 қадам

Бейне: 4-20ma генераторы/сынаушы Arduino көмегімен: 8 қадам
Бейне: КАК СДЕЛАТЬ ЗАРЯДНОЕ УСТРОЙСТВО ДЛЯ АККУМУЛЯТОРА 12в СВОИМИ РУКАМИ 2024, Қараша
Anonim
4-20ma генераторы/сынаушы Arduino көмегімен
4-20ma генераторы/сынаушы Arduino көмегімен

Ebay-де 4-20мА генераторлар бар, бірақ мен өз қолыммен бөлшектердің бөлшектерін жақсы көремін.

Мен Scada көрсеткіштерін тексеру үшін және 4-20 мА аспаптардың шығуын тексеру үшін PLC аналогтық кірістерін тексергім келді. Ebay -де arduino үшін кернеу түрлендіргіштер мен ток түрлендіргіштерге кернеу бар, бірақ олар калибрлеуді қажет етеді. Мен мұны ebay -ден табылған түрлендіргіштердің кез келгенін калибрлеу үшін қолдана аламын.

Мен генератор мен сынаушыға DIY жасаймын деп шештім. Уақыт өте келе бұл әлі де аяқталмаған жұмыс және прототип.

Менде қолданылмайтын ескі 2.1 дыбыстық жүйесі болды (шағын динамиктер). Сондықтан мен қорап ретінде динамиктер қораптарының бірін қолдандым. Менде найзағайдан өлген күшейткіш болды, мен желді қосу үшін динамик терминалын сол күшейткіштен алып тастадым. Мен болашақта ПХД жасауды және одан да жақсы қоршауды жасағым келеді.

Жабдықтар:

Бөлшектер тізімі.

СКД // 20х4 (егер сіздікі кішірек болса, кодты бейімдеңіз)

LM7808 // 8 вольтты реттегіш

Жарық диоды // Кез келген түрі немесе өлшемі

Жарықдиодты резистор // Жарықдиодты типке және 8 вольтке сәйкес келеді

100 Ом резисторы + 47 Ом резисторы сериялы // Шунт резисторы ретінде қолданылады

10K резистор // Жоғары кернеуден қорғаудағы Arduino аналогы

22K резисторы // A0 өзгермеуін тоқтату үшін

Trimpot 100 Ом + 47 Ом резисторы сериялы // PT100 тренажері

35 вольттық конденсатор // Мен кернеудің ауытқуын төмендету үшін 470uF қолдандым

RTD (PT100 түрлендіргіші) // Аралық маңызды емес (диапазон)

Диод (полярлықты қорғау үшін)

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 жерге.

RTD PIN1 -ге арналған тазалағыш ыдыс тазалағыш және RTD 2 -ші шкафқа арналған 3 -түйреуіш PT100 байланысын модельдейді. (Егер кастрюльді сағат тілімен бұру мА жоғарылатпаса, сымдарды ауыстырыңыз).

2 -қадам: құралдың шығуын тексеру

Аспаптың шығуын тексеру үшін шунт резисторы сияқты қосымша бөлшектер қажет. 0,25 Вт қалыпты резисторлар бұл тапсырманы жақсы орындайды. Құрал шығысын тексеру үшін шунт резисторынан шығып, екінші INA219 қосуға болады. Менде тек біреуі қалды, мен резисторды қолдандым.

Шунт көмегімен тестілеу тек құрылғының теріс жағында жүргізілуі мүмкін. Егер сіз оң жағын қолдансаңыз, сіз ардуиноға рұқсат етілген кернеуден 4 есе артық қоректендіріп, түтін шығарасыз.

Құралдың теріс сымы бар шунтты резисторды тізбектей қосыңыз. Шунттың құрылғыға жақын жағы arduino үшін оң аналог болады. Қуат көзіне жақын шунттың екінші жағы аналогты кіріс тізбегін аяқтайтын arduino жерге айналады.

150 Ом шунт резисторы - бұл ардуиноны қолданған кезде қолданылатын абсолюттік максимум. Резисторда кернеудің төмендеуі бар, ол арқылы өтетін мА -ға дейін. МА неғұрлым көп болса, кернеу соғұрлым жоғары болады.

20мА ток кезінде # 150ohm*0,02А = 3 вольт ардуиноға.

4мА ток кезінде # 150ohm*0,004A = 0,6 вольт ардуиноға.

Енді сіз кернеудің 5 вольтке жақындағанын қалауыңыз мүмкін, осылайша сіз бізге arduino ADC толық диапазонын бере аласыз. (Жақсы ой емес).

RTD 30,2 мА шығысқа жетуі мүмкін (шахтада). 150 Ом*0,03А = 4,8 вольт. Бұл мен қалағандай жақын.

Басқа веб -сайтта 250 Ом резисторды қолдану көрсетілген.

20мА ток кезінде # 250ohm*0.02A = 5 вольт ардуиноға.

30мА ток кезінде # 250ohm*0.03A = 7.5 вольт ардуиноға.

Сіз ADC пен arduino -ны өртеу қаупі бар.

Аспапты далада сынау үшін 12 вольтты аккумуляторды алып, оны кіріс көзіне қосыңыз. Сыртқы қуат көзін пайдалану қазіргі PLC қондырғысына әсер етпейді.

Аналогтық кіріс картасын далада тексеру үшін өзіңізбен бірге 12 вольтты батареяны алыңыз. Аспапты + тізбектен ажыратыңыз. Аспапты жерге және RTD- ажыратылған аспап сымына жерге қосыңыз.

3 -қадам: калибрлеу

Калибрлеу
Калибрлеу

Шунт резисторының көрсеткішін калибрлеу үшін RTD- аналогты шунтқа жалғаңыз. Жасалған мА 4мА болатындай етіп кесу қазандығын орнатыңыз. Егер сіздің mA құрылғыңыз тең емес болса, онда 84 -жолдағы кодтағы бірінші мәнді өзгертіңіз. Бұл мәнді ұлғайту mA көрсеткішін төмендетеді.

Содан кейін кастрюльді 20 мА шығаратын етіп орнатыңыз. Егер сіздің мА құрылғыңыз тең болмаса, 84 -жолдағы кодтағы екінші мәнді өзгертіңіз.

Сіздің 4-20мА енді 0,6-3 вольтке айналады (теориялық). Диапазон жеткілікті. ERCaGuy кітапханасын қолдана отырып, шамадан тыс іріктеу сізге жақсы және тұрақты оқуға мүмкіндік береді.

Сіз мұны оқыдыңыз деп үміттенемін. Бұл менің бірінші нұсқаулығым, сондықтан егер мен бір жерде қате жіберген болсам немесе бірдеңені қалдырып кетсем, сабыр етіңіз.

Бұл жоба, бәлкім, бұл үшін ең жақсы әдіс емес, бірақ бұл мен үшін жұмыс істейді және оны орындау қызықты болды.

Менде қосымша идеялар бар …

Қорап ішіндегі кастрюльді айналдыру үшін серво қосыңыз.

Серводы солға немесе оңға бұру үшін түймелерді қосыңыз.

Қатерлі ыстық туралы ескерту үшін реттегіш радиаторға сандық температура датчигін қосыңыз.

4 -қадам: Arduino бағдарламалау

#қосу

// #include // Егер сіз ауысымдық регистрі бар СКД қолдансаңыз, түсініктеме бермеңіз.

#қосу

#қосу

#қосу

#қосу

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Егер сіз ауысымдық регистрі бар СКД қолдансаңыз, түсініктеме бермеңіз.

// | | | _ Бекіткіш түйреуіш

// | / _ Сағат түйрегіші

// / _ Деректер/Іске қосу

байт bitsOfResolution = 12; // бұйрықтан асып кеткен ажыратымдылық

белгісіз ұзын numSamplesToAvg = 20; // сіз қабылдағыңыз келетін және орташа алынған үлгілердің саны

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

белгісіз ұзақ алдыңғыMillis = 0;

қалқымалы шунт кернеуі = 0,0; // INA219 бастап

қалқымалы шинаның кернеуі = 0,0; // INA219 бастап

өзгермелі ток_мА = 0,0; // INA219 бастап

қалқыма жүктеме кернеуі = 0,0; // INA219 бастап

өзгермелі ардуиновольт = 0,0; // A0 түйреуіштен кернеуді есептеу

Қол қойылмаған ұзақ A0analogReading = 0;

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

float ma_mapped = 0.0; // Карта кернеуі A0-дан 4-20мА-ға дейін

жарамсыз орнату () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // MA бойынша дәлірек болу үшін өзгертілген кітапхана

lcd.begin (20, 4); // СКД инициализациялау

lcd.clear ();

lcd.home (); // үйге бару

lcd.print («********************»);

кешіктіру (2000);

lcd.clear ();

}

бос цикл ()

{

белгісіз ұзақ токMillis = millis ();

const ұзақ аралығы = 100;

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

I2C құрылғыларын аралықпен оқып, бірнеше есептеулер жүргізіңіз

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

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

алдыңғыMillis = currentMillis;

Интервал ();

}

Print_To_LCD (); // Маған СКД -ны тез арада жаңартудың қажеті жоқ шығар және оны интервалдың астына жылжытуға болады ()

}

жарамсыз

Интервал () {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

жүктеме кернеуі = (шиналық кернеу + (шунт кернеуі / 1000)) + 0,71; // +0.71 - бұл диодтың кернеуінің төмендеуі

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // МВ -ға есептелген

ma_mapped = карта (arduinovoltage, 752, 8459, 30, 220) / 10.0; // Карта қалқымалы файлдарды пайдалана алмайды. Салыстырылған мәннің артына 0 қосыңыз және өзгермелі оқуды алу үшін 10 -ға бөліңіз.

// Кернеуді есептеуден картаға түсіру ADC шикі мәнін пайдалану арқылы тұрақты оқуды береді.

if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // INA219 жүктемесіз -0.01 -ден төмен оқуға бейім, менікі жақсы.

{

ағымдағы_мА = 0;

шиналық кернеу = 0;

жүктеме кернеуі = 0;

шунт кернеуі = 0;

}

}

жарамсыз

Print_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1.25) {// Ағымсыз бұл менің мА оқуым, сондықтан мен оны алып тастадым.

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 («мА»);

lcd.setCursor (0, 2);

lcd.print («Жасау:»);

lcd.setCursor (10, 2);

lcd.print (current_mA);

lcd.print («мА»);

lcd.setCursor (0, 3);

lcd.print («Жеткізу:»);

lcd.setCursor (10, 3);

lcd.print (жүктеме кернеуі);

lcd.print («V»);

}

5 -қадам: тағы бірнеше фотосуреттер

Тағы бірнеше фотосуреттер
Тағы бірнеше фотосуреттер

Күшейткіш динамик терминалы. Жарықдиодты ток генераторы (RTD) басқарады. Аналогты карта сымы жарық диодты ауыстырады.

Терезенің сол жағында терминал қоректену кірісіне арналған. Оң жақтағы терминалдар құралдарды енгізуге арналған.

6 -қадам: кірістіру

Орналастыру
Орналастыру

Бәрі сәйкес келетін сияқты. Мен кейбір заттарды уақытша ұстау үшін силикон қолдандым. Кесетін қазан жоғарғы оң жақта силиконмен қапталған. Кішкене тесік алдын ала тесілген. Мен қораптың жоғарғы жағынан токты реттей аламын.

7 -қадам: тек фотосуреттер

Тек Фотосуреттер
Тек Фотосуреттер
Тек Фото
Тек Фото
Тек Фото
Тек Фото
Тек Фотосуреттер
Тек Фотосуреттер

8 -қадам: Қорытынды сөздер

Мен бұл құрылғының шығуын Allan Bradley PLC көмегімен тексердім. Нәтижелер өте жақсы болды. Мен бұл диапазонда 4-20мА қысым датчигі бар құрылғыны сынап көрдім. Тағы да нәтижелер өте жақсы болды. Менің оқылымдарым ондық бөлшектермен шектелді.

Мен arduino кодын қойындыларға жазамын. PLC -де олар қосалқы тәртіп деп аталады. Мен үшін жөндеуді жеңілдетеді.

Сол қойындылардың мәтіндік файлдары қоса беріледі.

Ұсынылған: