Hoge-Snelheid Arduino RPM Teller met Nieuw Algoritme
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| IR nabijheidssensor (aanbevolen type gebruiken) | 1 |
| Draadbruggen | 3 |
| Laser Diode, 655 nm (rode laser pointer) | 1 |
| DC motor (voor testen) | 1 |
| USB-A naar Mini-USB kabel | 1 |
| 9V Batterij | 1 |
Benodigde tools
- Loodvrij soldeerdraad
- Solderbout (alleen voor motor aansluitingen)
Apps en online diensten
- Arduino IDE
Over dit project

Dit project is vanaf nul ontwikkeld om de exacte RPM (omwentelingen per minuut) van verschillende motoren te meten met één IR-sensor, een Arduino en een essentiële sleutel: een rode laser pointer.
De IR-sensor detecteert de lage hoeveelheid IR-straling van de rode laser. Bij blauwe/groene lasers is dit te laag. Wanneer een wiebelvleugel de laserbundel onderbreekt, daalt de meting naar 0. De vleugel draait voortdurend, waardoor een periodieke onderbreking ontstaat.
NIEUW: Single-Shot Algoritme voor Snelle, Adaptieve Metingen
De code gebruikt een uniek, nieuw ontwikkeld algoritme dat metingen in minder dan 40 milliseconden uitvoert met nauwkeurige resultaten.
Kernkenmerk: Single Shot Detection – de RPM wordt berekend elke keer dat een wiebelvleugel de laser onderbreekt. Een onderbreking markeert 1/n van een omwenteling (n = aantal vleugels). Hierdoor is het programma extreem gevoelig voor minimale RPM-veranderingen (tot 2 decimalen) bij elke 1/n-de omwenteling.

In de seriële monitor output is de output-frequentie ~2x per seconde zichtbaar. RPM-waarden met 2 decimalen nauwkeurigheid.
Probeer dit project en deel je resultaten! Suggesties voor nieuwe projecten welkom. Volg mijn profiel: @YASH36.
Code
RPM_counter_101 (Arduino)
// Code door YaSh
int sen = A0;
const float wid = 0.012; // breedte van wiebelvleugel (aanpassen)
const float rad = 0.045; // straal van detectiepunt (aanpassen)
const float konst = 6.2832; // 2*pi
float time_1, time_2, vel, diff, tnet, rpm;
void setup() {
Serial.begin(9600);
pinMode(sen, INPUT);
Serial.print(" \n Start motor minstens 3 seconden van tevoren.\n");
delay(3000);
}
void loop() {
if (analogRead(sen) < 950) {
time_1 = millis();
delay(30);
}
if (analogRead(sen) > 950) {
time_2 = millis();
diff = (time_2 - time_1);
vel = wid / diff; // rotatiesnelheid
tnet = (konst * rad) / vel; // tijd = (2*pi*straal)/snelheid
rpm = (60000) / tnet; // ms naar minuten, dan naar RPM
}
Serial.print("\n De RPM is: ");
Serial.println(rpm);
}
Schema's


Productieproces
- Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
- Integreren van een thermocouple-sensor met de Arduino Portenta H7 via de MAX6675 IC
- Bouw een real-time gyroscoop-spel met Arduino Nano & MPU-6050 sensor
- DHT11 Temperatuur- & Vochtigheidsensor Project met LED-indicatoren en Piezo-luidspreker
- K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
- Unopad: Naadloze Arduino MIDI-controller voor Ableton Live
- Arduino temperatuur- en vochtigheidslogger met DHT11 en Ethernet Shield
- Bouw een Slimme IoT Pot met ESP8266, Arduino & Ultrasonische Sensor – Real-time Monitoring
- Een eenvoudige obstakelsensor bouwen met Arduino – IR LED & Fotodiodo Tutorial
- Een DFRobot Capacitieve Vingerafdruksensor integreren met Arduino of ESP8266
- Bouw Real-Time Cellulaire Automaten op Arduino met 128x64 OLED Display