求助那么多次,来两次前辈的援助吧……关于电调,真心不懂了……
情况说明:电路: 德国人的1.2版电路图
编译环境: avr studio 5
MCU: ATmega8L
电机: 新西达2212 1000KV 电机
问题: 通电后,电机哧哧的响,不转。
已查明的情况: M8供电,VCC接12V电源时:查A+,B+,C+上臂(三极管的基极处),无PWM波。
M8供电,VCC接5V电源时:查A+,B+,C+上臂(三极管的基极处),无PWM波。
M8供电,VCC不接电源时:查A+,B+,C+上臂(三极管的基极处),有PWM波。
三极管使用S9013,不使用芯片,手动检查时:基极接5V,VCC接12V,上臂均能导通。
芯片情况: 因为使用的编程器,无法读出校准字,所以采用内部8M,无效准时钟。产生的PWM波,经过测试,为24KHZ左右。
附程序:
#defineCHAU_ON {TCCR2=0x41;TCCR1A=0x81;} //OC1A通道选通
#defineCHBU_ON {TCCR2=0x41;TCCR1A=0x21;} //OC1B通道选通
#defineCHCU_ON {TCCR1A=0x01;TCCR2=0x61;} //OC2通道选通
#defineCHAD_ON {PORTD=0x00;PORTD|=0x01;} //A下臂通道打开pd0
#defineCHBD_ON {PORTD=0x00;PORTD|=0x02;} //B下臂通道打开pd1
#defineCHCD_ON {PORTD=0x00;PORTD|=0x04;} //C下臂通道打开pd2
void Tpwm_init(void)
{
// T/C1 初始化
TCCR1A=0x01; //暂时不给通道输出,但是已经产生了PWM波,选用快速PWM模式。
TCCR1B=0x01; //匹配时清零,TOP:255
OCR1A=0;
OCR1B=0;
// T/C2 初始化
TCCR2=0x41; //暂时不给通道输出,TOP:255,
OCR2=0; //占空比:用rate调节
}
void PWMC(void) //PWM使能;
{
OCR1A=50;
OCR1B=50;
OCR2=50;
}
void Slave(void) //从机全初始化
{
OSCCAL=0xFF;
DDRB=0x0F;
DDRC=0x00;
DDRD=0x87;
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
}
void Origin(void) //转动程序
{
switch (State)
{
case 0:
CHBD_ON
CHAU_ON
State=1;
break;
case 1:
CHCD_ON
CHAU_ON
State=2;
break;
case 2:
CHCD_ON
CHBU_ON
State=3;
break;
case 3:
CHAD_ON
CHBU_ON
State=4;
break;
case 4:
CHAD_ON
CHCU_ON
State=5;
break;
case 5:
CHBD_ON
CHCU_ON
State=0;
break;
}
}
void delay_us(double us)//微秒级定时
{
TCNT0=0x00;
while(TCNT0<us);
}
void delay_ms(double ms) //毫秒级定时
{
uint j;
while(ms--)
{
delay_us(99);
delay_us(99);
delay_us(99);
delay_us(99);
delay_us(99);
delay_us(99);
delay_us(99);
delay_us(99);
delay_us(99);
delay_us(99);
}
}
void time_Init(void) //定时器0初始化
{
TCCR0=0x02; //系统八分频
}
/*void int1_init(void)
{
MCUCR|=0x08;
GICR |=0x80;
} */
/*SIGNAL(SIG_INTERRUPT1)
{
flag=255;
RL_ON;
while(flag--) ;
State++;
State%=6;
RL_OFF;
} */
int main(void)
{
//sei();
Slave();
time_Init();
Tpwm_init();
PWMC();
//int1_init();
while(1)
{ for (flag=0;flag<200;flag++)
{
delay_ms(1);
}
RL_ON;
Origin();
RL_OFF;
}
}
*************************************************************************************************************************************
请前辈们帮帮我,谢谢啦…… 原理、方向性的东西可以问问,你贴一堆乱七八糟的代码,谁有工夫看?更何况这种问题能靠别人么? 回复【1楼】Clinging 哆拉C梦
-----------------------------------------------------------------------
其实,程序就是让这个电机一步一步慢慢动动……但是不清楚为什么PWM为什么会消失……昨天还遇到过更奇怪的问题,就是单查上臂的P管,给接地,能导通……三极管接5V,能拉低到0……但是两个连起来,给三极管基极接5V……结果管子是通了,但是电压只有1.2V,而且5秒左右就烧了…… 问题解决……
解释原因,供后来人参考:
洞洞板质量问题,部分洞口是通路……
今天重新制作,PWM波无误……
因为编译器编译后的延时函数有问题,所以启动算法,还在尝试中……
页:
[1]