大型货车超载超速实时检测系统
第四章 模块设计与实现
4.1称重模块设计
侧重模块有硬件和软件部分,硬件部分负责采集货车重量数据、车体倾斜角数据,软件部分负责对数据进行预处理和处理,硬件部分这里不多介绍,主要说软件部分,对预处理数据的处理流程如下:
图4.1 数据处理流程
(1)预处理程序:
/*******************************************************************
2010.6.28定。测重程序:weight.c。
IOA0为串行读入数据位,IAO1为脉冲发送位。
精度:16位,一位符号位。一次连续读出五组转换的数据放在weight[5]中,经观察,前两个数据无效。
****************************************************************/
#include SPCE061A.h
void main()
{
long count[4],weight[4][8],weightA[4];//weightA测量的3到8哥数据的平均值
unsigned int n,k=0,i;
long weightS=0;
*P_IOA_Dir=0x0010;//A1口输出脉冲,A0口输入数据
*P_IOA_Attrib=0x001F;
*P_IOA_Data=0x0000; //设置PD_SCK为低,启动HX711的A/DC和和压力传感器
for(i=0;i4;i++)
for(n=0;n8;n++) //初始化weight[]
weight[i][n]=0;
for(n=0;n4;n++)
weightA[n]=0;
for(i=0;i4;i++)
count[i]=0;
while(k=8) //只读取五个数据,放在weight数组中
{
/等待P_IOA0收到DOUT的第一个低电平,转换完成
while(*P_IOA_Data0x0002) *P_Watchdog_Clear = C_WDTCLR;
for(n=1;n=25;n++) //25个脉冲
{
*P_IOA_Data=0x0010; //上升沿
*P_Watchdog_Clear = C_WDTCLR;
*P_IOA_Data=0x0000; //下降沿
if(n=16) //接收16位
{
for(i=0;i4;i++)
{
count[i]=count[i]1; //左移1位
count[i]=count[i]|((*P_IOA_Data(0x0001i))>>i); //串行接收一位
if(n==1count[i]) //若第一位数据为1,则以负数处理
count[i]=0xffffffff;
}
}
}//for(n=1;n=25;n++) //25个脉冲
for(i=0;i4;i++)
weight[i][k]=count[i];
k++;
for(i=0;i4;i++)
count[i]=0;
*P_Watchdog_Clear = C_WDTCLR;
}//while(k=4),只读取五个数据,放在weight数组中
for(n=0;n4;n++)
{
for(i=2;i8;i++)
weightA[n]=weight[n][i]+weightA[n];
weightA[n]=weightA[n]/7-198;
}
for(n=0;n4;n++)
weightS=weightS+weightA[n];
weightS=weightS/sin(A);//用倾角传感器测量角度
*P_IOA_Data=0x0002; //设置PD_SCK为高,60um,HX711和和压力传感器进入断电状态
return weightA;
}
(2)主程序相关程序流程图
运动前超载处理流程图如图4.2:
相关说明:
标志K
K= -1 静止且不超载
K=0 初次静止超载
K=1 运动超载
K=2 停车后超载
countR 取数据次数
countW, 超载次数
v 车速度
m 车载重量
tR 车启动时间
tS 停车时间
图4.2 运动前超载处理流程图
运动停车后超载处理程序图如图4.3:
运动中超载处理流程图如图4.4:
相关说明:
标志K
K= -1 静止且不超载
K=0 初次静止超载
K=1 运动超载
K=2 停车后超载
countR 取数据次数
countW, 超载次数
v 车速度
m 车载重量
tR 车启动时间
tS 停车时间
图4.3 运动后停车超载处理程序图
图4.4 运动中超载处理流程图小车运动前超载处理程序如下[25]:
称重传感器相关文章:称重传感器原理 倾角传感器相关文章:倾角传感器原理
评论