电子秤称重传感器采集芯片ADS1232电路图和程序
项目上要用到称重传感器,关于ADC最终决定使用ADS1232,参考电压使用输出5V的REF5050,单片机使用STM32F103,称重传感器使用几百块一个的HBM,豪华的搭配,因为不需要考虑成本,必须稳定可靠,电路图:
ADS1232驱动起来很简单,看时序图:
可以看到,先等待DOUT引脚变为低电平就可以发送24个时钟读取数据了。读完发送第25个时钟把DOUT置高然后继续等待,代码:
unsigned long ADS1232Read()
{
uint8_t i;
uint16_t timeout=0;
unsigned long ADValue=0;//
GPIO_SetBits(GPIOB, GPIO_Pin_15);//PDWN=1打开转换
delay_ms(1);
while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13)&&(timeout<1000)) //等待数据准备好
{
timeout++; Delay_us(600);
}
if(timeout>=1000)//超时
{
GPIO_ResetBits(GPIOB, GPIO_Pin_15);timeout=0; return 0;
}
else
{
for(i=0;i<24;i++)
{
ADValue<<=1;
GPIO_SetBits(GPIOB, GPIO_Pin_14); //SCLK=1
__NOP();__NOP(); //1
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13)==1)
ADValue|=0x00000001;
GPIO_ResetBits(GPIOB, GPIO_Pin_14); //SCLK=0
__NOP();__NOP(); //1
}
GPIO_SetBits(GPIOB, GPIO_Pin_14); //SCLK=1
delay_ms(1);
GPIO_ResetBits(GPIOB, GPIO_Pin_14); //SCLK=0
delay_ms(1);
// GPIO_ResetBits(GPIOB, GPIO_Pin_15); //PDWN=0关闭转换 进入待机模式
return ADValue&0xfffffff0;
}
}