Forum: Mikrocontroller und Digitale Elektronik Arduino nano, 20khz PWM, Spannung einstellen


von Kaffeetasse (Gast)


Lesenswert?

Hey,

ich habe mit der Hilfe aus folgendem Link ein 20kHz PWM mit meinem 
Arduino nano generiert.
Beitrag "Arduino Nano - 20 kHz PWM an OC1A/OC1B"

Wenn ich dies jetzt aber mit einem Oszilloskop messe, schwankt die 
mittlere Spannung daraus sehr ungleichmäßig(zw 900mV und 1,44V). Ich 
würde aber gerne ein PWM mit 20kHz und einer resultierenden mittleren 
Spannung von 2V haben... Wie erreiche ich das?

LG

von Adam P. (adamap)


Lesenswert?

Das sollte über das Verhältnis (Tastverhältnis) funktionieren:
https://www.mikrocontroller.net/articles/Pulsweitenmodulation#Beispiele

Kaffeetasse schrieb:
> schwankt die mittlere Spannung daraus sehr ungleichmäßig(zw 900mV und 1,44V)

Falls das wirklich so ist, dann ist deine PWM aber nicht sehr 
gleichmäßig.

Hast dir mit dem Oszi auch mal die PWM angeschaut oder nur den 
Mittelwert?

: Bearbeitet durch User
von Äxl (Gast)


Lesenswert?

Würde ja bedeuten, das dein PWM-Signal "zappelt". Zeig mal deinen Code 
und n Sreenshot vom oszi

von Ingo L. (corrtexx)


Lesenswert?

Kaffeetasse schrieb:
> Wenn ich dies jetzt aber mit einem Oszilloskop messe,
Haste dort Cycle Mean oder Mean als Messung eingestellt? Das ist n 
gravierender Unterschied. Halte doch mal n Multimeter ran. Was für ein 
Filter sitzt hinter der PWM?

von Kaffeetasse (Gast)


Lesenswert?

Danke schonmal für die schnelle Anwort :)

Hmm ja, mein Problem liegt auch darin, das Tastverhälnis einzustellen... 
Dass es damit zusammenhängen muss, habe ich soweit verstanden, nur wie 
kann ich das generell einstellen?

Ja, das PWM Signal ist generell sehr ungleichmäßig. Ich war mir nicht 
sicher, ob das normal ist, oder ob ich daran dann etwas ändern kann?

von Kaffeetasse (Gast)


Angehängte Dateien:

Lesenswert?

1
void setup() {
2
   pinMode(9, OUTPUT);
3
}
4
5
void loop() {
6
7
  TCCR1A = (1 << COM1A1) | (1 << COM1B1) | (1 << WGM11);
8
9
  TCCR1B = (1 << WGM13)  | (1 << WGM12)  | (1 << CS10);
10
11
  ICR1   = (800- 1);
12
13
  OCR1A  = (800 - 1) / 2;
14
15
}

Hier mein Code und der Screenshot. Ich habe bei dem Beispielcode oben 
(im Link in meiner Frage) nicht immer ganz verstanden, was nun zu Pin 9 
und was zu Pin 10 gehört, daher hab ich manche Sachen drin gelassen, die 
vielleicht unnötig bei mir sind...
(hoffe ich hab das Bild jetzt nicht mehrfach angehängt, in der Vorschau 
taucht es irgendwie nicht auf)

von Kaffeetasse (Gast)


Lesenswert?

Ingo L. schrieb:
> Haste dort Cycle Mean oder Mean als Messung eingestellt? Das ist n
> gravierender Unterschied. Halte doch mal n Multimeter ran. Was für ein
> Filter sitzt hinter der PWM?

Das Multimeter zeigt eine ziemlich deutliche Spannung von 2,3V an, aber 
das ist ja etwas ganz anderes als das, was das Oszilloskop anzeigt?
bis jetzt noch gar kein Filter, den will ich dann aufbauen, wollte nur 
erst mal ein klares Signal haben.

Was meinst du genau mit Cycle mean und mean?

von Äxl (Gast)


Lesenswert?

Die Flanken stehen stabil, da "wackelt" nichts. Du kannst ja mal die 
zeitkonszante vom oszi Stauchen. Da wird wohl die betriebsspannung 
rumeiern, an der PWM scheinst, nach den Bildern nicht zu liegen. Die 
Impulse werden ja auch von der Hardware, unabhängig vom Programm 
erzeugt.
Das kommt aber alles ins setup, das nur am Rande. Willst ja nicht 
laufend deine Register neu initialisieren. Probier mal, ob's daher 
rührt.

von Äxl (Gast)


Lesenswert?

Und du weißt so garnicht, was da abgeht? Das ist eher hinderlich ...

von Adam P. (adamap)


Lesenswert?

Kaffeetasse schrieb:
> void loop() {
>   TCCR1A = (1 << COM1A1) | (1 << COM1B1) | (1 << WGM11);
>   TCCR1B = (1 << WGM13)  | (1 << WGM12)  | (1 << CS10);
>   ICR1   = (800- 1);
>   OCR1A  = (800 - 1) / 2;
> }

Also ich würde das Timer-Setup eher nicht in der loop() immer und immer 
wieder ausführen.

Auf die schnelle mal was gefunden, kannst es ja mal überfliegen oder 
soagr bei dir mal testen.
https://wolles-elektronikkiste.de/timer-und-pwm-teil-1

: Bearbeitet durch User
von Der Klaus (Gast)


Lesenswert?

Äxl schrieb:
> Die Flanken stehen stabil, da "wackelt" nichts. Du kannst ja mal
> die zeitkonszante vom oszi Stauchen. Da wird wohl die betriebsspannung
> rumeiern,

Mit einem DSO Jitter zu messen kann eine mittlere Challenge sein - 
überhaupt für jemand, der noch nicht mal sauber eine Masse anklemmem 
kann.

Euer Klaus

von Kaffeetasse (Gast)


Lesenswert?

Okay also das Problem mit dem ungleichmäßigen PWM Wert hat sich gelöst, 
ich habe vorher gedacht, dass es nicht zwingend notwendig sei, 
zusätzlich noch gegen Masse zu ziehen, aber das scheint wohl in dem Fall 
notwendig zu sein

von uff basse (Gast)


Lesenswert?

Kaffeetasse schrieb:
> zusätzlich noch gegen Masse zu ziehen

Diese Ausdrucksweise zeugt schon davon dass du ganz genau
weisst was du machst.

Ich mache mir da einen Reim daraus, aber was du da machst
ist nicht wirklich klar.

von Stefan F. (Gast)


Lesenswert?

Ich sehe auf dem Oszilloskop Bild hölle viel Rauschen auf den HIGH und 
LOW Pegeln. Entweder hast du einen sehr schlechten Messaufbau oder die 
Schaltung hat erhebliche Mängel. Zeige mal Schaltplan und Fotos.

von Äxl (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich sehe auf dem Oszilloskop Bild hölle viel Rauschen auf den HIGH
> und LOW Pegeln. Entweder hast du einen sehr schlechten Messaufbau oder
> die Schaltung hat erhebliche Mängel. Zeige mal Schaltplan und Fotos.

Hat er geschrieben. Er wusste nicht, dass man die masseklemme auch 
anschließen muss.

Geht's denn jetzt?

von Wolfgang (Gast)


Lesenswert?

Kaffeetasse schrieb:
> Das Multimeter zeigt eine ziemlich deutliche Spannung von 2,3V an, aber
> das ist ja etwas ganz anderes als das, was das Oszilloskop anzeigt?

Das Oszilloskop kann nur mitteln, was es aufgezeichnet hat. Je nach dem, 
ob es gerade viel "high" oder viel "low" im Speicher aufgeschnappt hat, 
schwankt der Mittelwert entsprechen.
Lerne mit deinem Oszilloskop umzugehen. Traue keinen Zahlen, von denen 
du nicht verstanden hast, wie sie entstehen.

von Wolfgang (Gast)


Lesenswert?

Kaffeetasse schrieb:
> pwm.jpg

p.s.
Die hast auch noch ein ziemliches Problem mit deinem Messaufbau. Aus dem 
Pin 9 kommt eigentlich ein halbwegs sauberes Digitalsignal raus und 
nicht so ein verstörtes Signal, wie auf dem Oszilloskop zu sehen ist. 
Der Low-Pegel muss im unbelasteten Zustand ziemlich genau 0V sein und 
der High-Pegel VCC.

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.