Witam, po przeczytaniu książki o programowaniu zabrałem się z próbę adaptacji popularnych stacji lutowniczych RL1 z Elektroniki praktycznej do własnych potrzeb.
Dodałem przyciski z profilami temperaturowymi i obsługę enkodera do zmieniania temperatury, pomiar temperatury otoczenia na DS18B20 i obsługę kolby Weller WSP80 z wbudowanym czujnikiem temperatury PTC(20R i przyrostem średnio 0,113R na stopień). Procesor Atmega88 taktuje wewnętrznym generatorem 8 Mhz i zasilam napięciem 5V. Wbudowany przetwornik zasilam z tego samego napięcia za pomocą dławika, a vref biorę z mostka pomiarowego INA125. Wyświetlacz LCD 16x2 podłączyłem w trybie 4 bitowym bez pinu R/W. Chciałbym zbliżyć się do dokładności -/+1*C pomiaru temperatury lutownicy. Do kalibracji mam termometr oparty na termoparze K o dokładności +/-0,2%(bez błędu termopary). Programuje układ odpowiednikiem skt200 za pomocą portu LPT w komputerze.
Natrafiłem na kilka problemów.
1. Przy napięciu odniesienia ~5V(kilka mV poniżej napięcia zasilania), zegarze ADC 62,5kHz, rozdzielczości 10bit i okresie próbkowania 50Hz i uśrednieniu wyniku x4 - przetwornik po kilkudziesięciu minutach bezczynności dawał wynik zamiast kilkudziesięciu ADC(np. 27) jakieś dużo większe losowe (rzędu 150-300). Z innej beczki, mam przypadłość objawiającą się od czasu do czasu. Wynik pomiaru zatrzymuje się na stałym wyniku np. 627 mimo, że napięcie ustawiło się już dawno na 100% zakresu -> ~4,99V i powraca do normalności, gdy napięcie mierzone spada poniżej zakresu 627 adc. Problem zatrzymania się wyniku pomiaru na określonej wartości znika, gdy usuwam uśrednianie z procedury timera adc.
2. Podczas programowania lub włączenie układu z wcześniej odpalonym komputerem i podłączonym programatorem powoduje zawieszenie się procka(stan wysoki na pinie reset) i przegrzanie lutownicy (grzałka zaczyna świecić na czerwono).
3. Mam duże problemy z kalibracją nastaw procedury PID pobranej z dokumentu AVR221 -> www.atmel.com/images/doc2558.pdf http://www.atmel.com/dyn/resources/prod_documents/AVR221.zip
Grzałkę steruje w przerywaniu INT0 na dodatnim i ujemnym zboczu wywołanym przejściem przez zero. Regulacja grupowa, 255 poziomów mocy.
4. Co cykl pomiaru (12Hz) kasuje i wyświetlam na nowo wyniki na LCD. Bardzo denerwuje mnie zjawisko mrugania, migotania ekranu LCD. To samo tyczy się gdy z zbyt wielką częstotliwością chciałbym wypisać wynik pomiaru na LCD.
Związku z tym mam kilka pytań.
1. Na jaką częstotliwość dobrać filtr dolnoprzepustowy RC na wejściu przetwornika? Wiem, że ma to być połowa częstotliwości samplowania, ale czy to samo tyczy się nad próbkowania. Przykładowo nad próbkuje sygnał 256 razy by zwiększyć rozdzielczość do 14 bitów, korzystam z trybu adc freerunning wywoływanego co 4,68kHz(częstotliwość pojedynczej próbki) to filtr ma być na częstotliwość odcięcia -3dB 2,34kHz czy też 9Hz?
2. Czy istnieje jakaś procedura lub zabieg, która podczas programowania lub stanu wysokiego na pinie reset pozwoliła by mi wyłączyć grzałkę lutownicy (stan niski na wyjściu pina z optotriakiem)?
3. Jak często mam robić pomiar temperatury? Co jaki okres mam wywoływać procedurę pid i ile dać poziomów mocy? Jaką rozdzielczość pomiaru temperatury potrzebuje, aby podjąć próbę kalibracji pomiaru do dokładności +/-1*C i stabilizacji temperatury na tym pułapie? Jak dostroić nastawy PID według metody Ziegler-Nichols skoro w implementacji AVR221 mam nastawy K_P, K_I, K_D oraz regulacje czasu wywoływania instrukcji PID, a nie jak inni mają jedno wzmocnienie K_P i czasy T_P, T_I, T_D?
4. Co jaki czas można odświeżać zielony LCD 2x16, aby nie uświadczyć zjawiska migania obrazu? LCD pracuje w trybie 4 bitowym bez pinu R/W z programowym opóźnieniem 120us po wysłaniu 4 bitów.
Proszę o pomoc. Zadowoli mnie odpowiedz na jakiekolwiek z zagadnień.
Dodałem przyciski z profilami temperaturowymi i obsługę enkodera do zmieniania temperatury, pomiar temperatury otoczenia na DS18B20 i obsługę kolby Weller WSP80 z wbudowanym czujnikiem temperatury PTC(20R i przyrostem średnio 0,113R na stopień). Procesor Atmega88 taktuje wewnętrznym generatorem 8 Mhz i zasilam napięciem 5V. Wbudowany przetwornik zasilam z tego samego napięcia za pomocą dławika, a vref biorę z mostka pomiarowego INA125. Wyświetlacz LCD 16x2 podłączyłem w trybie 4 bitowym bez pinu R/W. Chciałbym zbliżyć się do dokładności -/+1*C pomiaru temperatury lutownicy. Do kalibracji mam termometr oparty na termoparze K o dokładności +/-0,2%(bez błędu termopary). Programuje układ odpowiednikiem skt200 za pomocą portu LPT w komputerze.


Natrafiłem na kilka problemów.
1. Przy napięciu odniesienia ~5V(kilka mV poniżej napięcia zasilania), zegarze ADC 62,5kHz, rozdzielczości 10bit i okresie próbkowania 50Hz i uśrednieniu wyniku x4 - przetwornik po kilkudziesięciu minutach bezczynności dawał wynik zamiast kilkudziesięciu ADC(np. 27) jakieś dużo większe losowe (rzędu 150-300). Z innej beczki, mam przypadłość objawiającą się od czasu do czasu. Wynik pomiaru zatrzymuje się na stałym wyniku np. 627 mimo, że napięcie ustawiło się już dawno na 100% zakresu -> ~4,99V i powraca do normalności, gdy napięcie mierzone spada poniżej zakresu 627 adc. Problem zatrzymania się wyniku pomiaru na określonej wartości znika, gdy usuwam uśrednianie z procedury timera adc.
Code: c
2. Podczas programowania lub włączenie układu z wcześniej odpalonym komputerem i podłączonym programatorem powoduje zawieszenie się procka(stan wysoki na pinie reset) i przegrzanie lutownicy (grzałka zaczyna świecić na czerwono).
3. Mam duże problemy z kalibracją nastaw procedury PID pobranej z dokumentu AVR221 -> www.atmel.com/images/doc2558.pdf http://www.atmel.com/dyn/resources/prod_documents/AVR221.zip
Grzałkę steruje w przerywaniu INT0 na dodatnim i ujemnym zboczu wywołanym przejściem przez zero. Regulacja grupowa, 255 poziomów mocy.
Code: c
4. Co cykl pomiaru (12Hz) kasuje i wyświetlam na nowo wyniki na LCD. Bardzo denerwuje mnie zjawisko mrugania, migotania ekranu LCD. To samo tyczy się gdy z zbyt wielką częstotliwością chciałbym wypisać wynik pomiaru na LCD.
Związku z tym mam kilka pytań.
1. Na jaką częstotliwość dobrać filtr dolnoprzepustowy RC na wejściu przetwornika? Wiem, że ma to być połowa częstotliwości samplowania, ale czy to samo tyczy się nad próbkowania. Przykładowo nad próbkuje sygnał 256 razy by zwiększyć rozdzielczość do 14 bitów, korzystam z trybu adc freerunning wywoływanego co 4,68kHz(częstotliwość pojedynczej próbki) to filtr ma być na częstotliwość odcięcia -3dB 2,34kHz czy też 9Hz?
2. Czy istnieje jakaś procedura lub zabieg, która podczas programowania lub stanu wysokiego na pinie reset pozwoliła by mi wyłączyć grzałkę lutownicy (stan niski na wyjściu pina z optotriakiem)?
3. Jak często mam robić pomiar temperatury? Co jaki okres mam wywoływać procedurę pid i ile dać poziomów mocy? Jaką rozdzielczość pomiaru temperatury potrzebuje, aby podjąć próbę kalibracji pomiaru do dokładności +/-1*C i stabilizacji temperatury na tym pułapie? Jak dostroić nastawy PID według metody Ziegler-Nichols skoro w implementacji AVR221 mam nastawy K_P, K_I, K_D oraz regulacje czasu wywoływania instrukcji PID, a nie jak inni mają jedno wzmocnienie K_P i czasy T_P, T_I, T_D?
4. Co jaki czas można odświeżać zielony LCD 2x16, aby nie uświadczyć zjawiska migania obrazu? LCD pracuje w trybie 4 bitowym bez pinu R/W z programowym opóźnieniem 120us po wysłaniu 4 bitów.
Proszę o pomoc. Zadowoli mnie odpowiedz na jakiekolwiek z zagadnień.