这2天在修改步进电机的程序,遇到的问题是不能反转,只能正转
- #include "step_motor.h"
-
- void Step_Motor_Run(u8 step,u8 dir,u8 speed,u16 angle,u8 sta)
- //step是节拍数,dir是方向 speed是速度 ganle是角度 sta是运行或停止
- {
- u16 j ;
- u8 i = 0 ;
- if(sta==1)
- {
- if(dir==0) //顺时针转
- {
- //28BYJ-48电机一个脉冲转过的角度:5.625/64,4096个脉冲转1圈
- //90°就是1024个脉冲,angle度对应的脉冲=(64/45)*angle*8
-
- for(j=0;j<64*angle/45;j++)
- {
- for(i=0;i<8;i+=8/step) //step是步进--就是节拍数
- {
- switch(i) //8拍8步
- {
- case 0: MOTOR_IN1=1;MOTOR_IN2=0;MOTOR_IN3=0;MOTOR_IN4=0;break;
- //第一步,A 色=0,其他=1,输入刚好相反
- case 1: MOTOR_IN1=1;MOTOR_IN2=1;MOTOR_IN3=0;MOTOR_IN4=0;break;
- //第二步,A 色=0,B 色=0,其他=1,输入刚好相反
- case 2: MOTOR_IN1=0;MOTOR_IN2=1;MOTOR_IN3=0;MOTOR_IN4=0;break;
- //第三步,A 色=1,B 色=0,其他=1,输入刚好相反
- case 3: MOTOR_IN1=0;MOTOR_IN2=1;MOTOR_IN3=1;MOTOR_IN4=0;break;
- //第四步,A 色=1,B 色=0,B 色=0,其他=1,输入刚好相反
- case 4: MOTOR_IN1=0;MOTOR_IN2=0;MOTOR_IN3=1;MOTOR_IN4=0;break;
- //第五步,A 色=1,B 色=1,C 色=0,D 色=1,输入刚好相反
- case 5: MOTOR_IN1=0;MOTOR_IN2=0;MOTOR_IN3=1;MOTOR_IN4=1;break;
- case 6: MOTOR_IN1=0;MOTOR_IN2=0;MOTOR_IN3=0;MOTOR_IN4=1;break;
- case 7: MOTOR_IN1=1;MOTOR_IN2=0;MOTOR_IN3=0;MOTOR_IN4=1;break;
-
- }
- delay_ms(speed);
-
- }
- }
-
-
-
- }
- else //逆时针转,把上面的switch倒过来
- {
- for(j=0;j<64*angle/45;j++)
- {
- for(i=0;i<8;i+=8/step) //step是步进--就是节拍数
- {
- switch(i) //8拍8步
- {
- case 0: MOTOR_IN1=1;MOTOR_IN2=0;MOTOR_IN3=0;MOTOR_IN4=1;break;
- //第一步,A 色=0,其他=1,输入刚好相反
- case 1: MOTOR_IN1=0;MOTOR_IN2=0;MOTOR_IN3=0;MOTOR_IN4=1;break;
- //第二步,A 色=0,B 色=0,其他=1,输入刚好相反
- case 2: MOTOR_IN1=0;MOTOR_IN2=0;MOTOR_IN3=1;MOTOR_IN4=1;break;
- //第三步,A 色=1,B 色=0,其他=1,输入刚好相反
- case 3: MOTOR_IN1=0;MOTOR_IN2=0;MOTOR_IN3=1;MOTOR_IN4=0;break;
- //第四步,A 色=1,B 色=0,B 色=0,其他=1,输入刚好相反
- case 4: MOTOR_IN1=0;MOTOR_IN2=1;MOTOR_IN3=1;MOTOR_IN4=0;break;
- //第五步,A 色=1,B 色=1,C 色=0,D 色=1,输入刚好相反
- case 5: MOTOR_IN1=0;MOTOR_IN2=1;MOTOR_IN3=0;MOTOR_IN4=0;break;
- case 6: MOTOR_IN1=1;MOTOR_IN2=1;MOTOR_IN3=0;MOTOR_IN4=0;break;
- case 7: MOTOR_IN1=1;MOTOR_IN2=0;MOTOR_IN3=0;MOTOR_IN4=0;break;
-
- }
- delay_ms(speed);
-
- }
- }
-
-
- }
-
- }
- else //sta==0 ,电机停止
- {
- MOTOR_IN1=0;MOTOR_IN2=0;MOTOR_IN3=0;MOTOR_IN4=0;//电机停止
- }
- }
-
复制代码
反复检查程序,也没发现问题啊?版主或者哪位大侠帮手看看? |