alisha 发表于 2006-4-19 19:32:55

无传感器无刷直流电机AVR48控制程序中文详解

编译器:GCC

CPU:ATMEGA48

频率:4M

编译平台:VC++

程序流程:

主程序:

1. 端口初始化

   详见P9页

2. 定时器初始化

TC0:升序时,比较匹配发生时,OC0B清零,降序比较匹配发生时置位;相位修正PWM模式

    TOP值为OCR0A=200

TC1:8分频

3. ADC初始化

参考电压AREF;转换结果左对齐

定时器/计数器0溢出触发ADC自动转换

允许模拟比较器中断(上升沿)

4. 换相控制数据表格

5. 首次换相输出--共8次,然后打开TIMSK1的比较器A.

6. 全局中断开,进入循环

7.循环程序.



BMEF检测的思路:

**进入TC1的比较器A中断,换相并复位换相定时器,设定HOLD-OFF定时器,打开TC1 的比较器B中断;

打开TCO中断,关闭TC1中断,准备零点检测

**进入TC0溢出中断,取出ADC检测的电压值(周期中未通电相),根据上升或下降沿以及和标定值比较判断

是否为过零点.

如果是过零点,则对换相数据进行处理,更新TC1的OCR1A,之后关闭TC0,打开TC1,转入电流检测通道,打开ADC转换完成中断.

如果不是过零点,检测电流过后,恢复到BMEF电压检测状态,打开ADC转换完成中断.(等待下一次TC0中断)



----------------------------------------------------------------------------------------

疑问:

1.为何程序中多处出现清中断标志位命令:TIFRN.

2.看门狗的GCC中断程序怎么写

3.为了快速存取,在GCC中如何定义寄存器变量

IAR是这样定义的.

__regvar __no_init volatile unsigned int filteredTimeSinceCommutation @14;

4.感觉过零点检测失败应该恢复至定时器/计数器0溢出触发ADC自动转换

.......

---------------------------------------------------------------------------------------

我改后的程序

点击此处下载armok01115250.rar

ATMEL原版ATMEGA48控制程序:

点击此处下载armok01115249.zip

willknow 发表于 2006-4-19 20:26:18

谢谢.辛苦了!收藏了!

alisha 发表于 2006-4-19 22:53:44

交流交流啊·

xiaoke 发表于 2006-4-20 00:38:44

谢谢。能说说修改的情况吗

alisha 发表于 2006-4-20 09:03:44

XIAOKE,我在上面写了啊,软件仿真不太会用,苦看了三天,对一些细节还是很模糊!

bluemidi 发表于 2006-4-20 09:39:32

好东西,先拿下来研究。

alisha 发表于 2006-4-20 14:03:52

不要这样子,拿了就跑的人他不是东北人!

fylab 发表于 2006-4-20 21:47:35

这个例子有原理图吗?

xiaoke 发表于 2006-4-20 23:25:09

实际运行了吗?电机是?V   ?A的?

驱动是六个NMOS管还是3PMOS+3NMOS?

alisha 发表于 2006-4-21 08:56:02

没有实际运行,我是把ATMEGA48的控制英文按自己的理解写了出来,大家一起讨论,我还有很多地方都不清楚,不敢冒然拿板子试,我有个M8的有传感器控制板。

violit 发表于 2006-4-27 21:46:08

好东西啊~

我先学习一下~~不然也没有发言权

wxyujz 发表于 2006-4-28 19:08:22

楼主辛苦了,顶一下.

目前也正在搞无传感器类控制器,先学习一下.

alisha 发表于 2006-4-30 20:45:11

给个回音啊

violit 发表于 2006-5-2 21:53:36

正在看呢~~

英文的看起来真头痛,都快看不下去了

alisha 发表于 2006-5-3 15:45:56

楼上的要挺住!!!我可把希望寄托在您身上了!!!

violit 发表于 2006-5-4 11:02:17

我看了一下AT90PWM3那个芯片做得无刷控制方案,它里面使用了3个比较器作过零检测,这样应该比AD测量要好很多,挺高不少的效率和可靠性。



我想用339来作过零检测和过流检测,然后用与门为上桥臂三路MOS管提供PWM,下桥臂直接使用方波控制。



一篇无刷机论文

AT90PWM3无刷控制板




-----此内容被violit于2006-05-04,11:05:17编辑过

alisha 发表于 2006-5-4 21:09:52

我现在用的有传感器控制器就是用与门为上桥臂三路MOS管提供PWM,下桥臂直接使用方波控制。 如果有进展一定要贴出来让小弟膜拜一下!!!

violit 发表于 2006-5-5 09:02:10

alisha 你的控制器已经做出来了阿?不知可否参考一下:-)

我想做块板子,选用SI4410来座驱动管,不知如何?你的用的什么管子?

SI4410:N沟道增强性,Id = 18A,RDS(ON) < 6.2mΩ (VGS = 4.5V)



说实话我对MOS管的使用很没有概念,N/P、增强/耗尽、他们用于上桥臂与下桥臂都有哪些特点?都不怎么晓得:-(

尤其是这个SI4410,用与下桥臂的时候我就直接用单片机的IO驱动倒是可以,3V的也可以,但是用于上桥臂该如何驱动呢?可否指点一下?

alisha 发表于 2006-5-5 09:41:10

我就是按照官方的原理图做的

点击此处下载armok01116329.rar

您有GCC或ICC的中断USART通讯程序吗?我搞了两天,看手册好几遍了,还是不行,AVRSTDUIO还不会用,有的话传个简单的调试通过的让俺开开壳,谢谢了!

violit 发表于 2006-5-5 15:23:38

中断USART通讯程序应该说很容易成功的阿,初始化做好了么?

另外我也从来没用过AVRSTDUIO,一般都是C编译了直接烧

有时候使用Proteus仿真,建议你去这个分区看看,里面应该也有很多实例程序

http://www.ouravr.com/bbs/bbs_list.jsp?bbs_id=1037

你把这个软件装上试验一下,再找找相关程序,那里面的资源很丰富呢。

Proteus是一个很好的工具,建议你花些时间熟悉一下,如果还有不能成功,我再给你做个小例子。
-----此内容被violit于2006-05-05,15:33:06编辑过

zy99 发表于 2006-5-20 22:38:11

alisha,我看原来的程序是iar编写的,你用gcc能编译通过吗?



这两天在翻译AVR444的笔记,这一段想把无传感器BLDC的作出来。。。



有机会一起讨论下?

alisha 发表于 2006-5-21 11:51:24

首先谢谢VIOLIT,我把中断先放一边了,等头脑好用的时候再试。



ZY99,IAR转GCC很简单的啊,编译能通过,没有实物,而且我把不了解的地方在程序里写出来了,我很笨的,但我是知无不言,呵呵,有事情就MAIL:godblessyouandme@163.com

zy99 发表于 2006-5-21 12:31:58

笨好啊,我正好蒙你,呵呵~!



对于bldc的控制,我好像已经明白是怎么回事了。

思路已经解决,唯一的问题是对c不是很熟悉。

加上最近公司的事情忙,实在没时间研究他~!



我想我们可以用mega48把他实现出来~!

alisha 发表于 2006-5-21 14:36:26

你先写个程序先,我帮你查语法错误!

zy99 发表于 2006-5-25 15:51:12

我周一就给你发了邮件,不知道你收到没有,呵呵~!

zhuangyu@shicohmotor.cn



现在想了想,不翻译IAR那个文件-》bascom 了。

我决定自己用bascom编一个,肯定一样运行的,,,

准备用16m的晶振。

baplmqj 发表于 2006-5-25 17:04:00

你们讨论得这么开心,怎么没有我的份呢???



【15楼】 violit

你说:90PWM3 是用3个运放检测,我怎只看到一个呢???



还有 运放检测过零(位置),是什么原理呢!!!!



我看不懂E文!!!



我是否太霸道了?

呵呵。。。。。。。。。。。

alisha 发表于 2006-5-25 19:38:56

ZY99,上面的程序能够编译通过,里面我提到的问题您可以解释一下吗?

如果你决定重写一个,别忘了传上来教教小弟。

microcon 发表于 2006-8-18 13:59:12

tks

zailushanghe 发表于 2010-5-25 20:06:11

弱弱的问下:驱动电机程序中StartupDelay(STARTUP_LOCK_DELAY);//第一次变换持续时间 STARTUP_LOCK_DELAY:10000是用来干什么的啊???和倍压电路中电容充电有关系吗?

zailushanghe 发表于 2010-5-25 20:08:47

倍压电路中电容充电和启动延时数组附值startupDelays[]有关???

wuxi_stl 发表于 2010-5-25 21:32:41

mark

wcm_e 发表于 2010-5-25 21:39:06

MARK

wukong 发表于 2010-5-25 21:46:57

mark

hnxtqzh 发表于 2010-7-15 22:51:56

MARK

lp8899 发表于 2011-4-11 22:14:25

回复【楼主位】alisha
-----------------------------------------------------------------------

测试

eightice 发表于 2011-5-6 18:24:27

谢谢了,楼主辛苦了

macn_2004 发表于 2011-5-24 20:58:34

mark

hjw421704201 发表于 2011-8-2 15:07:16

mark

cxbbb 发表于 2011-8-5 17:07:57

辛苦了!收藏了

skdyu 发表于 2012-3-7 11:34:30

看看,学习学习,谢谢

8s209 发表于 2012-3-7 15:29:21

mark

inspiriting 发表于 2012-5-16 17:54:34

06年都做出来了,汗

gallle 发表于 2012-6-8 11:43:18

刚下来一个,给你

沙漠青青 发表于 2012-6-26 13:40:19

gallle 发表于 2012-6-8 11:43 static/image/common/back.gif
刚下来一个,给你

请问有没有楼主修改的程序啊,我一直在找这方面的资料

magicer2010 发表于 2012-6-26 19:27:49

其实最难得不是别的,而是过零检测!!!过零的时候会有很多干扰波形,也许会产生无数误动作,令你头痛不已,所以关键的是怎么区分是干扰还是真正的过零!!!

magicer2010 发表于 2012-6-26 19:29:14

而且启动的时候 也是难点之一,启动时有什么思路?

xiaocuobb 发表于 2012-8-21 09:05:16

楼主辛苦了,多谢分享经验...........3K

wanstrive 发表于 2013-4-7 11:38:18

最近也在弄这个,四处找资料解决问题,看看,学习下楼主!

glenclh 发表于 2013-5-23 13:01:21

直流无刷电机不检测转子位置直接固定周期电子换相,电机能转起来吗
页: [1]
查看完整版本: 无传感器无刷直流电机AVR48控制程序中文详解