ESP32 C3 Super Mini - IR-Gabellichtschranke (Geschwindigkeitssensor)

Erfahren Sie, wie Sie die IR-Gabellichtschranke mit dem ESP32 C3 Super Mini verwenden, um Objekte zu zählen und die Motordrehzahl in U/min (RPM) zu messen.

ESP32 C3 Super Mini IR-Gabellichtschranke (Geschwindigkeitssensor)

Erforderliche Hardware

1×ESP32 C3 Super Mini
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×IR Slotted Optical Speed Sensor
1×Verbindungskabel
1×(Optional) Breadboard
1×(Optional) DC-Stromanschluss

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Überblick über IR Slotted Optical Speed Sensor

Dieses Modul ist eine U-förmige Gabellichtschranke. Sie meldet dem ESP32 C3 Super Mini, wenn etwas durch ihren Schlitz geht.

Kurzfakten:

  • Sensortyp: Schlitz-Lichtschranke (IR-LED + NPN-Fototransistor)
  • Schlitzbreite: 5,9 mm
  • Betriebsspannung: 3,3V bis 5V DC
  • Ausgang: Digital (TTL) - LOW bei Unterbrechung, HIGH bei freiem Schlitz
  • Signalaufbereitung: Eingebauter Schmitt-Trigger
  • Montage: M3-Schraubenlöcher an beiden Enden
  • Pins: 3 (VCC, GND, OUT)

Gut geeignet für:

  • Motordrehzahl (RPM) mit einer Encoderscheibe
  • Einen einfachen Drehzahlmesser
  • Objekte oder Impulse zählen
  • Strecke aus Radumdrehungen
  • Rückmeldung der Raddrehzahl bei Robotern
  • Endlagen- oder Positionserkennung

Pinbelegung

Pinbelegung der IR-Gabellichtschranke
  • VCC — Stromversorgung (3,3V bis 5V)
  • GND — Masse (0V)
  • OUT — Digitales Signal an einen Eingangs-Pin des ESP32 C3

※ Notiz:

Die Pin-Reihenfolge kann sich von Charge zu Charge ändern. Folgen Sie immer den auf Ihrem Modul aufgedruckten Beschriftungen.

Wie es funktioniert

Wie die IR-Gabellichtschranke funktioniert
  • Zwei Seiten: Auf einer Seite des Schlitzes sitzt eine IR-LED. Auf der anderen Seite liegt ihr ein Fototransistor gegenüber.
  • Schlitz frei: IR-Licht erreicht den Fototransistor → OUT ist HIGH
  • Schlitz unterbrochen: Ein undurchsichtiges Objekt (eine Karte, ein Scheibenzahn) stoppt das Licht → OUT ist LOW
  • Sauberes Signal: Der Schmitt-Trigger liefert ein stabiles 0 oder 1. Kein Prellen, also ist keine Software-Entprellung nötig.
  • Klarer Kunststoff: Durchsichtige Objekte blockieren IR-Licht vielleicht nicht gut. Verwenden Sie undurchsichtige Objekte.
  • Umgekehrte Logik: Einige Module anderer Hersteller arbeiten andersherum. Wenn Ihres bei freiem Schlitz „unterbrochen“ meldet, tauschen Sie LOW und HIGH im Code.

Schaltplan

So schließen Sie die IR-Gabellichtschranke an den ESP32 C3 Super Mini an:

ESP32 C3 Super Mini IR-Gabellichtschranke Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Pin des Geschwindigkeitssensors ESP32 C3 Super Mini Pin
VCC 3.3V
GND GND
OUT GPIO4
  • Verwenden Sie 3,3V, nicht 5V: Der OUT-Pin geht bis zur VCC-Spannung. Der ESP32 C3 ist ein 3,3V-Board, also versorgen Sie den Sensor mit 3,3V.
  • Keine zusätzlichen Teile: Es ist kein Widerstand nötig. Drei Kabel genügen.

Wie man den ESP32 C3 Super Mini für die IR-Gabellichtschranke programmiert

Hier ist der Code, um die IR-Schlitz-Lichtschranke zu lesen. Es ist keine Bibliothek nötig.

  • Den Pin als Eingang festlegen:
pinMode(4, INPUT);
  • Den Zustand lesen (LOW = unterbrochen, HIGH = frei):
int state = digitalRead(4);
  • Schnelle Impulse mit einem Interrupt zählen (ein Zählschritt pro Zahn, bei der FALLING-Flanke):
attachInterrupt(digitalPinToInterrupt(4), countPulse, FALLING);
  • Impulse in RPM umrechnen (Impulse in 1 Sekunde gezählt):
float rpm = pulses * 60.0 / SLOTS_PER_TURN;

ESP32 C3 Super Mini Code - Objekt im Schlitz erkennen

Was dieser Code macht:

  • Liest den OUT-Pin immer wieder mit digitalRead()
  • Gibt nur dann eine Meldung aus, wenn sich der Zustand ändert
  • Addiert 1 zu einem Zähler, jedes Mal wenn der Schlitz unterbrochen wird
/* * Dieser ESP32 C3 Super Mini Code wurde von newbiely.de entwickelt * Dieser ESP32 C3 Super Mini Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-c3/esp32-c3-super-mini-ir-slotted-optical-speed-sensor */ const int SENSOR_PIN = 4; // ESP32 C3 Super Mini GPIO4 connected to the OUT pin of the speed sensor int lastState; // the previous state of the sensor int objectCount = 0; // how many times the slot was blocked void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); lastState = digitalRead(SENSOR_PIN); } void loop() { int state = digitalRead(SENSOR_PIN); if (state != lastState) { // the state has changed if (state == LOW) { // LOW = something is in the slot objectCount++; Serial.print("The slot is blocked - count: "); Serial.println(objectCount); } else { // HIGH = the slot is clear Serial.println("The slot is clear"); } lastState = state; } }

Schnelle Schritte

  1. Neu bei diesem Board? Lesen Sie Erste Schritte mit dem ESP32 C3 Super Mini, um die Arduino IDE einzurichten.
  2. Verdrahten Sie den Sensor wie in der Tabelle oben gezeigt.
  3. Verbinden Sie den ESP32 C3 Super Mini über das USB-Type-C-Kabel mit Ihrem PC.
  4. Wählen Sie in der Arduino IDE das Board ESP32 C3 Super Mini und den richtigen COM-Port.
  5. Kopieren Sie den Code und fügen Sie ihn in die Arduino IDE ein.
  6. Klicken Sie auf Upload. Wenn der Upload fehlschlägt, halten Sie die BOOT-Taste gedrückt, drücken Sie RESET und versuchen Sie es erneut.
  7. Öffnen Sie den Seriellen Monitor und stellen Sie 9600 Baud ein.
  8. Bewegen Sie ein Stück Karte oder Ihren Finger einige Male durch den Schlitz.
  9. Prüfen Sie das Ergebnis im Seriellen Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
The slot is blocked - count: 1 The slot is clear The slot is blocked - count: 2 The slot is clear The slot is blocked - count: 3 The slot is clear
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini Code - Motordrehzahl messen (RPM)

Was dieser Code macht:

  • Verwendet einen Interrupt bei der FALLING-Flanke. Jeder Scheibenzahn, der den Schlitz unterbricht, addiert 1 Impuls.
  • Jede Sekunde liest er die Impulszahl und setzt sie auf 0 zurück
  • Berechnet die RPM und gibt Impulse und Drehzahl aus

Warum ein Interrupt?

  • Die Impulse kommen sehr schnell. Das Prüfen des Pins in loop() könnte einige verpassen.
  • FALLING bedeutet einen Zählschritt pro Zahn.

Die RPM-Formel:

  • 1 Umdrehung = 20 Impulse (die übliche Scheibe an TT-Getriebemotoren hat 20 Schlitze)
  • Impulse in 1 Sekunde × 60 = Impulse pro Minute
  • Impulse pro Minute ÷ 20 = Umdrehungen pro Minute (RPM)
  • Ihre Scheibe hat eine andere Anzahl von Schlitzen? Ändern Sie SLOTS_PER_TURN im Code.
/* * Dieser ESP32 C3 Super Mini Code wurde von newbiely.de entwickelt * Dieser ESP32 C3 Super Mini Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-c3/esp32-c3-super-mini-ir-slotted-optical-speed-sensor */ const int SENSOR_PIN = 4; // ESP32 C3 Super Mini GPIO4 connected to the OUT pin of the speed sensor const int SLOTS_PER_TURN = 20; // number of slots (holes) in the encoder disc volatile unsigned long pulseCount = 0; // changed inside the interrupt unsigned long lastTime = 0; // runs every time a tooth of the disc blocks the slot void IRAM_ATTR countPulse() { pulseCount++; } void setup() { Serial.begin(9600); pinMode(SENSOR_PIN, INPUT); attachInterrupt(digitalPinToInterrupt(SENSOR_PIN), countPulse, FALLING); } void loop() { if (millis() - lastTime >= 1000) { // every 1 second lastTime = millis(); unsigned long pulses = pulseCount; // read and reset the counter pulseCount = 0; float rpm = pulses * 60.0 / SLOTS_PER_TURN; // pulses per second -> turns per minute Serial.print("Pulses: "); Serial.print(pulses); Serial.print(" | Speed: "); Serial.print(rpm); Serial.println(" RPM"); } }

Schnelle Schritte

  1. Behalten Sie die gleiche Verdrahtung wie im ersten Beispiel bei.
  2. Befestigen Sie die Encoderscheibe an der Motorwelle oder am Rad. Ihre Zähne müssen durch den Schlitz laufen, ohne den Sensor zu berühren.
  3. Laden Sie den Code auf die gleiche Weise wie zuvor hoch.
  4. Öffnen Sie den Seriellen Monitor mit 9600 Baud.
  5. Drehen Sie die Scheibe von Hand oder schalten Sie den Motor ein.
  6. Beobachten Sie, wie sich Impulse und RPM jede Sekunde ändern.

Beispielausgabe bei einer Motordrehzahl von etwa 300 RPM:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Pulses: 0 | Speed: 0.00 RPM Pulses: 98 | Speed: 294.00 RPM Pulses: 101 | Speed: 303.00 RPM Pulses: 100 | Speed: 300.00 RPM Pulses: 99 | Speed: 297.00 RPM Pulses: 0 | Speed: 0.00 RPM
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2
  • Der RPM-Code zählt eine Flanke pro Schlitz. Er funktioniert also auch, wenn Ihr Modul die umgekehrte Logik hat.

Zusätzliches Wissen

Gabellichtschranke im Vergleich zu anderen Sensoren:

  • IR-Gabellichtschranke: Erkennt ein Objekt in ihrem 5,9-mm-Schlitz. Am besten für Drehzahl, RPM und Zählen.
  • IR-Hindernissensor: Erkennt ein Objekt in einiger Entfernung vor sich, nicht in einem Schlitz.
  • Drehgeber: Ein Drehknopf für die Eingabe von Hand. Er zeigt auch die Drehrichtung an.

Schlitze pro Umdrehung wählen:

  • Mehr Schlitze = mehr Impulse pro Umdrehung = feinere Drehzahlmessung

Strecke aus Radumdrehungen:

  • Umdrehungen = Impulse ÷ Schlitze pro Umdrehung
  • Strecke = Umdrehungen × Radumfang (π × Durchmesser)

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!