实物如上图,STC8H108
原先P1.1悬空,飞了一条线到前面驱动芯片输出脚上。做ADC检测
下面是电机,12V的,现在用5V驱动。
电机驱动芯片是L9110S 电流在800MA左右。正反转(以下情况只考滤反转)
之前产品老是电机堵停烧芯片
ADC参考电压在5.04V
电机接5V负载是4.3V
ADC检测电压在低于4.1左右,停止输出。现在问题是电机正常运行,在不堵转。也会停止输出,时间不定。有时间一两秒就自动停了,有时十几秒
请教大家,是硬件问题,还是软件问题。谢谢
以下是部分代码
#define DC_SOTP 0x033E //停止输出参考电压
#define ADCTIM (*(unsigned char volatile xdata *)0xfea8)
extern void ADC_Init();
sfr ADC_CONTR = 0xbc;
sfr ADC_RES = 0xbd;
sfr ADC_RESL = 0xbe;
sfr ADCCFG = 0xde;
sbit EADC = IE^5;
void ADC_Init()
{
ADCTIM = 0x3f;
ADCCFG = 0x2f;
ADC_CONTR = 0x81;
EADC = 1;
EA = 1;
}
void ADC_Isr() interrupt 5
{
unsigned int ADC_sum=0x00;
ADC_CONTR &= ~0x20;
ADC_sum =ADC_RES;
ADC_sum =(ADC_sum<<8)|ADC_RESL;
if(ADC_sum <= DC_SOTP)
{
ADC_CONTR &= ~0x40; //停止ADC
back = 0; //反转IO口
forward = 0; //正转IO口
ADC_RES=0;
ADC_RESL=0;
}
else
{
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR |= 0x40;
}以下函数在大循环里
if(!forward_key)
{ KeySec = 0;
open_Gear1=0;
forward = 0;
Delay500ms();
back = 1;
Delay500ms();
ADC_CONTR |= 0x40;
}
实物板上没有0.1u