AD beim AVR mit verschiedenen Potis - Probleme mit FLOAT

Gast #1218576
Lesenswert?
• ▲
▼
Hallo zusammen,

ich möchte am ADC verschiedene Potis anschließen können.
Den Wert, den ich verarbeiten möchte soll 0 - 127 sein.
Daher muss ich ja bei jedem Wechsel des angeschlossenen Potis das ganze 
neu "kalibrieren".

Folgender Ansatz:
ich stelle einmal den Minimal und dann den Maximalwert des Potis ein.
Ich speichere bei der Kalibrierung:
1. "adc0min": den Minimalwert (falls das Poti einfach nicht auf 0 kommt)
2. "adc0cal": ich teile den Maximalwert durch 127

Die variablentypen:
float adc0cal;
int adc0min;

folgendes Codebeispiel für die Berechnung:
return = ADC-Wert  / adc0cal - adc0min;

Mein Problem ist dabei nun, das der scheinbar adc0cal nicht als Float 
behandelt sondern als integer mit berechnet. Somit stimmt return nicht 
und ich bekomme Werte deutlich über 127 zurück. Muss ich irgendetwas 
beachten, damit der AVR das verünftig berechnet?

Vielen Dank für die Hilfe,
Samuel
Gast #1218589
Lesenswert?
• ▲
▼
momentan habe ich adc0_min komplett rausgelöscht.

Gerade habe ich versucht:
in adc0_max (vom Typ uint16_t) den maximalen Wert den das Poti erreicht 
speichern und dann:

(int)(ceil(ADC-WERT / (float)( adc0_max / 127)))


mit dem selben Ergebnis...
Gast #1218595
Lesenswert?
• ▲
▼
neuer Versuch:
ich habe den Wert für adc0_cal manuell berechnet und hart in den Code 
eingetragen. Das funktioniert wie gewünscht:

return = (ceil(ADC-WERT / 7.3149606)));

warum geht meine Float Variable adc0_cal nicht, bzw. wo läuft es falsch.
Schon beim Ermitteln von adc0_cal, beim Speichern, beim weiterberechnen.
Ich habe ja inzwischen versucht alles zu casten, ohne Erfolg.

Sammy

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.