目录
一、产品简介
二、具体参数
三、工作原理图
四、编程和标定思路
五、开发板外观图
一、产品简介
此开发板是我司针对于2电极和3电极电化学探头检测不同的气体含量而开发。此开发板支持TTL输出、232输出、485输出,供电方式支持5-12V。此开发板是基于STM32F030F4P6芯片,采用精密运放芯片GS8552采集电化学探头的输出信号,经过算法处理,可以用不同的方式输出。我司提供开发例程,模块,客户可以通过更改部分电路以及例程实现相应的功能。
二、具体参数
参数 | 技术指标 |
输入电源 | 5V/12V DC |
输出方式 | TTL/232/485输出 |
尺寸 | 82mm*35mm*16mm(长*宽*高) |
储存温度 | -25OC -+85OC |
工作温度 | -10OC -+70OC |
重量 | 0.05kg |
三、工作原理图
图一总原理图
如图一所示,这是总原理图,包含降压模块、ADC采集模块、STM32F0303F4P6单片机最小系统模块、485模块、232模块。
图二电源模块
如图二所示,这是基于AMS1117-3.3V的降压电路,可以把输入为5V或者输入为12V的电压转换成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计时器。使用TTL输出时,R01,R02需焊接0R电阻,232模块和485模块不焊,供电电源5V/12V均可;
图五485模块
如图五所示,是基于SP3485的数据传输模块,SP3485是一款3.3V供电、半双工、低功耗,功能完全满足TIA/EIA485标准要求的RS485收发器。SP3485包括一个驱动器和一个接收器,两者均可独立使能与关闭。当两者均禁用时,驱动
器与接收器均输出高阻态。SP3485具有1/8负载,允许256个SP3485收发器并接在同一通信总线上。可实现高达12Mbps的无差错数据传输。SP3485工作电压范围为30-3.6V,具备失效安全(fail-safe)、过温保护、限流保护、过压保护等功能。
使用SP3485模块时,R01,R02不需要焊接,232模块不需要焊接,此时供电电源5V/12V均可。
图六232模块
如图六所示,是基于232芯片的通讯方式。MAX232设备是一个双驱动器/接收器包括一个电容式电压发生器TIA/EIA-232-F单个5V电压电平供应。每个接收器转换TIA/EIA-232-F输入至5伏TTL/CMOS电平每个驱动程序转换TTL/CMOS输入电平转换为TIA/EIA-232-F电平。
使用232模块时,R01,R02不需要焊接,485模块不需要焊接,R08需要焊接0R电阻,R07不需要焊接,此时供电电源应为5V;
四、编程和标定思路
1. 编程思路
1)adc采集
一路adc采集,单片机处理采集到的数据,对采集到的数据进行软件滤波处理,得到一个较为稳定的数值。
2)输出方式
根据不同的输出方式,选择不同方式对应的协议,如485通信,需要用到modbus协议。
2. 标定思路
模拟量和检测气体的浓度有一定的线性关系,根据线性关系,进行零点和满点标定。
3. 参考程序
1)adc采集程序
#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();
MODS_Poll();//485
//Test[0]=dianliutrue>>8;
//Test[1]=dianliutrue;
//USART_SendBuf(test,2); //串口发送/TTL232
delay_ms(100);
}
}
五、开发板外观图
图七开发板PCB图