器件连接好线之后,将上述程序烧录到UNO-R3PRO开发板之后,接通电源。打开串口监视器,当码盘计数传感器感测到有冲击信号时,就可以看到转速数据。
HS-S58P 码盘计数传感器
1、介绍 点这里回到目录
码盘计数传感器采用槽型对射光电传感器,它由一个红外发光二极管和一个NPN光电三极管组成,槽宽度为5.9MM。只要非透明物体通过槽型即可触发输出TTL低电平。采用施密特触发器去抖动脉冲,非常稳定,可用于小车测转速,测距离等等应用!
2、原理图 点这里回到目录
3、模块参数 点这里回到目录
引脚名称 | 描述 |
---|---|
G | GND(电源输入负极) |
V | VCC(电源输入正极) |
S | 单片机信号引脚 |
-
供电电压:3.3V / 5V
-
连接方式:PH2.0 端子线
-
安装方式:双螺丝固定
4、电路板尺寸 点这里回到目录
5、Arduino IDE示例程序 点这里回到目录
示例程序(UNO开发板):点击下载
volatile float Val; volatile float time; volatile float Speed; volatile float Speed1; volatile float Val1; void attachInterrupt_fun_CHANGE_2() { count(); } void count() { Val = Val + 1; } void setup(){ Serial.begin(9600); Val = 0; time = 0; Speed = 0; Speed1 = 0; Val1 = 0; pinMode(2, INPUT); attachInterrupt(digitalPinToInterrupt(2),attachInterrupt_fun_CHANGE_2,CHANGE); } void loop(){ //电机测速:20孔码盘,单位转/分 String("转速:") + String(Speed); time = millis(); Speed = (Val / 40) / (time / 60000); Serial.println(digitalRead(2)); }
示例程序(ESP32开发板—基于Python语言,不能用Arduino IDE上传代码):
import machine
import time
def attachInterrupt_func(x):
global val
val = val + 1
pass
val = 0
pin2 = machine.Pin(2, machine.Pin.OUT)
pin4 = machine.Pin(4, machine.Pin.OUT)
machine.Pin(12).irq(handler = attachInterrupt_func, trigger = (machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING))
pin2.value(1)
pin4.value(1)
t = float(0)
speed = float(0)
while True:
t = time.ticks_ms()
speed = (val / 40) / (t / 60000)
print(speed)
6、米思齐 Mixly 示例程序(图形化语言) 点这里回到目录
示例程序(UNO开发板):点击下载
示例程序(ESP32开发板):点击下载
7、测试环境搭建 点这里回到目录
准备配件:
- HELLO STEM UNO R3 开发板 *1
- HELLO STEM UNO EXP1 扩展板 *1
- USB type-c 数据线 *1
- 码盘计数传感器(HS-S58P)*1
- 电机驱动模块(HS-F04P) *1
- PH2.0 3P双头端子线 *2 或 PH2.0 3P端子转杜邦线 *2
电路接线图:
8、视频教程 点这里回到目录
视频教程:点击查看