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
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
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..
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.
:
Bearbeitet durch User
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.
Ingo L. schrieb: > Wenns fertig ist stelle ich es als Artikel rein. Das finde ich prima, das würde mich nämlich auch interessieren.
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. Allerdings weiß ich nicht, ob AVR das auch kann. Mit ARM ist das aber kein Problem. Gruß
:
Bearbeitet durch User
Ich werde es mal ausprobieren und berichten. Bisher läuft es auch so schon ordentlich, aber Verbesserungen schaden ja nicht ;)
Aber wenn es 12us dauert bis das S&H erfolgt, dann müsste der Duty ja min. >24% sein. Also nicht so gut...
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.
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!?
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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
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?
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.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.