打印

51单片机制作变频器

[复制链接]
1704|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liying1981|  楼主 | 2016-9-22 00:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     这仅仅是一个不作死就不会死业余程序猿干出的蠢事,大神们手下留情,砖头少飞一下,小的在此先谢过了。
很多年前,大约在07年还是05年。就有过用单片机模拟DSP跑变频器程序的想法。因为老一辈曾经用2051跑俄罗斯方块,想想人家既然能同时处理场、行还有视频信号,那么跑一个120度相差的三相正弦波应该没问题吧,迫不及待的敲一段代码,烧进AT89S52单片机一运行,结果是否定的。
  S5224M的晶振居然只能跑出几赫兹的变频正弦波来。失望之余就把代码丢一旁,后来一次硬盘损坏,代码也丢失了。
   
上个月由于生病加上工作的不容易,宅家里,没事瞅了瞅老姚的STC单片机,发现其中到了STC12CXXX以上的单片机居然都是1T指令周期,时钟能上35MHz,心头一亮,又闪出了想跑一跑变频器的想法。
说干就干,找来洞洞板,搭上最小系统,时钟吗,找了张DVD解码板,搞到一颗27M的,先用上再说。
紧接着就是满盘找以前写的代码,结果是失望的,想起那次硬盘损坏,代码早就无影无踪了。
老早就听说过变频器算法是很复杂的,毕竟没玩过DSP,也没听人家说过。只听人说过,这算法不是歪着脖子半小时能想出的东东。我现在也早已没有了当年的激情了。
思来想去,反正51速度也不够。那还是用当年的查表法吧。(有人就要说了,PIC不是1T的吗,而且人家一开始就是!?)您可别忘了,PIC是快,最高时钟一个指令200NS。可是你也别忘了,由于它的指令过于简单,简单到查表指令都没。而且我当年就用PIC测试过,那一堆查表指令下来,还没S52跑得快!
好了,回到正题,当年的数据表没了,而且你现在叫我用手算,你还是杀了我吧。。。。
歪脖子一想还是交给电脑吧,好吧立马动手敲代码。N小时后如下结果,计算一次居然要差不多十分钟,由于没开多线程,计算过程中界面也卡死,奇葩吧? ^_^
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image002.jpg
     吼吼!你那不是相差120度的三角波波么?你骗我这刚上幼儿园的小盘友?!
额额,是的,一张51能把这波波跑出来也就很能干了,何况还有一个业余的程序猿。。。。
迫不及待烧入STC12C5A32S2,嘿嘿,电机转起来了(家里没放三相电机,这里用的一个三相无刷电机测试的,闲余时我去搭一个三相全桥IGBT,直接输出380V AC,挂一个7.5KW电机玩玩)结果又悲剧了,电机虽然运行平稳,而且可以很低速运行(市面上的电调可不行,我手上买有2套,启动平稳运行大约都十几赫兹以上)可是最高速度也就十几赫兹,而且程序还老是复位!而我又没开启看门狗!汗。。。
注:三相直流电机与三相鼠笼式电机最大的区别是,直流电机直接挂50Hz无法启动,而鼠笼式可以。
沉思之后明白了,检查代码,居然38K字节了,人家STC12C5A32S2只有32K好么。
另,一共360度,每度再分成100份,光数据表大不说,指针溢出,一个周期跑下来也耗时多多。
更改代码重新计算,再次烧入,电机再次转起来,慢慢提高频率,电机也跟着快起来,当高到50Hz左右时电流开始减小,再高电机停转,这也是三相无刷直流电机高速不能输入正弦波的缘故。
好了,今儿到此结束,以后有空继续鼓捣。
                              结束语
       为啥本文中不提供代码?
玩儿这东东,可不光是能敲代码就可以的,老鸟很明白。(老鸟也不需要代码,只需要思路即可。
倘若您也喜欢跟我作死,那么我总结几条会作死的总结。
1、 硬件
无论是MOS管,还是IGBT,对于没太玩过的,您注意了,爆管就如同爆花生米,特别是玩上380AC的,那烟花是一个劲的赞^_^,本尊已经不知道爆了多少米了。。。。。
2、 代码
这个到没什么,要求就是精简。汇编妥妥的^_^,您要是会C++等,那么算法就OK了。
只是需要时间罢了^_^

相关帖子

沙发
宋业科| | 2016-9-22 06:49 | 只看该作者
8051做的变频器还能买到的,外围复杂。

使用特权

评论回复
板凳
dirtwillfly| | 2016-9-22 08:14 | 只看该作者
感谢楼主分享。楼主的图片挂了

使用特权

评论回复
地板
liying1981|  楼主 | 2016-9-22 16:40 | 只看该作者
本帖最后由 liying1981 于 2016-9-22 16:53 编辑
宋业科 发表于 2016-9-22 06:49
8051做的变频器还能买到的,外围复杂。

复杂是因为他外挂了芯片,我是直接I/O输出控制光耦去了。

另,用的STC12C系列,不是8051,我换成8051,那么很多可以在1代码里做得更精细

完蛋不知道咋补图。图片就是我自己写的一个三相差计算软件计算结果的图。

使用特权

评论回复
5
梦娇| | 2016-9-22 18:31 | 只看该作者
请教下大师,用STM32F103C8T6的三路IO口直接连接三个冒死管的栅极,在把冒死管接380V串到三相电机,用PWM驱动就能让电机转了 是不这样啊

使用特权

评论回复
6
liying1981|  楼主 | 2016-9-22 18:48 | 只看该作者
梦娇 发表于 2016-9-22 18:31
请教下大师,用STM32F103C8T6的三路IO口直接连接三个冒死管的栅极,在把冒死管接380V串到三相电机,用PWM驱 ...

通常使用IGBT

使用特权

评论回复
7
huangqi412| | 2016-9-22 21:20 | 只看该作者
无图无真相

使用特权

评论回复
8
liuxiaofei126| | 2016-9-22 22:14 | 只看该作者
楼主很有才啊51单片机做变频器难

使用特权

评论回复
9
liying1981|  楼主 | 2016-9-22 22:42 | 只看该作者
liuxiaofei126 发表于 2016-9-22 22:14
楼主很有才啊51单片机做变频器难

是的,如果不是1T和高时钟单片机的出现,是没法实现的。

很多年前就试过12T没法实现,最多跑几赫兹

使用特权

评论回复
10
liying1981|  楼主 | 2016-9-22 22:49 | 只看该作者

还是没搞懂怎么上图。

给个链接,如果违规麻烦版主删一下,谢谢!
h-t-t-p://wenku.baidu.com/link?url=JMnYrE05XiRVyNTCssvKmkqjnu_JICRWk_T5b3tmFC6Mg09JTif2o32wnSnEmlIFAt5muvV3RQ_7cHMU7F4WiKyprLeeADfTOHkaMxy7r8e

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

1

粉丝