Skip to content

Latest commit

 

History

History
138 lines (97 loc) · 4.94 KB

18-component_speed.rst

File metadata and controls

138 lines (97 loc) · 4.94 KB

Note

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [] und treten Sie heute bei!

Infrarot-Geschwindigkeitssensor-Modul (LM393)

image

Einführung

Das LM393-Modul ist ein Infrarot-Zähler, der sowohl einen Infrarot-Sender als auch einen Empfänger enthält. Sobald ein Hindernis zwischen diesen Sensoren platziert wird, sendet das Modul ein Signal an den Mikrocontroller. Dieses Modul eignet sich in Kombination mit einem Mikrocontroller für Anwendungen wie Motordrehzahlerkennung, Impulszählung, Positionsbeschränkung und Ähnliches.

Funktionsprinzip

Das LM393-Modul enthält eine H2010-Fotodiode, die aus einem Fototransistor und einer Infrarot-Lichtquelle besteht und in einem 10 cm breiten schwarzen Kunststoffgehäuse verpackt ist.

image

Im Betrieb emittiert die Infrarot-Lichtquelle kontinuierlich Infrarot-Licht (unsichtbares Licht), und die lichtempfindliche Triode wird leitfähig, wenn sie dieses Licht empfängt.

image

Anwendungsbeispiele

Hardware-Komponenten

  • Arduino Uno R4 oder R3 Board * 1
  • Infrarot-Geschwindigkeitssensor-Modul * 1
  • Verbindungskabel

Schaltungsaufbau

image



Programmcode



Code-Erklärung

  1. Einrichtung der Pins und Initialisierung der Variablen. Hier definieren wir die Pins für den Motor und den Geschwindigkeitssensor. Darüber hinaus initialisieren wir die Variablen, die zur Messung und Berechnung der Motordrehzahl verwendet werden.

    // Define the sensor and motor pins
    const int sensorPin = 11;
    const int motorB_1A = 9;
    const int motorB_2A = 10;
    
    // Define variables for measuring speed
    unsigned long start_time = 0;
    unsigned long end_time = 0;
    int steps = 0;
    float steps_old = 0;
    float temp = 0;
    float rps = 0;
  2. Initialisierung in der setup()-Funktion. In diesem Abschnitt wird die serielle Kommunikation eingerichtet, die Modi der Pins konfiguriert und die Anfangsgeschwindigkeit des Motors festgelegt.

    void setup() {
      Serial.begin(9600);
      pinMode(sensorPin, INPUT);
      pinMode(motorB_1A, OUTPUT);
      pinMode(motorB_2A, OUTPUT);
      analogWrite(motorB_1A, 160);
      analogWrite(motorB_2A, 0);
    }
  3. Messung der Motorgeschwindigkeit in der loop()-Funktion. In diesem Abschnitt werden die Schritte des Motors für eine Dauer von einer Sekunde gemessen. Anhand dieser Schritte wird die Umdrehungszahl pro Sekunde (rps) berechnet und an den seriellen Monitor gesendet.

    millis() gibt die Anzahl der Millisekunden zurück, die seit dem Start des aktuellen Programms auf dem Arduino-Board vergangen sind.

    void loop() {
      start_time = millis();
      end_time = start_time + 1000;
      while (millis() < end_time) {
        if (digitalRead(sensorPin)) {
          steps = steps + 1;
          while (digitalRead(sensorPin))
            ;
        }
      }
      temp = steps - steps_old;
      steps_old = steps;
      rps = (temp / 20);
      Serial.print("rps:");
      Serial.println(rps);
    }

Zusätzliche Ideen

  • Anzeige der rps auf einem LCD-Bildschirm für eine benutzerfreundlichere Bedienoberfläche.