logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATtiny2313] komparator analogowy

grysek 01 Sty 2010 21:57 5103 18
REKLAMA
  • #1 7469608
    grysek
    Poziom 19  
    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ć?
    [ATtiny2313] komparator analogowy
    Proszę o pomoc :P
  • REKLAMA
  • #2 7469677
    Samuraj
    Poziom 35  
    A nie prościej mierzyć napięcie, nawet przerabiać nie trzeba układu.
    Trochę program będzie bardziej rozbudowany bo musisz sprawdzać które napięcie jest większe AIN0 czy AIN1, a przy komparatorze wszystko masz że tak powiem "hardwerowo".
  • REKLAMA
  • Pomocny post
    #3 7469688
    mirekk36
    Poziom 42  
    A może rozważ zastosowanie procka, który posiada przetwornik ADC. Bo o ile komparator sprawdzi się w tej roli o której piszesz to jednak pomyśl co będzie gdy w pewnym momencie temperatura będzie progowa czyli wartość wejścia + oraz wartość wejścia - będą co chwilę powodować włączanie i wyłączania dmuchawy. Nie zrealizujesz tutaj chyba okienka/histerezy a przydałaby się chyba co?

    Tak żeby np dmuchawa włączała gdy zostanie osiągnięta temp Tmax czyli jakaś tam wartość napięcia mierzonego na ADC - ale wyłączała się gdy temperatura spadnie poniżej Tmin. Ustawisz sobie tę różnicę wtedy już wg potrzeb i będzie cacy. Tzn mając procka z przetwornikiem ADC ustalisz sobie po prostu napięcie Vmax oraz Vmin

    to taka luźna propozycja bo z komparatorem tylko ciężko chyba to uzyskać

    Dodano po 1 [minuty]:

    Samuraj --> ATtiny2313 nie ma przetwornika ADC - ma tylko komparator
  • REKLAMA
  • Pomocny post
    #5 7469788
    Konto nie istnieje
    Poziom 1  
  • #6 7469790
    grysek
    Poziom 19  
    Byłoby fajnie jakby udało się właśnie na Attiny ;/ Szkoda mi dawać do tego Atmegi bo w sumie to on ma tylko tyle do roboty + 1 PWM.

    Raczej drgania nie wystąpią ponieważ czujnik bardzo wolno reaguje na zmiany temperatury i jest raczej mało dokładny. Zastanawia mnie fakt jak zrobić żeby porównać czy opór jest większy czy mniejszy? Przecież musi się to jakoś dać zrobić;/

    Jeśli bym miał ADC to już bym sobie dał rade :P ale właśnie chodzi o to żeby to zrobic na attiny
  • #7 7469805
    marco47
    Poziom 41  
    Zastosuj wzm operacyjny z histerezą na wejściu do komparatora , reszta tak jak u ciebie na schemacie
  • #8 7469840
    grysek
    Poziom 19  
    Atom, Czyli ten układ jest dobry? W takim razie skoro ten układ działa AIN0 =< AIN1 to jak zrobić AIN0 = AIN1? I dlaczego tak jest?

    O co chodzi z tą histerezą?
  • #9 7469889
    marco47
    Poziom 41  
    Ale dlaczego chcesz by było AIN0 = AIN1
    Komparator działa przy przejściu przez próg a nie przy równości (w teori moze działa przy równości wejść)
    Co to histereza? --> google
  • #10 7470093
    mirekk36
    Poziom 42  
    grysek napisał:
    Byłoby fajnie jakby udało się właśnie na Attiny ;/ Szkoda mi dawać do tego Atmegi bo w sumie to on ma tylko tyle do roboty + 1 PWM.


    skoro szkoda ci ATmegi to co za problem zastosować ATtiny13 - na nim także spokojnie zrealizujesz PWM ale będziesz miał dodatkowo ADC

    odnośnie histerezy to właśnie przez to , że powoli następują zmiany temperatury to tym bardziej histereza może być potrzebna - przemyśl to - dlaczego.


    Ja osobiście wolałbym dać większy procek czyli ATmega8 niż dodawać jakieś wzmacniacze operacyjne skoro wszystko można w samym procku zrobić bez najmniejszego problemu. Ale jak mówię - do twojego celu może się okazać że i ATiny13 wystarczy - rozważ to wszystko ;)
  • REKLAMA
  • #11 7470096
    grysek
    Poziom 19  
    Z ciekawości pytam, przy okazji tego tematu bo może mi sie to przydać :P Czyli jak to zrobic? Jak taki układ histerezy powinien wyglądać?
  • Pomocny post
    #13 7470137
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #14 7470165
    BoskiDialer
    Poziom 34  
    Komparator jak już wspomniało kilka osób, porównuje napięcia w relacji mniejszy-większy (nie w relacji równy-nierówny), tak więc problemu z wykryciem relacji pomiędzy napięciem zmierzonym a referencyjnym nie będzie. Histerezę można rozwiązać łącząc napięcie referencyjne (pochodzące z dzielnika) z którymś pinem przez rezystor: wtedy można programowo zwiększyć lub zmniejszyć w jakimś stopniu napięcie referencyjne (3 wartości: odpowiednio dla pinu w stanie LO, HZ oraz HI)
    Rozwiązanie z ADC również jest dobre, zaprogramowanie histerezy jest w takim przypadku bardzo proste na poziomie programu (parę if'ów) oraz łatwe do dokładnego przestrojenia (zmiana dwóch wartości)
    Histereza jakkolwiek czy to używając ADC czy komparatora musi się pojawić, gdyż bez niej całość będzie działać na granicy progu przełączenia co spowoduje wzmocnienie się szumów co objawi się ciągłym zmienianiem stanu wyjścia.
  • #15 7470716
    grysek
    Poziom 19  
    No więc tak, pomysł z Attiny13 odpada bo nie mam takiego w swoich zasobach a jeśli zamówię z neta to bedzie za długo trwało, a jednak zależy mi na czasie.

    Mogłby mi ktoś pokazać przykładowy kod albo algorytm tej histerezy? Lub poprostu dokładnie wytłumaczyć co się ma dziać? :P

    I mam jeszcze takie pytanie, a gdyby dodać opóźnienia i stan czujnika odczytywać dajmy na to co 0,5 sekundy wtedy nie powinny wystąpić drgania nie?
  • Pomocny post
    #16 7470739
    mirekk36
    Poziom 42  
    grysek napisał:

    I mam jeszcze takie pytanie, a gdyby dodać opóźnienia i stan czujnika odczytywać dajmy na to co 0,5 sekundy wtedy nie powinny wystąpić drgania nie?


    No i teraz pomyśl sobie, że czujnik jest na granicznej wartości z progiem jaki sobie założyłeś tymi dwoma rezystorami, odczyt dokonujesz jak sobie wymyśliłeś co pół sekundy. Tak więc przekaźnik może sobie klapać co pół sekundy przez czas gdy temperatura powolutku rośnie. Chyba, że jesteś pewien, że w ciągu pół sekundy to ona wzrasta b.szybko

    A algorytm histerezy:

    Założenia:

    zakładasz, że np Tmax=32st
    zakładasz, że np Tmin=28st

    temperatura wyjściowa niech będzie 20st

    1. w pętli cały czas sprawdzasz czy temperatura czujnika nie przekroczyła Tmax. Jeśli przekroczyła to ZAŁĄCZASZ przekaźnik (o ile był wyłączony), a jeśli nie przekroczyła to nic nie robisz w programie

    2. w tej samej pętli sprawdzasz cały czas czy przekaźnik jest włączony a jeśli tak to czy temperatura jest większa od Tmin. Jeśli temperatura większa od Tmin to nic nie robisz ale jeśli mniejsza od Tmin to WYŁĄCZASZ przekaźnik

    to wszystko ;)

    oczywiście założenia co do wartości temperatury czy też mierzonego napięcia na czujniku możesz sobie zmieniać do woli wg uznania i potrzeb. Ta różnica pomiędzy Tmin a Tmax to jest właśnie to "oczko" histerezy więc masz możliwość regulacji wszystkich jej parametrów.


    ..... no ale do tego to ADC potrzebny, więc jak sam widzisz może warto poczekać na procek z ADC ? ;)
  • Pomocny post
    #17 7471484
    Samuraj
    Poziom 35  
    Mirek dosadnie to wytłumaczył ale ja spróbuje trochę inaczej.
    W histerezie chodzi o to aby temperatura załączenia była inna jak temperatura wyłączenia przekaźnika.
    Załóżmy iż temperatura wynosi 20 stopni i jest w tendencji wzrastającej (leci do góry).
    Przy 23 stopniach decydujesz się włączyć wiatrak aby schłodzić dany element.
    Bez histerezy jeśli temperatura spadnie poniżej 23 nastąp wyłączenie, a gdy czujnik będzie miał małą bezwładność natychmiast się ociepli i znowu załączy wiatrak. Efektem tego będzie to że wiatrak będzie się bez przerwy załączał na granicy 23stopni. Tym częściej im mniejsza bezwładność.
    W przypadku gdy masz histerezę ustalasz sobie okienko np włączenie przy 23 ale wyłączenie już przy 20.
    Efektem końcowym będzie to że temperatura będzie oscylować w granicach 20 do 23, a załączenie wiatraka będzie mniejsze.
  • Pomocny post
    #18 7471883
    Konto nie istnieje
    Poziom 1  
  • #19 7477239
    grysek
    Poziom 19  
    Jak narazie zrobiłem układ na komparatorze w Attiny, i sprawuje się nawet dobrze i rzeczywiście tak jak mówił mirek występuje czasem wachanie czujnika na tej granicy właśnie, zwłaszcza wtedy kiedy temp roiśnie powoli. Uwzględniłem to w kodzie i problemu narazie nie ma. Ale przy pierwszej lepszej okazji chyba wymienie attiny na proca z ADC, dodam jeszcze jakieś funkcje do tego :P

    Dzieki wszystkim za pomoc
REKLAMA