一、逻辑分析:
1、字车呈Z型逐行移动,将所需打印的平面逐行扫描通过。
2、根据字车的相对位置(单位为step),获取图片数据的的像素值(Pix_Value),再输出到喷头。
3、TIMER IO口输出PWM波,IO口控制方向和使能、需要捕获实时的相对位置,可以通过TIM_IT_CCx溢出来捕获PWM波脉冲。进而来判断当前的位置。
二、STM32的TIMER 分析
1、速度可调:需要随时改变TIMER频率
2、脉冲宽度大于10uS,驱动器决定
3、改变CCER 可以关闭相关通道PWM输出
4、TIM3可以输出4路PWM波形
三、程序实例
配置如下:
由于步进电机采用了专门的驱动芯片thb6064ah,所以现在主要控制thb6064ah的脉冲即可。主要通过四路定时器的配置,设置他们为PWM输出模式,具体的配置见下:
NVIC_InitTypeDef NVIC_InitStructure;
TIM_TimeBaseStructure.TIM_Period = 20000;
TIM_TimeBaseStructure.TIM_Prescaler = 17;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
/* PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 10000;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC4Init(TIM4, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ITConfig(TIM4, TIM_IT_CC4, ENABLE);
TIM_ARRPreloadConfig(TIM4, ENABLE);
四路OCX分别分配到四路通用定时器1,2,3,4;设置四路定时器为PWM中断,主要是通过其控制PWM脉冲个数。定时器周期可以在中断中修改。下面是中断服务历程。主要是实现加减速和脉冲技术功能:
void TIM4_IRQHandler(void)
{
if (TIM_GetITStatus(TIM4, TIM_IT_CC4) != RESET)
{
//TIM4_configure(PWM1_coff[mm++]);
TIM_ClearITPendingBit(TIM4, TIM_IT_CC4);
current_d_num++;
if(current_d_num<motor_d_num)
{
if(current_d_num>30)
motor_d_timer= motor_d_timer-motor_d_set_num;
else
motor_d_timer=motor_d_timer-600;
TIM4->ARR= motor_d_timer;
TIM4->CCR4 = (motor_d_timer)/2;
}
else if(current_d_num>(motor_d_step-motor_d_num))
{
motor_d_timer = motor_d_timer+500;
TIM4->ARR= motor_d_timer;
TIM4->CCR4 = (motor_d_timer)/2;
if(current_d_num==motor_d_step)
{
TIM_Cmd(TIM4, DISABLE);motor_d_step_end=1;
}
}
}
}
变量current_d_num为脉冲计数,通过调节下个脉冲的周期来实现加减速功能。如果脉冲数到则可停止脉冲的发送,这样来控制步长。加减速的机制自己可以设置。