Bevor der Bulli fahrbar gemacht werden kann, müssen wir uns über die Lenkung Gedanken machen.

Um den T1 lenken zu können, benötigen 
wir einen Servomotor. Ein Servomotor ist
ein sehr feiner Motor, der über eine Datenleitung 
einen Winkel zwischen 0° und 180° 
einstellen kann. Dieser eignet sich also 
perfekt zum Lenken. 

Benötigt wird eine Spannungsversorgung und 
Masse, sowie die Datenleitung.

Bild eines Servomotors

Abbildung 1: Servoantrieb

Quelle: BBS2 Wolfsburg


Angeschlossen werden kann der Servo am Pin 14 des ESP32. 

Abbildung 2: Steckbrett

Abbildung 2: Steckbrett

Quelle: BBS2 Wolfsburg

Schaltplan Servo

Abbildung 3: Schaltplan

Quelle: BBS2 Wolfsburg



Zum Programmieren mit dem Servo Motor muss wieder eine Bibliothek geladen werden. Diese wurde allerdings schon bei der Installation vom ESP32 mit installiert. Solltest du die Bibliothek dennoch nicht in der Bibliotheksverwaltung finden, musst du sie nachträglich installieren.


Abbildung 4: Servo Bibliothek


Quelle: BBS2 Wolfsburg



Das Beispielprogramm zum hin und herfahren des Servomotors ist auf der nächsten Seite abgelegt.

#include <ESP32Servo.h>
Zunächst muss die Bibliothek eingebunden werden, in der Methoden zur Steuerung des Servo enthalten sind.
#define SERVO_PIN 14
Dies ist eine Textersetzung, welche überall wo "SERVO_PIN" im Code auftaucht eine 14 einsetzt. Das dient der besseren Lesbarkeit und Verständlichkeit des Codes.
Servo testServo;
Da mehrere Servos an einem ESP32 angeschlossen werden können, braucht jeder Servo einen eigenen Namen (hier: "testServo") dadurch wird ein Objekt der Klasse "Servo" angelegt und Adressierungen mit diesem Namen werden immer auf dieses Objekt angewandt.
void setup() 
{
  //Den Servo für den ESP32 bereit machen
  testServo.setPeriodHertz(50);
  testServo.attach(SERVO_PIN, 500, 2500);
}
Damit der Servo funktioniert müssen zusätzlich auch ein paar Parameter an das Objekt übergeben werden. Es müssen die Frequenz, der Pin, die minimale Puls weite und die maximale
Pulsweite mitgeteilt werden.
void loop() 
{
  for(int idx = 0; idx <= 180; idx++)
  {
    testServo.write(idx);
    delay(30);
  }
Mit dem "write" Befehl kann man nun den aktuellen Winkel des Servos festlegen. In diesem Fall wird der Winkel über das Durchlaufen der for-Schleife von 0 bis 180 durchfahren. 
  for(int idx = 0; idx <= 180; idx++)
  {
    testServo.write(idx);
    delay(10);
  }

  delay(1000);
}
Hier wird der Winkel wieder rückwärts zurückgestellt. 


Nach einer Pause von einer Sekunde beginnt das Programm wieder von vorne.



 

Zuletzt geändert: Montag, 5. Februar 2024, 11:10