Oh entschuldige. Dann meinte ich natürlich uF 😄
Oh entschuldige. Dann meinte ich natürlich uF 😄
Hallo,
Eben, 1mF = 1'000µF.
Fall ein µ gerade nicht greifbar ist, geht auch uF (ist vor allem im angelsächsischen Sprachraum recht gebräuchlich)
Noch zum Spannungsteiler:
Eigentlich sollte deinem Fall der Gesamtwiderstand möglichst gross sein, der Spannungsteiler entlädt deinen Akku dauernd.
Andererseits hat der ADC auch wiederum einen Eingangswiderstand, welcher einen Fehler im Spannungsteiler verursacht (Stichwort: belasteter Spannungsteiler).
Man kann den Wert also auch nicht beliebig gross wählen.
Wie immer bei eine Konstruktion, muss man auch hier einen Kompromiss wählen.
In meinem Geräten findet sich immer folgende Formel:
wert = ((ADC*k1)/k2)+offset;
Alles Integer mit Vorzeichen.
k1, k2 und Offset befinden sich in einem EEPROM. Für den Abgleich gibt es dann eine kleines Programm.
Anfänglich setzt man k1 = k2 = 1 und offset = 0
Mit k1/k2 kann man dann auch alle möglichen gebrochene Faktoren erstellen. Wichtig ist nur, dass ADC*k1 keinen Überlauft erzeugen kann.
Damit kannst du praktisch alle vorkommenden Fälle abgleichen.
Um ohne einen Abgleich auszukommen, müsstest du bei 10-Bit Widerstände verwenden, welche besser als 0.05% sind.
Mit einem Abgleich tun es im Prinzip auch Widerstände mit 5%, diese müssen nur stabil sein, also am Besten Metallfilm-Widerstände mit kleinem Tk verwenden.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Um das ganze jetzt nochmal auf zu greifen (längere Zeit inaktiv wegen längerer Prioritätsverschiebung ^^)
Folgende Zusammensetzung:
12V Bleiakku, 10kohm und 4,7kohm Widerstände im belastetem Spannungsteiler.
Ein 12V Stromkreis direkt ab Akku für Motortreiber und ein Stromkreis ab Akku mit StepDownRegler auf 5V für Arduino
Spannungsteiler parallel zum StepDownRegler.
Ausgehend vom DataSheet Mega 2560 5V Referenz und 1024 Auflösung.
Ich lese den AnalogPort mitDann mache ich die Berechnung mitCode:values = analogRead(analogInput);Nun werfen mir die Variablen aber "values" zwischen 912 und 916 und "v" 9,46 bis 9,52.Code:v = (5 * values) / (0.47 * 1024);
Gemessen direkt am Akku kommen 12,76V.
Was stimmt mit den Werten nicht ? Kann es zu Problemen kommen, wenn ich den Arduino mit USB am Rechner habe ? Irgendwie muss ich ja die Werte auslesen =)
Danke
EDIT: Hier mal der ganze Sktech:
EDIT2: Wenn ich die 12V abschalte bleiben über USB noch 2,3V die er misst ?Code:int analogInput = 0; float v = 0.0; int values = 0; void setup() { Serial.begin(9600); pinMode(analogInput, INPUT); } void loop() { values = analogRead(analogInput); v = (5 * values) / (0.47 * 1024); Serial.print("Wert V= "); Serial.println(v); Serial.println("Wert ="); Serial.println(values); delay(500); }
Geändert von Zyrano (20.11.2016 um 19:08 Uhr)
Lesezeichen