Arduino-basierte optische Drehzahlmesser

6 Schritt:Benötigte Materialien: Schritt 1 Schritt 2: Bau und Vorbereitung der Motor (falls erforderlich) Schritt 3: IR-Detektorschaltung Schritt 4: Programmieren Schritt 5: Setzen sie alle zusammen Schritt 6: weitere Schritte

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Vor über zehn Jahren, habe ich eine Web-Seite mit detaillierten Anweisungen für den Aufbau einer einfachen Elektromotor auf der Grundlage eines von der Beakman World TV-Show. Ich nannte es die "Beakman Electric Motor" Seite und im Laufe der Jahre hat es Hunderttausende, wenn nicht Millionen von Hits hatte. Die Erkenntnis, dass gerade den Bau eines Motors, egal wie cool, war keine gute Wissenschaft FAIR-Projekt, habe ich Vorschläge für die Verwendung des Motors als eine Wissenschaft FAIR-Projekt, wie zum Beispiel mit verschiedenen Magneten, Batterien und Spulenkonstruktionen experimentieren und zu sehen, wie sie auf die Leistung auswirken. Um dies zu tun, sollte die Drehzahl des Motors gemessen werden, aber ich habe das als eine offene Frage.

Ich habe Dutzende von E-Mails über die Jahre zu fragen, wie, um die Geschwindigkeit zu messen, und ich habe immer mit einem gebrochenen Lichtstrahl und einen Zähler vorgeschlagen hatte, aber ich habe noch nie einen selbst gebaut. Ich habe sogar eine Person, die sie einen Slot-Car Rundenzähler verwenden, seit ich auf bei Toys 'R Us einem Verkauf für 99 Cent zu sehen, und sie sagte, dass es funktionierte perfekt, aber nicht jeder kann ein gutes Geschäft zu finden wie das vorgeschlagen.

Es ist einfach so passiert, dass ich eines dieser habe "wie kann ich messen die Motordrehzahl?" E-Mails am Tag meiner neuen Arduino Diecimila Mikrocontroller-Board von der Ankunft Make Shop, so dass ich dachte, das wäre ein schönes Wochenende Projekt zu machen.

Hier ist das Ergebnis, ein optischer Drehzahlmesser für Beakman der Elektromotor mit einem IR-Emitter / Detektor-Paar und ein Arduino Board. Mit ein paar Änderungen an der Programmierung, können Sie diesen Drehzahlmesser zur Messung andere Dinge wie Ventilator oder Propellerdrehzahl zu verwenden. Schuldverschreibungen an, was für verschiedene Anwendungen zu ändern enthalten.

Wie um Spaß zu haben mit Arduino ist eine gute Quelle von Grundlagen, wie zu installieren und das Arduino-Board verwenden.
Benötigte Materialien: Schritt 1



Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino Diecimila Foren
Erhältlich bei der Make-Store oder von mehreren anderen Online-Ressourcen. Man beachte jedoch, daß die Techniken dieser Instructable könnten für andere Mikrocontroller und Kreise angepasst werden.

Computer mit Arduino-Software und USB-Kabel

IR LED und IR-Fototransistor
Ich habe ein Radio Shack # 276-142, aber das kann eine alte Teilenummer sein. Teileauswahl auf dies wahrscheinlich nicht zu kritisch.

Sichtbares Licht LED-
Ich habe eine High-Brightness rote, die ich hatte in der Umgebung. Aktuelle Auswahl nicht zu kritisch.

10K Ohm Widerstand

220 Ohm Widerstand

Breadboard (semi-Option), Schaltdraehte, Clips

Undurchsichtigen Klebeband, wie schwarzem Isolierband

Rahmen für die Halte LED und Detektor
Verwenden Sie Ihre Phantasie, ich Knex Stücke, um einen Rahmen zu bauen.

Beakman der Elektromotor (oder etwas anderes zu messen)
Originalbetriebsanleitung für den Aufbau des Motors befinden sich hier: Beakman der Motor
Ähnliche Pläne gibt es von anderen Orten wie diesem Instructable:
Einfache Electric Motor
Schritt 2: Bau und Vorbereitung der Motor (falls erforderlich)

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Folgen Sie den Anweisungen, um die Beakman den Elektromotor zu bauen. Der Motor sollte auf einer geeigneten Basis montiert, so dass sie laufen freistehend ein wenig vom Tisch sein. Ich habe einige Brio Bau Versatzstücke (Ich habe viele Spielsachen herumliegen).

Das Wichtigste, um eine zuverlässige Motorbetrieb zu gewährleisten ist es, sicherzustellen, dass die Spule ist ausgewogen und die Schwänze der Spule sind sehr gerade. Ich zeichnete ein Diagramm mit meinem Spulenkörper und ein Lineal, legte dann die fertige Spule auf dem Papier, um die Schwänze senkrecht zu der Spule ausrichten und sicherstellen, dass sie gerade waren. Ich habe dann einen Tropfen Sekundenkleber, wo die Schwänze wurden um die Spule gewickelt, um sicherzustellen, dass sie nicht verrutschen können.

, Um die Spule zu ermöglichen, den Lichtstrahl zu brechen, setzen Sie ein Stück undurchsichtigen Band (I verwendet schwarzem Isolierband) an der Spule. Dies könnte es langsam nach unten ein klein wenig, aber wenn alle Ihre Spulen haben die gleiche Größe Stück Klebeband in der gleichen Position, sollten Sie Ihre Ergebnisse zwischen den Spulen relativ konsistent sein.
Schritt 3: IR-Detektorschaltung

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Es gibt drei getrennte Stromkreise an den Arduino verbinden. Sie können zu meinem Schaltplan und Notizen Skizze in den Bildern und die Bilder von dem Steckbrett beziehen zu sehen, wie ich süchtig sie alle auf. Selbstverständlich sind die kritischen Dinge zu beachten sind die Anoden / Kathoden-Orientierung der LEDs und Transistoren und die Verbindungen zu Macht und Boden. Die gesamte Schaltung ist aus der Arduino-Board mit Strom versorgt und da wird das Programm mit dem PC kommunizieren kann, bin ich mit dem USB-Anschluss für Strom.

IR-Detektorschaltung
Dachte ich der einfachste Weg, um Brüche in dem Lichtpfad zu detektieren war, eine IR-LED und Fototransistor IR, so konfiguriert, dass der Fototransistor entweder "ein" oder "aus" anstelle der Verwendung einer Photozelle mit einem analogen Schwellenwert zu verwenden.

Ich fand die Konfiguration in den Forrest Mims Kreis Notebook "Optoelektronische Schaltungen" - der Auszug ist in den folgenden Bildern. Diese Bücher sind wunderbar, durch die Art und Weise. Ich bin gespannt, um zu versuchen viele der anderen Sensoren und Schaltungen beschreibt er in ihnen mit der Arduino.

A 10 K Ohm Widerstand geht vom + 5V-Anschluss auf der Arduino mit dem Kollektor auf dem Fototransistor (Pin 2). Der Emitter des Fototransistors (Pin 1) ist mit dem Boden (wieder auf der Arduino-Board). Pin 3 ist unbenutzt und kann aus dem Weg oder Zuschnitt gebogen werden. Der Kollektor (Pin 2) ist ebenfalls mit dem digitalen Pin 2 am Arduino verbunden. Eingang 2 auf dem Arduino entspricht 0, die wir verwenden werden, um Impulse zu zählen zu unterbrechen.

Früher habe ich Krokodilklemme Patch-Kabel, um den Phototransistor und kleine abgewinkelte Pins auf dem Steckbrett zu verbinden, um die Schaltung zu verbinden. Die Anschlüsse für dieses Projekt sind einfach genug, dass man wahrscheinlich Punkt-zu-Board-Verkabelung zu tun und einfach den Anschlussdrähte in die Buchsen auf der Arduino. Ich habe eine kleine Steckbrett statt. Selbstverständlich, wenn Sie die Arduino Schild haben, den Bau noch einfacher würde.

IR-LED-Leiter
Das Arduino Diecimila hat einen Strombegrenzungswiderstand an Pin 13, so zu reduzieren, die Anzahl der Teile, angeschlossen ich die IR-LED zu diesem Stift. Wenn Sie eine ältere Arduino Board haben, denken Sie daran, einen geeigneten Reihenwiderstand an den Ausgang Pin zu verbinden. Die Verbindungen für diese wurden auch mit einem rechtwinkligen Header auf dem Steckbrett und Krokodilklemme Patch Drähte an die LED erfolgt. Anode zur digitalen Stift 13, Kathode (flache Seite) mit Masse.

Status-LED
Da wir mit unsichtbarer IR-Licht, Interrupts und serielle Kommunikation für den Status zu tun, wollte ich etwas, das mir zu sagen, würde die Schaltung arbeitet zu sehen, so dass ich verbunden eine rote Status-LED-Digital-Pin 12 über einen 220 Ohm Serienwiderstand.
Schritt 4: Programmieren

Arduino-basierte optische Drehzahlmesser
Das Programm für die Berechnung der Drehzahl des Motors ist ziemlich einfach. Ich passte es von einem Hall-Effekt-Motordrehzahl-Rechner an der hervorragenden Arduino Spielplatz vor Ort.

Sie können für das folgende Programm die "Skizze" herunterladen.

Die rpm_fun Funktion ist die Interrupt-Funktion, die aufgerufen wird, wenn die Daten auf Pin 2 von HIGH auf LOW (ein fallender Impuls). Es aktualisiert die globalen rpmcount, dann schaltet die Status-LED.

  Leere rpm_fun () {// Jede Drehung wird dieser Interrupt // Funktion zweimal ausführen, so nehmen //, dass in Betracht // Berechnung RPM // aktualisieren Zählung rpmcount ++;  // Toggle-Status-LED, wenn (status == LOW) {status = HIGH;  } Else {status = niedrig;  } Digital (statusPin, Status);} 

Setup initialisiert die Variablen konfiguriert die seriellen Parameter legt die Pin-Modi, und richtet die Interrupt-Funktion.

  Leere Setup () {Serial.begin (9600);  // Interrupt 0 Digitalstift 2, so dass ist, wo // der IR-Detektor wird bei fallender (Wechsel von hoch zu niedrig) attachInterrupt (0, rpm_fun, Fallen) verbunden // Löst;  // Auf IR LED pinMode (ledPin, OUTPUT) drehen;  digital (ledPin, HIGH);  // Verwenden statusPin zusammen mit Unterbrechungen pinMode (statusPin, OUTPUT) blinken;  rpmcount = 0;  rpm = 0;  timeold = 0;  status = niedrig;  } 

Die Loop-Funktion, wie der Name schon sagt, ist der Hauptverarbeitungsschleife, dass "läuft immer", während das Board eingeschaltet ist. Die erste Anweisung Verzögerungen für eine Sekunde (1000 Millisekunden), aber beachten Sie, dass die Interrupt-Funktion wird jedes Mal zu brechen den Wert von Pin 2 Änderungen und starten Sie das rpm_fun Funktion. Nach der zweiten Verzögerungs 1, wird die Unterbrechung vorübergehend deaktiviert (dies nicht notwendig sein kann, scheint aber sicherer) dann wird die Drehzahl berechnet wird, basierend auf der Anzahl der Unterbrechungen und der verstrichenen Zeit zwischen jetzt und das letzte Mal die Berechnung aufgetreten. Das Ergebnis wird zurück zu dem Computer über den seriellen Anschluss gesendet wird, wird die Unterbrechung wiederhergestellt.
  Leere Schleife () {// Update-RPM jede Sekunde Verzögerung (1000);  // Nicht Prozess während Berechnungen unterbricht detachInterrupt (0);  rpm = 30 * 1000 / (millis () - timeold) * rpmcount;  timeold = millis ();  rpmcount = 0;  // Schreiben Sie es aus, um die serielle Schnittstelle Serial.println (rpm, DEC);  // Starten Sie die Interrupt-Verarbeitung attachInterrupt (0, rpm_fun, Fallen);  } 

Man beachte, dass die Art, wie der Motor und der IR-Detektor konfiguriert ist, wobei jede einzelne Windung der Spule in zwei Übergänge führt, so dass die Berechnung erfolgt, dass in Kraft. Das gleiche würde für eine zweiflügeligen Ventilator oder Propeller auftreten. Wenn nur eine Lichtpause pro Umdrehung aufgetreten ist, wie beispielsweise ein Schwenkarm, würde die Berechnung sein:

  rpm = 60 * 1000 / (millis () - timeold) * rpmcount; 

Für eine dreiflügeligen Ventilator, würde die Berechnung sein:

  rpm = 20 * 1000 / (millis () - timeold) * rpmcount; 

Schritt 5: Setzen sie alle zusammen

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Arduino-basierte optische Drehzahlmesser

Die IR-LED sollte an der IR-Detektor in einem Abstand von wenigen Zoll hingewiesen werden. Während Sie den Detektor an den Tisch kleben Sie und halten Sie die IR-LED in der Hand (wie ich während des Tests getan haben), das ist ziemlich umständlich. Was Sie tun möchten, ist es, einen provisorischen Rahmen, der den Sender und Empfänger ausgerichtet hält zu bauen, lässt aber genug Platz, dass die Motorwicklung zwischen ihnen drehen und brechen den Lichtweg mit dem Bandstreifen.

Ich baute eine Knex Rahmen, in dem der obere Arm nach oben und unten und gebrauchte Gummibänder gleiten, um die Drähte, die an der LED und Fototransistor gehen zu sichern, aber Sie, was Sie finden können - LEGO, Popsicle Sticks, steifen Draht, was auch immer.

Sie können testen, ob die Schaltung und Programm wird durch den Download der Skizze bis zum Arudino und mit dem Finger, um den Lichtstrahl zwischen der LED und Photodetektor brechen zusammen. Jedes Mal wenn Sie den Strahl zu brechen, sollte die Status-LED ein- und ausschalten. Sie können an der seriellen Monitor in der Arduino Software drehen, und Sie sollten sehen, eine "0" wobei jede Sekunde. Wenn Sie den Strahl ein paar Mal zu brechen, sollte die "0" auf eine kleine Zahl zu ändern.

Wenn das funktioniert, sind Sie bereit, um den Motor zu integrieren.

Holen Sie sich das Motor Spinnen mit der Band auf der Spule, sicherzustellen, dass die Detektorschaltung arbeitet und die Serien Monitor eingeschaltet ist, und schieben Sie dann den Motor zwischen der LED und Detektor. Wenn alles funktioniert, sollte die Drehzahl des Motors zeigen, bis auf die serielle Monitor auf dem PC.

Die beste Leistung, die ich bisher bekam, war um 1200 RPM. Kommentare zu hinterlassen, wenn Sie besser und was Sie anders tat Schritt 6: weitere Schritte

Arduino-basierte optische Drehzahlmesser
Der springende Punkt war, die Menschen zu ermöglichen, die Motordrehzahl des Beakman den Motor zu messen, also konnten sie Details variieren und messen Sie die Auswirkungen der Änderungen auf die Motordrehzahl, und ich glaube, das gelingt, indem sie diesen Messungen.

Doch zwei Verbesserungen in den Sinn kommen schon. Die erste wäre die einfache Erfassung des RPM-Informationen, so dass es grafisch dargestellt und gemittelt werden könnte. Da es nur Zahlen kommen über eine serielle Schnittstelle, sollte dies nicht schwer, in jeder Sprache zu tun.

Die zweite ist, um die Verarbeitung Sprache zu verwenden, um eine grafische Tachometeranzeige zu erstellen, entweder einen großen Analoganzeige oder eine digitale Anzeige mit einer Grafik, um die Daten, anstatt nur das Lesen Nummern aus dem seriellen Terminal zeigen.

Verarbeitung Home

Irgendwelche anderen Ideen?

Hier sind ein paar mehr Ressourcen auf dem Motor, darunter auch einige EE Laborhandouts, wo der Motor eines ihrer Projekte:

Felder und Wellen Handout

Kommentare zu den Motorenaufbau

Ein paar Bilder sind verfügbar meinem Flickr-Seite.

Eine weitere Einführung zu diesem Projekt (und andere random stuff) können auf meinem Blog, finden Vermeidung Central.