Forum: Mikrocontroller und Digitale Elektronik PWM Frequenz erhöhen


von Sebastian (Gast)


Lesenswert?

Moin zusammen,

Ich möchte in einem aktuellen Projekt eine Spule bei Resonanz mit ca. 
375 kHz ansteuern. Dazu wurde bereits eine Gegentakt Endstufe 
entwickelt, welche positive und negative Spannungen am Ausgang erzeugt. 
Ein Arduino UNO soll nun zwei Signale liefern, welche jeweils einen 
Transistor aktivieren. Da kein Sinussignal benötigt wird, soll Amplitude 
am Ausgang einfach über die Pulsweite der Steuersignale erzeugt werden.

Mit meiner aktuellen Timer Konfiguration bekomme ich prinzipiell das 
Signal was ich haben möchte, jedoch nur mit einem Bruchteil der 
Resonanzfrequenz der Spule.

Meine Frage ist nun: Habe ich die Möglichkeit den Zählerstand der 
Counter zu limitieren, damit dieser das runterzählen z.B. schon bei 127 
beginnt?

Habe mich nun tagelang durch die Foren gelesen und bin nicht so wirklich 
fündig geworden.

Gruß, Sebastian

von H.Joachim S. (crazyhorse)


Lesenswert?

Welcher Controller ist da drauf?

von Sebastian (Gast)


Lesenswert?

Ein mega328p

von Beo Bachter (Gast)


Lesenswert?

Sebastian schrieb:
> Habe mich nun tagelang durch die Foren gelesen und bin nicht so wirklich
> fündig geworden.

Die Minimal-Leistung die du erbringen müsstest wäre dein
Programm zu zeigen, und zwar in einer Form dass sie den
Regeln die hier beim Posten angegeben werden, gerecht wird.

von spess53 (Gast)


Lesenswert?

hI

>Habe mich nun tagelang durch die Foren gelesen und bin nicht so wirklich
>fündig geworden.

Wie wäre es, einfach das Datenblatt deines Contrller zu lesen?

MfG Spess

von spess53 (Gast)


Lesenswert?

Hi

Contrller -> Controllers

MfG spess

von Mike R. (thesealion)


Lesenswert?

Google füttern:

"arduino pwm frequency"

Sollte nicht zu schwer sein

von Reiner_Gast (Gast)


Lesenswert?

Sebastian schrieb:
> Mit meiner aktuellen Timer Konfiguration bekomme ich prinzipiell das
> Signal was ich haben möchte, jedoch nur mit einem Bruchteil der
> Resonanzfrequenz der Spule.

Ohne Code hilft das nicht viel... Wenn du die Arduino Umgebung benutzt, 
sind die Timer bereits anderwärtig eingestellt (Datails dazu finden sich 
in der Wiring Lib)

>
> Meine Frage ist nun: Habe ich die Möglichkeit den Zählerstand der
> Counter zu limitieren, damit dieser das runterzählen z.B. schon bei 127
> beginnt?

Hier empfiehlt sich ein Blick in Datenblatt des ATMega328...

Innerhalb der Arduino IDE würde sich der Timer2 anbieten (soweit ich 
weiß wird der nur benutzt für den Tone Befehl)... beim AVR Studio ist 
der Timer egal.

Hier wäre der Fast PWM Modus brauchbar (OCRA + Prescaler stellen die 
Frequenz ein und OCRB + "Clear OC2B on Compare Match" - Modus stellen 
die Impulslänge ein)

von Wolfgang (Gast)


Lesenswert?

Sebastian schrieb:
> Ich möchte in einem aktuellen Projekt eine Spule bei Resonanz mit ca.
> 375 kHz ansteuern.
> ...
> Da kein Sinussignal benötigt wird, soll Amplitude
> am Ausgang einfach über die Pulsweite der Steuersignale erzeugt werden.

Erhoffe dir aber keine zu hohe Auflösung bei der Pulsweitenmodulation. 
Dein Arduino Uno läuft maximal mit 16MHz.

von Checker (Gast)


Lesenswert?

Wolfgang schrieb:
> Erhoffe dir aber keine zu hohe Auflösung bei der Pulsweitenmodulation.
> Dein Arduino Uno läuft maximal mit 16MHz.

Das hat jetzt was genau mit Arduino zu tun?
Manchmal kann auch ein niedriger Takt günstiger sein für die optimale 
Einstellung. Hängt ja nicht nur vom Takt ab.

von Falk B. (falk)


Lesenswert?


von Wolfgang (Gast)


Lesenswert?

Checker schrieb:
> Manchmal kann auch ein niedriger Takt günstiger sein für die optimale
> Einstellung. Hängt ja nicht nur vom Takt ab.

Wenn du ein sinusähnliches Ausgangssignal von 375kHz per PWM erzeugen 
willst, muss zunächst die PWM-Frequenz deutlich über der Frequenz des 
zu generierenden Signals liegen und die Basisfrequenz für das PWM-Signal 
muss noch mal um den Faktor der Auflösung über der PWM-Frequenz liegen.

Was genau würdest du da für einen Takt für eine optimale Einstellung 
vorschlagen, um ein Signal mit der Resonanzfrequenz der Spule zu 
erzeugen?

von Checker (Gast)


Lesenswert?

Wolfgang, laut TO benötigt er kein Sinus. Alles andere hängt von der 
gewünschten Auflösung ab, dann kann man Prescaler, Top und Controller 
Takt in optimalen Einklang bringen, wenn dieser noch flexibel ist.

von Checker (Gast)


Lesenswert?

wobei das alles egal ist, hab mal gerechnet, bei 375kHz ist der 
Prescaler 1. Im Fast PWM Modus wäre TOP 42, was letztlich 377,4kHz 
wären. In anderen Modi würde der TOP Wert und damit die Auflösung gleich 
oder noch geringer sein. Phase Correct TOP 21. Da helfen auch keine 
20MHz statt 16MHz. Der TO muss mit der groben Einstellung leben oder 
einen anderen µC verwenden. Oder Spezial ICs.

von S. Landolt (Gast)


Lesenswert?

> 377,4kHz
?

16 MHz / 42 = 380.95 kHz
16 MHz / 43 = 372.09 kHz

18 MHz / 48 würde passen, aber den Quarz bei einem Arduino tauschen ...? 
Und die Auflösung könnte ein Problem bleiben.

von Falk B. (falk)


Lesenswert?

Hochauflösende PWM gibt es u.a. beim PICCOLO.

von Checker (Gast)


Lesenswert?

Hallo,

ich hatte auch mit 20MHz gerechnet und habe die Zahlen verhauen. Sorry.
20MHz / 52 = 377,4kHz
20MHz / 53 = 370,4kHz

Piccolo sieht auch interessant aus.

von J. Zimmermann (Gast)


Lesenswert?

Xmega verwenden, 32MHz, PWM-Out kann mittels Hires-Unit bei einigen 
Typen mit 8 multipliziert werden, d.h., 256Mz / 682 =  375.366 KHz
mfg
Achim

von Klaus (Gast)


Lesenswert?

Checker schrieb:
> Wolfgang, laut TO benötigt er kein Sinus.

Er wird einen bekommen, ob er will oder nicht.

Sebastian schrieb:
> Spule bei Resonanz mit ca. 375 kHz ansteuern.

Die Ansteuerung ist beinahe egal. Wenn das Ding in Resonanz ist, reichen 
sogar Nadeln als Ansteuerung, so ala Class C Endstufe

MfG Klaus

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Hochauflösende PWM gibt es u.a. beim PICCOLO.
Oder beim ATtiny25/45/85 wenn der Timer 1 mit 64 MHz aus der PLL 
versorgt wird.

Sebastian schrieb:
> Da kein Sinussignal benötigt wird, soll Amplitude
> am Ausgang einfach über die Pulsweite der Steuersignale erzeugt werden.
Resonanz ist Resonanz. Da dürfte die Pulsweite nicht viel an der 
Amplitude machen. Viel eher kannst Du die Amplitude über die 
Anregungsfrequenz regeln.

von Falk B. (falk)


Lesenswert?

@Tom (Gast)

>> Hochauflösende PWM gibt es u.a. beim PICCOLO.
>Oder beim ATtiny25/45/85 wenn der Timer 1 mit 64 MHz aus der PLL
>versorgt wird.

Naja, dann schau dir mal an, welche Zeitauflösung der PICCOLO kann. 
Dagegen sind 64 MHz PWM-Takt ein Witz.

von W.A. (Gast)


Lesenswert?

Tom schrieb:
> Resonanz ist Resonanz. Da dürfte die Pulsweite nicht viel an der
> Amplitude machen.

Natürlich lässt sich über die Pulsweite die Amplitude steuern, zumindest 
solange die Schwingungsamplitude kleiner als der Pegel des PWM-Signals 
ist.
Über das PWM-Tastverhältnis (und die Phasenlage) wird dann die Energie 
festgelegt, die in den Schwingkreis reingepumpt wird. Stell dir den 
Extremfall mit Tastverhältnis 0 vor. Dem Schwingkreis wird keine Energie 
zugeführt, also wird auch nichts schwingen.

Bei fester Anregungsfrequenz ohne Rückkopplung wird der Schwingkreis 
allerdings nie exakte in Resonanz laufen. Die Schwingungsamplitude hängt 
dann auch von der Güte ab.

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Naja, dann schau dir mal an, welche Zeitauflösung der PICCOLO kann.
> Dagegen sind 64 MHz PWM-Takt ein Witz.
Ok, dann rechnen wir mal nach:

1. ATtiny25/45/85:
Taktfrequenz 8 MHz, nach PLL: 64 MHz
bei einer 8-Bit PWM (256 steps) bleibt eine PWM-Frequenz von 250 kHz.
Der Abstand zwischen zwei benachbarten Schritten beträgt 15,625 ns oder 
15625 ps.

2. TI Piccolo [1]:
Hier wird mit einer MEP von 150 ps geworben. Das ist Faktor 100.
Wenn man etwas weiter sucht, findet man auch ein Dokument, welches die 
High-Resolution PWM beschreibt [2]. Dort gibt es auch eine 
Gegenüberstellung (siehe Anhang).
Die 60 MHz Sysclkout sind mit dem ATtiny vergleichbar. Die HRPWM bringt 
gegenüber der normalen PWM 6,5 Bits mehr an Auflösung. Das passt ganz 
gut zu dem Faktor von oben: 2^6,5 = 90


Vorteil:
- Faktor 100 bessere Auflösung

Nachteil:
- Einarbeitung in ein neues System (32 Bit) mit verteilter 
Dokumentation; Immerhin gibt es das Composerstudio inzwischen für alle 
Plattformen und offenbar ohne Einschränkungen.


Ob die Empfehlung zum Piccolo für den TO die Richtige ist, wage ich zu 
bezweifeln:
- es ist unklar, ob die hohe Auflösung bzw. Frequenz hier gebraucht wird 
(keine Anforderung vom TO genannt)
- es ist unklar, ob TO mit der Komplexität des Piccolo klarkommt (liest 
Foren statt Datenblätter)

Möglicherweise ist auch meine Empfehlung schon zu komplex: Immerhin wird 
der ATtinyx5 nicht auf den gängigen Arduinoboards verbaut. Und nicht 
jeder kann bzw. will Platinen machen und löten.

[1] http://www.ti.com/lit/ds/sprs523l/sprs523l.pdf
[2] http://www.ti.com/lit/ug/spruge8e/spruge8e.pdf

PS.: Ich mag die Dokumentnummerierung von TI. Die ist supergriffig...
(Wer Ironie entdeckt, darf sie behalten.)

von Falk B. (falk)


Lesenswert?

@Tom (Gast)

>Hier wird mit einer MEP von 150 ps geworben. Das ist Faktor 100.

EBEN!

>- Faktor 100 bessere Auflösung

>Nachteil:
>- Einarbeitung in ein neues System (32 Bit) mit verteilter
>Dokumentation; Immerhin gibt es das Composerstudio inzwischen für alle
>Plattformen und offenbar ohne Einschränkungen.

Tja, so eine Lösung fällt halt nicht vom Himmel und von Ratiopharm 
gibt's auch nichts. So ein Pech aber auch.

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.