直流马达驱动芯片程序

SA8301是为消费类产品,玩具和其他低压或者电池供电的运动控制类应用提供了一个集成的电机驱动器解决方案。

SA8301引脚图:

clip_image002

其它马达驱动芯片都差不多。

原理图如下:

clip_image004

通过一个采样电阻检测马达电流,堵转时停止马达。

clip_image006

clip_image008

实际工作状态为前进-刹车-停止,后退-刹车-停止。

刹车是为了释放马达内存储的能量。

程序如下:

void CloseDoor()

{

ADCON0=1;

INA=1;

INB=0;

MotorSta=1;

OverCurrentCnt=0;

}

void OpenDoor()

{

ADCON0=1;

INA=0;

INB=1;

MotorSta=2;

OverCurrentCnt=0;

}

马达运行时打开AD检测。

void CheckMotorCurrent()

{

if(Flag_10ms)

{

Flag_10ms=0;

if(MotorSta)

{

VAD_Value=GET_ADC_DATA(0);

if(VAD_Value>130)//电流大于300mA

{

OverCurrentCnt++;

if(OverCurrentCnt>=5)

{

OverCurrentCnt=0;

INA=1;

INB=1;

MotorSta=3;

}

}

else

{

if(MotorSta==3)

{

if(VAD_Value<20)

{

INA=0;

INB=0;

MotorSta=0;

OverCurrentCnt=0;

}

}

}

}

}

}

10ms检测一次马达电流,马达电流超过堵转电流5次时,进入刹车状态,刹车状态电流小于或接近0时,进入待机状态

© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发