网上查到的传感器资料。
5513读与显示程序
//=====================================================================CS5513
***it CS5513_SDO = P3^7;
***it CS5513_SCLK = P3^5;
***it CS5513_CS = P3^6;
//读5513
ulong CS5513_Read(void)
{
uchar i;
ulong temp=0;
CS5513_CS=0;
CS5513_SCLK=0;
for(i=0;i<24;i++)
{
temp<<=1;
CS5513_SCLK=1;
_nop_();
if(CS5513_SDO==1) temp++;
CS5513_SCLK=0;
}
temp&=0xfffff; //取出后20位有效位
CS5513_CS=1;
return (temp);
}
void Display_To_Buff(void)
{
ulong ADC;
float Vin;
uint Weight;
uchar i;
ADC=CS5513_Read();
Vin=(float)(ADC*0.0019073486328125); //放大后的Vin=ADC*Vref/(2的20次方)=ADC*2000mv/(2的20次方)
Weight=(uint)(200*Vin);
for(i=0;i<=5;i++)
{
Ht1621_di***uff
=Weight%10;
Weight/=10;
}
}
void Display(void)
{
uchar i;
for(i=0;i<=3;i++)
{
Ht1621Wr_AllData(10-i*2,Ht1621_Num[Ht1621_di***uff]);
}
for(i=4;i<=5;i++) //后两位为0不显示
{
if(Ht1621_di***uff==0)
{
Ht1621Wr_AllData(10-i*2,Ht1621Tab[Ht1621_di***uff]);
}
else
{
Ht1621Wr_AllData(10-i*2,Ht1621_Num[Ht1621_di***uff]);
}
}
疑问
1、放大与
AD转换部分,我的计算方法对不对?
2、我理解的传感器参数和计算方法对不对?
我计算方法是按灵敏度2mv/v算,5V电压驱动。传感器上放200KG(加托盘)物体,传感器输出应该是10mv电压。经放大与AD转换输出应该是10*100=1v电压。
3、CS5513是20位AD,单片机读到的实际电压=5513的输出ADC*(VREF/220),按传感器线性输出计算,重量=单片机读到的电压Vin*0.2,这样计算不知道有没有问题。
程序运行出来结果还算稳定,不过输出一直让我很迷糊。我估计可能是我计算过程出了问题。
开始传感器加托盘输出是3.391kg,放1KG砝码后输出是3.993kg,这样算才600g
后来我换成输出电压,传感器加托盘输出是17mv.我加上1Kg砝码后输出是20mv。计算后结果也还是600g。