本帖最后由 yanli12321 于 2014-4-20 20:35 编辑 看到张静茹童鞋用STM32搞电机控制,我也心动了........按照我的习惯,理论推导是必须要走一遍滴,于是乎..............
床铺党的胜利[s:125]
推了好几天,终于把SVPWM的算法推出来了,接下来就是写程序,在此为大家强烈推荐c4droid——安卓下的C编译器........程序猿居家旅行杀人灭口必备啊
手机敲代码略慢.......但还是把SVPWM程序搞出来了.......其中结合了我之前搞得快速正弦表计算算法(详情参见
XXXXXXXXXXXXXXXXXXXXXXXX/t/63198),计算压力小多了
表示c4droid的界面很欢乐
SVPWM C代码如下
仿真输出......这个是输出占空比,人肉逻辑分析仪表示应该是SVPWM的龙猫波了[s:98]
感谢静茹姐姐帮忙分析数据..........看来一切正常
程序搞出来了..........但问题是.........手头最好的MCU是一片ATMEGA16............用这货搞浮点计算简直就是个joke..........
头疼了好久,突然想起来之前买的一块FPGA开发板还没动过呢.........EP2C8 至少比AVR强吧[s:105]
新问题又来了.........之前只用verilog HDL给CPLD编过一些简单的程序.......正弦计算神马的压力山大,直到我得知FPGA可以用mif文件来初始化它的RAM,然后,一个邪恶的想法诞生了......
我把SVPWM程序稍稍修改了一下,按照mif文件的格式输出数据,出来是这样滴:
这个只输出了一相SVPWM数据,采用分时复用的方式输出三相信号
然后利用quartus II自带的IP核定义了一个RAM块,再用前面的mif文件初始化这个RAM.......SVPWM计算环节就这么被我大大咧咧地略过了
接下来试验了一下PWM输出三相SVPWM,8位分辨率,因为示波器要用一个通道触发.....所以只能看一相的波形了.......
貌似很不错的样纸
接下来是VVVF(变压变频).........头一次看到这个概念还以为是神马高大上的东东,买来两本电力拖动研究了好久,在一大堆公式后面,我只看到了这么一句话:在转速低于额定转速时,保持V/F为恒指(不考虑绕组内阻);在转速高于额定转速时,采用恒压变频驱动。
坑爹啊!!!
接下来就好办了,还是用IP核生成除法器,由一个外部信号控制输出频率和电压,同时保持恒压频比。然后顺手找来了开发板自带的ADC驱动,拧电位器控制吧[s:101]
测试视频:
点击此处查看视频
恩,完全正常,下一步就是驱动电机咯
问题再一次来了.........手头没有三相感应电机,想来想去,找了个旧硬盘,用上面的无刷凑合吧[s:108]
测试环境:
面包板上是顺手的搭的TC4420屌丝牌三相全桥[s:116]
因为是开环的,所以电机启动略麻烦,需要把转速调低然后手动拨一下才能转起来[s:247]
视频在此
点击此处查看视频
因为无刷电机气息磁场不是按正弦分布的........所以转起来有些抖动
实验目前就做到这里........打算等到暑假用DSP搞搞FOC,再带个PMSM。恩,大学还没上毕业设计就搞出来了[s:256]
最后附上所有的项目文件,程序全部采用verilog HDL编写
FPGA SVPWM.zip
8.12MB
ZIP
233次下载
200字以内,仅用于支线交流,主线讨论请采用回复功能。