Spisu treści:
- Krok 1:
- Krok 2: Test wyjścia instrumentu
- Krok 3: Kalibracja
- Krok 4: Programowanie Arduino
- Krok 5: Więcej zdjęć
- Krok 6: Dopasowanie
- Krok 7: Tylko zdjęcia
- Krok 8: Ostatnie słowa
Wideo: Generator / tester 4-20ma za pomocą Arduino: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
Generatory 4-20mA są dostępne na ebayu, ale z jednej strony uwielbiam części do majsterkowania i używanie części, które mam wokół.
Chciałem przetestować wejścia analogowe naszego PLC, aby zweryfikować nasze odczyty SCADA i przetestować wyjście instrumentów 4-20 mA. W serwisie eBay jest mnóstwo konwerterów prądu na napięcie i konwerterów napięcia na prąd dla arduino, ale wymagają one kalibracji. Mogę użyć tego do skalibrowania dowolnego z konwerterów znalezionych w serwisie eBay i tym podobnych.
Postanowiłem, że zrobię majsterkowanie generatora i testera. W tej chwili jest to wciąż praca w toku i prototyp.
Miałem stary system dźwiękowy 2.1, który nie był używany (małe głośniki). Użyłem więc jednego z pudełek głośnikowych jako obudowy. Miałem też wzmacniacz, który zginął od pioruna, usunąłem terminal głośnikowy z tego wzmacniacza, aby podłączenie było proste. W przyszłości zamierzam zrobić płytkę PCB i lepszą obudowę.
Kieszonkowe dzieci:
Lista części.
LCD // 20x4 (dostosuj kod, jeśli Twój jest mniejszy)
LM7808 // regulator 8 V
LED // Dowolny typ lub rozmiar
Rezystor do LED // Odpowiedni do typu LED i 8volt
Rezystor 100 omów + rezystor 47 omów szeregowo // Będzie używany jako rezystor bocznikowy
Rezystor 10K // Arduino analog w ochronie przed wysokim napięciem
Rezystor 22K // Aby zatrzymać A0 przed pływaniem
Trimpot 100 ohm + 47 ohm rezystor szeregowo // symulator PT100
Kondensator 35 V // Użyłem 470uF, żeby ograniczyć wahania napięcia zasilania
RTD (przetwornik PT100) //Rozpiętość nie ma znaczenia (zakres)
DIODA (do ochrony polaryzacji)
INA219
Arduino
Krok 1:
Postępując zgodnie ze schematem, powinieneś zacząć od tego, gdzie dodać części i je okablować.
LM7808 pozwala na wejście maksymalnie 25 woltów, co jest w porządku dla systemów PLC, zwykle używają zasilaczy 24 woltów. Dodaj radiator do regulatora i nie używaj go przez dłuższy czas. Spadek 16 woltów powoduje, że regulator generuje dużo ciepła.
Zasilanie wejściowe zasila regulator i łączy się z VIN INA219, w tej konfiguracji INA219 będzie również w stanie zmierzyć prawidłowe napięcie zasilania minus spadek napięcia z diody. Należy zmierzyć spadek napięcia diody i dodać go do kodu, aby uzyskać prawidłowy odczyt napięcia zasilania.
Od INA219 VOUT do RTD+ zasila RTD. RTD-do ziemi zamyka obwód.
Aby przetestować kartę analogową PLC, należy podłączyć RTD- do wejścia na karcie analogowej i uziemienia z karty do uziemienia arduino. (Pamiętaj, aby odłączyć wszelkie instrumenty podłączone do testowanego kanału).
R5 i dioda LED1, wskazujące, że system jest zasilany.
Regulator zasila arduino VIN (arduino ma wbudowany regulator do 5 woltów).
Pin Arduino 5V idzie do INA219, aby zasilić wbudowany układ scalony. INA219 GND do masy arduino.
Dopasuj wycieraczkę do styku 1 RTD, a styk 3 potencjometru do styku 2 RTD będą symulować połączenie PT100. (Zamień przewody, jeśli obrócenie potencjometru w prawo nie zwiększa mA).
Krok 2: Test wyjścia instrumentu
Aby przetestować wyjście instrumentu, potrzebne są dodatkowe części, takie jak rezystor bocznikowy. Normalne rezystory 0,25 W sprawdzą się dobrze. Możesz zostawić rezystor bocznikowy i dodać drugi INA219, aby przetestować wyjście przyrządu. Został mi tylko jeden, więc zamiast tego użyłem rezystora.
Testowanie za pomocą bocznika można przeprowadzić tylko po ujemnej stronie urządzenia. Jeśli użyjesz strony dodatniej, dostarczysz swojemu arduino ponad 4-krotność dopuszczalnego napięcia i wypuścisz dym.
Dodaj rezystor bocznikowy szeregowo z ujemnym przewodem przyrządu. Strona bocznika najbliżej urządzenia stanie się pozytywnym analogiem dla arduino. Druga strona bocznika najbliżej zasilacza stanie się uziemieniem arduino, uzupełniając obwód wejścia analogowego.
Rezystor bocznikowy 150 omów to absolutne maksimum, którego należy użyć podczas korzystania z arduino. Rezystor ma spadek napięcia liniowy do przepływającego przez niego mA. Im większe mA, tym większe napięcie.
Przy prądzie 20mA #150ohm*0.02A = 3volt do arduino.
Przy prądzie 4mA # 150ohm * 0,004A = 0,6 wolta do arduino.
Teraz możesz chcieć, aby napięcie było bliższe 5 woltom, abyś mógł korzystać z pełnego zakresu ADC arduino. (Nie jest to dobry pomysł).
RTD może osiągnąć wyjście 30,2mA (moje tak). 150 omów * 0,03 A = 4,8 wolta. To jest tak blisko, jak bym chciał.
Inna strona internetowa wskazała na użycie rezystora 250 omów.
Przy prądzie 20mA #250ohm*0.02A = 5volt do arduino.
Przy prądzie 30mA # 250ohm * 0,03 A = 7,5 V do arduino.
Ryzykujesz spalenie swojego ADC i arduino.
Aby przetestować instrument w terenie, weź ze sobą baterię 12 V i podłącz ją do wejścia zasilania. Korzystanie z zewnętrznego źródła zasilania nie wpłynie na bieżącą konfigurację sterownika PLC.
Aby przetestować kartę wejścia analogowego w terenie, weź ze sobą baterię 12 V. Odłącz przyrząd + od obwodu. Podłączyć uziemienie do uziemienia przyrządu, a RTD- do odłączonego przewodu przyrządu.
Krok 3: Kalibracja
Aby skalibrować odczyt rezystora bocznikowego, podłącz RTD- do wejścia analogowego bocznikowego. Ustaw potencjometr trymera tak, aby generowane mA wynosiło 4 mA. Jeśli prąd w Twoim urządzeniu nie jest równy, zmień pierwszą wartość w kodzie w linii 84. Zwiększenie tej wartości obniży odczyt mA.
Następnie ustaw potencjometr na 20 mA. Jeśli w twoim urządzeniu mA nie jest równe, zmodyfikuj drugą wartość w kodzie w wierszu 84.
Więc twoje 4-20 mA będzie teraz wynosić 0,6-3 V (teoretycznie). Więcej niż wystarczający zasięg. Korzystając z biblioteki eRCaGuy, oversampling zapewni lepszy i stabilny odczyt.
Mam nadzieję, że to przeczytałeś. To jest moja pierwsza instrukcja, więc proszę, uspokój się, jeśli gdzieś popełniłem błąd lub coś pominąłem.
Ten projekt prawdopodobnie nie jest najlepszym sposobem na to, ale dla mnie działa i było fajnie go robić.
Kilka pomysłów mam dodatkowe…
Dodaj serwo, aby obrócić potencjometr w pudełku.
Dodaj przyciski, aby obrócić serwo w lewo lub w prawo.
Dodaj cyfrowy czujnik temperatury do radiatora regulatora, aby ostrzegać o niebezpiecznym cieple.
Krok 4: Programowanie Arduino
#włączać
// #include //Odkomentuj jeśli używasz LCD z rejestrem przesuwnym.
#włączać
#włączać
#włączać
#włączać
//A4 = (SDA)
//A5 = (SCL)
Adafruit_INA219 ina219;
LCD LiquidCrystal(12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd(3, 4, 2); //Odkomentuj jeśli używasz LCD z rejestrem przesuwnym.
// | | |_ Zatrzask
// | \_ Zegar Pin
// \_ Dane/Włącz pin
bajt bitsOfResolution = 12; //polecona rozdzielczość nadpróbkowania
unsigned long numSamplesToAvg = 20; //liczba próbek W ROZDZIELCZOŚCI OVERSAMPLED, którą chcesz pobrać i uśrednić
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
unsigned long previousMillis = 0;
napięcie bocznikowe pływaka = 0,0; //Z INA219
napięcie szyny podtrzymującej = 0,0; //Z INA219
pływak prąd_mA = 0,0; //Z INA219
napięcie obciążenia pływakowego = 0,0; //Z INA219
napięcie arduino pływaka = 0,0; //Obliczanie napięcia z pinu A0
Unsigned long A0analogReading = 0;
bajt analogowyIn = A0;
pływak ma_mapowany = 0.0; //Odwzorowanie napięcia od A0 do 4-20mA
pusta konfiguracja () {
adc.setADCSpeed(ADCSpeed);
adc.setBitsOfResolution(bitsOfResolution);
adc.setNumSamplesToAvg(numSamplesToAvg);
uint32_t bieżąca częstotliwość;
ina219.begin();
ina219.setCalibration_32V_30mA(); //Zmodyfikowana biblioteka dla większej precyzji w mA
lcd.początek(20, 4); // inicjalizuj LCD
lcd.clear();
lcd.home (); // idź do domu
lcd.print("********************");
opóźnienie (2000);
lcd.clear();
}
pusta pętla()
{
unsigned long currentMillis = millis();
const długi interwał = 100;
//&&&&&&&&&&&&&&&&&
Odczytaj urządzenia I2C w odstępach czasu i wykonaj kilka obliczeń
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis >= interwał) {
poprzedni Millis = obecny Millis;
Interwał();
}
Drukuj_Na_LCD(); // Prawdopodobnie nie muszę tak szybko aktualizować wyświetlacza LCD i można go przesunąć poniżej Interval()
}
próżnia
Interwał() {
napięcie bocznikowe = ina219.getShuntVoltage_mV();
napięcie szyny = ina219.getBusVoltage_V();
prąd_mA = ina219.getCurrent_mA();
napięcie obciążenia = (napięcie szyny + (napięcie bocznikowe / 1000)) + 0,71; // +0.71 to mój spadek napięcia diody
A0analogReading = adc.newAnalogRead(analogIn);
napięcie arduino = (5,0 * A0odczyt analogowy); //W przeliczeniu na mV
ma_mapped = mapa(arduinonapięcie, 752, 8459, 30, 220) / 10,0; //Mapa nie może używać pływaków. Dodaj 0 za mapowaną wartością i podziel przez 10, aby uzyskać odczyt zmiennoprzecinkowy.
//Mapowanie z obliczeń napięcia daje bardziej stabilny odczyt niż przy użyciu surowego odczytu ADC.
jeśli (napięcie bocznikowe >= -0,10 && napięcie bocznikowe <= -0,01) //Bez obciążenia INA219 ma tendencję do odczytywania poniżej -0,01, a mój tak.
{
prąd_mA = 0;
napięcie szyny = 0;
napięcie obciążenia = 0;
napięcie bocznikowe = 0;
}
}
próżnia
Drukuj_do_LCD() {
lcd.setCursor(0, 0);
if (ma_mapped < 1,25) { //Bez prądu to jest mój odczyt w mA, więc po prostu go wyrzucam.
lcd.print("* Generator 4-20mA *");
}
w przeciwnym razie {
lcd.print("** Tester analogowy **");
}
lcd.setCursor(0, 1);
lcd.print("Urządzenie:");
lcd.setCursor(10, 1);
jeśli (ma_mapowane < 1,25) {
lcd.print("brak urządzenia");
}
w przeciwnym razie {
lcd.print(ma_mapped);
}
lcd.print("mA");
lcd.setCursor(0, 2);
lcd.print("Generuj:");
lcd.setCursor(10, 2);
lcd.print(current_mA);
lcd.print("mA");
lcd.setCursor(0, 3);
lcd.print("Dostawa:");
lcd.setCursor(10, 3);
lcd.print (napięcie obciążenia);
lcd.print("V");
}
Krok 5: Więcej zdjęć
Terminal głośnikowy wzmacniacza. Dioda LED napędzana przez generator prądu (RTD). Okablowanie karty analogowej zastąpi diodę LED.
Terminal po lewej stronie służy do wejścia zasilania. Zaciski po prawej stronie służą do wejścia instrumentu.
Krok 6: Dopasowanie
Wszystko wydaje się pasować. Użyłem silikonu, aby tymczasowo trzymać razem niektóre rzeczy. Doniczka jest pokryta silikonem w prawym górnym rogu. Wywiercono mały otwór. Mogę regulować prąd od góry pudełka.
Krok 7: Tylko zdjęcia
Krok 8: Ostatnie słowa
Testowałem wyjście tego urządzenia ze sterownikiem PLC Allan Bradley. Wyniki były bardzo dobre. Mam pełny zakres. Przetestowałem również to urządzenie z czujnikiem ciśnienia 4-20mA, który ma wbudowany wyświetlacz LCD. Ponownie wyniki były bardzo dobre. Moje odczyty różniły się o kilka miejsc po przecinku.
Kod arduino piszę w zakładkach. W sterownikach PLC są one nazywane podprogramami. Ułatwia dla mnie debugowanie.
W załączeniu pliki tekstowe tych zakładek.
Zalecana:
Zrób to sam -- Jak zrobić pająka, którym można sterować za pomocą smartfona za pomocą Arduino Uno: 6 kroków
Zrób to sam || Jak zrobić robota-pająka, którym można sterować za pomocą smartfona za pomocą Arduino Uno: Podczas tworzenia robota-pająka można nauczyć się wielu rzeczy o robotyce. Podobnie jak tworzenie robotów jest zarówno zabawne, jak i trudne. W tym filmie pokażemy, jak zrobić robota Spider, którym możemy sterować za pomocą naszego smartfona (Androi
Sterowanie oświetleniem domu za pomocą Asystenta Google za pomocą Arduino: 7 kroków
Sterowanie oświetleniem domu za pomocą Asystenta Google za pomocą Arduino: (Aktualizacja z 22 sierpnia 2020 r.: Ta instrukcja ma 2 lata i opiera się na niektórych aplikacjach innych firm. Wszelkie zmiany po ich stronie mogą uniemożliwić działanie tego projektu. Może lub nie pracować teraz, ale możesz śledzić to jako odniesienie i modyfikować zgodnie z
Jak zrobić drona za pomocą Arduino UNO - Zrób quadkopter za pomocą mikrokontrolera: 8 kroków (ze zdjęciami)
Jak zrobić drona za pomocą Arduino UNO | Zrób quadkopter za pomocą mikrokontrolera: WprowadzenieOdwiedź mój kanał YouTubeDron to bardzo drogi gadżet (produkt) do kupienia. W tym poście zamierzam omówić, jak robię to tanio?? I jak możesz zrobić taki własny w niskiej cenie… Cóż, w Indiach wszystkie materiały (silniki, ESC
Bezprzewodowy pilot za pomocą modułu 2,4 Ghz NRF24L01 z Arduino - Nrf24l01 4-kanałowy / 6-kanałowy nadajnik-odbiornik do quadkoptera - Helikopter RC - Samolot zdalnie sterowany za pomocą Arduino: 5 kroków (ze zdjęciami)
Bezprzewodowy pilot za pomocą modułu 2,4 Ghz NRF24L01 z Arduino | Nrf24l01 4-kanałowy / 6-kanałowy nadajnik-odbiornik do quadkoptera | Helikopter RC | Samolot RC przy użyciu Arduino: obsługa samochodu RC | Quadkopter | Dron | Samolot RC | Łódź RC, zawsze potrzebujemy odbiornika i nadajnika, załóżmy, że do RC QUADCOPTER potrzebujemy 6-kanałowy nadajnik i odbiornik, a ten typ TX i RX jest zbyt drogi, więc zrobimy go na naszym
Kontroluj Arduino za pomocą smartfona przez USB za pomocą aplikacji Blynk: 7 kroków (ze zdjęciami)
Kontroluj Arduino za pomocą smartfona przez USB za pomocą aplikacji Blynk: W tym samouczku nauczymy się korzystać z aplikacji Blynk i Arduino w celu sterowania lampą, połączenie będzie odbywać się przez port szeregowy USB. Celem tej instrukcji jest pokazanie najprostsze rozwiązanie do zdalnego sterowania Arduino lub c