使用光电对射传感器模块和码盘对电机进行测速 ---- 基于RT-thread Nano和STM32

一、使用的模块

1.1、光电对射传感器模块

原理图如下:
在这里插入图片描述
其中:
1、VCC 接电源正极 3.3-5V
2、GND 接电源负极
3、OUT(D0) TTL 开关信号输出
原理简单来说就是,当有东西处于槽内,遮挡在发光二极管和接收三极管之间时,模块D0口输出高电平;无遮挡,模块D0口输出低电平。
D0 输出接口可以与单片机 IO 口直接相连,检测传感器是否有遮档,结合电机码盘则可检测电机的转速,这也就是本文光电测速的原理,原理确实很简单 -_- 。
1.2、20栅格光电测速码盘
光电测速码盘的栅格越多,轮子每转一周获得的上升沿或下降沿会更多,当然这样精度更高,下图的只有20格,精度一般。
在这里插入图片描述

二、STM32的配置

由于我们只是检测高低电平的变化,直接用GPIO的上升沿和下降沿触发即可,利用一定时间内触发的次数,就可以知道该时间内轮胎转了多少圈。
STM32CubeMX相配置:

  • 2.1、配置上升沿或下降沿都产生中断,这样的话,我们就能获得轮子更准确的转速。
    在这里插入图片描述

  • 2.2、使能中断
    在这里插入图片描述
    2.3、编写进入中断函数后的操作(参考博客:STM32CubeMX学习教程之二:GPIO输入之外部中断
    如下所示代码,在获取每次上升沿和下降沿的时候,对触发次数进行累加,然后在别处,可以在一个自定义的周期内,读取触发次数,就可以知道轮子的转速,利用这个转速就可以用来反馈控制小车的行动了。

	#define  RightWheelSpeed_PIN  GPIO_PIN_12  //PB12
	#define  LeftWheelSpeed_PIN   GPIO_PIN_13  //PB13

	void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
	{
	    if(GPIO_Pin == RightWheelSpeed_PIN)
		{
		    RightWheelSpeedCount++;
		}
		if(GPIO_Pin == LeftWheelSpeed_PIN)
		{
		    LeftWheelSpeedCount++;
		}
	}
对射光电传感器的安装可以按照以下步骤进行: 1. 首先,根据光电对射传感器模块的原理图,将VCC接到电源的正极,GND接到电源的负极。 2. 将传感器的发光二极管和接收三极管之间设置一个槽,用来检测是否有物体遮挡。 3. 将传感器的D0输出口与单片机的IO口相连,用来接收传感器的输出信号。 4. 如果需要使用光电测速码盘,将码盘安装在需要测速的轮子上。根据需要选择栅格数量,栅格越多精度越高。 5. 在STM32的配置中,设置PB14号口为中断触发口,当挡光片或编码盘经过传感器时,DO输出电平变化信号,触发中断函数。 6. 在中断函数中,执行变量++程序,用来记录转速。 7. 在主循环中调用OLED显示变量,以便实时显示转速。 需要注意的是,具体的安装步骤可能会因传感器型号和使用环境的不同而有所差异。因此,在进行安装之前,建议仔细阅读传感器的说明书,并根据实际情况进行操作。 #### 引用[.reference_title] - *1* [使用光电对射传感器模块码盘电机进行测速 ---- 基于RT-thread Nano和STM32](https://blog.csdn.net/m0_37697335/article/details/103689678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [5.2 对射式红外传感器&旋转编码器计次](https://blog.csdn.net/zhuhongqiana/article/details/129439371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值