该部分为小车所有运动的根源。
电机不能直接又数字信号1和0接两端而产生运动,需要通过PWM对电机进行控速。我需要PWMA和PWMB对每一侧电机进行控制。
PWM速度控制系统通过脉宽调制器对大功率晶体管的开关时间进行控制,将直流电压转换成某种频率的方波电压,并通过对脉冲宽度的控制,改变输出直流平均电压的自动调速系统。
生成PWM信号在我的理解就是生成正弦信号,让电机产生交流电,从而导致电机运动,如下图所示:
P2=0XC0; TMOD=0X01; TH0=0XFC; TL0=0X66; TR0=1; ET0=1; EA =1;
2、产生PWM信号(左右相同,只展示其中之一)
void pwm_out_right_motor(void){ if(Right_PWM_ON) { if(pwm_val_right<=push_val_right) { Right_motor_pwm=1; } else { Right_motor_pwm=0; } if(pwm_val_right>=20) pwm_val_right=0; } else { Right_motor_pwm=0; }}
3、主运动控制
void run(void){ //×óµç»úÇ°½ø Left_motor_go = 1; Left_motor_back = 0; push_val_left=10; Right_motor_go=1; Right_motor_back=0; push_val_right=10; return;}
其中,单片机端口位置如下:
[1]脉冲宽度调制
[2]PWM速度控制工作原理
联系客服