1.IDE:keil
2.设备:保密
3.实验:使用单片机通过普通IO口控制TB6600驱动42步进电机
4.时序图:
TB6600
ENA+、ENA- | DIR-、DIR+ | PUL-、PUL+ | B-、B+ | A+、A- | VCC、GND |
使能电机(直接悬空不接) | 方向 | 脉冲输入(普通IO口模拟即可) | 同组 | 同组 | 看驱动的电机的电压 |
s1-s6根据驱动的电机设置电机驱动板,在下面第二张图里面可以看到
S1-S3设置步进电机的细分:
比如S1-ON,S2-ON,S3-OFF那么Pul输入200个脉冲,电机转一圈,
360度/200=1.8度,一个脉冲,电机转1.8度。
比如S1-ON,S2-OFF,S3-ON那么Pul输入400个脉冲,电机转一圈,
360度/400=0.9度,一个脉冲,电机转0.9度。
S4-S6设置电机的驱动电流:
我们现在使用的42步进电机,驱动电流为1A,所以S4-ON,S5-OFF,S6-ON。(根据使用的电机设置)
42步进电机
供电12V
如何判断是否好坏:
所有线拧在一起,用手转电机,转不动,再把线散开,能转动电机,则证明电机为好的。
如何判断两根线是否为同一组:
一般默认红(A+)黑(A-)为一组,蓝(B+)绿(B-)为一组,但是有些不是的。将四根线,两根两根的拧在一起,转动电机,转动有阻力则为一组,没有阻力则不是一组。
接法:
(1)共阴极:DIR-、PUL-、单片机GND接在一起,DIR+、PUL+接单片机IO口(高电平有效)
(2)共阳极:DIR+、PUL+、单片机VCC接在一起,DIR-、PUL-接单片机IO口(低电平有效)
(3)VCC直流电源正极12V,GND接直流电源负极
(4)A+、A-、B+、B-理论上说只要能保证同一组即可
(5)ENA悬空
部分问题:
(1)脉冲频率不要过高,否则会出现电机响而不转
(2)注意电机负重不要过大
5.步骤:
(1)TB6600图片
(2)42步进电机图片
(该步进电机为红黑一组,本人的步进电机为黑绿一组(相邻且有排子),具体情况按上述说明测试)
6.代码:
/*
*一个脉冲(无细分下转动1.8度)
*/
void Step_Run_OnePulse(void)
{
Pulse_High;
Delay_ms(20);
Pulse_Low;
Delay_ms(20);
}
/*
*指定方向转动指定角度
*细分200情况下:转一圈为360/1.8=200个脉冲
*/
void Step_Run_SpecifyAngle(u8 dir,u8 angle)
{
u8 pulse_number=0;
if(dir == Clockwise) //顺时针
Dir_High;
else if(dir == Counterclockwise) //逆时针
Dir_Low;
pulse_number = (u8)((float)angle / 1.8); //得到需要转动到指定角度的脉冲数
for(pulse_number ;pulse_number > 0;pulse_number--)
Step_Run_OnePulse();
}