Guten Tag allerseits,
ich möchte die induzierte Gegenspannung eines BLDC Motors nutzen um die
Rotorposition bestimmen zu können. Nun würde ich gerne diese zuvor
mittels eines Tiefpassfilters glätten.
Nun zu meiner eigentlichen frage: Wie dimensioniere ich R und C ? Bzw.
auf welche Grenzfrequenz möchte ich hinaus?
Ich habe kann die Spannung mit einem ADC mit einer 10Bit (1024Stufen)
Auflösung erfassen. Sprich bei 5V Referenzspannung ergibt das 4,88mV
oder?
Kann ich nun R und C so dimensionieren, dass ich sage V_Ripple < 4,88mV?
Sprich anhand eines Bsp.
V_cc = 10V
T_PWM = (1/15000Hz)
V_Ripple = 4mV
R*C = 0,042
Für C wähle ich 100nF, somit brauche ich einen 416KOhm Widerstand.
Das würde einer Grenzfrequenz von 3,82Hz entsprechen.
Die müsste doch viel höher liegen? Sprich das Signal ist zu langsam
oder?
Sprich ich denke die Annahme oben ist falsch. Daher kann mir jmd vlt
"kurz" erklären anhand welche Werte ich mein Tiefpass dimensioniere?
Ich wäre echt dankbar wenn mir jm helfen könnte. Dankö
Den TP würde ich nur als AAF dimensionieren und dann danach per FIR
nochmal in Software glätten.
Dabei kann man dann auch den ADC mit 1Mhz Takt laufen lassen und per
ADLAR auf 8 Bit Auflösung umstellen, das macht das AAF dann sehr simpel.
Sind dann 76kS/s und eine Nyqistrate von 38kS/s. Ergo kannst du dein AAF
auf 30-35kHz dimensionieren.
Wie sieht die induzierte Gegenspannung aus, Sinus + Gleichspannung?
Das mit dem AAF ist ein guter Ansatz. Vielen Dank hierfür!
Als Mikrocontroller verwende ich einen ATmega48 so nebenbei.
Wieso macht es simpler eine 8 Bit Auflösung einzustellen?
Im Datenblatt des ATmega finde ich folgendes:
"Up to 76.9kSPS (Up to 15kSPS at maximum resolution)"
Ist damit gemeint dass der die ADC mit 76,9KHz abtastet? Wenn ja muss
ich diese Abtastrate nicht noch durch 8 teilen, da 8 Kanale zur Verfügen
stehen?
Sprich das pro Kanal mit 9,6kHz.
Nach den Abtasttheorem fa < 2 * fmax, wäre somit fmax = 9,6kHz/2
besser wäre es fmax = 9,6kHz/5 = 1,9kHz
Sprich ich würde dann also
Für C würde ich ein 100nF nehmen und R ergibt sich dann zu 830Ohm oder?
In Schaltungen im Netz sehe ich öfters das 4,7kOhm verwendet wird. Kann
mir jmd sagen weshalb?
Danke nochmals!
Ps: morgen stelle ein Bild von der induzierten Gegenspannung rein.
Die 76kS/s bekommst du bei 2MHz ADC Takt. Ich wusste gar nicht, dass
Atmel ne Aussage zu ADC Takten über 500kHz trifft, bisher stand da immer
nur dass alles über 500kHz die Auflösung reduziert und das wars.
Hier hats mal einer getestet:
http://www.hilltop-cottage.info/blogs/adam/avr-adc-2-experiments-in-operating-the-adc-at-its-extremes-attiny85/
Das ist natürlich alles weit von dem entfernt wo Atmel noch seine Hand
für ins Feuer legt, aber den Hobbybastler interessiert das ja normal
nicht.
Bei den 8 Bit schleifst du die 2 extra Bit nicht immer herum. Das sind 2
Bit Information + Rauschen die aber ein Byte mit 8 Bit belegen und jede
Rechenoperation schonmal auf mindestens 24Bit aufweiten.
Besser ist es, das durch ein FIR laufen zu lassen wo dann am Ende eine 8
oder 16Bit Zahl bei rausspringt, denn für FIR haben die Atmega
tatsächlich eine eigene Rechenoperation, Multiply and Accumulate.
Sofern der Compiler das auch tatsächlich verwendet, ist das recht
performant.
Mit der "gleichzeitigen" Messung auf 8 Kanälen wäre ich vorsichtig,
jedesmal wenn du MUX änderst, braucht die AVR Elektronik erstmal nen
Moment sonst wird die nächste Wandlung ungenau. Das steht auch irgendwo
im Datenblatt.
Also musst du da noch 1-2 zusätzliche ADC Takte abziehen.
Letzten Endes ist es vermutlich am besten einen Kanal 2 - 4 Mal zu
messen, diese Werte in den FIR zu schieben und dann den Kanal zu
wechseln. Dann fällt die erhöhte Messungenauigkeit beim MUX-Wechsel kaum
ins Gewicht.
TP:
http://sim.okawa-denshi.jp/en/CRtool.php
100µF und 1,6kOhm für 1 kHz Grenzfrequenz müssten in Ordnung sein. Aus
dem ersten Link geht hervor dass die Impedanz für den ADC unter 10,
besser unter 4,7kOhm liegen sollte sonst steigt die Messungenauigkeit
bei ADC Takten über 1Mhz recht stark. Parallel zum 100µF Elko noch nen
Keramikkondensator zu schalten schadet auch nicht, schließlich reden wir
hier über maximal 1µs für die Sample&Hold Schaltung.
Ich gehe stark davon aus dass es völlig reicht den TP auf 0.1dB Dämpfung
bei Maximaldrehzahl des BLDC auszulegen aber bei 1kHz Grenzfrequenz ist
das schon bei ca. 200Hz der Fall.
Wenn in deinem Signal noch höherfrequente Anteile sind die du auch gern
erkennen würdest, sieht es mit nem AVR allein schon düster aus.
Nachtrag: Ich hatte dich so verstanden dass du auf 8 Kanälen
gleichzeitig messen willst, aber dem ist ja scheinbar gar nicht so?
Dann brauchst du natürlich nicht durch 8 teilen.
Vielen vielen Dank für die schnelle Antwort.
Danke auch für die Erklärung, hilft mir ungemein weiter.
Ich hatte was anderes gemeint mit den 8 Kanälen. Und zwar habe ich
gedacht, dass ich durch 8 teilen muss wenn der ATmega 8 ADC Eingänge zur
Verfügung stellt.
Ich muss mit dem ATmega drei BEMF Signale messen und ein Signal der den
Sternpunkt bildet. Sprich 4 Signale insgesamt messen.
Danke du hast mir schon weiter helfen können.
Dann teilt sich deine Abtastrate auf 4 Kanäle auf. Nur weil der AVR 8
Multiplex-Eingänge für den ADC hat, heisst das ja nicht dass du die auch
alle nutzen musst.
Bei 4 Kanälen hast du eine Nyquist Frequenz von 9,5kHz. Da scheinen
Signalfrequenz und Grenzfrequenz jetzt wieder einen komfortbalen Abstand
zu haben.
Aber wie gesagt: Guck mal ins Datenblatt was bezüglich MUX-Umschaltung
gesagt wird, Atmel garantiert dir nicht dass die erste AD Wandlung
danach auch einen sinnvollen Wert liefert. Imho schreiben die sogar,
dass man die erste Messung komplett ignorieren sollte.
Das senkt die Samplerate dann auch wieder ein.
Oszi Bild wäre jetzt ganz gut, vllt. sogar mit FFT.
Sascha schrieb:> Imho schreiben die sogar,> dass man die erste Messung komplett ignorieren sollte.> Das senkt die Samplerate dann auch wieder ein.
Ja, ja. Wenn nach der ersten Messung noch eine Millionen Messungen
folgen, sinkt die Abtastrate genau um 1 ppm.
m.n. schrieb:> Sascha schrieb:>> Imho schreiben die sogar,>> dass man die erste Messung komplett ignorieren sollte.>> Das senkt die Samplerate dann auch wieder ein.>> Ja, ja. Wenn nach der ersten Messung noch eine Millionen Messungen> folgen, sinkt die Abtastrate genau um 1 ppm.
Du scheinst die genauen Anforderungen des TE ja gut zu kennen. Dann
erzähl mal, welche Mindestabtastrate muss für jeden Kanal vorhanden
sein?
Wie viele Abtastungen können pro Kanal kombiniert werden bevor der
Multiplexer auf den nächsten schalten muss?
Deine Rechnung ist übrigens falsch, 1/1.000.001 kommt raus. Wenn man
klugscheissen will, dann sollte man den eigenen Text nochmal ganz genau
fehlerprüfen sonst wird das peinlich.
Und was noch viel wichtiger ist: Welche Genauigkeit ist für jede
Einzelmessung bzw. einen Satz Messungen pro Kanal gefordert?
Muss später nur die Frequenz des Spannungsverlaufs erkennbar sein oder
muss man auch den absoluten Wert genau kennen?
Sascha schrieb:> Deine Rechnung ist übrigens falsch, 1/1.000.001 kommt raus. Wenn man> klugscheissen will, dann sollte man den eigenen Text nochmal ganz genau> fehlerprüfen sonst wird das peinlich.
Ich weiß ja nicht, was das für eine Zahl sein soll: 1.000.001? Binär?
Oktal? Blinkt da noch irgendetwas?
Eine zusätzliche Messung zu 1000000 ist genau 1 ppm mehr.
Sascha schrieb:> Dann teilt sich deine Abtastrate auf 4 Kanäle auf. Nur weil der AVR 8> Multiplex-Eingänge für den ADC hat, heisst das ja nicht dass du die auch> alle nutzen musst.
Danke, das wollte ich wissen !
> Oszi Bild wäre jetzt ganz gut, vllt. sogar mit FFT.
Würde ich gerne machen, nur funktioniert mein Oszi doch nicht. Habe es
für das Projekt gekauft und da vom Verkäufer "voll funktionsfähig"
beschrieben wurde, dachte ich das es auch so ist. :/
Evtl kann ich mir einen ausleihen vom Labor
> Und was noch viel wichtiger ist: Welche Genauigkeit ist für jede> Einzelmessung bzw. einen Satz Messungen pro Kanal gefordert?
Ich vermute mal das die Genauigkeit eine große Rolle hier spielt, da ich
den genauen Zeitpunkt erfassen sollte um den nächsten
Kommutierungsschritt einzuleiten. Oder?
> Muss später nur die Frequenz des Spannungsverlaufs erkennbar sein oder> muss man auch den absoluten Wert genau kennen?
Es geht nur darum zu erkennen wenn der nächste Kommutierungsschritt
erfolgen soll. Das klappt bisher auch ganz "ok" aber ich habe die
Abtastrate, sowie die Dimensionierung nicht richtig eingestellt. Ich
habe bisher ein Kondensator mit 100nF und ein Widerstand von 4,7KOhm
benutzt.
Meine MOSFETs werden bisher noch zu heiß. Evtl erfolgt die Kommutierung
nicht wie sein sollte.
Sorry das ich mich erst heute wieder melde. Ging leider nur nicht
anders.
Gruß