UDN2916LB是SANKEN公司推出的一款两相步进电机双极驱动集成电路芯片,能够驱动双绕组双极步进电机,适用的电机电压范围为10~45V,逻辑电压不能超过7V;通过内部脉宽调制控制器(PWM)可实现最大750mA的输出电流;内置1/3和2/3分割器;逻辑输入实现1相/2相/W1-2phase激励模式;内置过热和交叉电流保护功能;内置防止低压误操作等保护功能。UDN2916LB内部结构如图所示,芯片有两组电路构成,每组电路由PWM控制器、电桥及辅助电路组成。
本实验通过控制步进电机以半步八拍的方式转动,学习步进电机的原理与引用。接线为步进电机接M_OUT,P1–P1.0,P2–P1.1,I01–P1.2,I02–P1.3,I11–P1.4,I12–P1.5。
/**************************************
> File Name: 四线双极性步进电机
> Author: pengshp
> Mail: pengshp3@outlook.com
> Date: 2015年 7 月 26 日
***************************************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit PH1=P1^0;//A线圈电流控制
sbit PH2=P1^1;//B线圈电流控制
sbit T01=P1^2;//UDN2916电流控制
sbit T02=P1^3;
sbit T11=P1^4;
sbit T12=P1^5;
void Delay(uchar t)//延时函数
{
uchar a;
while(t--)
{
for(a=70;a>0;a--);
}
}
/*半步八拍节拍控制函数*/
void Step()
{
/*A/ A拍反向电流*/
PH1=0;//PH1为0,A组线圈为反向电流
T01=0;//以最大电流输出
T11=0;
PH2=1;//PH2为1,B线圈为正向电流
T02=1;//关闭电流输出
T12=1;
Delay(2);
/*A/B AB拍,A为反向电流,B为正向电流*/
PH1=1;//PH1为1,A组线圈为正向电流
T01=0;//以最大电流输出
T11=0;
PH2=1;//PH2为1,B线圈为正向电流
T02=1;//关闭电流输出
T12=1;
Delay(2);
/*B B为正向电流*/
PH1=0;//PH1为0,A组线圈为反向电流
T01=1;//关闭电流输出
T11=1;
PH2=1;//PH2为1,B线圈为正向电流
T02=0;//
T12=0;
Delay(2);
/*AB AB都为正向电流*/
PH1=1;//PH1为1,A组线圈为正向电流
T01=0;//以最大电流输出
T11=0;
PH2=1;//PH2为1,B线圈为正向电流
T02=0;//以最大电流输出
T12=0;
Delay(2);
/*A A为正向电流*/
PH1=1;//PH1为1,A组线圈为正向电流
T01=0;//以最大电流输出
T11=0;
PH2=1;//PH2为1,B线圈为正向电流
T02=1;//关闭电流输出
T12=1;
Delay(2);
/*AB/ A为正向电流,B为反向电流*/
PH1=1;//PH1为1,A组线圈为正向电流
T01=0;//以最大电流输出
T11=0;
PH2=0;//PH为0,B线圈为反向电流
T02=0;//以最大电流输出
T12=0;
Delay(2);
/*B/ B为反向电流*/
PH1=1;//PH1为1,A组线圈为正向电流
T01=1;//关闭电流输出
T11=1;
PH2=0;//PH2为0,B线圈为反向电流
T02=0;//关闭电流输出
T12=0;
Delay(2);
/*A/B/ AB都为反向电流*/
PH1=0;//PH1为0,A组线圈为反向电流
T01=0;//以最大电流输出
T11=0;
PH2=0;//PH2为0,B线圈为反向电流
T02=0;//以最大电流输出
T12=0;
Delay(2);
}
void main()
{
while(1)
{
Step();
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/qq_22512533/article/details/47065777