测速模块脉冲信号实现能量映射 环法自行车公开赛体验装置

  环法自行车公开赛体验装置

参数说明

使用芯片74HC14D
工作电压3.3V - 5V
输出模式数字信号(脉冲信号)
检测方式红外射线中断
检测信号探测到障碍物为高电平,无障碍物或超出探测范围输出低电平
LED两路Status指示灯,射线中断指示灯灭,射线导通指示灯亮

接线方式:
1. +5
+5 为电源正极输入口,可接入 3.3V~5V 的电压
2. GND
GND 为电源负极输入口
3. OUT
OUT 为信号输出口,链接 MCU 的 I/O 口,一般接外部中断
注意:Arduino 玩家应该设置 MCU 的 I/O 口为输入模式/接收模式,否则无法使用。
其他 MCU,或者更为高级的控制板如 Arm 这些,若需设置 I/O 口为输入输出模式,都必须
设置为输入模式/接收模式,否则无法使用。
51 系列单片机可直接只用,无需设置输入输出模式。

程序设计:
测速模块的 OUT 口链接 MCU 的外部中断口,每当有红外射线导通就是一个外部缓冲。
逻辑设计:
测距离:
测速传感器输出为脉冲信号,一个脉冲中断一次;红外射线导通的时候是低电平,所以我们设置中断为低
电平触法模式。一般码盘上有整数格子,无论是多少格其实原理一样,例如 10 格码盘,也就是有 10 个空
格子,电机转一圈后便是射线导通 10 次,外部低电平触法 10 次;
安装上面的思路,我们的测速传感器就可以发挥出效果了,我们知道一圈就有 10 个中断,于是我们计算中
断次数,得到的总次数除于 10 也就是电机转动次数了,然后按照轮子的周长,计算轮子一圈是多长,就可
以推算出小车已经跑多远了。
测速度:
按照测距离的思路,我们用一个 MCU 定时器计算,1 秒内接收多少个外部中断,例如一秒内接收了 20 个
外部中断,我们就可以判断小车速度为 1 秒小车轮子转两圈,然后再计算出小车轮子的周长,就可得知小
车 1 秒行驶的速度。

测速应用实例:

#include <MsTimer2.h>

unsigned int motor1=0;     //计左电机码盘脉冲值
unsigned int motor2=0;     //计右电机码盘脉冲值
unsigned int speed1=0;     //计左电机速度值
unsigned int speed2=0;     //计右电机速度值
unsigned int k=0;

void flash(){
  speed1=motor1;
  speed2=motor2;
  motor1=0;         //重新定义motor1的值
  motor2=0;        //重新定义motor2的值
}

void setup() {
  Serial.begin(9600);
   attachInterrupt(0, left_motor, RISING);  
  attachInterrupt(1,right_motor,RISING);
  MsTimer2::set(1000, flash);    // 中断设置函数,每 500ms 进入一次中断
  MsTimer2::start();        //开始计时
}

void loop() {
    Serial.print("left motor:");
    Serial.print(motor1);
    Serial.print("right motor:");
    Serial.println(motor2);
}

void left_motor()    //触发函数
{
  motor1++;    
}

void right_motor()    //触发函数
{
  motor2++;    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RANGESLAB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值