我正在使用一块 Arduino Nano IoT33,它生成一个 PWM 信号给一个基本的电调(ESC),电调再连接到一个 T200 推进器。Arduino 的接地端连接到电调的黑线(黑白线对),黑线又连接到电池的负极。我认为这个实验的接地是正确的。我运行了一个简单的程序来驱动电机。虽然我没有发出任何串口通信查询命令,但我注意到电调发出了 4 声蜂鸣,但没有发出最后一声。每当我将 USB 线从 Arduino 的 USB 端口连接到笔记本电脑时,就会发出第 5 声蜂鸣,推进器也能正常工作。我原以为是接地问题,但电池负极和 Arduino 接地端之间的电压差只有 1.2mV。
您描述的情况听起来很正常——通电后,电调(ESC)会让电机发出哔哔声。当接收到有效的 1500us 伺服式 PWM 脉冲时,它会发出另一声哔哔声,表示系统已准备就绪。这应该没有问题。
问题基本已经解决了。推进器无法启动是因为停止信号(也就是推进器占空比的 1500 微秒)被偏移到了 1450 微秒。我运行了在你们论坛上找到的一段代码,它可以让我调整占空比的值。我反复尝试,直到找到正确的启动时间。我不知道为什么停止信号会被偏移,但是用示波器观察后发现,每当我把 Arduino 的 USB 线连接到笔记本电脑上时,停止信号就会恢复到 1500 微秒!真是奇怪……
很可能是 Arduino 的时钟频率会随着供电电压的变化而变化,比如从 USB 端口供电或者使用其他供电方式供电时电压不同?这只是我的一个猜测