Forum: Mikrocontroller und Digitale Elektronik Bascom Umrechnung


von Ernst (Gast)


Lesenswert?

Hallo,

ich habe einen ATMEGA8 mit Bascom programmiert.

Er soll eine Spannung über die serielle Schnittstelle übertragen.

Das funktioniert auch. Es soll die 5V Spannung gemessen  und der

tatsächliche Wert (wie oben angegeben) ausgegeben werden.

Ich erhalte Werte von 0 bis 1023-- auch richtig.

Rein theoretisch müßte ich doch als Teilungsfaktor " 204,6" einstellen.

So: 1024 / 204,6 = 5V

--> N = Getadc(2) / 205 um eine Voltausgabe zu bekommen.Funktioniert, 
ist

aber sehr ungenau. Wo liegt MEIN Fehler?

Grüß Ernst

von Bernd (Gast)


Lesenswert?

Ernst schrieb:
> ist
>
> aber sehr ungenau.

definiere ungenau

von Alex (Gast)


Lesenswert?

Vielleicht an einer ungenauen Referenzspannung ?

von Fabian O. (xfr)


Lesenswert?

Du rechnest wahrscheinlich mit Integern (Ganzzahlen), d.h. N kann nur 0, 
1, 2, 3 oder 4 sein. Also entweder Fließkomma- oder besser 
Festkommazahlen benutzen:

http://www.mikrocontroller.net/articles/Festkommaarithmetik

von Cyblord -. (cyblord)


Lesenswert?

Ich lasse die korrekte Umrechnung immer von Wolfram-Alpha ausrechnen. 
Gebe dort die gesamte Formel für die Umrechnung inkl. Spannungsteiler 
ein, löse nach Spannung (allerdings meist Faktor 10 oder 100 wegen 
Festkomma) auf und dann bekommt man wunderschön einen Bruch a la:

X=560*ADC/2560

Was man dann direkt so in C rechnen lassen kann. Je höher der Faktor in 
der Formel desto genauer wirds am Ende aber desto größer werden 
natürlich die Zahlen. Aber selbst uint32_t sollte nicht an seine Grenzen 
kommen.

Sollte in Bascom ähnlich gut gehen.

Hier ein Beispiel:

solve x = (((y/10)/(10000+4700)×4700)×1024)/3.3  for  y

Spannungsteiler 10k und 4,7k. Referenzspannung 3.3 Volt. Spannung soll 
in 1/10 Volt Zurückgegeben werden.

Ergebnis Wolfram-Alpha:
y = (4851 x)/48128

gruß cyblord

von Ernst (Gast)


Lesenswert?

Hallo,

danke für Tips, lese mich mal ein.

Mein Fehler war die falsche Gleichung.
Richtig ist : 5 V / 1023 = Wert

von Bernd (Gast)


Lesenswert?

Ernst schrieb:
> Richtig ist : 5 V / 1023 = Wert

dann brauchst du ja gar nicht mehr AD-wandeln:
Wert = 0,00489V bzw. bei Integerrechnung
Wert = 0

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.