基于51单片机跑步机脉搏心率检测霍尔测速设计
1、系统功能介绍
- 系统构成:
- 本设计由STC89C52单片机电路+脉搏/心率传感器电路+LM393比较器电路+霍尔测速电路+电机控制电路+LCD1602显示电路+电源电路组成。
- 系统功能:
- 1、使用LCD1602实时显示脉搏/心率值和速度值。
- 2、通过脉搏/心率传感器检测脉搏/心率值。
- 3、通过霍尔传感器检测电机转速。
- 4、可以通过电位器调节电机转速,模拟跑步机调速。
2、资料下载
- 资料下载:https://download.csdn.net/download/qq_39020934/89666091
- 包含程序源码、电路图源文件、器件清单、器件资料、参考论文、开题报告、任务书等
- 更多设计视频:https://space.bilibili.com/3537120073353692
3、系统电路介绍
3.1、51单片机最小系统电路设计
-
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
-
单片机最小系统电路图如下图所示
-
-
实物图:
-
3.2、LCD1602液晶显示模块电路设计
- LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。
LCD1602采用标准的14脚,其接口的引脚说明如下:
- (1)第1脚:VSS为地电源。
- (2)第2脚:VDD接5V正电源。
- (3)第3脚:V0为液晶显示器对比度调整端。
- (4)第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
- (5)第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
- (6)第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
- (7)第7~14脚:D0~D7为8位双向数据线。
- (8)第15~16脚:空脚
电路原理图:
实物图:
3.3、A3144霍尔传感器模块电路设计
*本霍尔传感器模块是基于霍尔元件A3144设计制作的模块,A3144芯片是一种磁传感器,其应用霍尔效应原理,采用半导体集成技术制造的磁敏电路,它是由电压调整器、霍尔电压发生器、差分放大器、史密特触发器,温度补偿电路和集电极开路的输出级组成的磁敏传感电路,其输入为磁感应强度,输出是一个数字电压信号,用它可以检测磁场及其变化,可在各种磁场相关的场合中使用,霍尔器件具有很多优点,它的结构牢固、体积小、重量轻、寿命长、安装方便、功耗低、频率高、耐振动、不怕灰尘、油污、水汽、盐雾等的污染或腐蚀。使用LM393宽电压比较器,通过对霍尔传感器传过来的值和电位器的分压值比较,可以直接输出高低电平,信号干净,波形好,驱动能力强。A3144霍尔传感器模块体积小,灵敏度高,响应速度快,温度性能好,精确度高,可靠性高。
电路原理图:
-
-
实物图
-
3.4、Pulsesensor脉搏心率传感器模块电路设计
- 脉搏心率传感器是用来测试心跳速率的传感器,实质是一款集成了放大电路和噪声消除电路的光学心率传感器。可以通过此传感器开发出和心率有关的互动作品。传感器可以戴在手指或者耳垂上。光电传感器将脉搏信号转换为电信号,此装置需要把手指放在传感器表盘上,光电传感器,此传感器是集成了放大电路和噪声消除电路的光学心率传感器,光电传感器一侧的发光二极管发光,当脉搏跳动时,指尖或者耳垂的动脉血管血容量发生周期性变化,透过指尖的光强度同时发生变化。另一侧的光电三极管将接收到的红外光信号转化为电信号。
电路原理图:
实物图:
4、程序设计
4.1、霍尔测速程序
void Timer1Interrupt(void) interrupt 3
{
TH1 = 0x4C;
TL1 = 0x00;
time_50ms++;
if(time_50ms%2==0) //定时100ms
{
update_flag=1; //更新数据标志置位
}
if(time_50ms%40==0) //定时2S
{
Run_num=Run_ts*15;// 处理转速
Run_ts=0;
}
if(time_50ms%20==0) //定时1S
{
Tiem_S++; //秒时间++
}
}
4.2、LCD1602显示字符串数据
/***********************************************
函数名称:DispStr
功 能:让液晶从某个位置起连续显示一个字符串
参 数:x--位置的列坐标
y--位置的行坐标
ptr--指向字符串存放位置的指针
返回值 :无
***********************************************/
void DispStr(uchar x,uchar y,uchar *ptr)
{
uchar *temp;
uchar i,n = 0;
temp = ptr;
while(*ptr++ != '\0') n++; //计算字符串有效字符的个数
for (i=0;i<n;i++)
{
Disp1Char(x++,y,temp[i]);
if (x == 0x10)
{
break;
}
}
}
4.2、Pulsesensor传感器脉搏心率数据采集
void int0() interrupt 0
{
EX0=0;//暂时关外部中断
if(timecount<8) //当连续两次检测时间间隔小于8*50ms=400ms不处理
{
TR0=1;//开定时器
}
else
{
time[i_i]=timecount*50+TH0*0.256+TL0/1000;//算出间隔时间
TH0 = 0x3c;
TL0 = 0xb0; // 50ms 12M
timecount=0;//50ms计数清零
i_i++;
if(i_i==6)//记录到超过等于6次时间
{
i_i=1;//计数从1开始
displayOK=1; //测得5次开始显示?
}
}
EX0=1;
}