0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用开发板硬件ADC功能进行烟雾数据采集

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-05-31 11:19 次阅读

MQ-2 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2) 。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。 使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。将模拟量转换为数字量的技术我们称之为ADC
本示例采用开发板硬件ADC功能进行烟雾数据采集,STM32F103 拥有 1~3 个 ADC(STM32F101/102 系列只有 1 个 ADC),这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。 STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。

1.硬件设计

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

采用PA0(ADC1_CH0)接口完成烟雾浓度采集。

软件设计

ADC工作频率配置
  根据STM32中文参考手册ADC章节(第155页),ADC的工作时钟不能超过14MHZ。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

ADC模式
  STM32F103开发板有两种转换方式:规则转换和注入转换。规则转换有可同时转换16路通道,但只有一个数据寄存器,所以想完成16路通道同时转换就需要DMA配合使用;注入通道有4个数据寄存器,可同时转换4路通道。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

ADC模式配置

在这里插入图片描述watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

代码生成

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

PA0引脚配置和ADC校准

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

完成一次规则通道转换

u16 Get_Regular_Channelx(u16 ch)
{
	ADC_ChannelConfTypeDef sConfig = {0};
	sConfig.Channel=ch;//通道号

	sConfig.SamplingTime=ADC_SAMPLETIME_239CYCLES_5;//采样周期
	if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)//ADC通道初始化
   {
     Error_Handler();
   }	
	HAL_ADC_Start(&hadc1);//开启ADC
	HAL_ADC_PollForConversion(&hadc1,20);//等待规则通道转换完成
	return HAL_ADC_GetValue(&hadc1);
}

500ms采集一次数据

	Delay_Ms(1);
	time++;
	if(time>=500)
	{
		time=0;
		temp_ad =Get_Regular_Channelx(0);
		printf("AD:%d\r\n",temp_ad);				
	}

ADC常用函数介绍

/**********************在stm32f1xx_hal_adc.c中*********************************************/
HAL_ADC_Start(ADC_HandleTypeDef* hadc); //开启ADC
HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);  //中断方式开启ADC
HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length); //DMA方式开启
//等待转换完成
HAL_StatusTypeDef  HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
uint32_t  HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);//获取数据
//ADC通道配置
HAL_StatusTypeDef  HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc,ADC_ChannelConfTypeDef* sConfig);
uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);//获取状态
/***************************************在stm32f1xx_hal_adc_ex.h中*****************************/
HAL_StatusTypeDef  HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc);//ADC校准
HAL_StatusTypeDef  HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc);//使能ADC,开始注入转换

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • adc
    adc
    +关注

    关注

    95

    文章

    5648

    浏览量

    539423
  • 开发板
    +关注

    关注

    25

    文章

    4426

    浏览量

    93942
  • STM32F103
    +关注

    关注

    33

    文章

    474

    浏览量

    62569
收藏 人收藏

    评论

    相关推荐

    【Aworks申请】高速数据采集系统

    高速的硬件支持,以及高效的嵌入式软件支持,实现数据的高速采集与传输。步骤:基于高速CPU的ARM开发板,嵌入Linux,并且加入AD采集模块
    发表于 07-17 14:43

    【创龙C66x开发板试用体验】+ 能谱仪数据采集、传输及平台搭建(试用结项)

    ,使用示波器测量如下图所示: 由图可以看出ADC1和ADC2成交替触发状态。在ADC采集频率测定后,添加DMA将外设ADC
    发表于 02-21 22:28

    请问ADC12D1800RFRB开发板上的FPGA是负责AD数据采集吗?

    ADC12D1800RFRB开发板上有一块V4的FPGA,请问此FPGA是负责AD数据采集吗?AD数据采集后,此FPGA负责将数据从FMC送
    发表于 03-05 06:25

    采用LabVIEW和声卡的数据采集系统实现

    数据采集、分析与显示功能集中在了同一个开放式的开发环境中。LabVIEW的交互式测量助手 (assistant) 、自动代码生成以及与多种设备的简易连接功能,使它能够较好地完成
    发表于 05-13 09:40

    【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】基于DFRobot TinkerNode NB-IoT 物联网开发板的微型冰箱数据采集

    。在电子发烧友论坛中也多次参与开发板使用,并多次获得好评。2018年本人曾参与试用项目,自制微型冰箱。本次基于微型冰箱硬件进行数据采集。项目计划①根据文档,对DFRobot TinkerNode
    发表于 07-13 10:48

    【大联大诠鼎 Semtech (AcSip) S76G试用申请】基于大联大诠鼎 Semtech (AcSip) S76G开发板的微型冰箱数据采集

    发烧友论坛中也多次参与开发板使用,并多次获得好评。2018年本人曾参与试用项目,自制微型冰箱。本次基于微型冰箱硬件进行数据采集。项目计划①根据文档,对大联大诠鼎 Semtech (AcSip
    发表于 08-10 18:01

    基于STM32开发板实现传感数据采集-DHT11温湿度采集

    STM32F407ZGT6开发板进行项目开发,选用的传感器为常见通用的DHT11温湿度传感器。传感器将采集到的数据传输到STM32(MCU)
    发表于 08-10 07:41

    请问STM32开发板如何实现传感数据采集

    请问STM32开发板如何实现传感数据采集
    发表于 10-28 06:53

    【HaaS 610 Kit 4G 开发板试用体验】A/D数据采集及使用

    HaaS 610 Kit 4G开发板是具有 A/D数据采集功能的,并可由Arduino接口来接入外部的模拟信号,对应的Arduino接口如图1所示。图1Arduino接口 另外,在例程中还配有供用户
    发表于 11-13 00:47

    【HaaS 610 Kit 4G 开发板试用体验】A/D数据采集及使用

    HaaS 610 Kit 4G开发板是具有 A/D数据采集功能的,并可由Arduino接口来接入外部的模拟信号,对应的Arduino接口如图1所示。图1Arduino接口 另外,在例程中还配有供用户
    发表于 11-16 14:48

    ADC数据采集的应用

    摘要本文章基于国信长天M4开发板,讲述了ADC数据采集的应用,祝各位学生蓝桥杯比赛取得好成绩!M4开发板 ADC部分原理图又上图可以看出,
    发表于 01-06 06:12

    实现一个基于小熊派开发板的厨房烟雾监测系统

    重新拿了起来,并想借此写博客的机会,整理一下自己的代码。开发板功能区分布图开发板俯视图我们前面实现了一个厨房烟雾监测系统,还有一点点的欠缺,就是不能通过按键
    发表于 01-11 07:05

    如何利用FET5718核心控制超高速双通道ADC进行数据采集

    再利用FET5718核心控制超高速双通道ADC进行数据采集,并实现动态波形绘制显示,硬件设计需要如何进行资源分配,可以达到显示不丢失
    发表于 11-21 12:10

    【小眼睛科技紫光盘古50K开发板试用体验】+高速ADC数据采集视频

    用了盘古50K开发板和自制的一块ADC采集模块,使用了一块4.3寸的RGB TFT显示屏,屏幕上有一块MCU作为显示驱动,通过SPI接口接收FPGA输出的波形数据。 视频中使用发射源输
    发表于 05-27 11:13

    采用STM32F103硬件ADC功能进行光照强度采集

    光照强度采集ADC方式采集,STM32F103本身自带有硬件ADC功能。将
    的头像 发表于 05-31 11:32 6681次阅读
    <b class='flag-5'>采用</b>STM32F103<b class='flag-5'>硬件</b><b class='flag-5'>ADC</b><b class='flag-5'>功能进行</b>光照强度<b class='flag-5'>采集</b>