Hallo Zusammen, ich möchte mir eine kleine Schaltung zur sensorlosen Drehzahlmessung für Brushless Motoren bauene, wo ich über eine Phase das Signal abgreife. Ich kenne so kleine Tools welche es im Modellbaushop zu kaufen gibt. Da ich später diese Informationen bzgl Drehzahl mit dem µC (Arduino ) auswerten man, brauche ich halt eine maßgeschneiderte Lösung. An einer Motorphase liegt ja ein sinusähnliches ( oder ein tatsächliches Sinussignal ? ) Signal an. Wie weiß ich dann, dass der Motor eine volle Umdrehung gemacht hat? Wie viele Sinusperioden müsste ich abwarten? Wie steht die Phasenspannung ( peak -peak ) eigentlich zur Lipospannung ( zB im Betrieb mit 3S ) Als Auswerteschaltung habe ich mir einen Zero Crossing Converter vorgestellt. http://sound.westhost.com/appnotes/an005-f3.gif Wäre dieser Schaltungstyp mit seiner Dimensionierung für meinen Anwendungsfall geeignet? lg Dieter
Das ( meist "sinusähnliche" ) Signal liegt prinzipiell zwischen jeweils 2 Phasen an. I.d.R. wird das mit einer 3~Brücke aus einer Gleichspannung durch "Taktung" gewonnen, dort gibt es insoweit die Möglichkeit, gegen die dortige Leistungs-Masse zu messen. Ein kompletter "Sinus" bedeutet dann je nach Polpaarzahl des Motors eben 1 - 1/2 - 1/3 usw. Umdrehung. Die Auswerteschaltung muss natürlich mit den real anstehenden Spannungen zurechtkommen - den OP "einfach so" direkt an die Motorwicklung zu legen, ist nicht möglich.
Guckst du hier: http://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren#Oszillogramme Ich würde einfach die Low-Zeit einer Phase messen. Liegt sie über z.B. 100 Mikrosekunden, war das eine ganze Umdrehung des Magnetfeldes. Dann natürlich noch die Anzahl Wicklungen berücksichtigen. Ist die Zeit 1/PWM-Frequenz länger als die Low-Zeit bei Vollgas, funktioniert das leider nicht so. Ich denke aber eher weniger dass das der Fall ist. mfg
Hallo also lt den Oszillogrammen liegt ja auf jeder Phase eine sinusähnliches Signal an wenn ich gegen Masse messe. Entspricht die Amplitude dieser Phase der Zellenspannung des angeschlossenen Lipos zb 4S? Ich verstehe aber nicht, wie ich mit der Dauer der Low Zeit einer Phase auf die Umdrehungen kommen. Weiters verstehe ich den Bezug von 100Mikrosekunden nicht? Könnt ihr mir da bitte noch helfen. mfg
Dieter Sch schrieb: > also lt den Oszillogrammen liegt ja auf jeder Phase eine sinusähnliches > Signal an wenn ich gegen Masse messe. Jein. Also beim zweiten Oszillogramm (Vollgas) könnte man das sagen. Aber natürlich ohne Negative Spannung, alles oberhalb von GND. Beim ersten Oszillogramm (nicht Vollgas, vielleicht 30% oder so) hat das mit einem Sinus nicht viel zu tun finde ich. Denn da wirkt die PWM noch mit, bei Vollgas ist kein PWM mehr vorhanden, da 100%. > Entspricht die Amplitude dieser Phase der Zellenspannung des > angeschlossenen Lipos zb 4S? Ja. > Ich verstehe aber nicht, wie ich mit der Dauer der Low Zeit einer Phase > auf die Umdrehungen kommen. Naja, wenn du das erste Bild betrachtest, solltest du ja erkennen dass es kurze Low-Zeiten (während der PWM) und lange Low-Zeiten gibt. Pro Umdrehung (elektrisch, nicht mechanisch) ist jede Phase genau einmal auf Dauer-Low. Wenn du also auf diese lange Low-Zeit triggern kannst, hast du die elektrische Drehfrequenz. > Weiters verstehe ich den Bezug von 100Mikrosekunden nicht? Damit du nun auf diese längere Low-Zeit triggern kannst, musst du sie von den kurzen Low-Zeiten unterscheiden können. Du brauchst also ein Zeitwert, bei dem du die Grenze setzt. Ist eine gemessene Low-Zeit kleiner also diese Grenze, war es ein kurzes Low, also PWM. Ist die Zeit grösser als die Grenze, war es ein langes Low und du zählst einen Counter eins hoch. Jetzt musst du nur noch die Grenze herausfinden. Dazu musst du wissen wie lange ein PWM-Low ist (ist ja immer gleich lang), und du solltest wissen wie kurz das kürzestmögliche Dauer-Low ist. Das wäre ja bei Vollgas. Auf den Oszi-Bildern ist die PWM glaube ich um die 20kHz, also 50 Mikrosekunden, und das kürzestmögliche Dauer-Low ca. 250 Mikrosekunden. Jetzt nimmst du einfach die Mitte davon, um möglichst störsicher zu sein. Also 150 Mikrosekunden. Natürlich musst du diese Parameter auf deinen Motor anpassen, dazu wäre ein Oszilloskop nicht schlecht. Ausserdem bin ich mir nicht sicher ob bei Reglern ohne aktiven Freilauf ein PWM-Low überhaupt richtig messbar ist. > Könnt ihr mir da bitte noch helfen. Ich habs versucht. Verstehst du es jetzt? mfg Nachtrag: Man könnte sicher auch mit Analogtechnik quasi die PWM einfach herausfiltern, damit direkt ein Rechtecksignal mit der richtigen Frequenz dabei rauskommt. Bin aber in Analogtechnik überhaupt nicht fit, deshalb ein digitaler, bzw. softwaretechnischer Lösungsvorschlag von mir.
> An einer Motorphase liegt ja ein sinusähnliches ( oder ein > tatsächliches Sinussignal ? ) Signal an. Es gibt unterschiedliche Motoren. Bei sensorbehafteten würde ein Hallsensorausgang direkt die benötigte Informatin liefern, aber du hast sensorlose. Bei Rechteck/Trapez angesteuerten Motoren, würde die Ausgangsspannung der Motorelektronik einer Phase direkt das benötigte Signal liefern. Wenn die Motorelektronik jedoch eine Sinuskommutierung versucht durch PWM, besteht die Möglicheit der Falschmessung. Man kann den Motorstrom messen, aber im Moment des Nulldurchgangs führt der durch seinen Ripple den die PWM ergibt eventuell zu Fehlmessungen. Will man trotzdem messen, sollte man eine deutliche Hysterese einbauen. Man kann auch die Ausgangsspannung der Elektronik RC filtern und damit das PWM Signal unterdrücken, damit nur die viel niedrigere Frequenz der Kommutuerung übrig bleibt. Das ist wohl einfacher zu bewerkstelligen.
MaWin schrieb: > Man kann auch die Ausgangsspannung der Elektronik RC filtern und damit > das PWM Signal unterdrücken, damit nur die viel niedrigere Frequenz der > Kommutuerung übrig bleibt. Das ist wohl einfacher zu bewerkstelligen. Welches Ausgangsignal meinst du? Die Phasenspannung die ich gegen Masse messe? Würde dass mit einem Tiefpass gehen damit die PWM rausgefiltert wird? Was bleibt dann übrig - eine sinusähnlicher Spannungsverlauf? Wenn ja , könnte ich dann mit einem Zero Crossing Converter von Sinus auf Rechteck umwandeln und somit die Frequenz ermitteln. Anschließend einen Spannungsteiler nachschalten, damit ich die Spannung am µC Verarbeiten kann. Was mich aber noch stutzig macht ist.... wenn nun eine Periodendauer vom Signal ( siehe Oszillogramme ) vollendet ist, wie schließe ich dann auf die Frequenz. Welcher Signalverlauf entspricht nun einer vollen mechanischen Umdrehung des Motors und wie spielt dabei die Polzahl mit?
> Wenn ja , könnte ich dann mit einem Zero Crossing Converter von Sinus > auf Rechteck umwandeln und somit die Frequenz ermitteln. Anschließend > einen Spannungsteiler nachschalten, damit ich die Spannung am µC > Verarbeiten kann. Mensch, warum denn so kompliziert? Mit der Softwarelösung brauchst du 2 Widerstände und ein paar Zeilen Code. Mit einem Tiefpass brauchst du 2 Widerstände, ein Kondensator und ein paar Zeilen Code weniger als bei der reinen Softwarelösung. Alles andere wäre doch Platz-, Geld- und Zeitverschwendung. > Was mich aber noch stutzig macht ist.... wenn nun eine Periodendauer vom > Signal ( siehe Oszillogramme ) vollendet ist, wie schließe ich dann auf > die Frequenz. Welcher Signalverlauf entspricht nun einer vollen > mechanischen Umdrehung des Motors und wie spielt dabei die Polzahl mit? Liest du deine Antworten nicht? Beitrag "Re: Brushless Motor Drehzahlmessung - Signalabgriff auf einer Phase" Aber nagut, hier die Lösungsformel (n=Drehzahl, f=Frequenz, p=Polpaarzahl): n = f/p so einfach ist das... Ach ja, wenn du auch am Regler rumlöten magst, kannst du auch gleich das 5V-Rechtecksignal eines Gate-Treiber-Einganges abzapfen. Unter Umständen muss mann dann aber die PWM trotzdem noch rausfiltern, kommt auf den Regler an. Nachtrag: Wenn du die Drehzahl gerne in U/min hättest, lautet die Formel: n = 60*f/p Nachtrag 2: Und wenn es nicht abartig genau sein soll, kannst du auch gleich direkt die Low-Zeit messen. dann ist f = 1/(3*T) und somit n = 60/(3*T*p). Natürlich müssen die PWM-Lows trotzdem hereusgefiltert werden, ein einfaches "if T > 150 Miktosekunden" reicht da aber...
Urban B. schrieb: > Mensch, warum denn so kompliziert? > Mit der Softwarelösung brauchst du 2 Widerstände und ein paar Zeilen > Code. ja ok Softwarelösung ist das eine. Von mir aus werde ich diese auch bevorzugen. Nur würde die Hardwarelösung nach meinem Vorstellungen auch funktionieren? Wenn ich die Low Zeiten nun mit dem Arduino messe, wie genau ist da die Function micros(). Liefert diese vernünftige Zeitwerte oder muss ich mit dem internen Hardwaretimer arbeiten?
Dieter Sch schrieb: > Nur würde die Hardwarelösung nach meinem Vorstellungen auch > funktionieren? Keine Ahnung, ich weiss nicht was für ein "Zero Crossing Converter" du meinst. Dein Link im ersten Beitrag funktioniert nicht. Mit einem Tiefpass und einem einfachen Schmitt Trigger sollte es aber ja eigentlich schon funktionieren. Oder sogar ohne Schmitt-Trigger. Viele Wege führen nach Rom... > Wenn ich die Low Zeiten nun mit dem Arduino messe, wie genau ist da die > Function micros(). Liefert diese vernünftige Zeitwerte oder muss ich mit > dem internen Hardwaretimer arbeiten? Ich weiss nicht was für eine Funktion micros() du meinst, und ich kenne das Arduino Board nicht näher. Ich vermute mal, das ist nur ein while mit asm(NOP) drin, das ist zu ungenau. Du musst schon ein Timer benutzen. Bei den AVRs gibts für Zeitmessungen extra den Eingang "ICP", du solltest unbedingt diesen Pin benutzen wenn das möglich ist. Das macht die Software dann schon ziemlich einfach und auch genau. Mehr dazu findest du unter "Input Capture", z.B. hier: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR#Einfangen_eines_Eingangssignals_.28Input_Capturing.29
danke schön. ich probiere es mal aus und werde dann weiterberichten
Hallo, so nun möchte ich an meiner Drehzahlmessung für meinen Motorprüfstand für Brushlessmotore weiterarbeiten. Heute habe ich mal mit dem Oszi folgende Signale abgegriffen. 1) Phase vom Motor auf GND gemessen 2) Phase zu Phase gemessen Für die Berechnung der Drehzahl wäre nun welches Signal geeignet? Bei 1) hätte ich ein Rechtecksignal, nur was sagt es aus? Gruß Dieter
Solche Oszillogramme sind immer super Ratespiele, wenn man die Einstellungen nicht kennt.
Sorry, linkes Bild wo das Signal zwischen Phase und GND gemessen wird, hatte ich folgende Einstellung am Oszi 5V/Div 1ms/Div
Deine Steuerung nutzt ja eine Rückmeldung des Motors, entweder per Hallsensoren oder ein aus der EMK gewonnenes Signal, um diesen Anzusteuern. Nimm einfach eines dieser Signale. Am einfachsten wäre das natürlich bei Motoren mit Hallsensoren sonst must du das aufbereitete Signal auf der Platine abgreifen. Nun musst Du nur noch die Anzahl der Magnete kennen und damit den Teiler für eine Umdrehung, oder Du zählst die Impulse pro Umdrehung aus.
Also am Brushlessregler ist ein ganz normaler Modellbau Brushless Motor angeschlossen, welcher keinen Hallsensor hat. Du sprichst nun eh vom linken Signalbild, welches ich zwischen Phase und Masse gemessen habe. Ist hier das Rechtecksignal notwendig für die weitere Signalverarbeite oder??? Die Anz der Magnete ist bekannt, müsste diese nur abzählen wenn ich den Motor wieder bei der Hand habe.
Die Oszi Bilder bringen in diesen Fall gar nichts. Da keine Hallsensoren verwendet werden musst Du die Steuersignale auf der Steuerplatine abgreifen. Also geanau eines der aufbereiteten Signale das auch an den steuernden Controller geleitet wird um die Rotorposition zu melden (Sozusagen der virtuelle Sensor) abgreifen. Die ganze Schaltung zur Gewinnung der Steuerimpulse noch ein viertes mal aufzubauen macht ja wenig Sinn.
? jetzt bin ich verwirrt. Es gibt ja die Möglichkeit, dass man die Drehzahl von Brushlessmotoren an einer Phase messen kann, ohne dass man sich in die bestehende Hardware ( gekaufte Modellbau Regler ) reinhackt! Letztendlich kann man sich solche Drehzahlmesser auch kaufen. Ich will das ganze halt nur selber bauen.
Bin davon ausgegangen das Du die Technik die hinter der Motoransteuerung besser kennst bzw selbst aufgebaut hast (Motorprüfstand). Natürlich kann man, wie gesagt, die Steuerimpulsgenerierung, wie in der Steuerung verwendet, extra aufbauen um ein mobiles Gerät zu haben. Da ich nur Motoren mit Sensoren benutze kann ich zur konkreten Schaltung wenig sagen. Es ist einfacher einen Reflektor an den Motor zu kleben (beim Außenläufer ja besonders einfach) und mit einer Reflexlichtschranke abzutasten, da ist man auch unabhängig vom Motrotyp und muss nich immer erst die Pulse pro Umdrehung auszählen. Wenn das Teil einen Propeller hat ist die Sache mit der Lichtschranke noch einfacher da man dann den Reflektor nicht braucht.
Nein den Regler ( deine genannte Steuerungselektronik ) habe ich nicht selbst gebaut, da der Motorprüfstand universal einsetzbar sein soll, für viel verschiedene Modellmotoren und Reglertypen. zB soll er für kleine Motoren mit schwachen Regler genauso verwendbar sein, wie für starke Motoren mit den entsprechenden leistungstarken Reglern... so nun bitte wieder zurück zu meiner Frage. Ich will ausschließlich die Drehzahl an einer Phase messen, indem ich mich mit einer Messleitung reinhänge. Es soll nichts aufgeklebt werden oder mit anderen Sensoren gemessen werden. Die Informationen welche ich von einer Phase bekommen, sollen auf die Drehzahl zurückgerechnet werden. Dass es geht zeigen ja die Threads weiter oben!
> Dass es geht zeigen ja die Threads weiter oben! Aber hast du die auch gelesen und verstanden ? Scheint mir naemlich nicht so. http://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren#Oszillogramme
Mit einem Trigger und Tiefpass könnte es gehen. Die Sannung an den Wicklungen ist ja eine PWM (das ist in dem Oszibild nicht gut zu sehen), die muss der Tiefpass unterdrücken so das nur noch die gemittelte Phasenspannung übrig bleibt. Diese kann dann durch einen Trigger in ein Rechteckimpuls gewandelt werden. Die Verarbeitung und Anzeige macht dann sinvollerweise ein kleiner Controller wobei es natürlich auch 'zu Fuss' mit Logicschaltungen oder Analog mit Zeigerinstrument zu machen geht. Da verschiedene Motoren verwendet werden muss halt immer die Impulszahl pro Umdrehung ermittelt werden und in die Umrechnung zu U/min eingbezogen werden.
Also ich habe den Link vom Peter mal durchgelesen, werde aber nicht wirklich schlau daraus. :-( Zurück zu Steffen. Du sprichst eh von meinen aufgenommenen Oszibilder, welches an einer Motorphase anliegt. Mit einem RC Tiefpass filtere ich nun die PWM raus, sodass ein sinusähnliches Signal übrig bleibt. Dann zB mit einem Schmitttrigger wandle ich es in ein Rechteck um + ggf Spannungsteiler nachschalten damit das Spannungsniveu für den µC verarbeitbar ist. Würde dass so gehen? Bzgl Tiefpass, wie lege ich die Grenzfrequenz aus, ab wann alles rausgefiltert wird?
> Also ich habe den Link vom Peter mal durchgelesen, werde aber nicht > wirklich schlau daraus. In einer 3/4 Stunde ?! Und dann wunderst du dich das du nichts verstehst ? rolleyes PISA laesst gruessen. Steffen ist ja wirklich geduldig, aber es bringt doch ueberhaupt nichts, wenn du nicht mal die Grundlagen lernen willst, bzw. versuchst zu verstehen. Nur mal nebenbei. Ist dir eigentlich aufgefallen, dass genau dein Oszibild dort abgebildet ist und dies auch noch ausfuehrlich erklaert ? Ne, oder ?
Hallo Forum, so ich habe es nun geschafft. :-) Ich habe nun eine Schaltung entwickelt, die aus dem Signal einer Motorphase ein verarbeitungsfähiges Rechtecksignal für einen µController bereitstellt. Eine beliebige Motorphase verbinde ich mit meiner Auswerteschaltung, welche über einen Spannungsteiler die Phasenspannung halbiert, weiters dann über einen RC Tiefpass filtert. Die Grenzfrequenz des Tiefpassfilters wurde wie folgt errechnet: Annahme: max Motordrehzahl 15.000upm ( für Prüfstand ) n = 60*f/p n Drehzahl f Frequenz p Polzahl Ermittlung der max. Kommutationsfrequenz zur Abgrenzung des Tiefpasses. In meinem Fall: p = 6 ; n = 15000upm fc = 1500Hz Schaue ich mir nach dem Tiefpassfilter das Signal mit dem Oszi an, so sehe ich eine sinusähnliche Form, mit einem Gleichspannungsanteil von etwa 50% der Phasenspannung ( vom Spannungsteiler ) Die Amplitude beträgt 1V. Mit Hilfe einer Komperator OPV Schaltung, lasse ich nun den OpAmp bei einem definierbaren Schwellwert ( über Poti ) durchschalten, sodass ich dann am Ausgang ein Rechteck messe. Da die Versorgungspannung des OpAmp 8V beträgt, beschränke ich das Rechtecksignal mittels Z Diode auf 4,7V. Gem der angehängten Bilder, erhalte ich dann letztendlich folgende Rechtecksignale, welche sich dann relativ leicht mit ein paar Programmzeilen mit einem µController auswerten lassen. Messungen mittels IR Drehzahlsensor und händisches retourrechnen vom Oszillogramm ergaben korrekte Messwerte! Softwaretechnisch werde ich dem µC die LOW Signalwerte
1 | PulseIn(PortNummer,LOW); |
ermitteln lassen, da ich bei niederen Frequenzen ein toggeln des High Impulses gem Oszillogramm feststellen konnte. Ich hoffe dass nun mein von oben bis unten durchgezogener Thread auch für die Nachwelt ein gutes Nachschlagewerk bietet, und so manch einer hier Rat und Hilfe findet. Weiters bedanke ich mich bei allen, die mir mit Rat und Tat zur Seite gestanden haben und auch bei jenem, der durch "rolleyes" einpaar lustige Zeilen hier verloren hat. :-P In diesem Sinne, danke und bis bald. gruß Dieter
... so hier das Bild bzgl Toggeln bei niederen Drehzahlen ( minimalste Drehzahl was der Motor/Regler hergibt )....
Die Z-Diode 4V7 hat keinen Vorwiderstand...
ar schrieb: > Die Z-Diode 4V7 hat keinen Vorwiderstand... Ach ja, ein 1k wird sich sicherlich noch finden. Es sollte sich aber auch noch ein Widerstand von 47-100k finden, der vom Ausgang des Komparators IC6 auf den + Eingang gelegt wird. Damit bekommt er eine kleine Hysterese, die das Ausgangssignal stabiler macht (keine Spikes durch Rauschen).
Willi schrieb: > ar schrieb: >> Die Z-Diode 4V7 hat keinen Vorwiderstand... > > Ach ja, ein 1k wird sich sicherlich noch finden. hmm ich habe einen 330Ohm Widerstand errechnet. Ausgangsspannung OPV ist 8V. Zenerspannung 4.7 => Izmax = Ptot/Uz = 0,5W/4,7V=0,106A Izmin = 10% von Izmax = 0,01A Rv = Uv/Izmin = (8-4,7)/0,01 = 330Ohm liege ich falsch. Bzgl der Mitkopplung hätte ich dann einen frei wählbaren Ein und Abschaltpunkt oder? (siehe Sinussignal von oberen Bild )
Hi, habe den Thread zu spät gesehen. Aber eine fertige Lösung bestehend aus Tiefpass mit anschliessendem Komperator gibt es seit einigen Jahren von SM-Modellbau (Unilog Drehzahlsensor)für ca. 15€ Gruß Ingo
Hi ja kenne diesen Sensor Wollte mir aber diese Sensoreinheit selber aufbauen, deshelb dieser Thread. danke
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.