目录
一、产品简介
二、具体参数
三、工作原理图
四、编程和标定思路
五、开发板外观图
一、产品简介
此开发板是我司针对于2电极和3电极电化学探头检测不同的气体含量而开发。此开发板支持USB输出,供电方式支持5V供电或者USB供电。此开发板是基于STM32F030F4P6芯片,采用精密运放芯片GS8552采集电化学探头的输出信号,经过算法处理,可以用USB的方式输出。我司提供开发例程,模块,客户可以通过更改部分电路以及例程实现相应的功能。
二、具体参数
参数 | 技术指标 |
输入电源 | 5VDC/USB供电 |
输出方式 | USB输出 |
尺寸 | 82mm*35mm*16mm(长*宽*高) |
储存温度 | -25OC -+85OC |
工作温度 | -10OC -+70OC |
重量 | 0.05kg |
三、工作原理图
图一总原理图
如图一所示,这是总原理图,包含降压模块、ADC采集模块、STM32F0303F4P6单片机最小系统模块、USB通讯模块。
图二电源模块
如图二所示,这是基于AMS1117-3.3V的降压电路,可以把输入为5V的电压转换成3.3V输出。
图三ADC采集模块
如图三所示是ADC采集模块,使用的是GS8552运放芯片,该GS8552放大器是单电源,微功率,零漂移CMOS运算放大器,放大器提供带宽为1.5MHz,轨对轨输入和输出,单电源操作从2.1V到5.5V。本采集模块支持2电极和3电极电化学气体探头。C是对电极,W是工作电极,R是参比电极。
关于2电极和3电极的修改说明
1)若使用2电极电化学探头,C4应焊接0R电阻,R3应焊接100R电阻;
2)若使用3电极电化学探头,C4应焊接10nF电容,R3应焊接10K电阻。
图四单片机模块
如图四所示,这款单片机是STM32F030F4P6,它的工作电压是2.4V-3.6V,封装是TSSOP,有20个引脚,最大频率是48MHz,具有各种增强型外设和I/O。 有如I2C、SPI和USART等通信接口,以及12位ADC、16位计时器和一个高级控制PWM计时器。供电电源5V或者USB供电均可。
图五USB模块
如图五所示,是基于CH330的数据传输模块。CH330是USB转串口芯片,用于为计算机扩展异步串口,或者将普通的串口设备升级到USB总线。
四、编程和标定思路
1. 编程思路
1)adc采集
一路adc采集,单片机处理采集到的数据,对采集到的数据进行软件滤波处理,得到一个较为稳定的数值。
2)输出方式
此款开发板是通过USB输出的,原理是通过一款串口转USB芯片,让单片机通过串口发送的数据转换成USB输出到上位机如PC机。
2. 标定思路
模拟量和检测气体的浓度有一定的线性关系,根据线性关系,进行零点和满点标定。
3. 参考程序
1)采集程序
#define A 101
u32 caiji[A];
uint32_t ADC_Check(void)//采集处理程序
{
uint16_t i,j,k,h;
u32 ResultI2;
for(i=0;i
{
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
caiji[i]=(uint32_t)ADC_ConvertedValue[i];
for(j=0;j<500;j++)
{;}
}
for(j=0;j
{
for(k=0;k
{
if(caiji[k]>caiji[k+1])
{
ResultI2=caiji[k];
caiji[k]=caiji[k+1];
caiji[k+1]=ResultI2;
}
}
}
ResultI=caiji[(A-1)/2];
ResultI=ResultI*3300;
ResultI=ResultI/4096;
ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);
ResultI1 = ResultI;
return ResultI1;
}
2)标定程序
void Tiaozheng()
{
dianliu=ResultI1;//**ADCcheng/ADCchu+ADCjia;
if(dianliu_0<=dianliu<=dianliu_1)
{
dianliutrue=I1*(dianliu-dianliu_0)/(dianliu_1-dianliu_0);
}
else if(dianliu_1
{
dianliutrue=I1*(dianliu-dianliu_1)/(dianliu_1-dianliu_0)+I1;
}
}
3)主程序
void main()//主程序
{
u8test[10];
ReadInf();
Systick_Init();
InitALL();
GPIO_SetBits(GPIOA,GPIO_Pin_1);//点亮状态灯
while (1)
{
ADC_Check(); //模拟量采集
Tiaozheng(); //标定
Test[0]=dianliutrue>>8;
Test[1]=dianliutrue;
USART_SendBuf(test,2); //串口发送
delay_ms(100);
}
}
五、开发板外观图
图六开发板PCB图