使用TB6600驱动器控制42步进电机的单片机方案

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();
}

作者:GrassFishStudio

物联沃分享整理
物联沃-IOTWORD物联网 » 使用TB6600驱动器控制42步进电机的单片机方案

发表回复