第一次用ATMEGA8最小系统做的PWM机箱风扇调速器
本帖最后由 zslibra 于 2012-11-9 14:42 编辑去片~~
做了一个PWM机箱风扇调速器,用ATMEGA8输出PWM,原来默认的是496HZ左右的PWM频率去控制风扇的话会有“滋滋”的电子噪声,达不到静音的效果。通过改寄存器提升到31.25KHZ,去调制12V,产生12V的PWM去控制机箱风扇就听不到滋滋声,只听到风声了,呵呵。
这个调速器经试用效果还算OK,同时带动5个0.4~0.5A的风扇MOS也不发热。
第一次焊洞洞板,真的焊得想吐~~四针I2C 1602液晶输出接口和6pin编程口是后来加上的,懒得布线了,直接飞线,无视ing。 第一次焊?比我焊的牛逼多了…… 厉害!
“通过改寄存器提升到31.25KHZ”是指控制PWM的基础频率吗?怎么实现,楼主能否多讲讲~~~ 是提高pwm的基础频率。atmega8有三路pwm T/C1可产生两路pwm . T/C2产生一路pwm
第一路寄存器是 TCCR1A TCCR1B,另一路是TCCR2.调整这些寄存器就能得到不同的pwm频率,具体看datasheet
如果你用的芯片是328的话就不用那么麻烦了,arduino playground里就有现成的函数。 来张原理图把,想看看寄存器 wasdpkj 发表于 2012-11-10 23:29 static/image/common/back.gif
来张原理图把,想看看寄存器
寄存器不能从原理图看出来.这东西也很简单,不用原理图的。就是arduino输出5V PWM,经三极管转成10V左右的PWM去推MOS来驱动风扇。
digital pin9,pin10 产生32K频率的寄存器设置:TCCR1A=0xA1; TCCR1B=0x09; zslibra 发表于 2012-11-11 09:37 static/image/common/back.gif
寄存器不能从原理图看出来.这东西也很简单,不用原理图的。就是arduino输出5V PWM,经三极管转成10V左右的 ...
想问下在Arduino中怎么设置寄存器。 nengcai0313 发表于 2012-11-11 20:29 static/image/common/back.gif
想问下在Arduino中怎么设置寄存器。
在setup()函数里面设置就行,寄存器名=数值;
比如说将ATMEGA8digital pin9,pin10 产生32K频率PWM就这样写:
void setup() {
TCCR1A=0xA1; TCCR1B=0x09;}
就OK了 zslibra 发表于 2012-11-11 21:10 static/image/common/back.gif
在setup()函数里面设置就行,寄存器名=数值;
比如说将ATMEGA8digital pin9,pin10 产生32K频率PWM就这样 ...
谢谢!:)
字数补丁.exe 不客气,arduino是开源的,开源的精神是分享! 楼主再加上速度检测功能就完美了。风扇自带霍尔传感器,每转一圈发出两个脉冲。 zslibra 发表于 2012-11-11 21:10 static/image/common/back.gif
在setup()函数里面设置就行,寄存器名=数值;
比如说将ATMEGA8digital pin9,pin10 产生32K频率PWM就这样 ...
以上代码相当于
WGM = 0101
0 1 0 1 --Fast PWM, 8-bit 0x00FF BOTTOM TOP
COM = 10 (Fast PWM)
1 0 --Clear OC1A/OC1B on Compare Match, set OC1A/OC1B at BOTTOM (non-inverting mode)
CS = 001 表示时钟周期等于系统时钟
0 0 1 -- clkI/O/1 (No prescaling)
输出 A 频率: 16 MHz / 255 = 62.5 KHz
输出 B 频率: 16 MHz / 255 = 62.5 KHz
难道楼主用的是8M的系统时钟?
页:
[1]