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.

Woltomierz do zasilacza, Atmega8, dobry kod źródłowy.

adamek300vip 29 Sty 2007 15:16 2628 1
  • #1 29 Sty 2007 15:16
    adamek300vip
    Poziom 10  

    Witam,
    Chciałbym zrobić woltomierz do zasilacza. Przeszukałem całą elektrodę i nic ciekawego nie znalazłem poza gotowymi .hex (może źle szukałem). Posiadam dwa schematy jednak brak mi dobrego kodu źródłowego.
    http://www.nikomp.com.pl/opisy/ZEPJ0/ZEPK3880.htm

    http://elfly.pl/multimetr/multimetr.htm" target="_blank" rel="nofollow" class="postlink ">
    http://www.nikomp.com.pl/opisy/ZEPJ0/ZEPK3880.htm

    http://elfly.pl/multimetr/multimetr.htm
    [/url]
    Znalazłem coś takiego:
    Kod:

    Code:
    '[i]Program obsługi wbudowanego w mikrokontroler
    
    '10-bitowego przetwornika A/C 8.31

    $regfile = "m8def.dat"                                      'informuje kompilator o pliku
          'dyrektyw mikrokontrolera
    $crystal = 300000                                           'informuje kompilator
          'o częstotliwości oscylatora
          'taktującego mikrokontroler
    Config Lcd = 16 * 2                                         'konfiguracja typu wyświetlacza
          'LCD
    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , E = Portd.3 , Rs = Portd.2       'konfiguracja linii
          'mikrokontrolera, do których
          'dołączono wyświetlacz
          'LCD
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'konfiguracja wewnętrznego
          'przetwornika A/C
    Cursor Off
    Dim Wart_ac As Word                                         'zmienna na wartość odczytaną
          'z przetwornika
    Dim V As Single                                             'zmienna przechowująca obliczoną
          'wartość zmierzonego napięcia
    Dim Wart_nap As String * 3                                  'zmienna, do której wpisywana




          'zostaje przetworzona wartość
          'zmiennej V na tekst
    Start Adc                                                   'uruchamia wbudowany przetwornik

    Do                                                          'początek pętli programu
     Wart_ac = Getadc(1)                                        'odczytanie wartości z wejścia
          'ADC1 mikrokontrolera
     Cls                                                        'czyszczenie LCD
     Lcd Wart_ac                                                'wyświetlenie w pierwszej linii
          'Lcd odczytanej wartości
          'z przetwornika
     Lowerline                                                  'kursor do drugiej linii LCD
     V = Wart_ac * 0.0049                                       'zamiana odczytanej wartości
          'z A/C na napięcie
          'Wart_ac * ok. 4,8 mV
     Wart_nap = Fusing(v , "#.&&")                              'formatowanie wartości zmiennej
          'V do do formatu x.xx i zamiana
          'tej wartości na postać tekstową

     Lcd Wart_nap                                               'wyświetlenie obliczonej
          'wartości Wart_nap w drugiej
          'linii LCD
     Waitms 4500                                                'opóźnienie 100 ms
    Loop                                                        'koniec pętli Do...Loop
    End                                                         'koniec programu[/i]



    Niby działa ale im większe napięcie tym większy błąd pomiaru.
    Ze schematów wynika, że regulacji dokonujemy na ADC1(PC1) i ADC2(PC2) jednak nie wiem jak to w programie połączyć.
    Jeśli dysponuje ktoś gotowym kodem źródłowym i schematem miernika to bardzo proszę o pomoc.

    0 1