Ist das ein Fall von PWM-Störungen?

Ich habe einen elektronischen Geschwindigkeitsregler (ESC), der mit Pulsweitenmodulation (PWM) von einem Arduino gesteuert wird.

Wenn ich meine Hand in die Nähe der Kabel lege, wird das Signal verrückt, bis ich meine Hände wegbewege. Ich habe nach Shorts gesucht, aber keine gefunden. Ich habe kein Oszilloskop oder das würde mir meine Antwort geben.

Was passiert hier?

Ich habe auch dieses Video gemacht, um die Situation zu erklären .

Grobes Schema

schematisch

BEARBEITEN

Hinzufügen eines funktionierenden Arduino-Codes für zukünftige Besucher

#include <SoftwareServo.h> // Download from http://playground.arduino.cc/ComponentLib/Servo

SoftwareServo myservo;  // create servo object to control a servo

//int potpin = 0;  // analog pin used to connect the potentiometer
int PIN = 2;
int val;    // variable to read the value from the analog pin

void setup()
{
  Serial.begin(115200);
  myservo.attach(PIN);  // attaches the servo on pin 2 to the servo object
}

void loop()
{
  char r = Serial.read();
  String inStr = String(r);
  if(r > -1) {
    Serial.print("serial in: ");
    Serial.println(inStr);
  }

  if(r <= -1) {
    // void
  } else if(inStr == "h") { // high
    Serial.println("HIGH");
    digitalWrite(PIN, HIGH);
  } else if(inStr == "m") { // medium
    Serial.println("medium");
    myservo.write(90);
  } else if (inStr == "l") { // low
    Serial.println("LOW");
    digitalWrite(PIN, LOW);
  } else if (inStr.toInt() >= 0 && inStr.toInt() <= 9) {
    int val = inStr.toInt() * 20;
    Serial.println(val);
    myservo.write(val);
  }
  
//  float t = millis() / 100;
//  val = sin(t / 10) * 1000;//analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
//  //  if(val < 0) val *= -1;
//  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
//  val = millis() / 100;
//  myservo.write(val);                  // sets the servo position according to the scaled value
//  Serial.println(val);
//  delay(15);                           // waits for the servo to get there

  SoftwareServo::refresh();
}
Hast du Schaltpläne?
Sie sollten Ihre Schaltpläne hinzufügen. Es klingt wie ein kapazitiver Knoten, an den Sie koppeln. Zum Beispiel das Gate eines nicht angesteuerten Mosfet.
Es gibt eine Schaltplan-Schaltfläche in der Editor-Symbolleiste. Zeigen Sie, wo der Batterie-GND mit dem Arduino-GND verbunden ist und ob der Mac am Netz ist oder nicht. (Dies kann zu einer Netzerdung durch das USB-Kabel führen.)
@transistor Danke für diese Info. Ich bin neu in Schaltplänen, also werde ich zeichnen, was ich kann.
Ich wusste nicht, wie man die Paarungen im Schaltplan-Tool herstellt, also habe ich es entworfen.
Welches Signal geht durcheinander? Ich kann in diesem Schaltplan weder Erdungsanschlüsse noch Stromanschlüsse zum Arduino sehen, es sei denn, es wird über USB mit Strom versorgt.
Das PWM-Signal wird verrückt. In dem von mir geposteten Youtube-Video sieht man es besser. ESC wird von Lipo mit Strom versorgt (rotes Kabel ist +) und Arduino wird von USB mit Strom versorgt
Aber gibt es eine Masseverbindung zwischen dem Arduino und dem ESC?
Masse wie in der Masseleitung oder einer Gehäusemasse? Es gibt POS- und GND-Kabel vom ESC, die mit der Batterie verbunden sind. Das Signalkabel hat 5V POS, GND, SIG, aber nur das Signal ist mit dem Arduino verbunden.
Ich bin mir nicht sicher ob ich das verstehe. ". . . Das Signalkabel hat 5 V POS, GND, SIG, aber nur das Signal ist mit dem Arduino verbunden.". Das klingt nach drei Signalen auf einem Signal. Wollen Sie damit sagen, dass es nur das eine PWM-Kabel zwischen dem ESC und dem Arduino gibt? Ihre Zeichnung lässt es so aussehen, als ob ein Erdungskabel fehlt (nur ein Kabel zwischen dem ESC und dem Arduino), und wenn ja, bin ich überrascht, dass es überhaupt funktioniert.
@Mark ja, das einzige PWM-Kabel führt vom ESC zum Arduino, da der ESC von der Lipo-Batterie mit Strom versorgt wird. Normalerweise erhält der ESC ein analoges Signal, aber ich sende es per PWM, was funktioniert, aber ich bekomme einige doofe Interferenzen.
Sie senden auch viel Rauschen, wenn Sie kein Kabel zwischen der Masse des Arduino und der Masse des ESC anschließen. Ihr Finger verstärkt einfach das Rauschen.
@Mark - es geht nicht wirklich darum, "Rauschen" zu senden, sondern darum, dass das PWM-Signal ohne Massebezug effektiv schwach kapazitiv in die Geschwindigkeitsregelung eingekoppelt wird. Für einen zuverlässigen Betrieb ist natürlich eine Signalmasse erforderlich.
@Chris Stratton - natürlich hast du recht, aber Rauschen ist eindeutig sein Problem, wie sein Finger zeigt. Ansonsten würde die schwache kapazitive Kopplung ausreichen. Es befindet sich in der Umgebung, und die kapazitive Kopplung reicht nicht aus, um es auf Masse abzuleiten. Er braucht ein Massekabel.
Wir können uns auf die Notwendigkeit einer Erdung einigen, aber Sie scheinen sowohl das Thema Rauschen als auch die Art und Weise, wie das Signal manchmal durchkommt, falsch zu verstehen.
Nein, tut mir leid, Chris - Nachdem ich das vierzig Jahre lang gemacht habe, verstehe ich Lärm. Sicher, ich vereinfache zu stark, aber ich bin mir sicher, dass Sie die 60-Hz-Kopplung von Rauschen sehen würden, wenn er seine „Hand in die Nähe der Kabel legt, das Signal wird verrückt“ (Ok, vielleicht haben Sie Einwände gegen meine Verwendung des Begriffs „ Rauschen" in dieser Situation - so sei es) aus der Wechselstromleitung, wenn er ein Oszilloskop hätte. Aber für den ESC wird das Signal wie Rauschen aussehen.
@Mark Ich habe mehr getestet und festgestellt, dass ich dieses instabile Verhalten bekomme, wenn ich Strom vom Arduino bekomme. Wenn ich jedoch den Strom vom ESC bekomme, funktioniert alles wie erwartet. Es ist sinnvoll, dass der Boden dort angebracht wird, wo das Signal hingeht, weshalb Sie Ihre ursprüngliche Frage gestellt haben müssen. Wenn Sie Zeit haben, eine Antwort zu posten, möchte ich, dass Sie die Anerkennung erhalten, wenn Sie keine Zeit haben, werde ich eine Notiz machen, in der ich sage, dass Sie zur Lösung führen.

Antworten (1)

Diese Antwort stammt aus einem Kommentar von @Mark

Dies ist ein groundProblem.

groundAuch wenn der ESC ohne einen vom Arduino funktioniert , signalmusste ich den signalDraht vom Arduino mit einem groundDraht vom Arduino begleiten, um den Stall zu machen.

In meinem Beispiel habe ich die vom ESC getrennte Verbindung genommen und vom Arduino mit dem GNDground verbunden .