- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Word in Double Konvertieren - nicht möglich?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von Thegon
    Registriert seit
    21.01.2011
    Beiträge
    562

    Word in Double Konvertieren - nicht möglich?

    Anzeige

    Powerstation Test
    Hallo zusammen,
    ich habe eine Spannungsmessung mit einem ATmega32 gebaut. Der soll eine Spannung auf einem Display anzeigen können, und zwar mit kommastellen. Der ADC Eingang liefert genaue werte, wenn ich direkt den Pegel anzeigen lasse. Nun hätte ich aber gerne, dass der ADC wert in eine Spannung umgerechnet wird, so weit so gut. Da der ADC seinen Ausgabewert aber in eine Word - Variable speichert, kann ich durch dividieren keine Kommastellen herausbekommen, deshalb hätte ich gerne den Wert der Word - Variablen in eine Double - Variable geschrieben, sodass ich diese dividieren kann und eine genauere Spannung erhalte. Nun, am display erscheint einfach "0", egal was am ADC anliegt. Ich weiß auch nicht weiter... Woran kann das liegen?
    Der Code wäre Hier:

    Code:
    Dim X As double
    
    Do
    W = Getadc(0) 'W ist die word variable
    X = W
    X = X * 3           'Spannungsteiler 1: 3
    X = X / 204       ' 1024 / 5 V, so viel ist ein volt am ADC
    Cls
    Locate 1, 1
    Lcd X
    waitms 1000
    Loop
    DAs ist jetzt nicht das ganze Programm, aber alles, das wichtig ist, hoffe ich zumidest. ADC Funktionieren, wie schon oben geschrieben sehr gut, wen ich den Ausgabewert direkt am Display ausgebe und dann mit dem Taschenrechner umrechne.
    Wäre sehr glücklich wenn mir jemand sagen kann, was ich falsch mache, denn ich komme nicht weiter.
    Danke im voraus!
    Gruß Thegon

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    33
    Beiträge
    1.192
    Ändert es was, wenn du anstatt *3 einfach *3.0 schreibst bzw anstatt /204 halt /204.0 ? So kenne ich das von einer anderen Basic-Programmiersprache.

    Sonst: Wurde die Lcd-Funktion so programmiert, dass sie auch Fließkommazahlen darstellen kann? (Dokumentation?)

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von Thegon
    Registriert seit
    21.01.2011
    Beiträge
    562
    Also das mit dem 204.0 geht glaub ich nicht, denn ich habe vorher die Zahl genauer eingetippt (204,8..), damit auch die Lösung genauer wird und da ist auch null raus gekommen. Ob das Lcd Gleitkomma darstellen kann, weiß ich nicht so genau, es ist schon ziemlich alt, aber es hat den HD4478 (oder so, auf jeden fall den bekannten Controller)
    Was müsste man denn machen, dass die Zahl im gleitkomma angezeigt wird, sollte das Display jetzt nicht darauf programmiert bzw. gibt es eine andere Lösung als die Zahl mit rechenoperationen auseinander zu reißen und dann ein komma dazwischen hineinzuschreiben?
    Gruß Tegon

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Thegon,
    du kannst eine Word Variable (W) nicht direkt in einen Double Typ (X) umwandeln. Du könntest jetzt erst in eine Single und diese dann in eine Double wandeln. Ist aber bei deinen max. 1024 Werten vom ADC ziemlich übertrieben.
    Mache X zu einer Single und es wird gehen.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von Thegon
    Registriert seit
    21.01.2011
    Beiträge
    562
    Also das klingt ja schon mal vielverprechend, danke. Mir ist nur gerade eingfallen dass ich zur Zeit ja gar kein Display habe, aber in ein paar Tagen werde ich wieder eins haben und auch gleich berichten, ob es funktioniert hat.
    Grup Thegon

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von masasibe
    Registriert seit
    21.01.2011
    Beiträge
    181
    Ob das Lcd Gleitkomma darstellen kann, weiß ich nicht so genau, es ist schon ziemlich alt, aber es hat den HD4478 (oder so, auf jeden fall den bekannten Controller)
    Es geht nicht darum, ob das Display Gleitkommazahlen anzeigen kann (das Display bekommt sowieso nur den ASCII-Code), sondern ob die Bascom-Funktion LCD dafür geschrieben wurde auch Variablen, die Gleitkommastellen enthalten, an das Display zu senden

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von Thegon
    Registriert seit
    21.01.2011
    Beiträge
    562
    Tja, ich werde es einfach mal ausprobieren, so genau weiß ich das auch nicht.
    Mfg Thegon

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied Avatar von masasibe
    Registriert seit
    21.01.2011
    Beiträge
    181
    Ich habe das mit dem Single ausprobiert, aber irgendwie funktioniert es auch nicht richtig. Die Single Variable hat den Wert 5.12 und auf dem Display wird 5.11888999 angezeigt!

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Mit einigem Abstand betrachtet ist 5.12 gleich 5.11888999
    Es können nur sehr wenige Brüche exakt in Binärform dargestellt werden, wenn du nur eine kleine Anzahl Stellen zur Verfügung hast.
    Entweder du akzeptierst den Unterschied oder du rundest den Wert auf die 2. Stelle oder du nimmst Word weiterhin und formatierst die so, dass es passt.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied Avatar von masasibe
    Registriert seit
    21.01.2011
    Beiträge
    181
    Ja aber ich habe der Single-Variable direkt den Wert 5.12 zugewiesen. Wie kommt er dann auf 5.118...?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress