jxglg 发表于 2014-8-11 00:13:22

无感无刷电机驱动最小程序

本人是学机械的,但很喜欢四轴之类的东西。所以,一直想DIY四轴飞行器。
由于对电子与软件不太会,边学边做所以进度很慢。
一开始,没有怎么在坛子里学习,就想自己用51做一个玩玩,用洞洞板自己焊了一个最小系统玩玩,连传感器都没有,以为只要电机给一样的PWM,至少可以平衡起飞吧,发现原来不行。只能回坛子继续学习了。学了一段时间,感觉可以做一个微型四轴了。这回从坛子里找了一个原理图,并把单片机换成自己熟悉的飞思卡尔8位单片机,自己画了一块板子。经过一段时间,还是不太满意。后来,有一些高手朋友加入。这回准备主控用LPC11C14,用无感无刷电机。主控板已经我自己画好并且制作出来了,电机的驱动板由朋友设计制作。自己焊了一块,来用。
这回我不再傻傻的一头扎进去制作了,先在坛子里找帖子学习。帮助最大的是写给四轴新人:无感无刷直流电机之电调设计全攻略 http://www.amobbs.com/thread-4164837-1-1.html (出处: amoBBS 阿莫电子论坛)。写的太好了, 从基本原理到软件都很详细。
我的电机驱动就是按这里说的修改的,没有创新。我是新手,atmega8也没有玩过,所以,在看MK的原程序时,有点乱。因为原程序不只驱动电机转动的程序,还有通迅,保护什么的程序,显示比较乱。
这里提供最小的程序。主要是起动程序和正常运转程序,这样新手看起来就方便多了。

电路就不提供了,因为不是我画的,呵呵。但是,和MK一样的,只有小的变化。单片机是atmega8。

主要变化是引脚换了几个脚(由于粗心,这给我使用时带来过一些麻烦),和莫氏管驱动这一块有一些小的变化。

下面是程序。
attach://211529.rar
编译是 ICCV8 for AVR CodeBlocks IDE
atmega8用的是内部RC,没有外接晶振。
这个程序只能让电机按50%占空比,转动,其他一概没有。想要控制电机,只要再添加IIC,PPM,UR(目前硬件支持这几种),就可以了。
另外,里面还有一个protues图,调程序时用的。

(我的程序是在MK上修改的,和我一起玩的人,有多年从事单片机经验,他说他是在熟悉原理下,自己完全编写的,我觉得好厉害。)

aleyn 发表于 2014-8-11 08:42:19

支持楼主。

kingway00 发表于 2014-8-11 08:55:20

谢谢楼主,正好需要

硬邦邦 发表于 2014-8-11 09:39:08

谢谢分享

zcp17521 发表于 2014-8-11 17:47:50

谢谢楼主分享

kingway00 发表于 2014-8-12 09:42:23

楼主,我用你给的PROTEUS仿真,发现先开始有PWM输出,后面就没了,怎么回事?

haiyu 发表于 2014-8-12 12:24:31

谢谢楼主分享

jxglg 发表于 2014-8-12 13:25:38

kingway00 发表于 2014-8-12 09:42
楼主,我用你给的PROTEUS仿真,发现先开始有PWM输出,后面就没了,怎么回事? ...

protues没有无感无刷电机这个元件,所以我是用按键来模拟换相的信号,从而验证时序的正确性。你说得原因就是没有触发模拟比较器,所以这样。哈哈。

jxglg 发表于 2014-8-12 13:37:48

kingway00 发表于 2014-8-12 09:42
楼主,我用你给的PROTEUS仿真,发现先开始有PWM输出,后面就没了,怎么回事? ...

补充,atmega8的pwm产生,需要寄存器设置正确,然后对应的引脚设置为输出。setpwm()这个函数中引脚设为输入。所以重新修改pwm值后,没有真正的输出。但是进入中断后,就有了。所以连上的电机可以工作。

kingway00 发表于 2014-8-12 21:54:50

jxglg 发表于 2014-8-12 13:37
补充,atmega8的pwm产生,需要寄存器设置正确,然后对应的引脚设置为输出。setpwm()这个函数中引脚设为 ...

原来有三个按键,我摁了几下,看到PWM波了,不错。估计先开始的PWM波是启动代码输出的,后面的PWM波输出需要换相事件触发,不知道我理解得对不对

Zhang_Peike 发表于 2014-8-13 20:20:07

MARK一下

Zhang_Peike 发表于 2014-8-13 20:21:19

楼主的MK电调源程序能发我一份吗?扣扣1534694885,我也做云台控制,也需要找点无刷电机的资料看看,麻烦楼主了!

jxglg 发表于 2014-8-14 13:29:32

kingway00 发表于 2014-8-12 21:54
原来有三个按键,我摁了几下,看到PWM波了,不错。估计先开始的PWM波是启动代码输出的,后面的PWM波输出 ...

是的呵呵...,

jxglg 发表于 2014-8-14 13:31:23

Zhang_Peike 发表于 2014-8-13 20:21
楼主的MK电调源程序能发我一份吗?扣扣1534694885,我也做云台控制,也需要找点无刷电机的资料看看,麻烦楼 ...

晚上qq邮箱发给你。

R88 发表于 2014-8-14 13:44:57

我当初用的直插mega8改得,我印象中主程序中只需要改几句就可以转了。

R88 发表于 2014-8-14 13:54:16

protues中原理图也有错误,上管用的三极管射随驱动也是错误。楼主还是把原理图传上来吧,别一推错误自己都不知道。

R88 发表于 2014-8-14 13:55:06

还有protues中是有BLDC电机的。

Zhang_Peike 发表于 2014-8-14 15:14:41

jxglg 发表于 2014-8-14 13:31
晚上qq邮箱发给你。

好的,谢谢楼主1!!!!{:lol:}

jxglg 发表于 2014-8-14 20:03:59

R88 发表于 2014-8-14 13:54
protues中原理图也有错误,上管用的三极管射随驱动也是错误。楼主还是把原理图传上来吧,别一推错误自己都 ...

哦,有这个电机吗?我当时找了,没有找到合适的。三极管驱动部分是有错误的,这里本是用三极管驱动莫氏管的,电压也不是5V,而是11.1V,这里进行了简化。其实这部分可以不要,主要是用来观看程序运行时的时序的。之所以用protues仿真,是因为程序在不成熟的情况下,在硬件上跑,很容易烧,我之前就烧过,最好在Protues中跑得差不多了,再上硬件,这样好一点。
protues中BLDC电机我看了一下,没有看懂,一共有8个引脚,你可以把这个原理图改改,使之适合这个程序,然后发上来供大家学习与使用。不好意思呀,protues图不严谨就发上来,给大家带来困扰,不过电机驱动程序是没有大问题的,我的电机可以正常运转。

我这里把mk的图截一个来。

与这图最大不同就是反馈引脚 0 1 2 ,正好对应改为 2 1 0,就对了。另外不同就在于三极管驱动这一块,但这与程序没有关系了。这里用一个三极管驱动莫氏管,个人感觉不太好,因为莫氏管G极需要20V左右内阻才比较小,不然发热太大。而这里明显是做不到的。
我手头的板子,与protues不同的。已经焊过好几块了,而且驱动过几款不同品牌的电机,没有发现任何问题。

“我印象中主程序中只需要改几句就可以转了” 这句话是对的。我个人感觉原程序加入了很多保护、版本判断,还有通讯方面的程序。这使时学习时把大量时间花在这上面,没必要。我觉得核心就是电机驱动的程序,然后其他的加上去就不难了,不是吗。这是我发这个程序的目的。哈哈。

R88 发表于 2014-8-15 12:03:22

jxglg 发表于 2014-8-14 20:03
哦,有这个电机吗?我当时找了,没有找到合适的。三极管驱动部分是有错误的,这里本是用三极管驱动莫氏管 ...

有的,三根相线三根霍尔,这东西主要练的就是程序,硬件随变焊焊就行,成品时在搭mos的驱动即可,Vgs一般12V以上就可以了,在大没必要,像你说20V有点过了,如果布线不好,一个振铃mos就穿了。
我就是按照原图焊的,要是在焊个推挽之累的不累死了。

jxglg 发表于 2014-8-17 23:18:27

R88 发表于 2014-8-15 12:03
有的,三根相线三根霍尔,这东西主要练的就是程序,硬件随变焊焊就行,成品时在搭mos的驱动即可,Vgs一般 ...

protues中的bldc你有用过吗?我试过了,没有成功,网上关于这个的资料比较少,我不知道怎么用。帮忙作一个可以完全模拟电调的图吧,这样就完整了。

R88 发表于 2014-8-18 08:09:54

jxglg 发表于 2014-8-17 23:18
protues中的bldc你有用过吗?我试过了,没有成功,网上关于这个的资料比较少,我不知道怎么用。帮忙作一 ...

用过,我记得论坛里面有个人传了一个protues的仿真图,用的就是bldc,你自己找找吧,他那个是完全按照mk的原理图搭的。
页: [1]
查看完整版本: 无感无刷电机驱动最小程序