leoli321 发表于 2009-6-8 16:54:55

我的25A无刷电调PCB也回来了

N沟MOS管IR7831用了6只,P沟MOS管FDS6679Z用了9只,应该有25A吧。速度调节用0-5V模拟信号,带电压保护,双层PCB设计,网上说隔热好./emotion/em007.gif(OK!我坦白,因本人能力有限,小体积大电流的情况下只能用双层PCB了./emotion/em001.gif)。刚回来就急不及待的焊上,焊接时才发现晶振封装有问题(用错层了),没办法,把绿油刮掉继续焊,焊好上电没冒烟,接上ISP能认CPU,应该没画错了。先发上来晒一下./emotion/em006.gif。
顺便问一下,因比较器和AD不能同时使用,如果我在每次换相后再检测AD的话会不会影响电调性能呢?有什么好方法呢?小弟是AVR菜鸟一名./emotion/em023.gif
废话少说,先上图。PCB文件在公司里,回去再发上来

leoli321 发表于 2009-6-8 16:56:24

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_451954.JPG
(原文件名:DSC00291.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_451955.JPG
(原文件名:DSC00293.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_451956.JPG
(原文件名:DSC00287.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_451957.JPG
(原文件名:DSC00288.JPG)

http://cache.amobbs.com/bbs_upload782111/files_15/ourdev_451958.JPG
(原文件名:DSC00289.JPG)

xieshang 发表于 2009-6-8 17:08:23

好像可以自己修改的哦

toy2man 发表于 2009-6-8 20:15:12

哟有制作资料吗? 最大能做到多少A? 楼主说说情况

leoli321 发表于 2009-6-9 13:36:28

电路图是参考本站的,CPU用M48.只用Protel99SE画了PCB(我画PCB从来都不画电路的),这几天休假,明天回公司再发上来吧。IRF7831最大电流21A,FDS6679Z最大-13A,参考成品电调用6只7831、9只6679Z标称是25A,设计时控制电路板和动力电路板分开,如果想加大电流的话可以将两块动力电路板并联,电流能上50A,不过PWM频率要降低一点,不然的话IO口可能会不够力驱动的。电路板尺寸是25*37mm.因设计不是用于航模的,所以用模拟信号控制速度,也可用PPM。电路硬件上昨晚已通过调试。

toy2man 发表于 2009-6-10 07:46:14

请问楼主是参考本站哪个电路图的?

leoli321 发表于 2009-6-10 09:14:56

大体结构是参考这个电路图的http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_452302.jpg
(原文件名:20071251712080.jpg)
这是PCB文件点击此处下载 ourdev_452303.zip(文件大小:43K) (原文件名:bldc.zip)

hesb 发表于 2009-6-10 13:09:11

期待你的成功,等待关注最终测试结果。

toy2man 发表于 2009-6-10 14:32:17

不错啊,我也想搞一个 我觉得你这个可以35A了

af00 发表于 2009-6-10 14:45:36

有么有50A的?

leoli321 发表于 2009-6-10 21:35:09

终于能动了,驱动硬盘电机。只写了同步起动和运行程序。但电机好像慢了点,电源电压12V,电流0.17A.转速才1813转/分钟(用示波器测其中一相的反向电动势为544HZ,除以6步(每个循环),因硬盘电机是9极定子是3的3倍所以再除以3再乘以60秒得1813转,不知这样算对不对)。
测量驱动MOS管的I/O口输出的占空比只有4个是33.3%,其他两个分别是16%左右和40%左右。(同步运行时6个都是33.3%的)
因刚学AVR,边学边写。无奈网上能找到的汇编参考程序太少了,写起来有种想哭的感觉./emotion/em015.gif。不知这样写对不对,有没有更好的写法呢?
.include"m48def.inc"   
.org 0   
rjmp Start
Start:
ldi r30,0b00011111
out ddrb,r30
ldi r30,0b00100000
out ddrc,r30
ldi r30,0b00100111
out ddrd,r30

ldi r30,0b00000011
sts didr1,r30
ldi r30,0b01000000
sts adcsrb,r30
ldi r30,0b00000000
sts acsr,r30
ldi r30,0b00000000
sts adcsra,r30
         
clr r30
out portb,r30
out portd,r30
clr r30
ldi r25,254

moto:
rcall t0   ;开机延时
inc r30
tst r30
brne moto
moto1:   ;同步起动
ldi r30,0b00000011
out portb,r30
ldi r30,0b00000000
out portd,r30
rcall t0

ldi r30,0b00000101
out portb,r30
ldi r30,0b00000000
out portd,r30
rcall t0

ldi r30,0b00001100
out portb,r30
ldi r30,0b00000000
out portd,r30
rcall t0

ldi r30,0b00001000
out portb,r30
ldi r30,0b00100000
out portd,r30
rcall t0

ldi r30,0b00010000
out portb,r30
ldi r30,0b00100000
out portd,r30
rcall t0

ldi r30,0b00010010
out portb,r30
ldi r30,0b00000000
out portd,r30


lop:    ;检测反向电动势
ldi r30,0b00000010;a
sts admux,r30
in r30,acsr
sbrs r30,5
rjmp a0 ;0
rjmp a1 ;1

a0:
ldi r30,0b00000011;b
sts admux,r30
in r30,acsr
sbrs r30,5
rjmp a0b0 ;0
rjmp a0b1 ;1

a1:
ldi r30,0b00000011;b
sts admux,r30
in r30,acsr
sbrs r30,5
rjmp a1b0 ;0
rjmp a1b1 ;1

a0b0:
ldi r30,0b00000100;c
sts admux,r30
in r30,acsr
sbrs r30,5
rjmp a0b0c0 ;0
rjmp a0b0c1 ;1

a0b1:
ldi r30,0b00000100;c
sts admux,r30
in r30,acsr
sbrs r30,5
rjmp a0b1c0 ;0
rjmp a0b1c1 ;1

a1b0:
ldi r30,0b00000100;c
sts admux,r30
in r30,acsr
sbrs r30,5
rjmp a1b0c0 ;0
rjmp a1b0c1 ;1

a1b1:
ldi r30,0b00000100;c
sts admux,r30
in r30,acsr
sbrs r30,5
rjmp a1b1c0 ;0
rjmp a1b1c1 ;1

a0b0c0:    ;输出
rjmp lop

a0b0c1:
ldi r30,0b00000011
out portb,r30
ldi r30,0b00000000
out portd,r30
rjmp lop

a0b1c0:
ldi r30,0b00001100
out portb,r30
ldi r30,0b00000000
out portd,r30
rjmp lop

a0b1c1:
ldi r30,0b00000101
out portb,r30
ldi r30,0b00000000
out portd,r30
rjmp lop

a1b0c0:
ldi r30,0b00010000
out portb,r30
ldi r30,0b00100000
out portd,r30
rjmp lop

a1b0c1:
ldi r30,0b00010001
out portb,r30
ldi r30,0b00000000
out portd,r30
rjmp lop

a1b1c0:
ldi r30,0b00001000
out portb,r30
ldi r30,0b00100000
out portd,r30
rjmp lop

a1b1c1:
rjmp lop

t0:
ldi r29,170
t1:
ldi r28,170
t2:
inc r28
tst r28
brne t2

t3:
inc r29
tst r29
brne t1
ret

.exit

abuzhu 发表于 2009-6-10 21:49:12

看起来不错,就是沉了点……这个用在航模上损失好几十克的重量~~~~~~~~

另外,放下汇编吧,我看你这个风格,再写下去自己就晕倒了……还是用C爽利一点,反正是新学,学个移植性好的。

leoli321 发表于 2009-6-10 22:02:19

【13楼】 abuzhu

能否告诉我怎样写才能把以上程序精简点呢?能给点思路我吗?

leoli321 发表于 2009-6-10 22:08:27

刚查了一下反向电动势的时序图,发觉每相每个循环只有一个周期的反向电动势,所以我12楼的计算方法是错的,应该是544/3*60=10880转/分钟

abuzhu 发表于 2009-6-12 10:00:07

我也没有太好的建议,以下是我写汇编的一些建议,楼主参考:
1、把最常用的寄存器定义一些名称,比如我习惯:R16、R17,R18定义为TEMPA,TEMPB,TEMPC用于临时变量的存放;R19,R20定义为COUNTER1,COUNTER2用于计算循环量;另外R26~R31一般用X,Y,Z或XL,YL等,用于指针;

2、做一个包含文件,把功能寄存器的设定值定义一个变量名,并在包含文件中初始化,在正式的文件中只出现变量名;

3、START那里加个ORG,把它放到0X15之后,中间中断向量部分不用的地方全部用RETI填起来;

4、尽量加注释,否则1个月以后这段程序自己都看不明白了;

leoli321 发表于 2009-6-12 13:22:19

【16楼】 abuzhu
谢谢你的建议,这几天找了本地的几家大型点的书店,但找到的都是用C来编AVR的,我想先学汇编再学C,能告诉我哪能找到AVR汇编的书?

现在电调已能用0-5V电压调速了,就是还有两个问题没解决,一个就是MOS管有点热,个人估计是换相时切换太快MOS管栅极电压来不及泄放完导致上下桥短时间同时导通引起的,回头加个延时试试。还有一个是电机带负载起动不了,要用手拨一下才能转起来,这个才是最伤脑筋的。

yanzaihong 发表于 2011-7-26 00:01:51

楼主厉害!用的是M48吗!

wsn05 发表于 2011-7-26 00:26:58

我想知道lz是怎么测速的?码盘?

bldc2011 发表于 2011-9-16 15:10:21

不错啊,还有潜力

shizhijian 发表于 2011-12-23 21:55:32

...

hsjqsb 发表于 2011-12-24 16:31:40

向楼主致敬

aqqbjguv 发表于 2012-2-9 22:09:44

楼主的电调进步怎么样了
页: [1]
查看完整版本: 我的25A无刷电调PCB也回来了