当前位置:首页 > 公众号精选 > 电子电路开发学习
[导读]前言最近利用下班后的时间,使用STM32做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,STM32开发板外加一个PulseSensor传感器就行,这里我选择的是uFUN开发板,又开发了配套的串口上位机,实现数据的解析和显示,运行界面如下:其实Puls...


前言

最近利用下班后的时间,使用STM32做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,STM32开发板外加一个PulseSensor传感器就行,这里我选择的是uFUN开发板,又开发了配套的串口上位机,实现数据的解析和显示,运行界面如下:

其实PulseSensor官方已经配备的了Processing语言编写的上位机软件,串口协议的,界面还蛮好看,只要按照它的通信协议,就可以实现心跳波形和心率的显示。刚好最近学习了Qt,所以就用这个小软件来练手了。

传感器介绍

PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于手指、耳垂等处,利用人体组织在血管搏动时造成透光率不同来进行脉搏测量。传感器对光电信号进行滤波、放大,最终输出模拟电压值。单片机通过将采集到的模拟信号值转换为数字信号,再通过简单计算就可以得到心率数值。

信号输出引脚连接到示波器,看一下是什么样的信号:

可以看出信号随着心跳起伏变化,周期大概为:1.37/2 = 0.685s。计算出心率值为:600 / 0.685 = 87,我的心率在正常范围内(废话!),这个传感器测心率还是可以的。手头上没有传感器的朋友,可以看一下这篇自制心率传感器的教程:手指检测心跳设计——传感器制作篇,这篇文章介绍的使用一个红外发射管和一个红外接收管,外加放大滤波电路,效果还是挺不错的。

AD采集电路的分析

大家在使用ADC接口的时候要注意了,线别插错了。我第一次使用就是测不到电压值,后来用万用表量了一下,才发现是入门指南中引脚功能标示错了,要采集AD电压,输入脚应该接DCIN这个,对应的是PC3-ADC_IN13。如下图。可能是由于原理图版本的迭代,入门指南没有来得及更新吧!手动@管理员 更改一下。

从原理图中可以看出,直流电压采集电路前级采用双T陷波滤波器滤除50Hz工频干扰,后级为运放电路:

关于前级的双T陷波滤波器S域分析,可以参考这篇文章:双T陷波器s域计算分析(纯手算,工程版!)

大学期间学得信号与系统都忘了,所以这部分计算我没有看懂。其实了解电路的S域分析,更有利于理解电路的特性,大家还是要掌握好理论基础。

后面的运放电路,还是大概能看懂的,下面来分析一下直流通路,把电容看作断路:

所有的运放电路分析,就记住两个要点就行了:虚短和虚断。(感觉又回到了大学。。。。)

虚短:理解成短路,运放处于线性状态时,把两输入端视为等电位,即运放正输入端和负输入端的电压相等,即U = U-。

虚断:理解成断路,运放处于线性状态时,把两输入端视为开路,即流入正负输入端的电流为零。

总结一句话:虚短即U =U-;虚断即净输入电流为0。

好了,有了这两把利器,我们来看一下这部分电路的分析,直流通路可进一步简化为:

很明显,可计算出

  1. U = 0.5 * VCC = 1.65v

应用虚短:

  1. U- = U = 1.65v

应用虚断,即没有电流流入运放,根据串联电流相等:

以上三式联立,可得:

  1. Uo = 3.368 - 1.205*Ui

即:

  1. Ui = 3 - 0.83 * Uo

只要得到单片机采集到的电压值Uo,就可以反推出实际的传感器电压值Ui。

通过使用示波器测量Ui和Uo的波形,近似可以认为是反向的,但是明显可以看出,Uo的峰值比Ui的峰值小一点。

而且通过绘制 Ui=3-0.83*UoUi=3.3-Uo的曲线,也可以看出,两条直线几乎重合,即输入和输出近似为反向。

DMA简介

DMA,即直接存储器,用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须 CPU任何干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。STM32共有两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。

关于DMA通道和外设的对应,可以查看STM32参考手册,心率传感器使用的PC3-ADC_IN13,对应的是DMA1的通道1

STM32 DMA程序配置

获取ADC通道的电压值主要有两种方式,一种是直接使用ADC,然后在需要使用的地方,先启动AD转换,然后读取AD值。另一种更好的方式是使用DMA方式,就是先定义一个保存AD值的全局变量,而全局变量是对应内存中的一个地址的。只要初始时,把DMA和ADC配置好了,DMA会自动把获取到的AD值,存入这个地址中,我们在需要的时候,直接读取这个值就可以了。

0.定义一个全局变量

必须是全局变量,用于存放AD值。

  1. uint16_t ADC_ConvertedValue;

1.配置GPIO和使能时钟

使能外设对应的时钟,注意时钟总线的不同:

  1. RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

  2. RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);

引脚配置成模拟输入模式:

  1. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

  2. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //设置为模拟输入

  3. GPIO_Init(GPIOC,
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭