eRpmMeter - ein Drehzahlmesser für bürstenlose Elektromotoren |
Ich will einen Drehzahlmesser für meine brushless-Motoren!Es ist nicht so, dass ich mir noch keine gekauft hätte; im Gegenteil. Die meisten funktionieren optoelektronisch und messen die Änderungen des Lichteinfalls, wenn ein Propellerblatt vorbeihuscht. Reproduzierbare und stabile Messwerte habe ich allerdings selten erhalten. Bei bürstenlosen Motoren gibt es noch eine andere Möglichkeit: Die Drehzahl wird ermittelt, indem die Signale an den Motoranschlüssen ausgewertet werden. Daher auch der Name eRpmMeter (eRpm = electrical revolutions per minute).Beim Chinesen des geringsten Misstrauens habe ich dann den "Hobbywing Brushless RPM Sensor" gesehen. In der Hoffnung, dass das Teil verwertbare Signale ausspuckt, habe ich die fälligen 2,63 Euro investiert. Nach vier Wochen war klar: Da kommt ein astreines Rechtecksignal raus, dessen Frequenz der Drehzahl entspricht. Am Ende der Überlegungen, wie daraus ein Drehzahlmesser entstehen könnte war die Idee geboren, eine besonders nachbaufreundliche Konstruktion zu schaffen. Das ganze Konstrukt besteht aus fertig kaufbaren Modulen die nur noch elektrisch miteinander verbunden werden müssen. Lediglich eine handvoll Lötstellen sind erforderlich, um ein funktionsfähiges Gerät zu erhalten. Basis ist ein Arduino UNO. Das ist eine Platine, auf dem ein AVR-Mikrocontroller werkelt. In diesen muss eine Firmware geladen werden. Das läuft über den USB-Anschluss eines Windows-Computers. Ich habe versucht alles so vorzubereiten, dass keine Vorkenntnisse erforderlich sind. |
Benötigtes Material |
|
Löten !Eigentlich müssen wir nur den dreipoligen Anschluss vom "Hobbywing Brushless RPM Sensor" an die passenden Anschlüsse auf dem LCD Keypad Shield löten. Stabilisierte 5V stellt uns netterweise der Arduino UNO zur Verfügung. Die Kabel müssen wir wie folgt anschließen:
Der hochohmige Widerstand in der Signalleitung schützt den Eingang des Mikrocontrollers. Ich habe es geschafft, diesen zu zerstören, indem ich versehentlich die Motorkabel direkt angeschlossen hatte (damals noch ohne den Schutzwiderstand). Der Sensor wird mit einem "Servostecker" geliefert. Wenn wir ein Servo Verlängerungskabel schlachten, können wir die entsprechende Hälfte an das Shield anlöten. Die Bilder zeigen, wie ich es gemacht habe. Man beachte bitte auch die high-tech Zugentlastung mit einem Stück blauem Geschenkband! Das Shield und der Arduino müssen nur über die Stift- und Buchsenleiste zusammengesteckt werden. |
Verbindung mit dem PC; wir brauchen einen Treiber!Wenn der Arduino und das LCD Keypad Shield verbunden sind, können wir das Konstrukt mit dem PC verbinden. Unser Arduino UNO hat Bausteine, die über USB eine virtuelle serielle Schnittstelle (ComPort) erzeugen. Dazu braucht es einen Treiber. Moderne Windows Versionen installieren diese teilweise automatisch. Also: Erstmal den Arduino anschließen und warten, was passiert.Werden Treiber nach dem Anstecken automatisch installiert: GUT! Wenn nicht müssen wir uns den Treiber aus dem Internet laden. Die schlechte Nachricht: Es gibt sehr viele verschiedene Schnittstellenbausteine, die jeweils passende herstellerspezifische Treiber benötigen. Die gute Nachricht: So gut wie alle billigen Arduino UNO Nachbauten aus China verwenden denselben Baustein, nämlich den CH340. Den Treiber dazu können wir direkt beim Hersteller runterladen: http://www.wch.cn/downfile/65 |
Nächster Schritt: Die Intelligenz muss in den ArduinoVorausgesetzt, Windows erkennt unseren virtuellen ComPort und das Windows-"Plong" ertönt nach dem Anstecken, kann es weitergehen. Als nächstes müssen wir die Firmware für den Drehzahlmesser in den Flash-Speicher des Arduino laden. Das habe ich so vorbereitet, dass es weitestgehend automatisch abläuft. Alles erforderliche befindet sich in dem von mir vorbereiteten Download.
|
Hilfe, ich sehe nichts!Nach dem Laden der Firmware, sollten wir etwas auf dem LCD-Display sehen können. Falls nicht oder nur schemenhaft, müssen wir den Kontrast am blauen Trimmer über dem Display nachregeln. |
Verbindung zum Motor und StromversorgungDie Drehzahl misst unser Gerät über das zweipolige rote Kabel des RPM Sensors. Dieses müssen wir mit zwei Kabeln zwischen Regler und Motor verbinden. Welche beiden der drei Kabel wir dafür verwenden, ist egal.Zur Stromversorgung des eRpmMeters haben wir mehrere Möglichkeiten: Zum Einen per USB. Hier können neben einem Computer auch eine Powerbank anschließen. Die andere Möglichkeit stellt die Rundstecker-Buchse dar. Hier können Spannungen zwischen ca. 6 und 12 Volt angeschlossen werden. Ein 5V Spannungsregler sorgt für geregelte Verhältnisse. Plus muss an den Stift, Masse nach außen. |
Bedienung
|
Anzahl der Pole messen > neu in Version 2018-04-24 <Falls die Ermittlung der Polzahl Schwierigkeiten verursacht, können wir diese auch mit Hilfe des eRpmMeters ermitteln. Dazu starten wir das Gerät im POLE-COUNT Modus. Während wir den Motor mit der Hand drehen, werden die Pole gezählt und angezeigt. Leider gibt es Mehrfachzählungen, wenn der Rotor zwischen den Magnetrastungen pendelt . Folgende Vorgehensweise funktioniert bei mir am besten: Motor gut fixieren, Luftschraube anbringen, zehn zügige 360-Grad Umdrehungen ausführen, dabei den Rotor mit dem Finger leicht abbremsen. Im Idealfall wird genau die 10-fache Polzahl angezeigt (wegen der zehn Umdrehungen). Sind die Werte unplausibel, ist meist der nächst niedrige glatt durch 20 teilbare Wert der richtige.
|
Serielle Ausgabe der MesswerteDie Messwerte werden über den UART und den virtuellen ComPort des Arduino ausgegeben und sind mit jedem aktuellen Terminalprogramm empfangbar. Die Schnittstellenparameter sind: 115.200 Baud, 8 Datenbits, kein Paritätsbit, 1 Stoppbit.Neben den auf dem LCD angezeigten Werten werden noch ausgegeben:
|
Verwendete Programmiersprachen und HilfsprogrammeHinweise zu den verwendeten Programmen im oben schon erwähnten Download: https://www.franksteinberg.de/eRpmMeter/eRpmMeter.zipEs handelt sich ausschließlich um freie Software. Verbinden möchte ich das mit einem großen Dank an die Ersteller dieser ausnahmslos sehr professionellen Programme. Auch wenn die Hardwaregrundlage ein Arduino ist, habe ich die Firmware für eRpmMeter mit LunaAVR geschrieben. Die Arduino-Entwicklungsumgebung basiert auf der Programmiersprache C und damit bin ich immer noch nicht warm geworden. LunaAVR hat die meisten Sprachelemente von BASIC und das ist mir sympathisch! Außerdem gibt's LunaAVR komplett kostenlos, ist gut dokumentiert und erzeugt sehr kompakten Code. Link zu LunaAVR: http://avr.myluna.de Als kleines Nebenprodukt ist ein Kommandozeilenprogramm für Windows entstanden. Das ermittelt die Nummer einer seriellen Schnittstelle dadurch, dass diese neu angesteckt wird. Das ist mit USB-seriell-Adaptern machbar und ein Arduino ist genau das für einen PC. Damit ist der Firmware Upload möglich, ohne dass der Nutzer im Gerätemanager nach Portnummern suchen muss. Der Quelltext und das Binary finden sich im Ordner "SayNewComPort". Geschrieben ist das Programm in FreeBasic: https://www.freebasic.net https://www.freebasic-portal.de Zum Schluss sei noch erwähnt, dass der eigentliche Upload (das Flashen) der Firmware mittels AvrDude realisiert ist. AvrDude ist ebenfalls freie Software und der Quasi-Standard zum Flashen von AVR Mikrocontrollern: https://www.nongnu.org/avrdude Frank Steinberg, im April 2018 |
|
© Frank Steinberg |