2009014712 发表于 2011-5-22 17:05:11

关于PWM与电调的问题

各位大侠,我写了一个用avr16单片机产生PWM波的程序,各位高人给看一下这个能启动我们刚到手的中特威电调吗?思路是用外部中断来改变占空比。
/********************************************/
/* 工作频率:内部8M                   *               
* 输   出:PD4输出PWMB,PD5输出PWMA *
*         产生的PWMA,PWMB频率为8M/(1250*2*64)约50HZ,工作区间为10%占空比到22%占空比,
*步进为1.6%占空比,起始占空比为0.5%,起始到工作步进占空比为0.8%   
********************************************/
#include <avr/io.h>
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include "avr/delay.h"
int m;
unsigned int a=6,b=6;
void port_init(void)
{
   cli();
   GIFR |=(1<<6)|(1<<7);
   MCUCR |=0x0a;
   GICR |=(1<<6)|(1<<7);
   PORTA = 0xFF;
   DDRA = 0x00;
   PORTB = 0xFF;
   DDRB = 0xFF;
   PORTC = 0x00;
   DDRC = 0x00;
   PORTD = 0x0c;
   DDRD = 0x30;
   sei();
}
SIGNAL(SIG_INTERRUPT0)//增加占空比

{

    cli();
        if(a>=125)
   {
           m=20;a=m+a;b=b+m;
           if(a>=275)
           {
          a=275;
          b=275;
           }
       }
        else
        {
       m=10;a=a+m;b=b+m;
        }
        OCR1A=a;
        OCR1B=b;
    GIFR |=(1<<6)|(1<<7);
    sei();

}
SIGNAL(SIG_INTERRUPT1)//减少占空比

{

    cli();
        if(a<125)
        {
       ;
        }
   else
   {
       m=20;a=a-m;b=b-m;
   }
   if(a<=125)
   {
        a=125;
        b=125;
   }
}
OCR1A=a;
OCR1B=b;
GIFR |=(1<<6)|(1<<7);
sei();

}
void timer1_init(void)
{
TCCR1A = 0xa2;         //两路PWM,匹配清零
TCCR1B = 0x14;         //相位修正PWM模式,预分频 64
ICR1   = 0x04e2;   //计数上限为1250,11位PWM
}
void main(void)
{
port_init();
timer1_init();
OCR1A=a;         //匹配初值
OCR1B=b;   
while(1)
{
    ;
}
}

kerrwang1982 发表于 2011-5-23 17:45:19

试验才知真相,只看程序是不行的。

前几天我也想这样做,用51,也用M16。

用51的时候,还让电机叫2声,换成m16后,叫都懒的叫了。

不过用PWM调LED光挺管事,调电调麻烦了,也没有成功,麻烦看这个贴子,中间部分的。从13楼开始。

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4706890&bbs_page_no=1&search_mode=4&search_text=kerrwang1982&bbs_id=9999

2009014712 发表于 2011-5-24 20:20:58

回复【1楼】kerrwang1982
-----------------------------------------------------------------------

谢大侠指点我试验过了,电调也是一点反应也没有,我用示波器看过它的PWM波,发现与想要的结果差之甚远也不知是什么原因。

2009014712 发表于 2011-5-24 20:21:30

回复【1楼】kerrwang1982
-----------------------------------------------------------------------

谢大侠指点我试验过了,电调也是一点反应也没有,我用示波器看过它的PWM波,发现与想要的结果差之甚远也不知是什么原因。

2009014712 发表于 2011-5-24 21:31:52

回复【1楼】kerrwang1982
-----------------------------------------------------------------------

多谢大侠指点我已经明白是什么问题了?

-阿发- 发表于 2013-9-8 16:32:52

怎么能用程序通过电调驱动无刷电机呢?我刚刚到手了一套无法让它转起来,迷茫中。。。求大侠指点一二
页: [1]
查看完整版本: 关于PWM与电调的问题