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

Komparator w AVR'ach, coś jak LM393

max-energy 16 Lis 2014 22:53 4734 42
  • #1 14138787
    max-energy
    Poziom 22  
    Witam.
    Czy któryś z mikrokontrolerów z rodzinki AVR posiada w swojej strukturze dwa komparatory analogowe? Potrzebuję monitorować dwa progi napięcia. Coś jak LM393.
  • Pomocny post
    #2 14138880
    vonar
    Poziom 28  
    Kilka raczej niezbyt popularnych układów ATmega (np. ATmega32M1) i AT90PWM, ATtiny841 i seria ATxmega.

    Ale LM393 kosztuje poniżej 50 groszy, a jeśli sygnał jest wolnozmienny a dopuszczalny czas reakcji długi, to można użyć ADC...
  • #3 14138927
    max-energy
    Poziom 22  
    Tak, tak, nawet mam ich kilka. Ten projekt chciałbym wykonać tylko na uC i przy okazji się czegoś nauczyć. Zainteresowałeś mnie tym A/C....
  • Pomocny post
    #4 14139086
    vonar
    Poziom 28  
    Trzeba cyklicznie mierzyć napięcie za pomocą ADC i porównywać wartości. Niektóre mikrokontrolery potrafią to realizować automatycznie („ADC analog watchdog” w STM32).

    Jeśli to mają być dwa progi dla tego samego sygnału, to można też zmieniać napięcie progowe, np. poprzez przełączanie dzielnika. Poniżej przykład dla 1/3 i 2/3 Vcc.
    Komparator w AVR'ach, coś jak LM393
    Zawieszanie pinu dokładnie na 1/2 Vcc nie jest zbyt ładne; jak komuś przeszkadza może dodać małego MOSFETa. ;)
  • #5 14139534
    tmf
    VIP Zasłużony dla elektroda
    Jeśli chodzi o naukę to jednak bym się zabrał za XMEGA - 4 komparatory analogowe, z możliwością podłączenia pod wejście wyjścia z DAC, dzięki czemu masz możliwość regulowania progu przełączenia, ma też ADC z możliwością porównywania wyniku - przerwanie/event w sytuacji wynik większy lub wynik mniejszy niż zadana wartość.
  • #7 14140871
    max-energy
    Poziom 22  
    Napięcie mierzone (na akumulatorze) będzie się bardzo wolno zmieniać.
    Czy taki układ ma prawo działać? Progi zostaną ustawione potencjometrami.
    Komparator w AVR'ach, coś jak LM393
  • Pomocny post
    #8 14140895
    michalko12
    Specjalista - Mikrokontrolery
    Pod AREF podłączasz tylko kondensator 100n.
    Napięcie mierzone musisz podać pod któryś z kanałów ADC, np ADC3
    100n na potencjometrach niepotrzebne
    100n potrzebne na VCC, AVCC, AREF, ADC1, ADC2, kanale użytym do pomiarów(ADC3).
    Buzer sterowany przez tranzystor.

    Rezonator i kondensatory 27p niepotrzebne, wystarczy wewnętrzny oscylator

    Sprecyzuj jakie rezystory w dzielniku chcesz użyć, bo to co teraz jest niepoprawne.
    Co to za akumulator, z czego ładowany, jakie maksymalne napięcie może pojawić się na nim?

    Ma się rozumieć, że masz na myśli ATmega8?
  • #9 14141038
    excray
    Poziom 41  
    Komparator w AVR może być przełączany również na wejścia ADC a więc można podać różne sygnały przez różne dzielniki na poszczególne wejścia ADC i ewentualnie w przerwaniu zegarowym się między nimi cyklicznie przełączać bądź za każdym razem sprawdzać wszystkie po kolei. Będzie to szybsze aniżeli pomiar za pomocą ADC.
  • #10 14141162
    max-energy
    Poziom 22  
    michalko12 napisał:
    Pod AREF podłączasz tylko kondensator 100n.
    Napięcie mierzone musisz podać pod któryś z kanałów ADC, np ADC3
    100n na potencjometrach niepotrzebne
    100n potrzebne na VCC, AVCC, AREF, ADC1, ADC2, kanale użytym do pomiarów(ADC3).
    Buzer sterowany przez tranzystor.

    Rezonator i kondensatory 27p niepotrzebne, wystarczy wewnętrzny oscylator

    Sprecyzuj jakie rezystory w dzielniku chcesz użyć, bo to co teraz jest niepoprawne.
    Co to za akumulator, z czego ładowany, jakie maksymalne napięcie może pojawić się na nim?

    Ma się rozumieć, że masz na myśli ATmega8?


    Dlaczego tylko kondensator 100nF, skoro istnieje możliwość podania napięcia odniesienia z zewnątrz mikrokontrolera?
    Czy możemy zrobić tak jak przy LM393? Napięcie mierzone podamy na VREF jako odniesienia, a progi na ADC1 i ADC2?

    Napięcie na aku będzie się wachać od 10,5 do 13,8V dlatego rezystory w dzielniku zastosowałem 18kΩ i 10kΩ.
  • #11 14141246
    dondu
    Moderator na urlopie...
    max-energy napisał:
    Napięcie mierzone (na akumulatorze) będzie się bardzo wolno zmieniać.

    To nie jest odpowiedź na moje pytanie:

    dondu napisał:
    A ja zadam najpierw pytanie, jak szybko układ ma zareagować na przekroczenie progów napięć?


    max-energy napisał:
    Czy taki układ ma prawo działać? Progi zostaną ustawione potencjometrami.

    Opisz dokładnie co chcesz zrobić, bo w zależności od tego bardzo różnie można lub należy podejść.
  • #12 14141254
    vonar
    Poziom 28  
    max-energy napisał:

    Dlaczego tylko kondensator 100nF, skoro istnieje możliwość podania napięcia odniesienia z zewnątrz mikrokontrolera?

    Można też podać z zewnątrz, jeśli potrzebna jest bezwzględna dokładność. Ale podawanie monitorowanego napięcia jako odniesienie jest dość dziwne i tutaj nie ma uzasadnienia. Na mikrokontrolerach z dedykowanym pinem tylko dla AREF (nie multipleksowanym z IO, jak jest np. w ATtiny26) praktycznie uniemożliwia to pomiar innych napięć, jeśli byłby potrzebny (chyba, że specjalnie chodzi o względny).

    max-energy napisał:
    Czy możemy zrobić tak jak przy LM393? Napięcie mierzone podamy na VREF jako odniesienia, a progi na ADC1 i ADC2?

    Tylko po co?
  • #13 14141404
    max-energy
    Poziom 22  
    Układ ma monitorować czy napięcie mierzone przekroczyło któryś z progów ustawionych za pomocą potencjometrów, bądź w programie i uaktywnić jedno lub drugie wyjście. Czas przełączania nie jest tu priorytetem, raczej dokładność.
  • Pomocny post
    #14 14141466
    michalko12
    Specjalista - Mikrokontrolery
    max-energy napisał:
    Czas przełączania nie jest tu priorytetem, raczej dokładność.


    Więc AREF zostaw w spokoju.
    Mierzysz napięcia na ADC1, ADC2 i ADC3 i w programie je porównujesz. W zależności od tego co wyjdzie z porównania podejmujesz odpowiednią akcję. Dokładność/rozdzielczość będziesz miał na poziomie 5V/1024 czyli około 5mV.

    Zastosuj się do tego co napisałem i przedstaw poprawiony schemat do ponownej weryfikacji.
  • #15 14141469
    dondu
    Moderator na urlopie...
    W takim układzie wykorzystanie komparatora nie jest niezbędne (szybkość reakcji przerwaniem).
    Spokojnie więc podłącz akumulator przez dzielnik rezystorowy do wejścia ADC i wykonuj 3 pomiary:
    1. potencjometr 1
    2. potencjometr 2
    3. napięcie dzielnika.

    Zwykłe uśrednianie + porównanie wyników w zupełności wystarczą, jeśli już musisz wykorzystywać do tego celu mikrokontroler :)
  • #16 14141505
    michalko12
    Specjalista - Mikrokontrolery
    max-energy napisał:
    Napięcie na aku będzie się wachać od 10,5 do 13,8V dlatego rezystory w dzielniku zastosowałem 18kΩ i 10kΩ


    Nie możesz na styk wyliczać dzielnika, musisz zostawić mały margines bezpieczeństwa.
    Dla rezystorów 20k/10k zakres pomiarowy będzie wynosił 15V przy referencji równej 5V.
  • #17 14141951
    max-energy
    Poziom 22  
    Teraz będzie ok?
    Komparator w AVR'ach, coś jak LM393
    dondu napisał:

    Zwykłe uśrednianie + porównanie wyników w zupełności wystarczą, jeśli już musisz wykorzystywać do tego celu mikrokontroler :)

    Wiem że to niedorzeczne zaciąganie do tak prostej roboty µC, ale no jakoś trzeba zacząć tę przygodę...
  • #18 14141966
    dondu
    Moderator na urlopie...
    max-energy napisał:
    Wiem że to niedorzeczne zaciąganie do tak prostej roboty µC, ale no jakoś trzeba zacząć tę przygodę...

    To wyjaśnia wszystko :)

    Rezystor bazy BC556, to 6,2k? Jeśli tak, to cały schemat OK (numerów pinów nie sprawdzałem).
  • #19 14142012
    michalko12
    Specjalista - Mikrokontrolery
    dondu napisał:
    Jeśli tak, to cały schemat OK

    Tranzystor jest źle podłączony. Jeśli ma być PNP to powinien być od strony zasilania, przy takim podłączeniu jak teraz powinien być NPN.
  • #21 14142056
    max-energy
    Poziom 22  
    Kolejne niedopatrzenie... Obydwa wyjścia będę zwierał do masy więc brzęczek wepnę pomiędzy kolektor a masę i zostawię PNP.
    Tak czytam przykładzie w necie i nasunęła mi się pewna myśl. Czy możemy progi ustawić w programie i usunąć potencjometry? Z obliczeń wyszło mi, że jeśli napięcie referencyjne ustawię na Avcc to dla napięcia progowego 11V będzie to 750bitów, a dla 10,5, 717bitów. Czy dobrze kombinuję????
  • #22 14142059
    vonar
    Poziom 28  
    max-energy napisał:
    Czy możemy progi ustawić w programie i usunąć potencjometry?

    Jak najbardziej tak.
  • Pomocny post
    #23 14142066
    michalko12
    Specjalista - Mikrokontrolery
    max-energy napisał:
    Z obliczeń wyszło mi, że jeśli napięcie referencyjne ustawię na Avcc to dla napięcia progowego 11V będzie to 750bitów, a dla 10,5, 717bitów. Czy dobrze kombinuję????


    751 i 717, ale nie bitów, tylko po prostu takie wartości.

    Dodano po 3 [minuty]:

    Jeśli napięcie będzie wolnozmienne to nie zapomnij o zastosowaniu jakieś histerezy np około 10 jednostek.
  • Pomocny post
    #24 14142076
    dondu
    Moderator na urlopie...
    max-energy napisał:
    Kolejne niedopatrzenie... Obydwa wyjścia będę zwierał do masy więc brzęczek wepnę pomiędzy kolektor a masę i zostawię PNP.

    To Ty decydujesz programem, czy zapalasz diodę zerem czy jedynką i podobnie z buzerem. Zastosuj więc tranzystor NPN.

    max-energy napisał:
    Tak czytam przykładzie w necie i nasunęła mi się pewna myśl. Czy możemy progi ustawić w programie i usunąć potencjometry?

    Można - tylko Ty wiesz co chcesz zrobić :)

    max-energy napisał:
    Z obliczeń wyszło mi, że jeśli napięcie referencyjne ustawię na Avcc to dla napięcia progowego 11V będzie to 750bitów, a dla 10,5, 717bitów. Czy dobrze kombinuję????

    Tak, ale nie bitów tylko po prostu wynik (liczba).

    EDIT. widzę że więcej nocnych Marków siedzi przy klawiaturach :)
  • #25 14142084
    max-energy
    Poziom 22  
    Bardzo dziękuję za pomoc. Zabieram się więc za klejenie kodu w Bascomie.
  • #26 14142090
    michalko12
    Specjalista - Mikrokontrolery
    max-energy napisał:
    Zabieram się więc za klejenie kodu w Bascomie.

    Pomyśl może od razu o C, żeby nie zmącić sobie głowy basicem?
  • #27 14142098
    max-energy
    Poziom 22  
    Podstawy Bascoma znam, a C ni w ząb...
  • #29 14142107
    max-energy
    Poziom 22  
    Ok, to jeszcze polećcie jakąś dobrą książkę o C. Do tej pory uczyłem się z "Programowanie mikrokontrolerów AVR w języku Bascom" Marcina Wiązania.
  • #30 14142112
    vonar
    Poziom 28  
    Ludzie, bez przesady. Skoro Autor tematu zna już podstawy Bascoma, to może bez problemu taki projekt w nim zrealizować. Zapewne zajmie mu to mniej czasu.
REKLAMA