TA的每日心情 | 开心 2014-6-8 11:09 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
|
一.H桥驱动逻辑控制
驱动电机时,保证H桥上两个同侧的三极管不会同时导通非常重要。如果三极管Q1和Q2同时导通,那么电流就会从正极穿过两个三极管直接回到负极。此时,电路中除了三极管外没有其他任何负载,因此电路上的电流就可能达到最大值(该电流仅受电源性能限制),甚至烧坏三极管。基于上述原因,在实际驱动电路中通常要用硬件电路方便地控制三极管的开关。
死区就是在上半桥关断后,延迟一段时间在打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁,这段延迟时间就是死区.
上图为IRS21867S输入时序图。PWM波在逻辑控制输入延时一段时间后输入。
电机驱动板引脚对应表如下:
引脚
| 功能
| 第二功能
| 备注
| PA9
| PWM调速
| OC2
| 与PA11不能同时打开
| PA11
| PWM调速
| OC4
| 与PA9不能同时打开
| PA8
| 逻辑输入
| | 延时后输入PWM波
| PA10
| 逻辑输入
| | 延时后输入PWM波
| 程序设计:
电机顺时针转动:
void MotorLeft(int speed)
{
if(speed >= MAXSPEED || speed<MINSPEED)
return;
if(MotorDirection==RIGHT||MotorDirection==STOP)
{
MotorDirection = LEFT;
TIM_Cmd(TIM1, DISABLE);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
delay_us(10);
GPIO_ResetBits(GPIOA,GPIO_Pin_10);
delay_us(10);
TIM_CCxCmd(TIM1,TIM_Channel_2,DISABLE); //ÉÏÇÅʧÄÜ
TIM_CCxCmd(TIM1,TIM_Channel_4,ENABLE); //ÏÂÇÅʹÄÜ
TIM_SetCompare4(TIM1,speed);
TIM_Cmd(TIM1, ENABLE);
}
else if(MotorDirection == LEFT)
{
TIM_Cmd(TIM1, DISABLE);
TIM_SetCompare4(TIM1,speed);
TIM_Cmd(TIM1, ENABLE);
}}
二. 编码器
型号:HKT3004-301C1
硬件连接:
地同侧输入接B相,5V同侧接A相。
在STM32中高级定时器有正交编码功能,配置定时器为正交编码模式可以测量编码器输出的正交方波频率,从而可以得到电机实时速度。
void Encoder_Configuration(void)
{
GPIO_InitTypeDef gpio;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);
gpio.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_4;
gpio.GPIO_Speed = GPIO_Speed_2MHz;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
gpio.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB,&gpio);
TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12,
TIM_ICPolarity_Falling, TIM_ICPolarity_Falling);
TIM_Cmd(TIM3,ENABLE);
}
另外配置一个定时器,每20ms测量一次定时器数值。 |
|