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

[AVR BASCOM] Program do wagi - obliczenia.

KoLi86 19 Paź 2009 11:41 3621 16
  • #1 7147286
    KoLi86
    Poziom 10  
    Napisałem programik do wagi, obsługuje przetwornik ac w AtMega8 :

    
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5
    Dim I As Byte
    
    
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'ustawianie przetwornika AC
    
    'Config Timer0 = Timer , Prescale = 64             'ustawienie licznika dla przerwań co 2ms
    'Enable Interrupts                                 'odblokowanie przerwań
    'Enable Timer0                                     'odblokowanie przerwania od Timer0
    'On Timer0 Petla Nosave                            'po przepełnieniu licznika skocz do etykiety o nazwie Petla
    
    '*************************    deklaracja zmiennych  ****************************
    Dim Wart_ac As Word                                         'zmienne konwersji pomiaru
    Dim V As Single                                             'zmienne konwersji pomiaru
    Dim Wart_nap As String * 3                                  'zmienne konwersji wyświetlania
                                              'zmienne konwersji wyświetlania
                                       'zmienna licznika wyświetlacza LED
    
    'Dim Flaga As Bit
    
    Start Adc                                                   'start przetwornika A/C
    
    Do
    Wart_ac = Getadc(1)
    
    Cls
    Lcd Wart_ac
    
    Lowerline
    V = Wart_ac * 0.0049
    
    Wart_nap = Fusing(v , "#.&&")
    
    Lcd "Waga=   "
    Lcd Wart_nap
    Lcd "kg  "
    Waitms 1000
    Loop
    End
    
    
                                                            'koniec programu
    


    Program ładnie działa, mam tylko pytanko czy muszę jeszcze coś dopisać oby przeliczyć wartość na kilogramy, czy wystarczy to co jest??

    A drugi problem to nie wiem czy programowy, mam problem z czułością ważenia od 0.3kg ładnie działa ale poniżej jest już znacznie gorzej.

    Z góry bardzo dziękuje za pomoc

    Poprawiłem tytuł, dodałem znaczniki [code].
    [zumek]
  • #2 7147521
    KoLi86
    Poziom 10  
    Na wejściu przetwornika mam podawany sygnał z wzmacniacza pomiarowego od 0 do 5v. sygnał ten podłączyłem od przetwornik ac w Atmega 8 i napisałem programik z ac. Jednak nie wiem jak przeliczyć tą wartość na kg
  • #3 7148328
    Freddy
    Poziom 43  
    Jaki używasz przetwornik. Podaj typ.
    W jego danych katalogowych powinny być podane przeliczniki.
    Drugi sposób, połóż odważnik 1kg i zmierz napięcie na wyjściu przetwornika.
  • #4 7149196
    Konto nie istnieje
    Poziom 1  
  • #5 7149242
    KoLi86
    Poziom 10  
    używam przetwornika Atmega 8, a nie zewnętrznego . W załączniku dodałem notę od Atmegi


    Załącznik usunąłem, a autora postu zobowiązuję do zapoznania się z regulaminem, a w szczególności z pkt 10.10
    [zumek]


    co do załącznika i odsyłacza to nie zrobiłem tego aby zarabiać punktów tylko aby ułatwić wyjaśnianie problemu.

    Dodano po 11 [minuty]:

    Co do kalibracji to została ona przeprowadzona na wzmacniaczu pomiarowym. A nie chodzi mi o programowe tarowanie wagi bo tak to wygląda. Tylko o wyjaśnienie jak programowo mogę ustalić wartość jaka wychodzi mi z przetwornika ac ATMEGA8 16PU, na Kg. Napisałem programik. W tej posatci przy ustawieniu 1 kg pokazuje mi się 1 ale nie wiem czy mogę to traktować jako 1 kg czy 1 v i tu liczę na pomoć
  • Pomocny post
    #6 7150761
    netotron
    Poziom 26  
    Programik w porządku z małym ale

    Wart_ac = Getadc(1)
    Wart_ac = Getadc(1) ' dwa razy to samo zalecam
    i
    V = Wart_ac * 0.004884 ' też zalecam

    Jeśli nie zależy ci na czasach kolejnych odczytów to zalecane jest odczekać > niż 20ms przed kolejnym pomiarem z ADC

    Wart_ac = Getadc(1)
    Waitms = 50
    Wart_ac = Getadc(1)

    to od strony programowej, teraz od elektroniki:
    - Filtrowanie napięcia na wejściu przetwornika ( szczególnie masa!)
    - długość przewodów i ekranowanie!!!!
    - Porządna stabilizacja zasilania
    - zalecam też zewnętrzne źródło nap. odniesienia np. LM 385
    w celach testowych wyświetl sobie na LCD-ku czystą zmienną z ADC zobaczysz jak jest stabilna.

    powodzenia
  • #7 7150933
    Freddy
    Poziom 43  
    Kolego KoLi86 dalej nie wiemy jakiego używasz przetwornika !
  • #8 7150954
    KoLi86
    Poziom 10  
    Kolego Freddy nie rozumiem twojego pytania używam przetwornika analogowo-cyfrowego AtMegi8, który ustawia się programowo. A jeśli chodzi o całość to czujank tensometryczny KM200, wzmacniacz pomiarowy AT 5210N "Spice", Zl2avr z AtMega8 16PU.
  • #9 7150956
    Freddy
    Poziom 43  
    Cytat:
    czujnik tensometryczny KM200, wzmacniacz pomiarowy AT 5210N
    No właśnie o to mi chodziło. Fakt, nie pisałem, że chodzi o przetwornik pomiarowy. Myślałem, że to oczywiste.
  • #10 7150973
    KoLi86
    Poziom 10  
    Właśnie,że rozmawiamy cały czas o przetworniku ADC wiec nie za bardzo zrozumiałem o co chodzi :)
  • #11 7152241
    Konto nie istnieje
    Poziom 1  
  • #12 7152328
    Konto nie istnieje
    Poziom 1  
  • #13 7152901
    KoLi86
    Poziom 10  
    Przepraszamemarcus ale chyba mnie nie zrozumiałeś napisałem 1 sądząc iż jest to jasne ze wynosi 1.00 tak jak to wymaga program. A chodzi mi o to, CZY WYSTARCZA to CO napisałem w programie czy muszę jeszcze coś dopisać aby wartość końcowa była w kg
  • Pomocny post
    #14 7153307
    Konto nie istnieje
    Poziom 1  
  • #15 7153405
    KoLi86
    Poziom 10  
    Bardzo dziękuje. Mam tylko prośbę czy mógłbyś mi ta komende Locate pokazać na przykładzie mojego programu. Program napisałem na podstawie książki, i niestety nie widze w niej tego polecenia. Byłbym bardzo wdzięczny
  • Pomocny post
    #16 7153472
    Konto nie istnieje
    Poziom 1  
  • #17 7153537
    KoLi86
    Poziom 10  
    Bardzo dziękuje
REKLAMA