- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 3 von 3

Thema: LCD ADC Ausgabe Problem

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330

    LCD ADC Ausgabe Problem

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    Ich versuche, mit einem Atmega8 seine eigene Versorgungsspannung viac LCD auszugeben.

    Dazu habe ich folgenden Code geschrieben
    Code:
    $regfile = "m8def.dat"                                      ' specify the used micro
    $crystal = 1000000                                          ' used crystal frequency
    $baud = 19200                                               ' use baud rate
    $hwstack = 150                                              ' default use 32 for the hardware stack
    $swstack = 150                                              ' default use 10 for the SW stack
    $framesize = 60                                             ' default use 40 for the frame space
    
    
    
    'note : tested in PIN mode with 4-bit
    
    Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
    
    
    Dim A As Byte
    Dim Druck As Byte
    Dim Var As Byte
    Dim Uv As Byte
    Dim X As Byte
    Dim Y As Byte
    Config Lcd = 16 * 2
                                           'configure lcd screen
    
    'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
    'When you dont include this option 16 * 2 is assumed
    '16 * 1a is intended for 16 character displays with split addresses over 2 lines
    
    
    
    
     Config Timer1 = Timer , Prescale = 1024
     Enable Timer1
    
    
    
     Ddrd = &B00000000                                          'input D
      Var = 35
       Druck = 150
    
    
    
     Enable Interrupts
    
    
    
    Cursor Off Noblink
    
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    
    Start Adc
    
    'With STOP ADC, you can remove the power from the chip
    'Stop Adc
    
    Dim W As Word , Channel As Byte
    
    'now read A/D value from channel 0
    
    
    
    
    ' ------------------------------------ hier liegt der Hund im Graben
    
    Do
    
      W = Getadc(4)
      Uv = W * 25
      Uv = Uv / 10
    
     Lcd "Vers.Spannung:"
     Locate 2 , 0
     Lcd Uv ; " mV " ; "-" ; W
    
      Waitms 1800
       Cls
    
    ' --------------------------------
    
    Loop
    End

    Rauskommen tut dann immer 16 mV -16
    Gemessen sinds 2,55V - 2,54V (1 kOhm + 1 kOhm)

    Wieso der ADC Minuswerte angibt, ist mir ein Rätsel. Habe den Spannungsteiler auch umgepolt (wie zu erwarten kein Effekt)

    Mit dem Beispielprogramm hat es geklappt, der hat alle Channels (ADC 0-7) durchgeswitched. 546 , 433 usw kam immer raus also realistische Werte. Wieso er jetzt negative Werte ausgibt?

    Habt ihr eine Idee???



    EDIT: Auch wenn ich 0-W oder -1*W rechne, gibt er nachher Minuswerte aus!!

    Mfg
    Geändert von runner02 (10.03.2012 um 20:19 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Danke, hat schon geklappt.


    Ich hatte "-" statt " " geschrieben ...... Und statt Byte benutze ich jetzt Long. Und dann gehts

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Der ADC kann schonmal keine negativen Spannungen messen. Zumindest nicht wenn du nur eine positive Versorgungsspannung hast.
    Deswegen vermute ich einen Softwarefehler.
    Warum rechnest du sowas?

    W = Getadc(4)
    Uv = W*25
    Uv = Uv/10

    Der ADC hat eine Auflösung von 10 Bit. Das heißt 1 Bit entspricht 5V/1024 = 0,0048V. Du sagst du hast einen Spannungsteiler mit 2x 1kOhm. Das heißt bei 5V liegen 2,5V am ADC an, also immer die Hälfte der Spannung am gesamten Spannungsteiler.
    Du rechnest nun so:

    W = Getadc(4)
    W = W * 0,0048 (damit rechnest du den Digitalwert in eine Spannung um, z.B. hast du bei einer Spannung von 2,5V einen Wert von 512 und 512 x 0,0048 = 2,45...)
    W = W * 2 (damit "kompensierst" du den Spannungsteiler)

    Locate 1, 1
    LCD "Vers. Spannung:"
    Locate 2, 1
    LCD W ; "V"

    So sollte er dir das richtige anzeigen

    Edit: Nagut wenn es so einfach war ^.^
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Ähnliche Themen

  1. Problem mit Timer und LCD-Ausgabe
    Von MelMan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 10.08.2008, 16:51
  2. Problem mit UART - falsche Ausgabe
    Von homedom im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 19.01.2008, 18:26
  3. Problem mit LCD-ausgabe
    Von ZwieBack im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 03.07.2007, 20:06
  4. Ausgabe auf dem PC
    Von Nikolaus188 im Forum Elektronik
    Antworten: 31
    Letzter Beitrag: 07.08.2006, 16:07
  5. Problem mit serieller Ausgabe
    Von schmic20 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 05.02.2005, 14:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests