SA8301是为消费类产品,玩具和其他低压或者电池供电的运动控制类应用提供了一个集成的电机驱动器解决方案。
SA8301引脚图:
其它马达驱动芯片都差不多。
原理图如下:
通过一个采样电阻检测马达电流,堵转时停止马达。
实际工作状态为前进-刹车-停止,后退-刹车-停止。
刹车是为了释放马达内存储的能量。
程序如下:
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
喜欢就支持以下吧