- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 6 von 6

Thema: Umrechnung DS1631 (zwei Bytes -> Temperaturwert)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Hallo MagicWSmoke!


    Vielen Dank für deine Antwort!
    Ich habe mir deine Variante auf Papier einmal genauer angesehen und habe das erste Mal die Sache mit dem Overlay verstanden.

    Es funktioniert auch auf der Hardware prima und benötigt nicht einmal annhähernd soviel Rechenzeit wie bei der Verwendung einer Gleitkommarechnung.

    Nachdem ich nun fasziniert von der Overlay-Geschichte bin, bastle ich gerade an einer Lösung auch die Berechnung der Betriebsspannung ohne Gleitkomma zu realisieren. Hast du auch dazu einen Ansatz, wenn ich lieb fragen darf?
    Grüße
    Thomas

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Thomas E. Beitrag anzeigen
    und habe das erste Mal die Sache mit dem Overlay verstanden.
    Gut
    Es funktioniert auch auf der Hardware prima und benötigt nicht einmal annhähernd soviel Rechenzeit wie bei der Verwendung einer Gleitkommarechnung.
    Das Meiste braucht Str(). Und es spart auch Flash, aber erst dann richtig, wenn gar keine Fließkommaoperation mehr drin ist, denn dann muss der Compiler die dafür benötigten Routinen nicht mehr einbinden.
    auch die Berechnung der Betriebsspannung ohne Gleitkomma zu realisieren. Hast du auch dazu einen Ansatz
    Ich kenne die gegenwärtige Berechnung nicht.

    Der Trick bei der Festkommaarithmetik ist, erstmal den Ausgangswert zu reduzieren, solange ohne Genauigkeitsverlust möglich, dann so zu multiplizieren dass die Variable garantiert nicht überläuft, man dann möglichst durch Schieben teilen kann und auch der Wert entsprechend der späteren Formatierung entsteht. Im Beispiel eben mal 25 und durch 4 gleich 6,25.

    Bei 'nem ADC mit 'ner Referenz von 2,56V und Meßbereich durch Spannungsteiler 0-10V wäre die theoretisch erzielbare Genauigkeit ~0,01V, also muss 10V dann den Wert 1000 ergeben, um nach Formatierung zu 10,00 zu werden.

    Wenn der ADC auf 10Bit eingestellt ist, beträgt der höchste Wert &h3FF oder 1023. Gehen wir davon aus, dass 10V diese 1023 ergeben, so müsste man mal 1000 nehmen und durch 1023 teilen, Letzteres geht nicht durch schieben.

    Multipliziert man aber den ADC-Wert von 1023 mit 1001, dann kommt 1024023 raus, schiebt man dann um 10Bit nach rechts, sind's 1000. Da der µC nur 1Bit weise schieben kann, somit also jedes Schieben extra Takte kostet, würde sich anbieten nur 2 mal zu schieben und den Rest durch einen 1Byte Versatz im Overlay zu erledigen.
    Geändert von MagicWSmoke (10.04.2012 um 08:59 Uhr)

Ähnliche Themen

  1. DS18B20 zu hoher Temperaturwert!
    Von Douser182 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 34
    Letzter Beitrag: 15.02.2010, 22:12
  2. Temperaturwert vom DS1821 in ein eeprom 24C64A
    Von Timo_AVR im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 20.07.2007, 23:47
  3. zwei bytes in ein word umwandeln
    Von bd239 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 02.09.2006, 18:03
  4. Zwei bytes zu einem word zusammenfassen
    Von sebastian.heyn im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 09.03.2006, 10:57
  5. Ein Single aus zwei Bytes
    Von Bratwurst im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 21.02.2006, 16:19

Berechtigungen

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

Solar Speicher und Akkus Tests