文件名称
传感器编程指南---arduino
更新时间
2021-12-31 08:33:58.0
版本号
v1.0.2
修订人
修改内容
修订时间
颜明杰
版本初始化
2021-12-31 16:33:57.0
相关文档
文档预览
电化学开发板模拟量输出设计指南Ver1.0一、产品简介此开发板是我司针对于2电极和3电极电化学探头检测不同的气体含量而开发。此开发板支持4-20mA输出、0-5V输出、0-10V输出,供电方式支持5/12V。此开发板是基于STM32F030F4P6芯片,采用精密运放芯片GS8552采集电化学探头的输出信号,经过算法处理,可以用不同的方式输出。我司提供开发例程,模块,客户可以通过更改部分电路以及例程实现相应的功能。二、具体参数
参数
技术指标
输入电源
5V/12V DC
输出方式
4-20mA/0-5V/0-10V输出
尺寸
82mm*35mm*16mm(长*宽*高)
储存温度
-25OC -+85OC
工作温度
-10OC -+70OC
重量
0.05kg
参数 技术指标输入电源 5V/12V DC输出方式 4-20mA/0-5V/0-10V输出尺寸 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 计时器。用到的芯片还有DAC7512,单片机通过模拟SPI通信接口与7512芯片通信,控制其输出数字电压值,经差动缩放电路、电流/电压变换电路和功率驱动电路,最后输出恒定电流或者恒定电压。图五 模拟量输出模块如图五所示,是基于TLV2374的运放输出电路,从DAC7512芯片输出的电压值经过电路变化输出电流或者电压。使用4-20ma电流输出和0-5V/0-10V电压输出,模拟量模块改板说明1)使用4-20ma电流输出时,R40需焊接0R电阻,R39不焊,供电电源5V/12V均可;2)使用0-5V电压输出时,R40不需要焊接,R39焊接0R电阻,此时供电电源5V/12V均可,可通过调换R36的阻值改变输出电压;3)使用0-10V电压输出时,R40不需要焊接,R39焊接0R电阻,此时供电电源应为12V,可通过调换R36的阻值改变输出电压。四、编程和标定思路1. 编程思路1)adc采集一路adc采集,单片机处理采集到的数据,对采集到的数据进行软件滤波处理,得到一个较为稳定的数值。2) 输出方式输出方式为模拟量输出,如4-20ma,0-5V,0-10V,模拟量的值可以通过修改DAC7512(u16 DAData)的DAData值来改变。2. 标定思路模拟量和检测气体的浓度有一定的线性关系,根据线性关系,进行零点和满点标定。2. 参考程序1)adc采集处理程序#define A 101u32 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)DAC7512驱动程序#define IO_SYNC_H GPIO_SetBits(GPIOA,GPIO_Pin_5)#define IO_SCLK_H GPIO_SetBits(GPIOA,GPIO_Pin_6)#define IO_DIN_H GPIO_SetBits(GPIOA,GPIO_Pin_7)#define IO_SYNC_L GPIO_ResetBits(GPIOA,GPIO_Pin_5)#define IO_SCLK_L GPIO_ResetBits(GPIOA,GPIO_Pin_6)#define IO_DIN_L GPIO_ResetBits(GPIOA,GPIO_Pin_7)void SetSDAPP(){GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //高速GPIOGPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_7);}void SetSDAOD(){GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //高速GPIOGPIO_Init(GPIOA,&GPIO_InitStructure);}void DAC7512(u16 DAData) //满电压是5000mV 4096分度值{u8 i;u32 temp=DAData;SetSDAPP();IO_SCLK_L;IO_SYNC_L;//启动转换IO_SCLK_H;temp=temp*5000/4096;// /5000*4096输出电压值0-3.3Vif(temp>4095)temp=4095 ;DAData=temp;for(i=0;i<16;i++)//AD7888写入命令与获取数值一次。{if((DAData&(0x8000>>i))>>(15-i)){IO_DIN_H;//启动转换}else{IO_DIN_L;//启动转换}IO_SCLK_L; //下降写入IO_DIN_L;//启动转换;//每次数据移入后,DIN还需要置0真变态IO_SCLK_H;//}IO_SCLK_L; // 这里还需要SCLK置0,更变态,datasheet上却没提IO_SYNC_H;//下次转换必须先置1SetSDAOD();}3)标定程序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;}}4)主程序void main()//主程序{ReadInf();Systick_Init();InitALL();GPIO_SetBits(GPIOA,GPIO_Pin_1);//点亮状态灯while (1){ADC_Check(); //模拟量采集Tiaozheng();DAC7512(dianliutrue)delay_ms(100);}}五、开发板外观图图六 开发板PCB图
公司地址:山东省威海市环翠区高区火炬路221号
售前电话:0631-3792685
售后电话:0631-3792028
关注我们
精讯公众号
精讯云小程序
友情链接
Powered bybeat365中文官方网站©2008-2020 鲁ICP备15041757号-1 威海beat365中文官方网站电子科技有限公司