PWM / PPM输出错过了一些边

时间:2018-06-18 10:07:49

标签: arduino microcontroller esp8266 arduino-esp8266 pwm

我正在使用ESP8266(NODEMCU 3.0或其他东西)制作四轴飞行器。我已经将ardu pro mini连接到RC接收器,所以我正在从中读取PPM值。 Pro mini将带有tx的数据发送到ESP8266。 ESP使用115200波特率的软件序列读取它。我正在通过I2C与MPU9255(Waveshire)通信。

我的问题是我无法完全控制我的无刷电机。当我使用arduino而不是ESP8266时,伺服库是最好和最可靠的。但是ESP的伺服库是不同的,因为它不是AVR,而且会出现问题。第一个伺服库不想在大多数频率上工作。我的意思是默认是50Hz(20000uS)并且在这种状态下电机的ESC确实装备但不幸的是当变化快速和短暂时(1250-> 1370-> 1250)它确实错过了这样的改变就像没什么好开心...这使得我的PID控制器中的D值无用...... 有时在100Hz freq上工作正常,但有时不... 当我开始使用analogWrite时,只有500Hz工作正常,其余的频率并不想安装ESC。

PS。我正在使用3.3V至5V转换器用于PPM / PWM引脚,因此我确信信号适用于ESC。 PS2。不幸的是,我没有任何振镜。

1 个答案:

答案 0 :(得分:0)

模块上的ESP82266是可以处理WiFi通信的RF收发器集成电路,既可以配置为诸如各种Arduino板上的微控制器的从机,也可以配置成独立的芯片,它是通过外部SPI闪存编程的板载Tensilica L106 32位处理器。如果用作从设备,则可以使用不同的协议(例如SPI / SDIO或I2C / UART接口)完成Arduino与ESP82266之间的通信。在互联网上搜索全面的Tensilica L106用户指南似乎不是一件容易的事,似乎some people已经找不到。如果您想为四轴飞行器添加Wi-Fi功能,那么我建议的解决方案是让Arduino控制伺服器,马达等,并通过SPI将消息传递给ESP82266模块。如果这不是您要找的答案,请尝试使它变得更清晰,也许找人为您提供英语翻译。

但是,如果这是您所关心的,并且您想将ESP82266模块用作独立解决方案,请链接其内置处理器数据表以及可能需要调试的Quadcopters代码的相关部分。