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
klar, die 3brush1servo lib... Was hast Du denn genau vor? Du brauchst nicht die passende Library sondern das passende Programm
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
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.
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
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)
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. ;-)
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.
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.
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
Naja, und die Verbindung zwischen der schwimmenden Antenne und deinem Boot machst du dann einfach drahtlos.
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
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.
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.
Schreib endlich mal den Plural von !Motoren! richtig und nicht "Motore".
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.
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.
Markus schrieb: > Schreib endlich mal den Plural von !Motoren! richtig und nicht > "Motore". Nur die Ruhe! Ist beides korrekt.
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.
>> 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
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
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.
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.