SPS dezentral Simatic ET200sp


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Motorsteuerung mit L9110H

Es gibt je nach Bedarf mehrere Möglichkeiten, einen Gleichstrommotor zum Drehen zu bringen. In der folgenden Schaltung testen wir den Motortreiber L9110H. Das Ziel ist es, so die Drehrichtung als auch die Drehzahl eines Gleichstrommotors zu beeinflussen. Zu den Komponenten der Schaltung gehören neben der integrierten Schaltung L9110H, ein Gleichstrommotor, der für den Betrieb nicht mehr als 800 mA Strom benötigt, und ein Mikrocontroller, der in der Lage ist, PWM-Signale zu generieren. Ein Potentiometer, mit dem die Geschwindigkeit eingestellt werden kann und ein Schalter für die Drehrichtungsumschaltung ergänzen die Liste der Schaltungsteilnehmer. Einige Verbindungsbrücken und ein Spannungsregler zur Erzeugung der Steuerspannung spielen hier eine nebensächliche Rolle.

Motortreiber L9110H

L9110H

Bei der integrierten Schaltung L9110H handelt es sich um einen zweikanaligen Gegentaktverstärker, der u.a. für Ansteuerung von Gleichstrommotoren oder Schrittmotoren geeignet ist. Er zeichnet sich durch einen niedrigen Ruhestrom und großen Versorgungsspannungsbereich aus. Der Ausgang ist für induktive Lasten bereits mit Freilaufdioden ausgestattet. Der Baustein kann mit 3,3V- und 5V- Mikrocontrollern direkt angesteuert werden. Die Geschwindigkeit eines Motors kann mit PWM-Signalen beeinflusst werden.

Pinbelegung

Technische Daten:

Versorgungsspannung: 2,5V -12V
Ausgangsstrom (Dauerbelastung): 800 mA
Ausgangsstrom (Spitzenwerte): 1,5 – 2,0 A
Betriebstemperatur: 0 ℃ - 80 ℃

Anschluß-Beispiel

Anschluss-Beispiel


Gleichstrommotor

Gleichstrommotor

Bei dem Versuchsmotor handelt es sich um einen 12V-Gleichstrommotor. Der Motor ist mit einem Getriebe 1-24 ausgestattet. Bei voller Versorgungsspannung von 12V kommt die Welle auf eine Drehzahl von 200 U/min.

Gleichstrommotor JGB23


ESP32

ESP32

Die Aufgabe der Umrechnung des mit dem Potentiometer eingestellten analogen Wertes sowie Umschaltung auf die mit dem Schalter eingestellte Drehrichtung übernimmt der Mikrocontroller ESP32. Das Entwicklungsboard ESP32 arbeitet mit 3,3V und wird mithilfe der PWM-Signale die zwei Eingänge des Motortreibers L9110H steuern.

ESP32


Spannungsregler

Spannungsregler

Die Hauptversorgungsspannung der Testschaltung stammt von einem externen Netzteil und beträgt 9 VDC. Da der ESP32 mit 3,3 V arbeitet, wird ein Spannungsregler benötigt, um die notwendigen 3,3 V zu generieren. Mir der Spannung wird der Mikrocontroller versorgt. Der hier eingesetzte Spannungsregler-Modul, das auf dem Regler LM2596 basiert, kann 3 A liefern und ist für die Schaltung stark überdimensioniert. Der Stromverbrauch, abgesehen von dem Motor, liegt hier deutlich unter 100 mA.

Spannungsregler mit LM2596


Schaltplan

Schaltplan


Testschaltung

Testschaltung



Das Programm

Die einzige Schwierigkeit, die das Programm meistern muss, besteht darin, den Wert des Potentiometers, der am analogen Eingang eingelesen wird, in PWM-Vorgabe umzurechnen. Der eingelesene Wert liegt im Bereich 0-4096 (12 Bit). Der Motor beginnt bei ca. 4,5 V zu drehen. So gilt es den eingelesenen Wert zu halbieren und auf den vollen Einstellbereich des Potentiometers zu skalieren. Hierzu teilen wir den eingelesenen Wert durch 2. Als Ergebnis erhalten wir jetzt Werte von 0 bis 2048. Das ist der Bereich, in dem der Motor praktisch nicht mehr dreht. Durch Addition von 2048 erhalten wir als Ergebnis Werte von 2048 bis 4096. Mit diesen Werten kann der Motor via PWM von null bis maximale Drehzahl geregelt werden.

// *************************************************************************************
// Motorsteuerung mit L9110H
// Eine Schaltung mit IC L9110H, ESP32 und Gleichstrommotor
// ESP32-Dev-KitC V4
// Arduino IDE 2.0.4
// *************************************************************************************
  
  int Poti_Eingang = 15;                             // GPIO 15, analoger Eingang
  int Schalter_Eingang = 21;                         // GPIO 21, digitaler Eingang
  int L9110H_IB = 25;                                // GPIO 25, digitaler Ausgang (PWM)
  int L9110H_IA = 26;                                // GPIO 26, digitaler Ausgang (PWM)

  // ***********************************************************************************
  void setup() {

      ledcSetup (0, 5000, 12);               // Kanal 0, Frequenz 5kHz, Auflösung 12 Bit
      ledcSetup (1, 5000, 12);               // Kanal 0, Frequenz 5kHz, Auflösung 12 Bit
      
      ledcAttachPin (25, 0);                         // GPIO 25
      ledcAttachPin (26, 1);                         // GPIO 26

      pinMode (Schalter_Eingang, INPUT_PULLUP);      // GPIO 15
  }

  // ***********************************************************************************
  void loop() {

      int Poti_Messung = analogRead (Poti_Eingang);   // Eingang Potentiometer abfragen
      int Geschwindigkeit = Poti_Messung / 2;         // Wert für die Ausgabe umrechnen
      Geschwindigkeit = Geschwindigkeit + 2048;       // Ausgabewert
      
      if (digitalRead (Schalter_Eingang) == LOW) {    // Rechtsdrehung
          ledcWrite (0, Geschwindigkeit);             // Kanal 0
          ledcWrite (1, 0);                           // kanal 1
      }

      if (digitalRead (Schalter_Eingang) == HIGH) {   // Linksdrehung
          ledcWrite (0, 0);                           // Kanal 0
          ledcWrite (1, Geschwindigkeit);             // kanal 1
      }
      delay (10);    
  }
// *************************************************************************************       
        



Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz