ADC sauber auf PWm synchronisieren

OP #4039906
Lesenswert?

Hallo,

ich habe einen ADC der sauber auf ein PWM Signal synchronisiert 
(TimerOverflow, wenn TCNT ~0) werden soll.

Das Sample&Hold soll also bei ~ der steigenden Flanke der PWM 
(non-invertig) erfolgen. Da die PWM mit 10kHz läuft und ich auch 
möglichst kleine Tastgrade samplen möchte (BEMF eines BLDC) ist also ein 
genaues Timing gefragt.

Laut DB, des Mega328, benötigt der ADC 2 ADC-Takte vom Start der 
Wandlung bis zum S&H. Somit muss ich die Wandlung 12,8µs vor dem 
Timeroverflow anstoßen damit die Wandlung synchron erfolgt, wenn der ADC 
mit 20MHz/128 läuft. Ist der Gedankengang richtig?



Ingo
Angehängte Dateien:
#4039962
Lesenswert?

Grundsätzlich ist Deine Überlegung richtig, praktisch wirst Du aber 
Probleme bekommen. Bei solch einer Motor-Ansteuerung ist direkt nach 
jeder Schaltflanke, also auch nach der Fallenden des letzten PWM-Pulses, 
viel Unruhe im System (Habe die letzten Jahre damit zugebracht, solche 
Sachen zu entwickeln), da wird eine ADC-Messung nur Zufallszahlen 
liefern. Für die Messung sollte man sich also einen Zeitpunkt suchen, 
der genügend Abstand zur vorigen Schaltflanke hat. Bei Leerlauf mag das 
noch alles gehen, wenn dann aber Zig Ampere fließen ... Du startest die 
A/D-Wandlung per Auto-Trigger? Wenn ja, ist das gut, wenn nicht, hast Du 
das Problem, daß der Wandler das Startsignal erst beim nächsten ADC-Takt 
erkennt.

Mit freundlichen Grüßen - Martin
(Firma: TravelRec.) Persönliche Seite #4040012
Lesenswert?

Uups schrieb:
> Solche Dinge kann man mit einem schnellen PIC (dsPIC) machen, der einen
> schnellen ADC (2us) hat und per hardware auf den PWM triggern kann. Die
> AVR haben zu langsame ADC fuer solche Konzepte..

Unsinn! Das kommt auf das Projekt an. Per Hardware triggern kann der AVR 
auch. Und der ADC des klassischen AVR liefert bei 500kHz ADC-Frequenz 
(38kHz Abtastung) bei 8Bit noch zuverlässige Werte. Damit wird 
10kHz-PWM-Abtastung kein Problem. Der Triggerzeitpunkt muss nur immer 
synchron zur PWM laufen, wie oben schon erwähnt, leicht hinter dem 
Umschalten.

Ingo L. schrieb:
> und ich auch
> möglichst kleine Tastgrade samplen möchte (BEMF eines BLDC)

Für BEMF eignet sich auch der Analog-Komparator. Bei den nicht ganz 
alten AVRs kann man diesen auf den ADC-Multiplexer legen und somit 
mehrere Punkte in der Hardware sukzessive abtasten.
OP #4040533
Lesenswert?

Also ich habe ich es jetzt mit dem ADC gut hinbekommen. Der Motor läuft 
sauber an, auch bei sehr niedrigen Drehazahlen. Leider fehlt mir jetzt 
noch eine entprechende Belastung der Welle, da sonst bei hohem Duty das 
Ding an zu kippeln fängt. Ma gucken was ich da mache.

Wenns fertig ist stelle ich es als Artikel rein.
Gast #4044074
Lesenswert?

Andreas True schrieb:
> Bei sowas nimmt man Center aligned PWM und triggert den ADC genau in der
> Mitte des Dutycycles. Hier sind die PWM Schalteinflüsse am geringsten.

Wie soll die Schaltung in die Zukunft gucken. Unmittelbar vor der 
nächsten Schaltflanke sind die zeitlichen Einflüsse der vorhergehenden 
Umschaltung maximal abgeklungen.
Gast #4044093
Lesenswert?

True Crypt schrieb:
> Andreas True schrieb:
> Bei sowas nimmt man Center aligned PWM und triggert den ADC genau in der
> Mitte des Dutycycles. Hier sind die PWM Schalteinflüsse am geringsten.
>
> Wie soll die Schaltung in die Zukunft gucken. Unmittelbar vor der
> nächsten Schaltflanke sind die zeitlichen Einflüsse der vorhergehenden
> Umschaltung maximal abgeklungen.

Ich versteh nur Bahnhof!?
#4044200
Lesenswert?

True Crypt schrieb:
> Wie soll die Schaltung in die Zukunft gucken.

Versehe auch nicht, wie du das meinst.

True Crypt schrieb:
> Unmittelbar vor der
> nächsten Schaltflanke sind die zeitlichen Einflüsse der vorhergehenden
> Umschaltung maximal abgeklungen

Du musst bedenken, dass der TE vermutlich nicht mit konstanter PWM Duty 
fahren wird und dass der Motor mit 3 Anschlüssen an drei verschiedenen 
PWMs hängt. Deshalb geht man bei einer Motorsteuerung davon aus, dass 
die Störeinflüsse in der Mitte des Dutys oder der Lowzeit am geringsten 
sind.
#4045805
Lesenswert?

Hallo corrtexx,

hast du deinen ADC so eingestellt, dass der Hardwaremäßig als Komparator 
arbeitet und du deine Kommutierung im Komparator Interrupt durchführst?
Wird ja normalerweise bei den ModellbauESCs mit kleinen AVRs so gemacht.
"Manuell", also softwareseitig die Spannung zu vergleichen kostet doch 
viel zu viel Zeit.
Gast #4046033
Lesenswert?

Ich benutze den ADC, weil die Komparatorlösung gab/gibt es ja schon 
ausreichend beschrieben in dem anderen Artikel. Wie gesagt, mehr als 
10kHz PWM und ADC Samplefrequenz packt der ADC nicht.
Es wird also zyklische jede PWM Periode gemessen, allerdings nur mit 
5KHz die PWM abgetastet, leider
#4046343
Lesenswert?

Achso, das ist schon doof dass der ADC/S&H so lange braucht. Dann kannst 
ja wie oben schon geschrieben, nicht unter 24% Duty gehen oder?
Macht es denn bei dir überhaupt Sinn, den ADC mit der PWM zu koppeln? 
Wenn ich es deinem Schaltplan richtig entnehme, vergleichst du die 
Floatende Phase (BEMF) mit der mittleren Spannung der 3 Phasen und bei 
über- oder unterschreiten kommutierst du oder?
Ist der ADC als Komparator konfiguriert auch so langsam?
OP #4046360
Lesenswert?

Wie ich es mache ist in dem Artikel von TI auf Youtube beschrieben bzw. 
Danach habe ich mich gerichtet.

Der Komparator ist schneller denke ich mal. Die Spannung bzw. das Label 
"Star" ist ungenutzt. Ich habe mir aber die Option der Komparatorlösung 
layoutmäßig offen gelassen.

Ich triggere jetzt die Messung etwa 10us vor der nächsten Periode an, 
damit das S&H kurz nach der neuen Periode beginnt. Damit kann ich Dutys 
unter 5% noch sauber erfassen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren