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

Thema: AD-Wandler Phänomen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2005
    Beiträge
    29

    AD-Wandler Phänomen

    Anzeige

    E-Bike
    Moin!

    Habe ein Problem bei dem ich nicht weiterkomme. Habe ein Programm geschrieben, mit dem der 8-Bit Wert der am AD-Port anliegenden Spannung auf ein LCD-Disply ausgegeben wird. Aref und AVCC sind an 5V angeschlossen. Das funktioniert auch soweit ganz gut, nur die 8-Bit Werte sind komisch:
    U [V] AD-Wert
    0,283V 57
    0,581V 119
    0,895V 183
    1,201V 246
    1,471V 46
    1,765V 106
    2,102V 175
    2,354V 228
    2,749V 53
    3,013V 107
    3,31V 170
    3,71V 252

    Wie kann das sein, daß die Werte immer wieder bei 0 zu starten scheinen? Wird momentan nur mit der internen Spannungsreferenz gemessen, bzw. muss ich die externe im Programm aktivieren?

    Danke und Gruß, Martin

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    An dem ADC ist eine ganze menge einzustellen. Lies dir das mal durch, kann ich dir nur raten. mfg robert

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    64
    Beiträge
    159
    hi,
    sieht verdächtig danach aus, als ob du den adc in eine byte-variable einliest.
    der adc liefert von haus aus aber 'nen word-wert, zwar nur max. 1023, aber bei einlesen in byte säbelt alles über 255 hirn- und gnadenlos wech.
    der adc löst halt nunmal 10bit auf.

    probier mal:
    dim wert as word
    wert = getadc(nummer)
    print (oder) lcd wert

    grüssens, harry
    der kopf ist rund damit das denken seine richtung ändern kann...

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    22.01.2005
    Beiträge
    29
    Genau das war das Problem! Jetzt funktionierts!
    Vielen Dank!

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Mein Problem ist ähnlich aber bezieht sich auf die Lösung von harryup deshlab schreib ich es mal hier mit rein.

    Ich kann 'Word' nicht aufs LCD ausgeben. (Integer auch nicht, größeres habe ich noch nicht probiert)

    Bascom meldet dann:

    Error: 61 Line: xy Label not found [_PRINTWORD ], in blablabla

    Los geht es mit Line xy. Es ist die Zeile nach der letzten Zeile. Also schon da ja schonmal ein Befehl zu fehlen, oder?
    Wenn ich die Variable als Byte deklariere geht es (so wie oben immer bis 255 und dann mit 0 weiter bis Byte wieder voll ist) ohne Fehlermeldung.

    Kann mir jemand sagen was ich da falsch gemacht habe?

    Um die Frage noch zu erweitern: Für was stehen Single und Free beim ADC?
    Außer Runningmode konnte ich aus der Hilfe nichts weiter entnehmen.

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    SO ein Bascom is ja auch nur ein Mensch.
    Wenn der einen Label nicht findet, sucht er in der ganzen Source, und dann steht er halt ganz hinten und weint dort.

    Du weißt ja, daß du solche Felder mit STR(nn) ausgeben solltest ?

    Single heißt, einzelne ADC-Abfragen
    Free fragt er autom. permanent ab.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Ich hab's jetzt mal so probiert:

    Code:
    $regfile = "at26def.dat"
    $crystal = 6000000
    $lib "mcsbyte.lbx"
    Config Adc = Single , Prescaler = Auto
    
    Enable Interrupts
    Dim Ldr As Word
    
    Start Adc 
    
    Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.4 , Rs = Porta.5
    Config Lcd = 20 * 4
    Cls
    Wait 1
    Lcd "   *   Test *     "
    Wait 1
    
    Cls
    
    _printword:
    
    Ldr = Getadc(6)
    Lcd "adc " ; Str(ldr)
    
    Goto _printword
    End
    Und auf dem LCD erscheint erst * Test *, dann ganz viele adc aber ohne Zahl auf den LCD und dann wird anscheind ein Reset ausgeführt.

    Bei adc 0 free passiert nichts weiter nach * Test * und cls. Das LCD zeigt nur den Cursor

    Im Simulator hängt sich das Programm in der Schleife nach ein paar Durchläufen bei LCD "adc " ; Str(ldr) auf

    Mit Byte ging es ohne Probleme, außer halt das er nach 255 wieder bei 0 angefangen hat (is ja auch logisch).

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Oder anders ausgedrückt, warum braucht Word ein Label und Byte nicht?
    Und was darf/muss da im Label stehen und wann wird es angesprungen?
    Ich habe jetzt schon einiges ausprobiert aber keine Lösung gefunden.

    PS: den Artikel von Clemens Wagner habe ich schon gestern gelesen.
    Ich kann mir aber nicht vorstellen das dass Problem ist das er die Werte über RS232 ausgibt?!

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2004
    Beiträge
    5
    Hi,
    na wo du dich überall rumtreibst.
    Der Fehler wird von der mcsbyte.lbx verursacht. Die brauchst du hier aber nicht.
    Las die mal weg und nutze ein anderes Label als _printword.
    So funktionierts auf dem M8:
    Code:
    $regfile = "m8def.dat"
    $crystal = 6000000
    '$lib "mcsbyte.lbx"
    Config Adc = Single , Prescaler = Auto
    
    Enable Interrupts
    Dim Ldr As Word
    
    Start Adc
    
    Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portc.2 , Rs = Portc.4
    Config Lcd = 16 * 4
    Cls
    Wait 1
    Lcd "   *   Test *     "
    Wait 1
    Cls
    
    Zeigs_an:
     Ldr = Getadc(0)
     Lcd "adc " ; Str(ldr)
     Wait 1
     Cls
    Goto Zeigs_an
    
    End
    Die Wandleroptionen hat ja PicNick schon erklärt. Mit Free läuft der AD-Wandler ständig und Single startet erst bei der Abfrage eine AD-Wandlung (dauert etwas länger, spart aber Strom).

    Gruß
    Uwe

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Ach, auch hier

    Du kannst die ja vorstellen, das dass nur ein Ausschnitt des Codes ist. RC5 usw ist da auch schon mit drin. (Verursacht aber nicht den Fehler, hatte ich alles schon auf ' )

    Das Label _printword wollte Bascom ja nur haben.

    Also werd ich wohl Free nehmen für die Anwendung.

    Zur Not kann ich dich ja anmailen

Berechtigungen

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

Solar Speicher und Akkus Tests