Мазмуну:
- 1 кадам:
- 2 -кадам: Инструменттерди чыгаруу тести
- 3 -кадам: Калибрлөө
- 4 -кадам: Arduino программалоо
- 5 -кадам: Дагы бир нече сүрөттөр
- 6 -кадам: Орнотуу
- 7 -кадам: Жөн гана сүрөттөр
- 8 -кадам: Акыркы сөздөр
Video: 4-20ma Generator/Tester Arduino колдонуу: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Ebayде 4-20мА генераторлор бар, бирок мен өзүмдүн колумдан келген нерселердин бөлүгүн жана тегерегимдеги бөлүктөрдү колдонууну жакшы көрөм.
Мен биздин PLC аналогдук кириштерибизди текшерип, scada окуубузду текшерип, 4-20мА приборлордун чыгарылышын текшергим келди. 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 которгуч) // Span мааниге ээ эмес (диапазон)
DIODE (полярдык коргоо үчүн)
INA219
Arduino
1 кадам:
Схемага ылайык, тетиктерди кайда кошуп, зым менен жабуу керектигин башташыңыз керек.
LM7808 PLC системалары үчүн эң жакшы 25 вольтту киргизүүгө мүмкүндүк берет, алар жалпысынан 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.25W резисторлор бул ишти жакшы аткарышат. Сиз шунт каршылыгын таштап, прибордун өндүрүшүн текшерүү үчүн экинчи INA219 кошо аласыз. Менде бирөө калды, анын ордуна резистор колдондум.
Шунтту колдонуу менен тестирлөө түзмөктүн терс тарабында гана жүргүзүлүшү мүмкүн. Эгерде сиз позитивдүү жагын колдонсоңуз, анда ардуиноңузга уруксат берилген чыңалуудан 4 эсе көп камсыздап, түтүндү чыгарасыз.
Прибордун терс зымы менен катар шунт каршылыгын кошуңуз. Шунттун түзмөккө эң жакын жагы arduino үчүн оң аналог болуп калат. Энергия менен камсыздоого жакын шунттун экинчи тарабы аналогдук киргизүү схемасын аяктаган arduino жерге айланат.
150 Ом шунт резистору - бул ардуино колдонууда колдонулушу керек болгон абсолюттук максимум. Резистордо мАга карай сызыктуу чыңалуу төмөндөшү бар. МА канчалык чоң болсо, чыңалуу ошончолук чоң болот.
Учурда 20mA учурдагы # 150ohm*0.02A = 3volt to arduino.
Учурда 4mA учурдагы # 150ohm*0.004A = 0.6volt to arduino.
Эми сиз чыңалуунун 5 вольтко жакын болушун каалашыңыз мүмкүн, ошондо сиз бизге ардуинонун ADC диапазонун толук бере аласыз. (Эмес, жакшы ой).
RTD'лер 30.2mA кубаттуулугуна жетиши мүмкүн (Меники кылат). 150ohm*0.03A = 4.8 вольт. Бул мен каалагандай жакын.
Дагы бир веб -сайтта 250 Ом резистор колдонулушу көрсөтүлгөн.
Учурда 20mA # 250ohm*0.02A = 5volt to arduino.
Учурда 30mA # 250ohm*0.03A = 7.5volt to arduino.
Сиздин ADC жана arduino күйүп кетүү коркунучу бар.
Аспапты талаада сынап көрүү үчүн, өзүңүз менен 12 вольттук батареяны алып, аны камсыздоо киришине туташтырыңыз. Тышкы энергия булагын колдонуу учурдагы PLC орнотуусуна таасир этпейт.
Талаада аналогдук кирүү картасын текшерүү үчүн 12 вольттук батареяны алыңыз. Аспапты + чынжырдан ажыратыңыз. Аспапты жерге жана RTDди ажыратылган прибордун зымына туташтырыңыз.
3 -кадам: Калибрлөө
Шунт резисторунун окуусун калибрлөө үчүн, RTD- аналогуна шунт коюңуз. Жасалган идишти 4 мА кылып орнотуңуз. Эгерде сиздин түзмөк mA бирдей эмес болсо, анда 84 -саптагы коддун биринчи маанисин өзгөртүңүз. Бул маанини жогорулатуу мАнын көрсөткүчүн төмөндөтөт.
Андан кийин 20мА генерациялоо үчүн идишти коюңуз. Эгерде сиздин түзмөк mA барабар болбосо, анда 84 -саптагы коддун экинчи маанисин өзгөртүңүз.
Ошентип, сиздин 4-20мА азыр 0.6-3 вольт болуп калат (теориялык). Жетишээрлик диапазон. ERCaGuy китепканасын колдонуп, ашыкча тандоо сизге жакшыраак жана туруктуу окууну берет.
Сиз муну окуйсуз деп үмүттөнөбүз. Бул менин биринчи үйрөткүчүм, андыктан бир жерден ката кетирип же бир нерсени калтырып койсом, жайыраак кабыл алыңыз.
Бул долбоор, балким, бул тууралуу айтуунун эң жакшы жолу эмес, бирок ал мен үчүн иштейт жана муну кылуу кызыктуу болду.
Менде кошумча идеялар бар …
Корпустун ичиндеги кооз идишти айландыруу үчүн servo кошуңуз.
Сервону солго же оңго буруу үчүн баскычтарды кошуңуз.
Санарип температура сенсорун жөнгө салгычка кошуп, коркунучтуу ысыкты эскертүү.
4 -кадам: Arduino программалоо
#кошуу
// #кошуу // Комментарий бербөө, эгерде сиз сменалык реестр менен ЖКны колдонсоңуз.
#кошуу
#кошуу
#кошуу
#кошуу
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Комментарий жазбаңыз, эгерде сиз сменалык реестр менен ЖКны колдонсоңуз.
// | | | _ бекитүү пин
// | / _ Саат пин
// / _ Берилиштер/Иштетүү пин
байт bitsOfResolution = 12; // буйрук oversampled токтом
белгисиз узун numSamplesToAvg = 20; // сиз алгысы келген жана орточо алгандагы OVERSAMPLED RESOLUTION үлгүлөрүнүн саны
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
unsigned long previousMillis = 0;
float shuntvoltage = 0.0; // INA219дан
калкып чыгуучу шинанын чыңалуусу = 0,0; // INA219дан
float current_mA = 0.0; // INA219дан
калкып чыгуучу вольт = 0.0; // INA219дан
float arduinovoltage = 0.0; // A0 пинден чыңалууну эсептөө
Кол коюлбаган узун A0analogReading = 0;
байт analogIn = 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 ();
}
боштук цикл ()
{
белгисиз узак currentMillis = millis ();
const узак аралыгы = 100;
//&&&&&&&&&&&&&&&&&
I2C түзмөктөрүн интервал менен окуп, кээ бир эсептөөлөрдү жасаңыз
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
эгер (currentMillis - previousMillis> = интервал) {
previousMillis = currentMillis;
Interval ();
}
Print_To_LCD (); // Мен, балким, LCDди ушунчалык тез жаңыртуунун кажети жок жана аны Интервалдын астына жылдырса болот ()
}
жараксыз
Интервал () {
shuntvoltage = ina219.getShuntVoltage_mV ();
busvoltage = ina219.getBusVoltage_V ();
current_mA = ina219.getCurrent_mA ();
жүк чыңалуусу = (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го бөлүп, калкып окууну алыңыз.
// Чыңалуу эсептөөлөрүнүн картасы чийки adc окуусун колдонуп, туруктуу окууну берет.
if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // INA219 эч кандай жүктөбөстөн -0.01ден төмөн окуйт, меники жакшы.
{
current_mA = 0;
busvoltage = 0;
жүк чыңалуусу = 0;
shuntvoltage = 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 ("mA");
lcd.setCursor (0, 2);
lcd.print ("Generate:");
lcd.setCursor (10, 2);
lcd.print (current_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Сунуш:");
lcd.setCursor (10, 3);
lcd.print (жүк чыңалуусу);
lcd.print ("V");
}
5 -кадам: Дагы бир нече сүрөттөр
Күчөткүчтүн терминалы. Учурдагы генератор (RTD) тарабынан башкарылган LED. Аналогдук карта зымдары LEDди алмаштырат.
Терең сол жактагы терминал камсыздоо үчүн. Оң жактагы терминалдар инструменттерди киргизүү үчүн.
6 -кадам: Орнотуу
Баары ылайыктуу окшойт. Мен кээ бир нерселерди убактылуу кармоо үчүн силикон колдондум. Трим казаны жогорку оңго силикон менен капталган. Кичинекей тешик алдын ала тешилген. Мен кутунун башынан токту тууралай алам.
7 -кадам: Жөн гана сүрөттөр
8 -кадам: Акыркы сөздөр
Мен бул түзмөктүн өндүрүшүн Allan Bradley PLC менен сынап көрдүм. Жыйынтыгы абдан жакшы болду. Мен толук диапазонго ээ болдум. Мен бул түзмөктү 4-20мА басым сенсору менен сынап көрдүм, ал ЖК дисплейде орнотулган. Дагы жыйынтыктар абдан жакшы болду. Менин окууларым бир нече ондуктар менен өчүрүлдү.
Мен arduino кодумду баракчаларга жазам. PLCде алар суб күн тартиби деп аталат. Мүчүлүштүктөрдү оңдоону жеңилдетет.
Ошол өтмөктөрдүн текст файлдары тиркелет.
Сунушталууда:
DS1307ди кантип колдонуу керек Arduino колдонуу: 7 кадам
DS1307ди кантип колдонуу керек Arduino колдонуу: DS1307 - бул чыныгы убакыт сааты IC (RTC). Бул IC убакыт маалыматтарды берүү үчүн колдонулат. Белгиленген убакыт секундадан, мүнөттөн, сааттардан, күндөрдөн, датадан, айдан жана жылдан башталат. Бул IC Crystal жана 3.6V батареялары сыяктуу кошумча тышкы компоненттерди талап кылат. Кристалл
Neopixel Ws2812 Rainbow LED жарыгы M5stick-C - менен Rainbowту Neopixel Ws2812де иштетүү M5stack M5stick Cди колдонуу Arduino IDEди колдонуу: 5 кадам
Neopixel Ws2812 Rainbow LED Glow with M5stick-C | Rainbow боюнча Neopixel Ws2812де чуркоо M5stack M5stick Cди колдонуу Arduino IDEди колдонуу: Салам балдар бул көрсөтмөлөрдө биз неопиксел ws2812 светодиоддорун же LED тилкесин же LED матрицасын же LED шакегин m5stack m5stick-C өнүктүрүү тактасы менен Arduino IDE менен колдонууну үйрөнөбүз жана биз жасайбыз. аны менен асан -үсөн үлгүсү
Ардуино менен 2.4Ghz NRF24L01 модулун колдонуу менен зымсыз алыстан башкаруу - Nrf24l01 4 каналы / 6 каналды берүүчү Quadcopter үчүн алуучу - Rc Helicopter - Rc учагы Arduino колдонуу: 5 кадам (сүрөттөр менен)
Ардуино менен 2.4Ghz NRF24L01 модулун колдонуу менен зымсыз алыстан башкаруу | Nrf24l01 4 каналы / 6 каналды берүүчү Quadcopter үчүн алуучу | Rc Helicopter | Arduino менен Rc учагы: Rc машинасын иштетүү | Quadcopter | Дрон | RC учагы | RC кайыгы, бизге дайыма рецептор жана өткөргүч керек, RC QUADCOPTER үчүн бизге 6 каналдуу өткөргүч жана кабыл алгыч керек деп ойлойбуз жана TX менен RXтин бул түрү өтө кымбат, ошондуктан биз аны өзүбүздө жасайбыз
Wemos ESP-Wroom-02 D1 Mini WiFi модулун кантип колдонуу керек Blynkти колдонуу менен ESP8266 + 18650: 10 кадам
Wemos ESP-Wroom-02 D1 Mini WiFi модулун кантип колдонуу керек Blynkти колдонуу менен ESP8266 + 18650: Мүнөздөмөсү: nodemcu 18650 кубаттоо тутумунун интеграциясы менен шайкеш келет. туташтыргычы уйку режиминде колдонулушу мүмкүн · 1 кошуу
Blynkти колдонуу менен Arduino WeMos D1 WiFi UNO ESP8266 IOT IDEге шайкеш келген тактаны кантип колдонуу керек: 10 кадам
Blynkти колдонуу менен Arduino WeMos D1 WiFi UNO ESP8266 IOT IDEге шайкеш келген тактаны кантип колдонсо болот: Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE Compatible Board Description: Description: WiFi ESP8266 Development Board WEMOS D1. WEMOS D1 - ESP8266 12Eге негизделген WIFI өнүктүрүү тактасы. Иштөө тутуму NODEMCUга окшош, бирок аппараттык жабдуулар бузулган