Ich plane gerade einen sehr einfachen Prüfstand basierend auf einem Raspberry Pi und einem Festplattenmotor. Dabei wird ein Prüfling mit einem Festplattenmotor gedreht und einer Frequenzanalyse unterzogen. Damit meine Messung funktioniert, muss dieser absolut synchron laufen (d.h. über mehrere Stunden Messung muss die Software wissen, wie viele Umdrehungen der Motor gemacht hat). Eine Drift in der Drehzahl würde die Messung zerstören. Alternativ könnte der Motor auch mit schwankenden Drehzahlen arbeiten, solange das aktuelle Geschwindigkeitssignal (Tacho) in der Software bekannt ist. Zu allem Überfluß sollte das ganze auch noch einfach nachzubauen und billig sein, am besten mit fertigen Modulen, und ohne größere Spezialkenntnisse. Die erste Idee ist es, einen Modellbau-Brushless-Controller (Turnigy o.ä.) zu nehmen und mit dem RPi anzusteuern. Damit läuft der Motor schön, aber die Drehzahl ist weder konstant noch leicht zu messen. Im Moment überlege ich mir gerade, mit Halbrückenmodulen (L298) den Motor direkt über den RPi blind zu kommutieren. Dann kenne ich zwar die Geschwindigkeit genau, allerdings läuft der Motor nicht besonders schön, außerdem ist es Aufwand. Kennt jemand von euch eine Idee, wie man einen Festplattenmotor stabil mit einer Frequenz ansteuern kann, oder wie man alternativ die Drehzahl direkt bestimmen kann? Stefan
Stefan H. schrieb: > Die erste Idee ist es, einen Modellbau-Brushless-Controller (Turnigy > o.ä.) zu nehmen und mit dem RPi anzusteuern. Damit läuft der Motor > schön, aber die Drehzahl ist weder konstant noch leicht zu messen. Die Drehzahl ist sehr schön zu messen, einige Controller haben einen Telemetrie Ausgang wo die Drehzahl via UART übertragen wird. Schwanken tut sie allerdings weiterhin. Stefan H. schrieb: > Kennt jemand von euch eine Idee, wie man einen Festplattenmotor stabil > mit einer Frequenz ansteuern kann, oder wie man alternativ die Drehzahl > direkt bestimmen kann? Wenn die Drehzahl absolut stabil sein soll, musst du den Motor zwangskommutieren. Sobald die kommutierung in einer geschlossenen Regelschleife (Blockkommutierung der FOC) läuft hast du Schwankungen! Wenn der Motor ruhig laufen soll, kannst du eine 3 Phasen Sinus PWM generieren und die Frequenz via Mikrocontroller oder RPi einstellen. Der Motor wird dieser Frequenz folgen. (Sofern Strom und Spannung ausreichend vorhanden sind ;)) Sowas habe ich schon gemacht. Ist ein ähliches Prinzip wie bei Gimbal motoren, nur das du sie dann 360° drehen lässt.
:
Bearbeitet durch User
Alles Richtig soweit! Bis auf "Gimbal". Darauf hätte ich jetzt nicht referenziert. beim GIMBAL werden Brushless-Motore verbaut. Das ist dann aber auch schon die einzige Gemeinsamkeit.(Sowas hab ich auch schon mal gebaut. Zwar nur xy-Betrieb mit zwei Motörchen: aber funktioniert) Du hingegen brauchst quasi einen Frequenzumrichter, welcher eine feste Frequenz vorgibt. Der Motor muss also gesteuert werden und es muss sichergestellt sein, das alles so dinmensioniert ist, dass er dem Wechselfeld auch folgen kann. Schrittmotor mit drei Phasen mit "nanomikroschrittbetrieb". So hätte ich es umschrieben. Sinusmodulierte PWM mit 120° Phasenversatz, Rampe und langsam auf Nenndrehzahl hoch. Zwangskommutiert dort belassen. Sparst Du dir das Tachosignal. Oder über ne PLL doch übers Tachosignal geregelt. "Aber einfach und Billg ohne Fachkenntnis" wird das dann nix.
Hallo brushlesspower, der UART-ausgang hört sich prinzipiell gut an. Allerdings weiß ich nicht, ob eine interne Geschwindigkeitsmessung genau genug ist (im Endeffekt interessiert mich die Anzahl der Umdrehungen nach vielen Stunden), und beim zurückrechnen können Fehler entstehen. Kennst du billige (ca. 10-20€) komerzielle ESCs die einen solchen Ausgang haben, und die man eventuell umprogrammieren kann? Gibt es auch welche, die einen direkten Tachoausgang haben(Pulsausgang)? Zur Sinus-Zwangskommutierung: Bei meiner (relativ kurzen) Recherche habe ich Diagramme gesehen, wie die Waveformen aussehen müssen, allerdings habe ich keinen Beispielcode gefunden. Kennst Du eine Quelle, wo jemand sowas schon gemacht hat und den Code zur Verfügung stellt? Danke! Stefan
Alternativ kannst du auch die Spannung an einer Phase messen und somit auf die Drehzahl schließen oder schlicht und einfach die Umdrehungen zählen. Das ist jetzt nicht besonders kompliziert. Nach einer Zeit t hättest du dann eine Zahl y, welche die Anzahl der Umdrehungen wiedergibt. Die Drehzahl muss dann ja nicht konstant sein, wenn es dir nur um die Anzahl der Umdrehungen geht.
Stefan H. schrieb: > Kennst du > billige (ca. 10-20€) komerzielle ESCs die einen solchen Ausgang haben, > und die man eventuell umprogrammieren kann? https://n-factory.de/Betaflight-BLHeli_32-35A-2-6S-ECS (Fast?!) Alle Blheli_32 Controller haben Telemetrie. Je nach Modell mit oder ohne Spannung/Strom. Aber immer mit Drehzahl. Du musst nur einen Controller nehmen wo der Telemetriepim als Lötpad zu verfügung steht. Stefan H. schrieb: > Allerdings weiß ich > nicht, ob eine interne Geschwindigkeitsmessung genau genug ist Besser als der Motorcontroller selber wird es niemand wissen. Er kommutiert ja schließlich mit dieser Drehzahl. Alles was du extern irgendwie misst, wird ungenauer sein. Stefan H. schrieb: > Kennst Du eine Quelle, wo jemand sowas schon gemacht hat und > den Code zur Verfügung stellt? Puh...kommt halt auf deine Hardware an. Habe das mal mit einem STM32 gemacht. Aber eigentlich sind das auch "nur" 10-20 Zeilen Code? Je nach Hardware mehr oder weniger Zeilen. ich versuche es mal grob zu erklären: erzeuge dir ein Array mit 360 Werten (oder mehr oder weniger) Array[0] = sin (0) Array[1] = sin (1) generiere 3 PWM ausgänge und ändere ständig die pulsbreite for(i=0, i<359, i++){ PWM1 = Sin(i+0°) bzw Array[i+0] PWM2 = Sin(i+120°) bzw Array[i+120] PWM3 = Sin(i+240°) bzw Array[i+240] delay(x); } je kleiner dein Delay desto höher ist die drehzahl Achtung...sehr grober pseudo code Stefan H. schrieb: > (im > Endeffekt interessiert mich die Anzahl der Umdrehungen nach vielen > Stunden) Dann einfach einen Interrupt eingang der hochzählt bei jeder umdrehung. Entweder mit einem Hallsensor, oder einem Komperator an einer der Phasen. Das ist das einfachste
:
Bearbeitet durch User
ÄXl schrieb: > Alles Richtig soweit! Bis auf "Gimbal". Darauf hätte ich jetzt nicht > referenziert. > beim GIMBAL werden Brushless-Motore verbaut. Das ist dann aber auch > schon die einzige Gemeinsamkeit.(Sowas hab ich auch schon mal gebaut. > Zwar nur xy-Betrieb mit zwei Motörchen: aber funktioniert) Die Referenz war vielleicht nicht ideal. Aber von der funktion her passt es weil brushless gimbal motore auch mit einer Sinusmodulation in position gebracht werden. und dazu gibts viel open source code.
Hi, ich habe das (bzw. bin dabei) das ganze mit einem Arduino und dem DRV8313 aufzubauen. Auf dem Steckbrett funktioniert es bereits. Als Code referenz habe ich diesen hier genutzt, funktioniert (soweit ich das noch im Koopf habe) out of the box. https://github.com/cmasenas/3-Phase-Sine-Arduino Angefangen habe ich mit diesem Board: https://www.ebay.de/itm/Storm32-BGC-32Bit-3-Axis-Brushless-Gimbal-Controller-V1-31-DRV8313-Motor-Driver/282734517878?hash=item41d44a5e76:g:CAsAAOSwH09ZECSM:rk:1:pf:0 und dort meinen Arduino zwischen gehangen.
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.