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
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.
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
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)
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.
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.
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?
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.
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.
> 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.
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.
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
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.
@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.
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.
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.)
@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.