[ATtiny2313] komparator analogowy

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

[ATtiny2313] komparator analogowy

Post autor: grysek67 » 01 sty 2010, 21:49

Witam,

Buduję sterownik pieca, który posiada dosyć nietypowy czujnik temperatury - nie ważne jaki, zasada jest taka: opór z czujnika jest tym większy im niższa jest temperatura. Sterownik ma za zadanie wyłączyć dmuchawę jeśli temperatura spadnie poniżej granicy jaką określa Rx . I teraz chciałbym do tego wykorzystać ATtiny2313 i jego komparator. Lecz komparator działa tak że jeśli AIN0 = AIN1 to wtedy podawane jest 0 na wyjściu i jeśli zbuduję układ jak na shemacie to procesor wyłączy mi układ jak opór z czujnika bedzie równy Rx. Taki układ bedzie mi dobrze działał w tej roli? Co trzeba zrobic żeby komparator realizował mi taki warunek AIN0 =< AIN1? Bo co jeśli temperatura bedzie spadać tak szybko że "przeskoczy" mi tą wartość Rx wtedy czujnik nie wyłączy dmuchawy.. Co powinienem zrobić? Proszę o pomoc każda podpowiedz jest cenna
Załączniki
schemat2.GIF
(2.06 KiB) Pobrany 8042 razy

Awatar użytkownika
Ertew
Użytkownik
Posty: 1418
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 01 sty 2010, 23:51

Kompaktor wbudowany w procka '2313 działa inaczej.

Do dyspozycji mamy dwa ośmiobitowe porty we-wy.
No prawie dwa. Port B jest kompletny (ośmiobitowy), natomiast w porcie D (jak pewnie już zauważyłeś) brakuje jednego bitu.
Jeśli będziesz chciał odczytać stan tego brakującego bitu, to odczytasz wartość wygenerowaną przez kompaktor analogowy.

Wartość ta będzie 1 jeśli AIN1<<AIN0, lub 0 jeśli AIN1>>AIN0 (albo całkowicie odwrotnie :roll: ). Przy podobnych napięciach należy sprawdzić, co dokumentacja mówi o nieliniowości kompaktora.
Mianowicie w zależności od wartości jednego z napięć, temperatury otoczenia, a nawet napięcia zasilania, należy uwzględnić wpływ rzędu kilku mV na wynik porównania.
Teoretycznie wartości wejściowe nigdy nie będą równe, więc na wyjściu kompaktora nie wystąpi stan pośredni pomiędzy 0, a 1.


Oczywiście do działania kompaktora musi być on włączony (można go programowo wyłączyć w celu oszczędzania energii), a piny wejściowe kompaktora ustawione jako wejścia (ustawienie ich jako wyjścia poda ten stan na wejścia kompaktora).

Możesz też załączyć rezystory pull-up, co nieznacznie zmieni wartości napięć badanych. Tak można sprawdzać kilka progów temperatury i zrealizować coś w rodzaju histerezy.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 02 sty 2010, 9:49

M@rek pisze:Jeśli będziesz chciał odczytać stan tego brakującego bitu, to odczytasz wartość wygenerowaną przez kompaktor analogowy.
Nie wiem gdzie ty takie rzeczy wyczytałeś.

Po spełnieniu warunku AIN0>AIN1 komparator generuje przerwanie i ustawia flagę co można sobie odczytać w rejestrach i zareagować na wystąpienie przerwania. Dodatkowo można sobie sterować Timerem1.

Aby komparator porównywał wartości analogowe trzeba ustawić bity w rejestrze DIDR na 1.

Żadnych pullupów nie włączaj. Jedynie ustaw piny AINx jako wejścia.


Tak w ogóle do zwykłego załączania wentylatora wystarczy TL061 plus jakiś przekaźnik na wyjściu ;)

Awatar użytkownika
Pikczu
Użytkownik
Posty: 755
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 02 sty 2010, 12:08

Co osoba to opinia :).
Daj ds18b20 termometr dallasa na 1wire i po sprawie będziesz mógł lody robić i ołówki strugać.

Awatar użytkownika
Zenerek
Użytkownik
Posty: 336
Rejestracja: 21 lip 2006, 11:23
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: Zenerek » 02 sty 2010, 13:38

DS18B20 to byłoby najlepsze rozwiązanie, ale nie najprostsze. Z obsługą 1-wire jest trochę kombinowania (nie w Bascomie), chyba że są jakieś biblioteki gotowe.
Właśnie sam zaczynam podobny projekt. Sterowanie pompą, pomiar właśnie na dallasie, docelowo jeszcze przesyłanie danych (temp, stan pompy, tryb pracy) przez moduły 433MHz do urządzenia zamontowanego w mieszkaniu.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 02 sty 2010, 15:01

U mnie raczej DS nie wchodzi w grę ponieważ czujnik mam wbudwany w piec i nie chcę go wymieniać a aż tak dokłdanej temperatury nie potrzebuję, chodzi tylko o to aby wyłaczyć dmuchawę kiedy zgaśnie ogień. Dodam że całość programu piszę w asm tak że obsługa tez nie za prosta by była. Gdybym dysponował czymś większym niż Attiny to bym zapewne zrobił to na przetworniku ADC :razz: Może uda mi się to zrobić na tym komparatorze

snow, bardzo mi pomogłeś wielkie dzięki :razz:

Awatar użytkownika
kayron
Użytkownik
Posty: 2077
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 03 sty 2010, 15:22

Chyba włączyć dmuchawę kiedy temperatura spadnie poniżej zakresu dryfu (hiserezy). Bo jak zgaśnie ogień to już trochę po zabawie. Na komparatorze też się da zrobić przetwornik AC i to nawet niezły. Musisz tylko wykorzystać jedne z Timerów jako PWM do którego podłączysz obwód RC na którym w zależności od współczynnika wypełnienia będzie się zmieniać napięcie. To napięcie podasz na jedno z wejść komparatora i będziesz je porównywał z tym z czujnika, kiedy będą sobie równe to znaczy że wartość wpisana do PWMa jest wynikiem pomiaru takiego przetwornika. Dokładnie było opisane jak to zrobić na Mikroprocesorowej Oślej Łączce, właśnie na ATTiny2313.
Szczerze podziwiam cię. Ja jak bym miał coś robić przy piecu to kupił bym gotowy programowany sterownik z INTROLa za 300zł. I w jeden dzień wszystko by hulało.
Podaj jaki to jest typ czujnika, termopary i o jakiej charakterystyce :?;

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 03 sty 2010, 21:56

No tak masz rację :razz: sterownik juz działa ale chyba rzeczywiście bede musiał kupić tego dallasa bo chce bardziej podrasować ten sterownik. Chcę dodać do układu wyświetlacze 7seg zeby móc sprawdzać aktualną temp. Wiem czytałem o tym rozwiązaniu w EP w artykule "Rejestrator przebiegu analogowego do TV" tam właśnie było coś takiego zrealizowane na AT90S2313. Podziwiam tego człowieka który to wymyślił bo rzeczywiście trzeba miec łeb na karku żeby zrobić oscyloskop na procku bez ADC i to jeszcze do TV gdzie na wszystko jest tak mało czasu :razz:

Co do czujnika to nie wiem co to, jakiś termistor to chyba jest :wink:

Awatar użytkownika
kayron
Użytkownik
Posty: 2077
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 03 sty 2010, 22:37

Jeżeli masz dokumentacje z tego pieca to w niej powinno być jaki rodzaj czujnika tam się znajduje. Ale może to być nawet zwykłe PT100. W zwykłym CO (jeżeli z tym mamy do czynienia) raczej większych wynalazków nie będzie. :wink:

ODPOWIEDZ