传感器与检测技术课程设计案例1-简单数显电子秤的设计与生产
文章目录
- 任务目标
- 一、数显电子秤的工作原理
- 二、各模块设计
-
- 1.应变传感器
- 2.信号处理电路
- 3.单片机和AD采样
- 三、模拟和测试
-
- 1.硬件仿真
- 2.实际测试
- 3.改进与优化
- 总结
任务目标
称重技术是广泛应用于工业、农业、交通、贸易和科研领域的重要技术,与社会发展、工业生产和人民生活密切相关。电子秤属于电子衡器,技术水平直接影响生产生活质量和经济效益的发展。
技术指标 | 要求 |
---|---|
量程 | 0-10kg |
分辨率 | 1g |
最大引用误差 | <0.1% |
绝对误差 | <5g |
以下是本文的文本内容,案例可供参考
一、数显电子秤的工作原理
电子秤采用单片机处理系统,通过称重传感器将测量转换为电信号。采样信号处理分析后,采集转换重量信号,采用单片机系统计算分析,最后通过显示设置显示,实现快速方便的重量信息显示。
总体设计方案如下图所示:
二、各模块设计
1.应变传感器
选择10个传感器模块kg量程电阻应变压力传感器,应变压力传感器。实物图和具体技术参数如下图所示。 传感器灵敏度为1mV/V,若电桥的激励电压为10V,满时电压差为10mV,假设电压差与压力传感器受力呈线性关系,则变化率为1uV/g。传感器模块与信号处理电路接线如下:
2.信号处理电路
信号调节电路大致可分为桥路差动放大、跟随器、反向放大、低通滤波四部分。OPA桥式放大器搭建2333,AAD227搭建二级放大器。
原理图 | |
---|---|
首先,通过差动放大,通过差分接获得电桥差值,并将其放大到适当的值。根据芯片数据手册,放大倍数约为100倍 | |
电压跟踪器可作为电路中的隔离器,具有输入阻抗高、输出阻抗低的特点,可防止前后电路干扰。由于芯片的特性,输入电流不得大于20mA,因此,同相端串联15kΩ电阻。电阻不影响放大倍数。 | |
由于前桥产生的差异为负电压,需要连接到反相器,将电压转换为单片机可测量的正电压,并进一步扩大受放大器性能限制的差异放大电路,使测量范围足够大。相反,放大器的放大倍数Au = - ( Rf / Rin ) |
最后放大倍数 = (R2/(R1 350))(IN2-IN1)1(-R7/R6)≈300
3.单片机和AD采样
选择单片机部分STM32F103C8T最小系统板,常用,易于快速编写。 需要收集uv芯片自带的12位级信号ad写作不足以胜任任务的需要SPI通信24位AD模块ADS1256。
驱动程序参考-ADS1256驱动
主程序代码如下(示例):
#include "led.h" #include "delay.h" #include "sys.h" #include "key.h" #include "usart.h" #include "exti.h" #include "ADS1256.h" #define Au 300.0 int KeyState = 0; char str[15],str2[15]; void Delayvu32 nCount)
{
for(; nCount != 0; nCount--);
}
//定时器3 500ms一次中断
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
TIM_ITConfig( //使能或者失能指定的TIM中断
TIM3, //TIM2
TIM_IT_Update ,
ENABLE //使能
);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
TIM_Cmd(TIM3, ENABLE); //使能TIMx外设
}
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
printf(str);
}
}
int main(void)
{
long double vr,vout,vsum,v[50];
unsigned char i=0,j=0;
long ulResult;
long double ldVolutage;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
LEDx=0; //点亮LED
EXTIX_Init(); //外部中断初始化
printf("OK\r\n");
Init_ADS1256_GPIO(); //初始化ADS1256 GPIO管脚
Delay(0x1ffFF);
GPIO_SetBits(GPIOB, GPIO_Pin_11 );
ADS1256_Init();
TIM3_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为500ms
for(i = 0;i < 20;i++) v[i]=0;
while(1)
{
for(i = 0;i < 1;i++)
{
ulResult = ADS_sum( (i << 4) | ADS1256_MUXN_AINCOM);
//ulResult = ADS_sum( ADS1256_MUXP_AIN0 | ADS1256_MUXN_AINCOM);
if( ulResult & 0x800000 )
{
ulResult = ~(unsigned long)ulResult;
ulResult &= 0x7fffff;
ulResult += 1;
ulResult = -ulResult;
}
ldVolutage = (long double)ulResult*0.59604644775390625;
//printf("第%d通道:",(i & 0x07)?(i & 0x07) - 1:7);
//sprintf(str,"%lf\r\n",ldVolutage); //double
//printf("uV\r");
//printf("%x",(unsigned long)ulResult);//16
Delay(0x3fFFF);
}
vsum = 0;
for(i = 1;i < 20;i++)
{
v[i] = v[i-1];
vsum += v[i];
vsum /= 2.0;
}
v[0] = ldVolutage;
vsum += v[0];
vsum /= 2.0;
if(j<20)
{
vr = vsum;
j++;
}
vout = (vsum - vr) / Au;///20.0;
sprintf(str,"%.0lf -> ",vsum);
sprintf(str2,"%.0lf g\r\n",vout);
}
}
//END
滤波算法采用连续采样20个值(小样本)求平均,实际表现效果良好。
三、仿真和测试
1.硬件仿真
仿真时方案放大倍数为240,后实际方案修改为300
桥路输出电压(mv) | 对应物体重量 | 仿真输出电压 |
---|---|---|
0.001 | 1g | 241.999uV |
0.01 | 10g | 2.402mV |
0.1 | 100g | 24.001mV |
1 | 1kg | 239.997V |
10 | 10kg | 2.4V |
2.实际测试
3.改进与优化
a)可以考虑修改成三运放构建差动仪表放大的方案。 b)通过实际测试数据进行拟合提高检测精度。 ……
总结
本文仅仅简单介绍了简易数显电子秤的设计和制作,为后续其他教学项目的开展提供了样本和案例。