platformIO 单片机开发神器

Posted on November 12, 2022

近来闲暇无事,想弄个三相变频器玩玩。 三相变频器可以用来驱动异步电机,还可以驱动直线加速器。

于是搜索万能宝,发现只有380v的变频器。

可是我想玩安全电压的。最多24V三相交流电。

找不到,看来只能自己开发一个了。

硬件不用自己做,只要购买无刷电机驱动板就可以了。 无刷电机驱动板,只要提供3路PWM信号,就可以生成驱动无刷电机用的三相交流电。

而生成这pwm信号的工作,就留给了单片机。

我比较中意的单片机是 ESP32. 便宜,性能强。STM32 零头的价格提供了比 STM32 高数倍的性能。

我写程序啊,不喜欢从头写。哪怕是单片机。 总不能用汇编代码一点一点写吧。再说,汇编我也只知道8051的汇编,不懂 esp32 的汇编。

所以,用了 SimpleFOC 这个库。

这个库虽然是用来驱动无刷电机的,但是他带了一个 3PWM Driver . 我只要用他这个。

起初我用 VSCODE 搭配 ExpressIDF SDK 写过 ESP32 的代码。 但是 SimpleFOC 基于 arduino 库,无法直接使用 ExpressIDF SDK。

后来我就折腾用 arduino 写。发现 arduino 的编辑器不是很顺手。代码补全,语法提示就是个 0 。

还是得用vscode写,结果翻阅 simplefoc 的文档发现可以用 platformio。 PlatformIO 是个 vscode 的插件。 装上它,就有了一个单片机的集成开发环境了。 编辑器还是用的 vscode,还能用 clangd 进行自动完成。

后来还发现 platformio 更高级的功能,就是可以多平台构建。可以同一份源码直接编译出 ESP32 和 STM32 的固件。 虽然soc各有不同的地方, 但是这些不同的地方可以用偶这个C++程序员最擅长的条件编译搞定。

至于 stm32 的板子,嘿嘿, 之前玩电机的是买过一个 VESC 的电机控制器。控制器上是个 STM32F405G ,而且,板子上 SWD 调试端口。接上 stlink, 在 platformio 里添加一个 stm32 的板子, 点 upload 直接成功!

然后可以随时在 stm32 和 esp32 里切换,随时 build , 随时 upload。

platformio真是开发单片机的神器。

于是我就捣鼓出了2个三相变频器,一个 esp32 的, 一个 stm32 的。 esp32 的可以用手机连上蓝牙后发命令设定输出电压和频率。 stm32 没蓝牙,只能接了一个电位器,用ADC采样电位器输出后设定电压和频率。

异步电机开环调速让电压和频率同步提升。也就是固定 V/F 比。这个 V/F 比和电机有关。如果有转速传感器,可以使用固定滑差率设定频率,电压则根据电流和按设定的扭矩进行反馈调节。滑差率也是一个和电机有关的数值。大部分都是 1% 的滑差率。

然后淘了一个 三相的异步电机。接上。。。因为板子的耐压是 30v。只能接了30v的直流电给板子。按电机 220v/50hz 的规格(确实是三相220v,不是380v,找了好久才找到的。), 30v 的直流电只能逆变出 21v 的交流电,所以只能输出 21v/8hz 的交流电驱动。不过这个电机应该是随便绕的,频率提高到 20hz 还能转的更快点。

但是扭矩感人。毕竟是要用 220v 电压供电的电机,绕组电阻太大。低压下电流太低了。相电流连 50mA 都没有。

可惜,更低电压的异步电机买不到了。低压的都是永磁同步电机。欸。/(ㄒoㄒ)/~~

希望能搞到和航母电机一样大小的,12V 电压驱动的三相感应电机。参数最好是 12v/100hz ,7000rpm。

Comments