Heute möchte ich euch kurz zeigen, wie Ihr euch recht simpel einen Drehzahlmesser bauen könnt.
Ich brauchte für ein Projekt von mir die Drehzahl eines Motor und damit konnte ich mir helfen. Hier im Bild ist der Testaufbau zu sehen.
Wie bin ich vorgegangen?
1. Aus einem Stück Pappe habe ich mir einen Scheibe ausgeschnitten.
2. Ein Stück am Rand rausgeschnitten, damit hier die Lichtschranke was zum Zählen hat.
3. Das Stück Pappe auf die Motorwelle geklebt.
4. Die Lichtschranke am Rand der Scheibe ausgerichtet, siehe Bild.
Die Beschaltung
Als Vorwiederstand für die Lichtschranke, wurde ein 200Ohm Widerstand verwendet, da die Diode mit 1.2 Volt arbeitet.
Funktionsweise
Hier der Aufbau der Lichtschranke:
Eine LED (links) sendet Licht an eine Fotodiode (rechts) und wenn die Scheibe sich dreht, entstehen hier immer dann wenn die Lücke kommt, ein Impuls den man mit dem Arduino auswerten (Zählen) kann.
Der Programmcode:
Die Bibliothek U8g2lib.h muss separat installiert werden, wie das geht seht Ihr hier.
#include <arduino.h> #include <u8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <spi.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <wire.h> #endif U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); byte DZM_InputPin = 2; volatile unsigned long RPM_T2, RPM_Count; unsigned long RPM , RPM_T1; void setup() { u8g2.begin(); pinMode(DZM_InputPin, INPUT_PULLUP); RPM_T1 = 0; RPM_T2 = 0; RPM_Count = 0; attachInterrupt(0, RPM_Meter, FALLING); // Interrupt0 wird bei fallender Flanke auf Pin2 } void loop() { char RPMStr[5]; u8g2.clearBuffer(); // löschen des Interen Speicher u8g2.setFont(u8g2_font_ncenB14_tr); // auswahl der Schriftart if (RPM_T2 > RPM_T1) { RPM = (unsigned)(long)(60000 * RPM_Count / (RPM_T2 - RPM_T1)); RPM_T1 = RPM_T2; RPM_Count = 0; } else { RPM = 0; } sprintf(RPMStr, "%4u", RPM); u8g2.drawStr(0, 20, RPMStr); u8g2.sendBuffer(); } void RPM_Meter () { RPM_Count++; RPM_T2 = millis(); }
Folgende Bauteile wurden verwendet:
1x 1,3″ OLED Display 128×64 I2C SH1106 – blue https://arduino-projekte.info/products/13-oled-display-128x64-i2c-sh1106-blue/
1x UNO R3 ATmega328P Board mit USB Kabel Arduino Uno R3 kompatibel https://arduino-projekte.info/products/arduino-uno-r3-clone/
17 Kommentare
Hallo,
ich und ein freund von mir müssen für ein Schulprojekt die Drehzahl eines Verbrenugsmotoren messen und dann die Messwerte auf einer Speicherkarte abspeichern. Ich wohlte gefragt haben wie man das Programm so umschreibt das es funktioniert. fals jemand eine Lösung hätte würde ich mich über eine Antwort sehr freuhen.
LG Jan
Guten Morgen,
ich habe soeben einen anderen mC ausprobiert und es funktioniert einwandfrei!
Danke für die schnelle Antwort.
LG
Hallo, super Aufbau und Tutorial. Habe allerdings ein Problem bei der Messung. Mit dieser Lichtschranke https://www.amazon.de/dp/B07TZ78N8W/ref=cm_sw_r_tw_apa_i_KahpEbJ147CMX
messe ich ca. 3x so hohe Drehzahlen (7000 U/min) als im Datenblatt des Motors angegeben. Meine Scheibe ist aus dem 3D-Drucker, läuft also sehr ruhig, mit einem Schlitz und einem Durchmesser von 32 mm. Liegt das an der oben beschriebenen Rechengeschwindigkeit des Arduinos?
BG,
Marcus
Hallo,
Welches Netzteil verwendest Du in dem Film?
Vielen Dank und viele Grüße
Hartmut
Hi all!
Feine Sache!
Aber eine Frage zur Änderung im Messaufbau.
Kann anstelle des Schlitzes in der Scheibe genau das Gegenteil, also auch ein Zapfen verwendet werden? Beeinträchtigt das die Messgenauigkeit?
Danke für die Hilfe und schönen Abend
Andi