Является ли это случаем ШИМ-помех?

У меня есть электронный регулятор скорости (ESC), которым управляет широтно-импульсная модуляция (PWM) от Arduino.

Когда я подношу руку близко к кабелю, сигнал пропадает, пока я не убираю руки. Я проверил шорты, но не нашел. У меня нет осциллографа, иначе он бы дал мне ответ.

Что тут происходит?

Я также сделал это видео, чтобы помочь объяснить ситуацию .

Грубая схема

схематический

РЕДАКТИРОВАТЬ

Добавление рабочего кода Arduino для будущих посетителей

#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();
}
У вас есть схемы?
Вы должны добавить свои схемы. Это звучит как емкостной узел, к которому вы подключаетесь. Например затвор неуправляемого мосфета.
На панели инструментов редактора есть кнопка схемы. Покажите, где GND батареи подключен к GND Arduino и подключен ли Mac к сети или нет. (Это может дать заземление через USB-кабель.)
@transistor Спасибо за эту информацию. Я новичок в схемах, поэтому нарисую, что смогу.
Я не знал, как сделать пары в инструменте схемы, поэтому я нарисовал его.
Какой сигнал идет наперекосяк? Я не вижу ни заземления на этой схеме, ни подключения питания к Arduino, если только он не питается от USB.
Сигнал ШИМ идет хреново. Вы можете лучше увидеть это в видео на YouTube, которое я разместил. ESC питается от липо (красный провод +), а Arduino получает питание от USB.
Но есть ли заземление между Arduino и ESC?
Заземление как в заземляющем проводе или заземление шасси? Провода POS и GND от ESC подключены к аккумулятору. Сигнальный провод имеет 5V POS, GND, SIG, но к Arduino подключен только сигнал.
Я не уверен, что понимаю. «… Сигнальный провод имеет 5V POS, GND, SIG, но к Arduino подключен только сигнал». Это звучит как три сигнала на один сигнал. Вы хотите сказать, что между ESC и Arduino есть только один провод PWM? На вашем рисунке похоже, что отсутствует заземляющий провод (только один провод между ESC и Arduino), и если это так, я удивлен, что он вообще работает.
@ Марк, да, единственный провод PWM идет от ESC к Arduino, поскольку ESC получает питание от липо-батареи. Обычно ESC получает аналоговый сигнал, но я посылаю ему PWM, который работает, но я получаю какие-то дурацкие помехи.
Вы также посылаете много шума, если не подключаете провод между землей Arduino и землей ESC. Ваш палец просто усиливает шум.
@Mark - на самом деле это не случай отправки «шума», а скорее то, что без заземления сигнал ШИМ эффективно слабо емкостно связан с управлением скоростью. Конечно, для надежной работы требуется сигнальная земля.
@Chris Stratton - конечно, вы правы, но явно шум - это его проблема, как показывает его палец. В противном случае достаточно слабой емкостной связи. Он находится в окружающей среде, и емкостной связи недостаточно, чтобы шунтировать его на землю. Ему нужен заземляющий провод.
Мы можем согласиться с необходимостью заземления, но вы, похоже, неправильно понимаете как тему шума, так и то, как иногда проходит сигнал.
Нет, прости, Крис. Проработав сорок лет, я понимаю шум. Конечно, я упрощаю, но я уверен, что, когда он подносит «руку близко к кабелю, сигнал идет наперекосяк», что вы увидите 60-герцовую связь шума (хорошо, может быть, вы возражаете против того, чтобы я использовал термин « шум" в этой ситуации - так тому и быть) от сети переменного тока, если бы у него был осциллограф. Но для ESC сигнал будет выглядеть как шум.
@Mark Я провел дополнительное тестирование и обнаружил, что если я получаю питание от Arduino, я получаю нестабильное поведение. Однако, если я получаю питание от ESC, все работает, как и ожидалось. Имеет смысл прикрепить землю к тому месту, куда идет сигнал, и, должно быть, именно поэтому вы задали свой первоначальный вопрос. Если у вас есть время опубликовать ответ, я бы хотел, чтобы вы получили признание, если у вас нет времени, я добавлю примечание о том, что вы привели к решению.

Ответы (1)

Этот ответ возник из комментария @Mark

Это groundпроблема.

Несмотря на то, что ESC будет работать без провода groundот Arduino, для стабильной работы signalмне нужно было соединить signalпровод от Arduino с groundпроводом от Arduino.

В моем примере я взял отсоединенный ground от ESC и подключил его к GND от Arduino.