Wurkkos Taschenlampen

Skilhunt Taschenlampen

Spannungsmessung Attiny13A

Beaker

Flashaholic*
20 Januar 2016
541
266
63
Berlin
voltage = get_voltage(); vor der while(1) kann raus.
Nein. Die erste Messung kann ungültig sein.
Dann würde ich den Code noch so anpassen, dass der ADC die Spannung nur in der High- oder Lowphase der PWM messen darf, damit dürfte schon etwas definierteres Verhalten vorliegen.
Das ist nicht möglich, der ADC ist dazu nicht schnell genug (wenn die PWM-Frequenz nicht arg niedrig eingestellt wird).
 

Clamant

Stammgast
3 August 2016
57
18
8
Nein. Die erste Messung kann ungültig sein.
Steht wo? Laut Datenblatt dauert die erste Wandlung nur länger.
Der erste Befehl in der While-Schleife ist "voltage = 0;" :pfeifen:
Wenn die erste Messung falsch wäre würde diese dann beim ersten Aufruf in der Whileschleife halt einmal Boolshit zurückgeben und da dann in den ersten Mittelwert verwurschtelt werden. Könnte durchaus Probleme machen allerdings eher unwahrscheinlich.

Das ist nicht möglich, der ADC ist dazu nicht schnell genug (wenn die PWM-Frequenz nicht arg niedrig eingestellt wird).
PWM Frequenz ist bei 18,75kHz, der ADC kann wenn er volle 10bit liefern soll 200kHz schnell laufen, der Code benutzt nur die 8MSB (könnte man auch noch abändern, wenn man schon mittelt), damit wären es 1MHz. Im Falle der ersten Wandlung braucht der ADC zum hold&sampeln 13,5 Zyklen also 67,5µs bzw. 13,5µs. Ab den Nachfolgenden Wandlungen sind es dann 1,5 Zyklen, also 7,5µs bzw. 1,5µs. Schauen wir uns doch mal an bei welchem Tastgrad wir in der High- bzw. Lowphase gemessen werden kann.
18,75kHz bedeuten ja 53,4µs bei 8bit also 208ns pro Auflösungswert. Also könnten bei 1MHz ab einem PWM Tastgrad von 8 während der Hightime gemessen werden. Ab 247 kann dann nicht mehr in der Lowtime gemessen werden.....
Ob die 1Mhz bei der Quarzfrequenz eingestellt werden können hab ich jetzt nicht weiter angeschaut, die Clocks von den kleinen AVR's sind so veraltet.....
 

Beaker

Flashaholic*
20 Januar 2016
541
266
63
Berlin
Der erste Befehl in der While-Schleife ist "voltage = 0;" :pfeifen:
Hat nichts mit dem Problem zu tun.

Steht wo? Laut Datenblatt dauert die erste Wandlung nur länger.
In den Specs unter 14.5, bei Verwendung der bandgap reference ...

Wenn die erste Messung falsch wäre würde diese dann beim ersten Aufruf in der Whileschleife halt einmal Boolshit zurückgeben und da dann in den ersten Mittelwert verwurschtelt werden. Könnte durchaus Probleme machen allerdings eher unwahrscheinlich.
"Könnte durchaus Probleme machen" reicht mir, um nicht so zu programmieren - zumal der Aufruf der Funktion gerade mal 2 Byte Speicherplatz kostet, wenn ich mich recht erinnere.

Also könnten bei 1MHz ab einem PWM Tastgrad von 8 während der Hightime gemessen werden. Ab 247 kann dann nicht mehr in der Lowtime gemessen werden.....
Ja. Und ist es "definiertes Verhalten", wenn die Spannung in einem Teil des Regelbereiches nicht konsistent gemessen wird?

Edit:
Ok, ein Vorteil dieses Verfahren wäre, dass der Treiber zumindest weiß, ob während PWM On oder PWM Off gemessen würde. Da der Kondensator hinter der Diode, wo auch der Spannungsteiler sitzt, Vcc und die Eingangsspannung des ADC glättet, ist die Frage, wie groß die Spannungsschwankungen dort überhaupt sind. Schau ich mir mal auf dem Oskar an, wenn ich Zeit habe.
 
Zuletzt bearbeitet:

RC-Drehteile

TaschenlampeneigenbauSpezi & Ehrenmitglied
4 Juli 2010
6.096
5.098
113
ich danke euch für eure zahlreichen Antworten, mit so einer Resonanz hatte ich gar nicht gerechnet.

Zum Code: Ich bin Maschinenbauer, kein Programmierer, ich habe die Programmteile aus verschiedenen Codes zusammengesetzt, teilweise DrJones, teilweise Toykeeper. Ich weiß zwar, welcher Abschnitt was bewirkt, aber selbst schreiben könnte ich das nicht. daher kam ich auch noch nichtmal auf die Idee, da was zu verbessern. Das überlasse ich den Leuten, die davon Ahnung haben. Ich bin da ein bisschen pragmatisch, solange das, was ich an Code zusammengeschustert habe, auch funktioniert, ist mir das Recht ;)

In diesem Sinne euch allen ein schönes Wochenende,

Lg Michael
 

Clamant

Stammgast
3 August 2016
57
18
8
In den Specs unter 14.5, bei Verwendung der bandgap reference ...
"Könnte durchaus Probleme machen" reicht mir, um nicht so zu programmieren - zumal der Aufruf der Funktion gerade mal 2 Byte Speicherplatz kostet, wenn ich mich recht erinnere.

Oh glatt drüber gelesen, etwas unglücklich untergebracht im Datenblatt.
Probleme zu vermeiden ist auch durchaus richtig, allerdings gehört eher ein delay in ADC_on() rein um darauf zu warten, bis die Referenz eingeschwungen ist, die erste Messung zu verwerfen ist ja auch eher Pfusch....
Ja. Und ist es "definiertes Verhalten", wenn die Spannung in einem Teil des Regelbereiches nicht konsistent gemessen wird?

Edit:
Ok, ein Vorteil dieses Verfahren wäre, dass der Treiber zumindest weiß, ob während PWM On oder PWM Off gemessen würde. Da der Kondensator hinter der Diode, wo auch der Spannungsteiler sitzt, Vcc und die Eingangsspannung des ADC glättet, ist die Frage, wie groß die Spannungsschwankungen dort überhaupt sind. Schau ich mir mal auf dem Oskar an, wenn ich Zeit habe.

Wie definiert wird denn grade gemessen? Rein zufällig oder? Der Eingangswiderstand für den ADC ist auch noch zu groß :rolleyes:

ich danke euch für eure zahlreichen Antworten, mit so einer Resonanz hatte ich gar nicht gerechnet.

Zum Code: Ich bin Maschinenbauer, kein Programmierer, ich habe die Programmteile aus verschiedenen Codes zusammengesetzt, teilweise DrJones, teilweise Toykeeper. Ich weiß zwar, welcher Abschnitt was bewirkt, aber selbst schreiben könnte ich das nicht. daher kam ich auch noch nichtmal auf die Idee, da was zu verbessern. Das überlasse ich den Leuten, die davon Ahnung haben. Ich bin da ein bisschen pragmatisch, solange das, was ich an Code zusammengeschustert habe, auch funktioniert, ist mir das Recht ;)

In diesem Sinne euch allen ein schönes Wochenende,

Lg Michael

Ein Informatiker hätte es wohl eher als State Maschine geschrieben.
Packt einen da nicht den Ehrgeiz, das ganze zu verstehen und zu optimieren?
So Code zu warten, der einfach nur Funktioniert ist hin und wieder echt nervig.....
So wie ich das grade sehe, wird der Attiny nicht schlafen geschickt und brauch auch etwas mehr Strom....
Ach ja Zeit zum programmieren bräuchte man, da kann ich den Pragmatismus ein wenig verstehen :pfeifen:.
 

RC-Drehteile

TaschenlampeneigenbauSpezi & Ehrenmitglied
4 Juli 2010
6.096
5.098
113
Ein Informatiker hätte es wohl eher als State Maschine geschrieben.
Packt einen da nicht den Ehrgeiz, das ganze zu verstehen und zu optimieren?
So Code zu warten, der einfach nur Funktioniert ist hin und wieder echt nervig.....
So wie ich das grade sehe, wird der Attiny nicht schlafen geschickt und brauch auch etwas mehr Strom....
Ach ja Zeit zum programmieren bräuchte man, da kann ich den Pragmatismus ein wenig verstehen :pfeifen:.

natürlich ist der Ehrgeiz da, sehr sogar. Aber du hast es erwähnt, es mangelt an der Zeit. hab im Moment einiges um die Ohren.

Der Attiny wird noch schlafen geschickt, aber ich habe den Code erstmal einfach halten wollen, um Fehler besser zu finden.

LG Michael