ESC Motor Arduino Verbindung

Hey Leute,

ich habe wirklich schon einiges probiert aber leider bekomme ich mein ESC bzw. Motor einfach nicht zum Laufen.

Ich verwende folgende Komponenten:

Motor: Turnigy Aerodrive SK3 - 4250-350kv Brushless Outrunner Motor

Akku: ZIPPY Compact 5000mAh 5S 25C Lipo-Pack

ESC: Robbe Modellsport RO-CONTROL 6-60 2-6S -60(80)A 5V/5A SWITCH BEC Regler

Arduino NANO: AZDelivery Nano V3.0 mit Atmega328 CH340

Drehregler: KY-040 Drehwinkelgeber Drehgeber Rotary Encoder

Das Grundkonzept ist folgendes: Ein Potentiometer wird am Arduino NANO ausgelesen und mit diesen Daten wird dann die Geschwindigkeit des Motors Kontrolliert.

Wenn ich den ESC an den Arduino anschließe und mit Strom versorge kommt zuerst eine ton Abfolge (123 Töne steigend). Dann kommt für ca. 5 Sekunden nichts. Dann fängt der Motor im 2 Sekunden Takt an zu Piepsen und der Motor dreht sich nicht. Ich habe auch schon ausprobiert gar nichts an den ESC anzuschließen, also kein Signal zu geben, dabei passiert genau das gleiche wie wenn ich ihn an den Arduino anschließe.

Auf dem Seriellen Monitor werden mir die Korrekten werte zwischen 1000 und 2000 ausgegeben.

Ich habe die Ton Abfolge mit denen in der Bedienungsanleitung abgeglichen, leider ist diese aber unterschiedlich zu denen, welche bei Problemen oder bei Inbetriebnahme auftreten sollten. Wenn man die Beschreibungen in der Betriebsanleitung etwas weiter Interpretieren würde, dann passt es noch am ehesten zu der Ton Abfolge bei der ein unkorrektes Signal vom Empfänger vor liegt. Leider kann ich die Bedienungsanleitung nicht anhängen, hier ist aber die Internetseite auf der es die Anleitung gibt: https://www.robbe.com/de/RC-Elektronik/Antriebe/Regler/Robbe-Modellsport-RO-CONTROL-6-60-2-6S-60-80-A-5V-5A-SWITCH-BEC-Regler/8711

Ich habe auch schon probiert den Arduino nur über den Serielle Monitor laufen zu lassen - auch ohne Erfolg.

Was noch erwähnenswert ist: Ich habe nur das Signal Pin von dem ESC mit dem Arduino verbunden. Die Stromzufuhr vom BEC das der ESC liefert ist also nicht angeschlossen. Aber ich denke das sollte eigentlich keine Probleme verursachen.

Mein Code ist der folgende:

#include <Servo.h>

#include <Encoder.h>    // Verwendung der <Encoder.h> Bibliothek 

Servo ESC;     // create servo object to control the ESC

const int CLK = 6;      // Definition der Pins. CLK an D6, DT an D5. 
const int DT = 5;
const int SW = 2;       // Der Switch wird mit Pin D2 Verbunden. ACHTUNG : Verwenden Sie einen interrupt-Pin!
long altePosition = -999;  // Definition der "alten" Position (Diese fiktive alte Position wird benötigt, damit die aktuelle Position später im seriellen Monitor nur dann angezeigt wird, wenn wir den Rotary Head bewegen)

Encoder meinEncoder(DT,CLK);  // An dieser Stelle wird ein neues Encoder Projekt erstellt. Dabei wird die Verbindung über die zuvor definierten Varibalen (DT und CLK) hergestellt.


void setup()   // Beginn des Setups

{
  Serial.begin(9600);  
  pinMode(SW, INPUT);   // Hier wird der Interrupt installiert.

  ESC.attach(9); //ESC wird an D9 angeschlossen
  ESC.writeMicroseconds(0);
  delay(2000);
  Serial.begin(9600);
}


void loop()

{

    long neuePosition = meinEncoder.read();  // Die "neue" Position des Encoders wird definiert. Dabei wird die aktuelle Position des Encoders über die Variable.Befehl() ausgelesen. 

        if (neuePosition != altePosition)  // Sollte die neue Position ungleich der alten (-999) sein (und nur dann!!)...
        {
        altePosition = neuePosition; 
        
        int Zahl = min(max(0,neuePosition),64); // Wert von neuePosition in [0,64] -> Der Drehregler gibt Zahlen nur in einem Bestimmten bereich aus darüber oder darunter bleibet er bei 0 bzw. 64
        int val = map(Zahl, 0, 64, 1000, 2000); // Die werte Zwischen 0 und 64 werden in Werte von 1000 bis 2000 umgewandelt
        Serial.println(val); // Die Zahlen werden im Seriellen Monitor ausgegeben
        ESC.write(val); // Das Signal wird an den ESC weitergegben
        
       }     

}

Hört sich an wie fehlende Verbindung zwischen Minuspol des Arduino und Minuspol des ESC-Reglers.

Hast du eine normale Fernsteuerung mit der du einen Test machen könntest?
vgs

1 Like

Vieken Vielen Dank!!!!
Ich kann dir gar nicht genug Danken!!! Dieser simple Fehler hat mich mein ganzes Wochenende gekostet hahaha DANKE

Es Funktioniert jetzt, nachdem ich den Minuspol vom Arduino mit dem Minuspol vom ESC verbunden habe.

Danke nochmal!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.