Spisu treści:
- Krok 1: Narzędzia i materiały
- Krok 2: Wytrawij płytkę drukowaną
- Krok 3: Przylutuj komponenty
- Krok 4: Zaprogramuj mikrokontroler
- Krok 5: Montaż i kalibracja
- Krok 6: Strojenie PID
- Krok 7: Spakuj to
Wideo: Regulator temperatury PID: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Mój przyjaciel buduje wytłaczarkę do plastiku do recyklingu plastiku (https://preciousplastic.com). Musi kontrolować temperaturę wytłaczania. W tym celu wykorzystuje taśmę grzejną dyszy. W tej dyszy znajduje się termopara i zespół grzewczy, które pozwalają nam zmierzyć temperaturę i ostatecznie osiągnąć żądaną temperaturę (zrobić pętlę retroaction).
Kiedy usłyszałem, że potrzebuje kilku regulatorów PID, aby sterować wszystkimi tymi pasmami grzałki dyszy, od razu dało mi to ochotę spróbować zrobić własne.
Krok 1: Narzędzia i materiały
Narzędzia
- lutownica, drut lutowniczy i topnik
- pęseta
- frezarka (możliwe jest również wytrawianie chemiczne do prototypowania PCB) (można też zamówić PCB z moim plikiem eagle)
- termometr (do kalibracji)
- arduino (dowolny typ) lub programator AVR
- Kabel USB szeregowy FTDI TTL-232
- wycinarka laserowa (opcja)
- multimetr (omomierz i woltomierz)
Materiał
- Bakelitowa płyta miedziana jednostronnie (minimum 60*35 mm) (Zniszczyłem piłę kupując włókno szklane, więc uważaj: Bakelit)
- Mikrokontroler Attiny45
- Regulator napięcia LM2940IMP-5
- Wzmacniacz operacyjny AD8605
- Tranzystor NDS356AP
- pęczek rezystorów i kondensatorów (mam książkę adafruit SMT 0603)
- Transformator 230V-9V ac-dc
- Diody 1N4004
- przekaźnik półprzewodnikowy
- lakier do paznokci (opcjonalnie)
Krok 2: Wytrawij płytkę drukowaną
Użyłem mojego przekształconego Proxxon MF70 CNC i stożkowego końcówki do frezowania PCB. Myślę, że każda końcówka do grawerowania będzie działać. Plik Gcode został wygenerowany bezpośrednio przez eagle i wtyczkę pcb-gcode. Wykonano tylko trzy przejazdy, aby zapewnić dobrą separację trasy, ale bez spędzania godzin na frezowaniu całej miedzi. Gdy PCB wyszło z maszyny CNC, wyczyściłem trasy frezem i przetestowałem je multimetrem.
Parametry: posuw 150 mm/min, głębokość 0,2 mm, prędkość obrotowa 20 000 t/min
Krok 3: Przylutuj komponenty
Za pomocą pęsety i lutownicy umieść elementy w odpowiednich miejscach i przylutuj topnikiem (to pomaga) i zaczynając od najmniejszych elementów. Ponownie sprawdź multimetrem, czy nie masz żadnych zwarć ani niepołączonych elementów.
Możesz wybrać wzmocnienie wzmacniacza, wybierając odpowiedni rezystor (wzmocnienie=(R3+R4)/R4). Wziąłem 1M i 2,7k, więc w moim przypadku wzmocnienie wynosi około 371. Nie mogę poznać dokładnej wartości, ponieważ używam rezystora o tolerancji 5%.
Moja termopara jest typu J. Oznacza to, że daje 0,05mV na każdy stopień. Przy wzmocnieniu 371 uzyskuję 18,5mV na stopień z wyjścia wzmacniacza (0,05*371). Chcę zmierzyć około 200 ° C, więc wyjście wzmacniacza powinno wynosić około 3,7 V (0,0185 * 200). Wynik nie powinien przekraczać 5V, ponieważ używam napięcia odniesienia 5V (zewnętrznego).
Obraz odpowiada pierwszej (nie działającej) wersji, którą wykonałem, ale zasada jest taka sama. W tej pierwszej wersji użyłem przekaźnika i umieściłem go dokładnie na środku płytki. Jak tylko przełączałem się z wysokim napięciem, miałem kolce, które powodowały ponowne uruchomienie kontrolera.
Krok 4: Zaprogramuj mikrokontroler
Używając arduino jak w tej instrukcji: https://www.instructables.com/id/How-to-Program-a… możesz załadować kod.
Do zaprogramowania Attiny 45 użyłem profesjonalnego drobiazgu z kablem FTDI-USB, ale ta metoda jest równoważna. Następnie podłączyłem pin PB1 i GDN bezpośrednio do RX i GND kabla FTDI-USB, aby otrzymać dane szeregowe i móc debugować.
Powinieneś ustawić wszystkie parametry na zero (P=0, I=0, D=0, K=0) w szkicu arduino. Zostaną one ustawione na etapie strojenia.
Jeśli nie widzisz dymu lub zapachu spalenizny, możesz przejść do następnego kroku!
Krok 5: Montaż i kalibracja
Uwaga: Nigdy nie podłączaj jednocześnie zasilania i 5V od programatora! W przeciwnym razie zobaczysz dym, o którym mówiłem w poprzednim kroku. Jeśli nie jesteś pewien, czy jesteś w stanie to uszanować, możesz po prostu usunąć pin 5v dla programatora. Pozwoliłem, bo wygodniej było mi zaprogramować sterownik bez zasilania i przetestować sterownik bez grzałki grzałki jak szalone przed twarzą.
Teraz możesz rozgałęzić termoparę na wzmacniaczu i zobaczyć, czy coś mierzysz (przestrzegaj polaryzacji). Jeśli system grzewczy ma temperaturę pokojową, należy zmierzyć zero. Ogrzewanie go ręką powinno już prowadzić do pewnych małych wartości.
Jak czytać te wartości? Po prostu podłącz piny PB1 i GDN bezpośrednio do RX i GND kabla FTDI-USB i otwórz monitor szeregowy arduino.
Po uruchomieniu kontroler wysyła wartość czerwoną z wewnętrznego termometru chipa. W ten sposób kompensuję temperaturę (bez użycia dedykowanego chipa). Oznacza to, że jeśli temperatura zmieni się podczas pracy, nie będzie ona brana pod uwagę. Wartość ta bardzo różni się w zależności od chipa, dlatego należy ją wprowadzić ręcznie w definicji REFTEMPERATURE na początku szkicu.
Przed podłączeniem przekaźnika półprzewodnikowego sprawdź, czy napięcie wyjściowe mieści się w zakresie obsługiwanym przez przekaźnik (w moim przypadku od 3 V do 25 V, obwód generuje około 11 V). (przestrzegaj polaryzacji)
Wartości te nie są temperaturami w stopniach lub Fahrenheit, ale wynikiem konwersji analogowo-cyfrowej, więc wahają się od 0 do 1024. Używam napięcia odniesienia 5 V, więc gdy wyjście wzmacniacza jest bliskie 5 V, wynik konwersji jest bliski 1024.
Krok 6: Strojenie PID
Muszę nadmienić, że nie jestem ekspertem od kontroli, więc znalazłem kilka parametrów, które działają dla mnie, ale nie gwarantuję, że działa dla wszystkich.
Przede wszystkim muszę wyjaśnić, co robi program. Zaimplementowałem rodzaj oprogramowania PWM: licznik jest zwiększany w każdej iteracji, aż osiągnie 20 000 (w tym przypadku jest resetowany do 0). Opóźnienie spowalnia pętlę do milisekundy. Najbardziej wymagający z nas zauważą, że okres kontrolny wynosi około 20 sekund. Każda pętla zaczyna się od porównania licznika i progu. Jeśli licznik jest poniżej progu, to wyłączam przekaźnik. Jeśli jest większy, włączam. Reguluję więc moc ustawiając próg. Obliczanie progu odbywa się co sekundę.
Co to jest regulator PID?
Gdy chcesz kontrolować proces, masz mierzoną wartość (analogData), wartość, którą chcesz osiągnąć (tempCommand) oraz sposób na modyfikację stanu tego procesu (seuil). W moim przypadku odbywa się to za pomocą progu ("seuil" po francusku, ale o wiele łatwiej go napisać i wymówić (wymówić "sey")), który określa, jak długo przełącznik będzie włączony i wyłączony (cykl pracy), a tym samym ilość energii umieścić w systemie.
Wszyscy zgadzają się, że jeśli jesteś daleko od punktu, do którego chcesz dotrzeć, możesz dokonać dużej korekty, a jeśli jesteś blisko, potrzebna jest niewielka korekta. Oznacza to, że korekta jest funkcją błędu (error=analogData-tempComand). Tak, ale ile? Powiedzmy, że mnożymy błąd przez współczynnik (P). To jest kontroler proporcjonalny. Mechanicznie sprężyna dokonuje proporcjonalnej korekty, ponieważ siła sprężyny jest proporcjonalna do ściskania sprężyny.
Zapewne wiesz, że zawieszenie Twojego samochodu składa się ze sprężyny i amortyzatora (amortyzatora). Zadaniem tego amortyzatora jest zapobieganie odbijaniu się samochodu jak trampolinie. Właśnie to robi termin pochodny. Jako amortyzator generuje reakcję proporcjonalną do zmiany błędu. Jeśli błąd szybko się zmienia, poprawka jest obniżana. Zmniejsza oscylacje i przeregulowania.
Termin integratora jest tutaj, aby uniknąć stałego błędu (integruje błąd). Konkretnie jest to licznik, który jest zwiększany lub zmniejszany, jeśli błąd jest dodatni lub ujemny. Następnie korekta jest zwiększana lub obniżana zgodnie z tym licznikiem. Nie ma mechanicznej równoważności (a może masz pomysł?). Może jest podobny efekt, kiedy przyprowadzasz samochód do serwisu, a mechanik zauważa, że amortyzatory są systematycznie zbyt niskie i decyduje się na dodatkowe napięcie wstępne.
Wszystko to można podsumować wzorem: korekcja=P*e(t)+I*(de(t)/dt)+D*całka(e(t)dt), P, I i D są trzema parametrami, które mają do dostrojenia.
W mojej wersji dodałem czwarty termin, który jest poleceniem „a priori” (sprzężenie do przodu) potrzebne do utrzymania określonej temperatury. Wybrałem polecenie proporcjonalne do temperatury (jest to dobre przybliżenie strat ciepła. To prawda, jeśli pominiemy straty radiacyjne (T^4)). Z tym terminem integrator jest lżejszy.
Jak znaleźć te parametry?
Wypróbowałem konwencjonalną metodę, którą można znaleźć, wyszukując „regulator temperatury strojenia pid”, ale okazało się, że jest to trudne do zastosowania i skończyłem z własną metodą.
Moja metoda
Najpierw ustaw P, I, D na zero i ustaw "K" i "tempCommand" na małe wartości (na przykład K=1 i tempCommand=100). Włącz system i czekaj, czekaj, czekaj… aż temperatura się ustabilizuje. W tym momencie wiesz, że przy „seuil” 1*100=100, temperatura dąży do X. Więc wiesz, że przy poleceniu 100/20000=5% możesz osiągnąć X. Ale celem jest osiągnięcie 100 ponieważ jest to "tempCommand". Używając proporcji możesz obliczyć K, aby osiągnąć 100 (tempCommand). Ostrożnie użyłem mniejszej wartości niż obliczona. Rzeczywiście łatwiej jest bardziej ogrzać niż schłodzić. Więc w końcu
Kfinal=K*tempCommand*0.9/X
Teraz po uruchomieniu regulator powinien naturalnie dążyć do żądanej temperatury, ale jest to naprawdę powolny proces, ponieważ kompensujesz tylko straty ciepła. Jeśli chcesz przejść z jednej temperatury do drugiej, do systemu należy dodać pewną ilość energii cieplnej. P określa, w jakim tempie wkładasz energię do systemu. Ustaw małą wartość P (na przykład P=10). Wypróbuj (prawie) zimny start. Jeśli nie masz dużego przekroczenia, spróbuj z podwójnym (P=20), jeśli teraz masz jeden, spróbuj czegoś pomiędzy. Jeśli masz 5% przekroczenie, to dobrze.
Teraz zwiększaj D, aż nie będziesz miał przestrzelenia. (zawsze próby, wiem, że to nie jest nauka) (wziąłem D=100)
Następnie dodaj I=P^2/(4*D) (Opiera się na metodzie Zieglera-Nicholtsa, powinna gwarantować stabilność)(u mnie I=1)
Po co te wszystkie próby, dlaczego nie nauka?
Wiem wiem! Istnieje ogromna teoria i można obliczyć transmitancję oraz transformatę Z i blablabla. Chciałem wygenerować skok jednostkowy, a następnie rejestrować przez 10 minut reakcję i zapisać transmitancję i co dalej? Nie chcę robić arytmetyki z 200 wyrazami. Więc jeśli ktoś ma pomysł, chętnie się nauczę, jak to zrobić właściwie.
Pomyślałem też o moich najlepszych przyjaciołach Zieglerze i Nichols. Kazali mi znaleźć P, który generuje oscylacje, a następnie zastosować ich metodę. Nigdy nie znalazłem tych oscylacji. Jedyne, co znalazłem, to przestrzelenie do nieba.
A jak zamodelować fakt, że ogrzewanie to nie ten sam proces co chłodzenie?
Będę kontynuował moje badania, ale teraz spakujmy twój kontroler, jeśli jesteś zadowolony z uzyskanej wydajności.
Krok 7: Spakuj to
Miałem dostęp do moskiewskiego fablabu (fablab77.ru) i ich wycinarki laserowej i jestem im wdzięczny. Ta możliwość pozwoliła mi na wykonanie ładnego opakowania wygenerowanego jednym kliknięciem przez wtyczkę, która tworzy pudełka o żądanych wymiarach (h=69 l=66 d=42 mm). Na górze znajdują się dwa otwory (średnica=5mm) na diodę i przełącznik oraz jedno wycięcie z boku na piny programujące. Transformator przymocowałem dwoma kawałkami drewna, a płytkę za pomocą dwóch śrub. Przylutowałem listwę zaciskową do przewodów i do PCB, dodałem przełącznik między transformatorem a wejściem zasilania PCB, podłączyłem diodę do PBO z rezystorem (300 Ohm) szeregowo. Użyłem również lakieru do paznokci do izolacji elektrycznej. Po ostatnim teście skleiłem pudełko. Otóż to.
Zalecana:
Masherator 1000 - regulator temperatury zacieru infuzyjnego: 8 kroków
Masherator 1000 - Infusion Mash Temp Controller: To piąta wersja regulatora temperatury dla mojego procesu warzenia piwa. Zwykle używałem gotowych regulatorów PID, tanich, niektórych skutecznych i nieco niezawodnych. Kiedy dostałem drukarkę 3D, postanowiłem zaprojektować ją od podstaw
ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce: 5 kroków
ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce: Cześć, w większości projektów używamy ESP8266, a w większości projektów używamy ESP8266 jako serwera WWW, dzięki czemu można uzyskać dostęp do danych dowolne urządzenie przez Wi-Fi, uzyskując dostęp do serwera WWW obsługiwanego przez ESP8266, ale jedynym problemem jest to, że potrzebujemy działającego routera
Jak korzystać z czujnika temperatury DHT11 z Arduino i temperatury drukowania, ciepła i wilgotności: 5 kroków
Jak używać czujnika temperatury DHT11 z Arduino i drukowania temperatury, ciepła i wilgotności: Czujnik DHT11 służy do pomiaru temperatury i wilgotności. Są bardzo popularnymi hobbystami elektroniki. Czujnik wilgotności i temperatury DHT11 ułatwia dodawanie danych o wilgotności i temperaturze do projektów elektroniki DIY. To za
ESP32 NTP Termometr do gotowania z sondą temperatury z korekcją Steinharta-Harta i alarmem temperatury.: 7 kroków (ze zdjęciami)
ESP32 NTP Termometr do gotowania z sondą temperatury z korekcją Steinharta-Harta i alarmem temperatury.: Wciąż w drodze do ukończenia „nadchodzącego projektu”, „Termometr do gotowania z sondą temperatury ESP32 NTP z korekcją Steinharta-Harta i alarmem temperatury”. jest instrukcją pokazującą, jak dodać sondę temperatury NTP, piezo b
Regulator temperatury i zegar z Arduino: 7 kroków
Regulator Temperatury i Zegar Z Arduino: Na zdjęciu Termostat przeznaczony jest do sterowania pompą obiegową CO. Jeśli posiadasz dom położony na obrzeżach miasta, wybór kotła nie powinien być dla Ciebie przeszkodą. Chociaż myśl, która go przeraża, to