5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 6338|回复: 36
打印 上一主题 下一主题

过零检测

[复制链接]
跳转到指定楼层
楼主
发表于 2007-11-7 01:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求助,无刷电调的过零检测

我弄了两个月从热天到冬天,反电动势的过零信号就是检测不到.:em25: :em25: :em25: :em25:
用的LM339N,1/2端电压法,电机是9极4磁铁,单片机轮询.MAGE8
eeprom显示端口无变化.
请哪位大侠指点,感激不尽.
15度开始------停PWM---通持续直流--延时---轮询三端口(LM339输出的三相过零信号端口)---有变化写入EEPROM---无变化继续---45度,更高优先的中断---结束检测恢复PWM.
同相2个47K并联,10K接地,反相47K串联,10K接地.
请指点迷津,
ququbin@avl.com.cn

欢迎继续阅读楼主其他信息

37
 楼主| 发表于 2008-1-28 04:00 | 只看该作者
原帖由 王清华王清华 于 2008-1-27 09:39 发表
你第四点是错的.
4我的电调是得到过零就换相,理论上有30度提前,实际上因为比较器延迟,功率管延迟等,实际的换相提前角应该是小于30度.

换相点在30---60
换相提前角在0-30
36
发表于 2008-1-27 09:39 | 只看该作者
你第四点是错的.
4我的电调是得到过零就换相,理论上有30度提前,实际上因为比较器延迟,功率管延迟等,实际的换相提前角应该是小于30度.
35
 楼主| 发表于 2008-1-27 06:32 | 只看该作者
原帖由 天涯浪子 于 2008-1-24 23:47 发表
请高手指明从上一次换相到检测到过零的时间与下一次换相的时间的关系!

1.我认为是没有关系的
2.有一个唯一的最佳的换相点,用PID控制的目的就是接近这个点,其结果就是精确的步进
3.电调目的是变速,实时响应,较高速时的换相间隔小于400微秒,还要查询过零点,串口通讯,没有多余的时间做PID运算
4我的电调是得到过零就换相,理论上有30度提前,实际上因为比较器延迟,功率管延迟等,实际的换相的在30--60之间变化
5因为换相的的变化,所以两次换相没有关系
6,这种是换相是反馈的相位锁定,调速是开环的PWM
我也只知道这些,欢迎拍砖
34
发表于 2008-1-24 23:47 | 只看该作者

请高手指明从上一次换相到检测到过零的时间与下一次换相的时间的关系!

请高手指明从上一次换相到检测到过零的时间与下一次换相的时间的关系!
33
发表于 2007-12-28 01:54 | 只看该作者
1.比较器是正确的,我的验证方式如下:
   令定时器T2为1024分频,在很低的速度下运行(好几秒才一步),用机械式万用表测3个输出端口.
  可以看到指针的摆动(很规律,对应为高---断---低---断--高).
2比较器电路我用过三种,虚拟中点,中心抽头(好象叫做相电压法,就是用电机中心线与截止相比较)
现在我用1/2端电压法,我不会做图,就描述一下
两相用47K电阻串联,对地10K分压接比较器负端
截止相两个47K电阻并联(得到47K的1/2),对地10K分压接比较器正端
32
发表于 2007-12-3 10:59 | 只看该作者
这样的帖子得留个记号
31
发表于 2007-12-3 10:14 | 只看该作者
呵呵,其实都是大家相互学习一下嘛。我也只是差不多两年前做了一个罢工了。都是在别人的基础上面啦。
能帮则帮,帮不到则学!
30
 楼主| 发表于 2007-12-2 17:58 | 只看该作者
报告大家一个情况
我做的电调可以调速了,占空比50%-90%
以业余水平要求,我的实验成功完成,
接下来的PID调节,那是我无法完成的
再次感谢网友王清华的热心帮助:em14: :em14: :em14: ,好人啊!!!!
也感谢其他网友的关心
谢谢大家!
需要我帮助的朋友,欢迎联系
ququbin@avl.com.cn
29
 楼主| 发表于 2007-11-27 21:23 | 只看该作者

回复 #28 王清华王清华 的帖子

你说得对,我按你的办法,已经得到正确数据,只是其中包含一些干扰产生的数据,导致正确数据也不能用.
目前正在解决中.
28
发表于 2007-11-27 15:12 | 只看该作者
回LZ,你的“60度”是指的电角度。换相只转“30度”是指的机械角度。
照你说,你这个电机换12次相才转一圈。电机转一圈,走了两个循环。
机械30度,其实是电角度60度。

电机转不起来,说实话,你的软件延时不一定正确,你没有验证的。
27
 楼主| 发表于 2007-11-24 20:41 | 只看该作者

回复 #26 王清华王清华 的帖子

1.进入"首次采集"子程序
2.得到第一次过零,启动T1,记录方向,端口.等待第二次过零
3.得到第二次过零,读T1,得到换相时间,存入内存,
由一次和二次得到第3次过零的端口,这样就确定了通电相,重新通电.
依次流程运行,电机停转
只变端口,不变时间,电机进入恒速,但查不到过零.
疑问:
每60度出现一次过零,可9极12磁铁的CD电机每次换相只转30度,它的过零在哪?
请王清华不吝赐教:em14: :em14: :em14: :em14: :em14:
26
发表于 2007-11-24 10:02 | 只看该作者
可以关掉PWM,让他启动就100%工作。其它搞好了再搞PWM。
0.58这个值>换算成角度,有三十多度了,提前角成了延时角了。
电机通过自己的闭环转起来了没有?
25
 楼主| 发表于 2007-11-23 12:53 | 只看该作者
很快得到证实,这个值是错的
首采子程序能通过,正确性无法验证,困扰于PWM的干扰,正在努力解决
还请各位给点建议:em14: :em14: :em14: :em14: :em14: :em14:
24
发表于 2007-11-23 11:44 | 只看该作者
楼上的程序没看过,只是觉得0.58这个参数未必是个固定值
我还没做过无刷电调,但感觉如果程序让我写
最重要的选择过零检测的时机
23
 楼主| 发表于 2007-11-23 00:19 | 只看该作者
有软件高手指点我一下吧!
:em14: :em14: :em14: :em14: :em14: :em14: :em14: :em14: :em14: :em14: :em14:
22
 楼主| 发表于 2007-11-23 00:17 | 只看该作者
我在AVR网站也发了帖,可都没有多少人指点我,郁闷:em20: :em20: :em20: :em20:
过零点位置在每个相序的0.58左右,可是按这个数据算出来不行,为什么?:em12: :em12: :em12: :em12:
检测程序如下,谁来指点,先谢了;
1.在断电状态下进入
2,结束时,得到通电相序,重新通电(,这就是闭环的相序,过零点可见的那种)
3,过零检测在另一子程序进行,
4此子程序称为"首次采集",只进行一次

soucai:
sbrc r25,0          ; 判断标志寄存器R25;--------,有标志,返回
ret
lds r16,tfch
cpi r16,0xb0
brsh soucai00
ret
;************
soucai00:
lds r16,js_l
dec r16
breq soucai000
sts js_l,r16
ret
soucai000:
ldi r16,0x05
sts js_h,r16        ;;软滤波4次
cli    ;检测不到,允许中断
clr r20
out tcnt1h,r20
out tcnt1l,r20
clz                 ;首采
in r16,pinc         ;读端口
;逻辑与,屏蔽其他端口
andi r16,0b00011100                ; 逻辑与,屏蔽其他端口
soucai01:
mov r18,r16
in r17,pinc
andi r17,0b00011100
eor r18,r17           ;逻辑异或,检验是否相同
breq soucai01       ;  相同结果为0,则z=1,r17=r18,无过零
;判断标志*********
rcall jisuq        ;软滤波
sbrs r25,2
rjmp soucai01
;===================
ldi r16,0x05
sts js_h,r16            ;软滤波4次
;*****************
;判断标志*********
sbrc r25,1           ;首次过零,标志0
rjmp soucai03          ;标志1,二次过零
clr r16
out tcnt1h,r16
out tcnt1l,r16
ldi r16,0b10000001    ;1
out tccr1b,r16  ;T1启动
set     
bld r25,1               ;标志写1
;r18和r17进行逻辑与,判断方向
mov r19,r18       ;保存数据
clz
and r18,r17
breq soucai02        ;结果为0,z=1
set
bld r20,5         ;上升沿脉冲,1与1=1,z为0,标志记1,否则为0
soucai02:
in r16,pinc
andi r16,0b00011100      
rjmp soucai01
;*********************
soucai03:
;写标志*********
set
bld r25,0         ;完成首采,写1
clt
bld r25,1
;********
eor r18,r19         ;异或后,R18的234位为0的是下一过零端口
add r18,r20      ;与r20 相加后,r18的5432位决定了相序和方向
;判断
cpi r18,0b00111000 ;ac  0x85
breq ztai01
cpi r18,0b00110100 ;cb  0x99
breq ztai02
cpi r18,0b00101100  ;ba  0x8f
breq ztai03
cpi r18,0b00011000  ;ca  0x94
breq ztai04
cpi r18,0b00010100  ;bc  0x8a
breq ztai05
cpi r18,0b00010100   ;ab  0x80
breq ztai06
;=============
ztai01:
ldi r30,0x85
rjmp soucai04
ztai02:
ldi r30,0x99
rjmp soucai04
ztai03:
ldi r30,0x8f
rjmp soucai04
ztai04:
ldi r30,0x94
rjmp soucai04
ztai05:
ldi r30,0x8a
rjmp soucai04
ztai06:
ldi r30,0x80
rjmp soucai04
soucai04:
rjmp fxd
;************************
jisuq:      
lds r16,js_h
dec r16
breq jisuq00
sts js_h,r16
ret
jisuq00:
set
bld r25,2
ret
在后来的实验中,这段程序被证实是多余的
大家不要被误导
:em19: :em19: :em19: :em19: :em19:

[ 本帖最后由 ququbin 于 2007-12-2 18:01 编辑 ]
21
发表于 2007-11-21 13:12 | 只看该作者
顶,我也准备做
20
 楼主| 发表于 2007-11-17 02:29 | 只看该作者
搜索"dsPIC30F 在无传感器BLDC 控制中的应用"

[ 本帖最后由 ququbin 于 2007-11-17 02:30 编辑 ]
19
发表于 2007-11-16 15:50 | 只看该作者
各位大虾。有电压过零检测这方面的资料吗?我也有一样的困惑,我现在在开发电调
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表