4 Motore mit dem ESP32 steuerbar ?

Gast #6829795
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.
#6829798
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)
#6829807
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. ;-)
Gast #6829892
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.
(Firma: privat) #6830147
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
(Firma: privat) #6830373
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.
Gast #6831723
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.
Gast #6831731
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.
#6833440
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
(Firma: Q3) #6834117
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 ...
(Firma: Q3) #6834120
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren