Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

BASCOM ATMEGA8 Jak wykryć brak potencjometru na ADC

Tomekddd 12 Mar 2010 19:57 2193 20
  • #1 12 Mar 2010 19:57
    Tomekddd
    Poziom 23  

    Witajcie, robię sterowniczek który wykrywa wartość potencjometru na ADC i daje proporcjonalny sygnał na PWM ale mam problem bo jak wypnę potencjometr to PWM ustawia się na MAX a to źle bo gdyby się uszkodził to PWM będzie działało i układu nie da się zatrzymać. Co tu można poradzić?

    0 20
  • #2 12 Mar 2010 20:49
    krzychS
    Poziom 29  

    Wepnij w szereg między plusem a potencjometrem niewielki rezystor i tak samo między masą.
    Jeśli nastąpi przerwa, czyli pojawi się któraś ze skrajnych wartości, to procesor odpowiednio na to zareaguje (wprowadź odpowiedni warunek w programie).

    0
  • #3 12 Mar 2010 22:20
    Tomekddd
    Poziom 23  

    czy rezystory 1k wystarczą? i miedzy plusem a potencjometrem? czy to chodzi o wejście ADC czy któryś pin potencjometru?

    0
  • #4 13 Mar 2010 09:28
    krzychS
    Poziom 29  

    Wartości rezystorów zależą głównie od potencjometru.
    BASCOM ATMEGA8 Jak wykryć brak potencjometru na ADC

    0
  • #5 13 Mar 2010 10:40
    marek_Łódź
    Poziom 36  

    Ten układ nie złagodzi odłączenia suwaka. Proponuję dzielnik oporowy równolegle z potencjometrem o rząd, czy dwa większy od niego (przykładowo przy potencjometrze 4k7 dwa oporniki np470k do plusa i 100k do masy środek na suwak.

    0
  • Pomocny post
    #6 13 Mar 2010 10:45
    atom1477
    Poziom 43  

    Albo jeden ściągający do masy. Bo właśnie do masy trzeba w tym przypadku ściągnąć.

    0
  • #7 13 Mar 2010 11:23
    wywrot88
    Poziom 17  

    Witam, problem można rozwiązać programowo, wystarczy zmienić tryb normalny PWM clear down na tryb odwrócony clear up. Tyle, że wtedy będzie się odwrotnie kręcić potencjometrem.

    0
  • #8 13 Mar 2010 11:48
    Tomekddd
    Poziom 23  

    Dziękuję za odpowiedzi, pomogło podłączenie ADC do masy przez rezystor 10k

    PWM nie mogę zrobić CLEAR UP ponieważ po włączeniu zasilania procesora w takiej konfiguracji pojawia się krótki impuls na OC1A a to jest niedopuszczalne w moim sterowniku

    0
  • #9 13 Mar 2010 11:58
    marek_Łódź
    Poziom 36  

    wywrot88 napisał:
    Witam, problem można rozwiązać programowo, wystarczy zmienić tryb normalny PWM clear down na tryb odwrócony clear up. Tyle, że wtedy będzie się odwrotnie kręcić potencjometrem.
    W jaki sposób programowo wykryjesz, że wysoki poziom wejścia ADC nie wynika z kręcenia gałką, tylko z odłączenia suwaka?

    0
  • #10 13 Mar 2010 12:14
    atom1477
    Poziom 43  

    Nie wykryje tego. Ale to w niczym nie przeszkadza. Po prostu poziom wysoki to obroty równe 0. Czyli czy to potencojmetr jest ustawiony na VCC, czy go nie ma i jest stan awaryjny i stan na wejściu ADC też jest wysoki, to i tak silnik będzie stał.

    0
  • #11 13 Mar 2010 12:26
    asembler
    Poziom 32  

    Aby wykryć, czy potencjometr jest podpięty, niestety trzeba ograniczyć zakres działania. Inaczej mówiąc, bez potencjometru będziemy mieć pomiar > 4V a z potencjometrem np. 0-4V. Jakakolwiek przerwa będzie wykryta poprzez pojawienie się napięcia większego od 4V. Oczywiście trzeba zastosować rezystor podciągając np. 100kOhm.

    0
  • #12 13 Mar 2010 16:38
    wywrot88
    Poziom 17  

    marek_Łódź napisał:
    wywrot88 napisał:
    Witam, problem można rozwiązać programowo, wystarczy zmienić tryb normalny PWM clear down na tryb odwrócony clear up. Tyle, że wtedy będzie się odwrotnie kręcić potencjometrem.
    W jaki sposób programowo wykryjesz, że wysoki poziom wejścia ADC nie wynika z kręcenia gałką, tylko z odłączenia suwaka?


    Sądziłem, ze jeśli usuniecie potencjometru spowoduje zatrzymanie urządzenia podpiętego do PWM, to nie ma konieczności sprawdzania obecności potencjometru.

    0
  • #13 13 Mar 2010 18:57
    marek_Łódź
    Poziom 36  

    wywrot88 napisał:
    marek_Łódź napisał:
    wywrot88 napisał:
    Witam, problem można rozwiązać programowo, wystarczy zmienić tryb normalny PWM clear down na tryb odwrócony clear up. Tyle, że wtedy będzie się odwrotnie kręcić potencjometrem.
    W jaki sposób programowo wykryjesz, że wysoki poziom wejścia ADC nie wynika z kręcenia gałką, tylko z odłączenia suwaka?


    Sądziłem, ze jeśli usuniecie potencjometru spowoduje zatrzymanie urządzenia podpiętego do PWM, to nie ma konieczności sprawdzania obecności potencjometru.
    Sorry, nie zrozumiałem - masz rację. Sygnał PWM można też odwrócić sprzętowo, np. na driverze.

    0
  • #14 13 Mar 2010 19:06
    atom1477
    Poziom 43  

    Ale po co. PWM niech chodzi tak jak chodził. Tylko próbki z ADC przed wpisaniem do PWMa trzeba odwrócić.

    0
  • #15 13 Mar 2010 21:49
    wywrot88
    Poziom 17  

    Zmiana trybu PWM to tylko 4 inne litery, a do odwracania wartości ADC trzeba by pisać oddzielne polecenie, więc czy to tylko wyważanie otwartych drzwi, czy jest z tym związane jeszcze coś co powinienem wiedzieć, a nie wiem?

    0
  • #16 13 Mar 2010 21:57
    atom1477
    Poziom 43  

    1. OCR1A = Getadc(3)
    2. OCR1A = 255 - Getadc(3)

    Jest aż tak źle?

    Tutaj nie chodzi o zmianę trybu PWMa bo po zmianie trybu zostanie wygenerowany jeden impuls. Nie wiem skąd*. Ale tak napisał Tomekddd.
    Chodzi o odwracanie fazy na driverze.
    Jeżeli można by to odwrócić zmieniając tryb PWMa to oczywiście lepiej by było to tak zrobić niż pisać "255 - xxx".
    Ale jeżeli trzeba dodawać zewnętrzny driver, to chyba lepiej napisać to 255 niż dawac driver, nie?

    *Pewnie z nieodpowiedniej kolejności włączania tego. Trzeba najpierw wpisać do OCRxx wartość 255, a dopiero później włączyć Timer (znaczy się PWM).

    0
  • #17 13 Mar 2010 22:14
    Tomekddd
    Poziom 23  

    To polecenie przechwytywania z ADC nie działa u mnie po prostu nie da rady tak, najpierw trzeba dane z ADC przypisać zmienna a potem dac je na PWM.
    Druga sprawa to taka ze samo odłączenie potencjometru nie wyzeruje ADC ponieważ pojawia się coś jakby stan nieustalony i wartość ADC pływa (reaguje wtedy nawet na dotkniecie przewodu w izolacji lub na samo zbliżenie ręki d układu)

    0
  • #18 13 Mar 2010 22:24
    atom1477
    Poziom 43  

    No bo masz ma słabe podciąganie. Zmniejsz wartość potencjometru i wtedy będziesz mógł zmniejszyć wartość podciągania.
    Np. 470R i 10k.

    0
  • #19 14 Mar 2010 09:34
    Tomekddd
    Poziom 23  

    ADC pływa wtedy jeśli nie dam rezystora 10k do masy, jak jest rezystor nic się nie dzieje i jest ciągle 0 tak jak chciałem

    0
  • #21 14 Mar 2010 19:17
    Tomekddd
    Poziom 23  

    W niczym tylko dla informacji podałem, grunt ze działa

    0