- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 10

Thema: ADC-Wert berechnen mit Bascom

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118

    ADC-Wert berechnen mit Bascom

    Anzeige

    Powerstation Test
    Hallo!
    Ich würde gerne mit dem ADC eines Atmega8 die Spannung berechnen die von einem Infrarotsensor kommt. Technisch gesehen funktioniert das alles, nur mit der umrechnung hab ich probleme. Wenn ich das richtig verstanden hab muss ich doch ADCwert * Vcc/1024 rechnen. 5/1024 wären dann 0,0048. Warum finde ich in Bascom keine variable die vernünftig mit kommazahlen umgehen kann? Der bringt mir jedes mal einen fehler beim kompilieren oder nimmt den ADCwert einfach mal 0 weil er die kommastellen abrundet.

    Kann mir irgendjemand helfen?

  2. #2
    Gast
    Gibts in dem Bascom keine Datentypen wie float oder double?

    Ansonsten kannste ja in mV rechnen

    Einfach 5*ADC, sollte näherungsweise stimmen

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118
    nein, es gibt nur bit, byte, integer, word, long, single, string und die ganze palette noch mit XRAM oder ERAM davor. bit, byte, single und integer lassen eben keine kommazahlen zu und mit word und string kann man anscheinend nicht rechnen?! Hab ich irgendwas verpennt? Das muss doch irgendwie möglich sein.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.06.2004
    Beiträge
    118
    oh, korrektur , mit word und string kann man doch rechnen aber eben nur ganzzahlig oder mach ich was falsch?

    Vari1 = 1
    Vari2 = 0.15
    Vari1 = Vari1 + Vari2
    Print Vari1

    Da kommt dann 1 raus egal welchen variablentyp ich nehme.

  5. #5
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Du mußt den Datentyp SINGLE nehmen, damit kannst du fein mit Gleitkommazahlen rechnen.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    Hallo Markus,

    Gleitkommaverarbeitung ist auf einem 8bit Controller immer ein wenig mit Vorsicht zu genießen. Sicher, der Compiler kann das und erzeugt auch richtigen Code dafür, dennoch sollte man vorher genau überlegen, ob man auch wirklich eine Gleitkommarechnung braucht.

    Im vorliegenden Fall kannst du z.B. den ADC-Wert statt mit 5 mit 50 multiplizieren. Man erhält als Ergebnis einen um den Faktor 10 höheren Wert. Bei der Ausgabe muss man dann halt das Komma an der richtigen Stelle setzen. Dafür spart man Unmengen an Ressourcen ein, die man vielleicht an anderer Stelle dringend braucht. Und Integerarithmetik ist viel schneller als Gleitkomma.

    HTH und Viele Grüße
    Jörg

  7. #7
    Gast
    so mich auch mal zu wort meld !!!
    hab auch n Problem mit dem Komma, ich will die Temp ermitteln und die natürlich 2 stellig hinter dem Komma anzeigen !!! ihr habt davon geredet die Zahl mit nem Multiplikator zu berechnen und das komma dann einzusetzen an die richtige stelle ??? wie soll das gehen ??? NET GANZ PEIL WIE ICH NE VARIABLE DANN ZERTEILEN SOLL

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    hab auch n Problem mit dem Komma, ich will die Temp ermitteln und die natürlich 2 stellig hinter dem Komma anzeigen !!!
    Ganz einfach, du rechnest immer mit dem 100-fachen des Wertes und setzt das Komma immer an die zweite Stelle von rechts.

    Als Alternative kann man für die 8-Bit Controller, egal ob Atmel oder PIC(AXE) auch einen Gleitkomma-Coprozessor einsetzen z.B. den hier: http://www.micromegacorp.com/umfpu.html

    edit: Link korrigiert

    Viele Grüße
    Jörg

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.07.2004
    Ort
    Mammendorf
    Alter
    67
    Beiträge
    1.062
    Für rechenintensive Anwendungen und über I2C ansprechbar interessantes Bauteil Jörg. Hast du schon Routinen um diesen unter AVR zu nutzen?
    MfG

    Hellmut

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    Hallo Hellmut,

    die FPU arbeitet nicht mit I2C, das wäre viel zu langsam, sondern mit SPI. Aber auch SPI ist hardwareseitig im AVR unterstützt.

    Programmbeispiele für AVR habe ich noch nicht, nur bislang für PICAXE.
    Ist aber sicherlich kein Problem sowas zu machen.

    Viele Grüße
    Jörg

Berechtigungen

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

LiTime Speicher und Akkus