Drehzahl mit einem Arduino messen

in arduino •  7 years ago  (edited)

Drehzahl mit einem Arduino messen

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.

Beschaltung

Als Vorwiederstand für die Lichtschranke, wurde ein 200Ohm Widerstand verwendet, da die Diode mit 1.2 Volt arbeitet.

[embedyt]

[/embedyt]


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 wurde verwendet:

1x Arduino Uno http://amzn.to/2qOZfyl *
1x OLED 0.96 Zoll Display http://amzn.to/2qVJl3J *
1x Lichtschranke http://amzn.to/2rTxYbS * 


Weitere Infos auf meiner Internetseite.

https://arduino-projekte.info

https://arduino-projekte.info/drehzahlmesser/


Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @dukewizard! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @dukewizard! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!