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

ATMEGA 8 porownywanie napiec na wejscach PD6 PD7

16 Lut 2010 19:31 1742 15
  • Poziom 9  
    Czesc wszystkim
    potrzebuje pomocy .
    Chce na wejsciu komparatora ATMega 8 PD6 i PD7 miezyc napiecia, na kazdym z nich jest zamontowany potenciometr 10 kohm, jednym z nich ustawiam napiecie a ten drugi jest zamontowany na osi malego silnika . jezeli napiecie ustawione jest mniejsze niz napiecie na osi silnika to na wyjsciu Port b.1 pojawia stan Hi wysoki, jezeli napiecie ustawione jest wieksze niz na osi silnika to Port b.1 zostaje wylaczone LOW a na Porcie B.2 pojawia sie stan Hi .jezeli napiecia ustawione i to na osi sa identyczne to na Portach B1 i B2 znajdoje sie w stanie beznapieciowym LOW.
  • Poziom 43  
    No ok. Czyli tak to działa.
    A pomiar Ci do czego? Bo nie napisałeś. Może napięcie zmierz multimetrem?
  • Poziom 9  
    atom1477 napisał:
    No ok. Czyli tak to działa.
    A pomiar Ci do czego? Bo nie napisałeś. Może zapięcie zmierz multimetrem?


    pomiar to nie jest wazny tylko wazne jest zeby wyjscia tak dzialaly jak opisalem
  • Poziom 42  
    Z tego co piszesz to można tylko wywnioskować, że ty masz generalnie problem z obsługą ADC i odczytem i analizą mierzonych napięć .... więc może zacznij bez tych silniczków itp ....
  • Poziom 9  
    masz racje ja bawie sie wiecej elektronika analogowa a ten silnik to tylko przyklad zeby to jakos opisac w programowaniu ATMega jestem an zero

    Proszę poprawić treść swoich postów - regulamin p.15
    [zumek]
  • Poziom 43  
    Cytat:
    pomiar to nie jest wazny tylko wazne jest zeby wyjscia tak dzialaly jak opisalem

    Ale one już działają. Przecież napisałeś że to działa.
  • Poziom 42  
    Leonor napisał:
    masz racje ja bawie sie wiecej elektronika analogowa a ten silnik to tylko przyklad zeby to jakos opisac w programowaniu ATMega jestem an zero


    Dlatego piszę, żeby porobić sobie najpierw testy do bólu ze zwykłymi potencjometrami i odczytywać napięcia w rozdzielczości 10bitów z różnymi wartościami preskalera, w różnych trybach. Zrobić sobie po prostu taki Voltomierz i wyświetlać napięcie np z 2 miesjscami po przecinku na LCD. Żeby zobaczyć dokładnie co się z tym wiąże, jak się to przelicza, jak się dobiera napięcie odniesienia, żeby zobaczyć jak ważne jest wtedy filtrowanie napięcia na AVCC itd itd itd

    to potem będzie ci łatwiej - gdy już wszystko w powyższych testach powychodzi ci wg założeń i poznasz zasady pracy z ADC.
  • Poziom 9  
    napisalem cos takiega w bascom ale nie dziala tak jak bym chcial jak opisalem nie mam pojecia jak to dokladnie zrobic chodzi o wyjscia zalezne sa napiecia wejsciowego

    $regfile = "m8def.dat"

    $crystal = 8000000
    Led1 Alias Portb.0
    Config Led1 = Output

    Led2 Alias Portb.1
    Config Led2 = Output


    Config Aci = On , Trigger = Toggle
    On Aci On_aci
    Enable Aci


    Enable Interrupts


    Do
    Led1 = ACSR.ACO
    Loop

    End


    On_aci:
    Led2 = Not ACSR.ACO
    Return
  • Poziom 43  
    To i tak nie zadziała tak jak chcesz bo nie uzyskasz warunku że oba napięcia są równe. Zawsze będziesz miał większe albo mniejsze.
    Musisz użyć ADC.
    Domyślam się że chcesz zrobić serwomechanizm?
  • Poziom 9  
    program ma servo mechanizm to ja juz mam glownie chodzi o to zeby dzialalo jak servo ale bez tych czasowych zmian 1,5 ns do 2ns przebiegow serva .tylko w zakresie normalnego napiecia 5Volt
  • Poziom 43  
    Code:

    Do
        Adc0 = Getadc (0)
        Adc1 = Getadc(1)

        Adc1 = Adc1 + 10
        If Adc0 > Adc1 Then
            Portd.7 = 0
            Waitms 1               'żeby nie spalić sterownika silniczka
            Portd.6 = 1
        Else
            Adc1 = Adc1 - 20
            If Adc0 < Adc1 Then
                Portd.6 = 0
                Waitms 1           'żeby nie spalić sterownika silniczka
                Portd.7 = 1
            Else
                Portd.6 = 0
                Portd.7 = 0       
            End If
        End If
    Loop


    Zmienne Adc0 i Adc1 muszą być typu Integer. Nie Word.
  • Poziom 9  
    Na razie dziekuje. Zaraz to zgram na Mega 8 i wyprobuje - mam duzo nadzieji, ze to jest to, czego szukam.
  • Poziom 43  
    No ale potencjometry to musisz podłączyć do PortC.0 i PortC.1. Wiesz o tym?
    I na początku programu daj:
    Code:

    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
  • Poziom 9  
    atom1477
    Czy to juz wszystko czy sa tutaj jakies bledy
    myslales o czyms takim
    Code:

    $crystal = 8000000
    $regfile "m8def.dat"

    Config Portd.6 = Output
    Config Portd.7 = Output
    Config Pinc.0 = Input
    Config Pinc.1 = Input
    Dim Adc0 As Integer
    Dim Adc1 As Integer

    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    Do
        Adc0 = Getadc(0)
        Adc1 = Getadc(1)

        Adc1 = Adc1 + 10
        If Adc0 > Adc1 Then
            Portd.7 = 0
            Waitms 1                                            'zeby nie spalic sterownika silniczka
            Portd.6 = 1
        Else
            Adc1 = Adc1 - 20
            If Adc0 < Adc1 Then
                Portd.6 = 0
                Waitms 1                                        'zeby nie spalic sterownika silniczka
                Portd.7 = 1
            Else
                Portd.6 = 0
                Portd.7 = 0
            End If
        End If
    Loop
  • Pomocny post
    Poziom 43  
    Na pierwszy rzut oka wszystko jest OK.
  • Poziom 9  
    Dzieki. Widze ze sie znasz super na tych sprawach i jezeli masz gadu gadu albo skype, to napisz leo987(malpa)gmx.de

    Regulamin p.10.2
    [zumek]