Forum: Mikrocontroller und Digitale Elektronik 4 Motore mit dem ESP32 steuerbar ?


von Erhard G. (Firma: privat) (erhy)


Lesenswert?

Hallo!
 Ich möchte 3  Motore (gebürstet) und einen Servo mit einem ESP32 
steuern.
Gibt es dafür eine Library ?
Danke für Tipps
Erhy

: Bearbeitet durch User
von Heinz R. (heijz)


Lesenswert?

klar, die 3brush1servo lib...

Was hast Du denn genau vor?  Du brauchst nicht die passende Library 
sondern das passende Programm

von Erhard G. (Firma: privat) (erhy)


Lesenswert?

möchte einen Tauchroboter bauen.
Den möchte ich mit einem Android Tablet bedienen.
2 Motore für vorwärts/rückwärts,
1 Motor für aufwärts/abwärts.
1 Servo für den Greifer

von Wolfgang (Gast)


Lesenswert?

Erhard G. schrieb:
> Ich möchte 3  Motore (gebürstet) und einen Servo mit einem ESP32
> steuern.

Die Motoren kannst du nicht direkt an den ESP32 anschließen. Du brauchst 
einen Treiber für den Motor. Und wie der Treiber angesteuert wird, hängt 
davon ab, welchen Treiber die verwendest.

Und ob dein Servo mit 3.3V Steuerpulsen umgehen kann, weißt du besser 
als alle anderen hier. Sonst brauchst du dafür noch einen Pegelwandler.

von Erhard G. (Firma: privat) (erhy)


Lesenswert?

ja ich benötige Hardware-Treiber um die PCM-Signale zu verstärken.
Software Library finde ich nur für 2 Motore.
Mit den Servo kenn ich mich nicht so aus. Benötige nur Auf/Zu = 
Links/Rechts ohne Positionsabhängigkeit.

: Bearbeitet durch User
von Bernhard S. (b_spitzer)


Lesenswert?

Wenn Du die Motoren über handelsübliche Fahrtregler (heute "ESC") 
ansteuerst, dann brauchst du 4x identische Servo-Signale.
Der ESP32 hat den 16-Kanal LED-Dimmer, damit kannst du die Signale 
locker erzeugen. Grundfrequenz auf 50Hz einstellen, mindestens 12 Bit 
Auflösung (braucht man, weil beim Servo-PWM nur 5% des Bereiches genutzt 
werden). Bei 12 Bit Auflösung und 50Hz entspricht ein PWM-Wert von 204 
einer Millisekunde (Minimalwert) und 409 entspricht 2ms (Maximalwert).

Hier ein primitives "Servo-Beweger"-Beispiel:
1
int ServoPin = 33;    // neben 5V Anschluss
2
3
4
void setup(){
5
  pinMode(ServoPin, OUTPUT);
6
  ledcSetup(0, 50, 12); // PWM-Kanal 0 mit 50Hz (20ms) und 12Bit
7
  ledcAttachPin(ServoPin, 0); // LED mit Kanal verbinden
8
  Serial.begin(115200);
9
}
10
11
void loop() {
12
  int PWM_Soll;
13
  
14
  // PWM-Wert von 204 bis 409 erhöhen
15
  for(PWM_Soll = 204; PWM_Soll <= 409; PWM_Soll++){  
16
    ledcWrite(0, PWM_Soll); // PWM-Wert aktualisieren
17
    delay(10);
18
  }
19
  Serial.println("Linksanschlag erreicht");
20
  delay(1000);   // 1 Sekunde links stehen lassen
21
  
22
  // PWM-Wert von 409 bis 204 erniedrigen
23
  for(PWM_Soll = 409; PWM_Soll >= 204; PWM_Soll--){ 
24
    ledcWrite(0, PWM_Soll); // PWM-Wert aktualisieren   
25
    delay(10);
26
  }
27
  Serial.println("Rechtsanschlag erreicht");
28
  delay(1000);   // 1 Sekunde rechts stehen lassen
29
  
30
}
Für 4 Servo-Signale nutzt du dann einfach die PWM-Kanäle 0-3, die 
Pinzuordnung geschieht mit lcdAttachPin, die Wertänderung des PWM-Wertes 
geschieht über die Nummer des PWM-Kanals, nicht über die Pinnummer.
(analogWrite(Pin, Wert) funktioniert beim ESP32 nicht mehr, der 
LED-Dimmer kann aber auch mehr)

von Chris K. (kathe)


Lesenswert?

Erhard G. schrieb:
> möchte einen Tauchroboter bauen.

2.4 GHz und unter Wasser ist das schlechteste was du wählen könntest.

Wie stellst du dir die Verbindung über zu unter Wasser vor ?
Bau erst einmal das Notfallprogramm ein, wenn WLAN Verbindung 
unterbrochen -> sofort auftauchen.
Viel Spaß damit, melde mal die maximale Tauchtiefe zurück. ;-)

von Häh? (Gast)


Lesenswert?

WLAN unter Wasser, ja...

von stuff (Gast)


Lesenswert?

wlan -> water lan ;-)

von STK500-Besitzer (Gast)


Lesenswert?

Chris K. schrieb:
> ie stellst du dir die Verbindung über zu unter Wasser vor ?
> Bau erst einmal das Notfallprogramm ein, wenn WLAN Verbindung
> unterbrochen -> sofort auftauchen.
> Viel Spaß damit, melde mal die maximale Tauchtiefe zurück. ;-)

Vielleicht befinden sich beide in einem Unterwasserlabor?!
SCNR

Unter dem Begriff "ROV", "OpenROV" oder "AUV" ("DIY" wegen 
Selbstbau)kann man definitiv eine Menge finden.

Kabellose DIY-ROV verwenden i.d.R. Modellbau-Fernsteuerungen mit 27 oder 
40 MHz. Die befinden sich aber auf dem absterbenden Ast, da der 2,4 oder 
5.8 GHz-Anlagen für den Normalverbraucher besser (weil störsicherer) 
sind.

von Erhard G. (Firma: privat) (erhy)


Lesenswert?

STK500-Besitzer schrieb:
> Chris K. schrieb:
>> ie stellst du dir die Verbindung über zu unter Wasser vor ?

Die Antenne kann ja schwimmen - ist kein geheim Uboot.

von Erhard G. (Firma: privat) (erhy)


Lesenswert?

Bernhard S. schrieb:
> Wenn Du die Motoren über handelsübliche Fahrtregler (heute "ESC")
> ansteuerst, dann brauchst du 4x identische Servo-Signale.
> Der ESP32 hat den 16-Kanal LED-Dimmer, damit kannst du die Signale
> locker erzeugen. Grundfrequenz auf 50Hz einstellen, mindestens 12 Bit

> Für 4 Servo-Signale nutzt du dann einfach die PWM-Kanäle 0-3, die
> Pinzuordnung geschieht mit lcdAttachPin, die Wertänderung des PWM-Wertes
> geschieht über die Nummer des PWM-Kanals, nicht über die Pinnummer.

diese Zuordnung mach mir gerade Gedanken:
Für die Rotationsgeschwindigkeit der Propeller je ein PWM Signal
Für die Richtung ein digitaler Output.
Zum Bremsen/Freilauf auch ein digitaler Output.

Und wenn ihr einen Vorschlag habt für den Hardware-Driver ( etwa 7 Volt, 
5 Ampere ) wäre ich auch dankbar

von Drahtlos (Gast)


Lesenswert?

Naja, und die Verbindung zwischen der schwimmenden Antenne und deinem 
Boot machst du dann einfach drahtlos.

von Erhard G. (Firma: privat) (erhy)


Lesenswert?

Drahtlos schrieb:
> Naja, und die Verbindung zwischen der schwimmenden Antenne und deinem
> Boot machst du dann einfach drahtlos.
es gibt ESP32 developer boards mit KOAX für Antenne

von Wolfgang (Gast)


Lesenswert?

Drahtlos schrieb:
> Naja, und die Verbindung zwischen der schwimmenden Antenne und deinem
> Boot machst du dann einfach drahtlos.

Exakt, z.B. mit einem Unterwasser Modem.
Mindestens genauso spannend ist es, der Antenne (mit dem US-Modem) 
beizubringen, in der Nähe über dem Roboter zu bleiben.

von Erhard G. (Firma: privat) (erhy)


Lesenswert?

Wolfgang schrieb:
> Drahtlos schrieb:
>> Naja, und die Verbindung zwischen der schwimmenden Antenne und deinem
>> Boot machst du dann einfach drahtlos.
>
> Exakt, z.B. mit einem Unterwasser Modem.
> Mindestens genauso spannend ist es, der Antenne (mit dem US-Modem)
> beizubringen, in der Nähe über dem Roboter zu bleiben.

viel mehr interessiert mich die Ansteuerung der Motore und die Auswahl 
der Fahrtregler.

Wir möchten den Tauchroboter in unserem Teich benutzen und dass wir ein 
Boot dabei haben ist kein Problem. Die Elektronik werden wir dicht 
machen und  die Schiffsschrauben über Wellen antreiben.

von Markus (Gast)


Lesenswert?

Schreib endlich mal den Plural von !Motoren! richtig und nicht "Motore".

von Drahtlos (Gast)


Lesenswert?

Erhard G. schrieb:
> es gibt ESP32 developer boards mit KOAX für Antenne

Ok, jetzt kommt es aber auf die Länge des Kabels an.
Bei längeren Verbindungen empfehle ich RG213 oder besser.

von mh (Gast)


Lesenswert?

Erhard G. schrieb:
> viel mehr interessiert mich die Ansteuerung der Motore und die Auswahl
> der Fahrtregler.

Wie Du eigentlich aus den Antworten hier entnehmen kannst, ist die 
Ansteuerung der Motoren trivial gegenüber der Kommunikation unter 
Wasser.

Auswahl der Fahrtregler: Einfach bei einem Modellbauhändler der Wahl 
einen zum Motor passenden nehmen - fertig.

von Christian (Gast)


Lesenswert?

Markus schrieb:
> Schreib endlich mal den Plural von !Motoren! richtig und nicht
> "Motore".

Nur die Ruhe!
Ist beides korrekt.

von Stefan F. (Gast)


Lesenswert?

Es gibt sehr preisgünstige Module mit 16 PWM Ausgängen basieren auf dem 
Chip PCA9685. Der wird per I²C Bus angesteuert, was in jeder Hochsprache 
oder gar Scriptsprache relativ einfach zu machen ist.

https://learn.adafruit.com/16-channel-pwm-servo-driver

An dessen Ausgänge kannst du nicht nur Servos anschließen, sondern auch 
handelsübliche Motortreiber (ESC) aus dem R/C Modellbau, sowie dimmbare 
Beleuchtungen.

Ich weiß, dass der ESP32 die PWM Signale selbst erzeugen kann. Wollte 
nur eine komfortable Alternative aufzeigen.

von Bernhard S. (b_spitzer)


Lesenswert?

>> Für 4 Servo-Signale nutzt du dann einfach die PWM-Kanäle 0-3, die
>> Pinzuordnung geschieht mit lcdAttachPin, die Wertänderung des PWM-Wertes
>> geschieht über die Nummer des PWM-Kanals, nicht über die Pinnummer.
>
> diese Zuordnung mach mir gerade Gedanken:
> Für die Rotationsgeschwindigkeit der Propeller je ein PWM Signal
> Für die Richtung ein digitaler Output.
Das macht ein Modellbau-Fahrtregler (ESC) alleine mit dem PWM-Signal. 
1ms Impulsdauer = Vollgas rückwärts, 1,5ms = Stillstand, 2ms = Vollgas 
vorwärts.

> Zum Bremsen/Freilauf auch ein digitaler Output.
Auch das macht der Fahrtregler intern.

> Und wenn ihr einen Vorschlag habt für den Hardware-Driver ( etwa 7 Volt,
> 5 Ampere ) wäre ich auch dankbar
Damit ist so ziemlich jeder Regler aus dem Modellbaubereich gelangweilt. 
Du musst nur darauf achten, dass du keinen Regler für Flugzeuge nimmst. 
Rückwärts fehlt bei denen - warum auch immer ;-)
Für unter 11€: (macht bis zu 45A!)
https://hobbyking.com/de_de/hobbyking-x-car-45a-brushed-car-esc.html?queryID=ae9ac5ae0ea602737dad984f7d0fcee5&objectID=48605&indexName=hbk_live_products_analytics

von Erhard G. (Firma: privat) (erhy)


Lesenswert?

Danke für den Vorschlag!
 Gibt es da auch Spezifikationen? (3,3Volt ?)

Für die Ansteuerung mit PWM flößt mir diese Library Vertrauen ein:
https://github.com/Dlloydev/ESP32-ESP32S2-AnalogWrite

Erhy

von Stefan F. (Gast)


Lesenswert?

Man kann alle Modellbau-Servos und ESC mit Signalen von 3,3V bis 5V 
ansteuern. Du brauchst 50 positive Impulse pro Sekunde mit einer Länge 
von 1-2ms.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Da sich die Propeller an einem UBoot oder Tauchrobot nicht so wahnsinnig 
schnell drehen, würde ich über die Verwendugn von Schrittmotoren 
wenigstens mal nachdenken. Die sind per Software recht einfach zu 
steuern, benötigen pro Motor gerade 2 Pins (DIR und STEP, bei Treiber 
z.b. A4988).

Zumindest würde ich das evaluieren und mal testen. Die Erkenntnis, dass 
etwas nicht geht, ist schließlich auch eine Erkenntnis ...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Stefan ⛄ F. schrieb:
> Man kann alle Modellbau-Servos und ESC mit Signalen von 3,3V bis
> 5V
> ansteuern. Du brauchst 50 positive Impulse pro Sekunde mit einer Länge
> von 1-2ms.

Bei digitalen Servos dürfen die Impulse auch für längere Zeit vollkommen 
aussetzen - habe ich dutzendfach getestet. Sie halten dann einfach die 
Stellung, was u.U. die Programmierung deutlich vereinfacht.

ESC kenne ich diesbezügkich nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.