米思齐Mixly 光耦测速模块,计数,小车测速

6 篇文章 0 订阅
1 篇文章 0 订阅

        光耦模块型号还是挺多的,主要是区分,未触发高电平还是低电平,这涉及到代码的逻辑 。型态不同是方便用在不同的地方。

        想图片里面这两个左边的是未触发高电平,右边的是未触发低电平。这里我们选用未触发高电平的作为演示。

 

         光耦听到最多的应该是给小车测速,配合测速码盘,实际原理就是算物体通过的个数,就像游戏机可以计算你投了几个游戏币一样,我们可以看到下面的测速码盘的结构,一圈有20个空洞,这样就可以计算出,转了多少圈,从而引出其它的数值。

        那为了更好的理解我们就先制作一个计数器,改个封装其实就是投币器,可以记录(投币)个数 。

        主要这样不要让它重复触发,等通过之后再能+1。

        所以这里要设置个中断,触发会发出低电平,所以一开始就是一个下降沿,进入函数后再次判断,如果不满足数字输入引脚为高电平(意思就是物体还没通过呢遮挡着)则为条件真,执行里面的函数,但是这里面啥也没有,就是这个时候啥也不做。要是不满足条件就跳过函数执行i++。如此循环

 

        好了理解好计数后,测小车就简单了,前面我们提到,测速码盘,一圈是20个孔,除于20就能得到小车轮胎圈数,(那单有圈数也算不了时间呀) ,对!那还记得速度公式吗,差个什么?时间!我们设个定时器,比如1秒,再测量出轮胎的周长,在一秒内,轮胎周长 X 圈数,就是一秒能走的距离(当然忽略了摩擦打滑)。这样就能得出速度,路程除于时间。

        我使用的轮胎半径为32.5mm

        定时器最后运行一定要 i 赋值为0,不然一直加的,我们这里算的是一秒内的,时间都是可改的。

        注意上面的声明那里 改成了 小数!!!,不然数值就是不对的,这个不是计数,当然需要小数。

效果就不演示了,小车的码盘不见了 

使用Arduino编程可以方便地实现两个槽型光耦测速模块的程序。以下是一般的编程思路: 1. 首先,需要确定Arduino板的型号和引脚分配,根据硬件规格书连接两个槽型光耦测速模块,并根据需要连接其他传感器和执行器。 2. 在Arduino IDE中创建一个新的Arduino程序。在程序中包含以下库文件: ``` #include <Arduino.h> ``` 3. 在程序中定义两个光耦引脚的输入引脚,例如: ``` #define LEFT_SENSOR_PIN 2 #define RIGHT_SENSOR_PIN 3 ``` 4. 在程序中使用attachInterrupt()函数或者定时器来采集光耦输出信号的变化,并计算出物体的速度。例如,可以使用attachInterrupt()函数来实现: ``` volatile unsigned long left_count = 0; volatile unsigned long right_count = 0; void left_isr() { left_count++; } void right_isr() { right_count++; } void setup() { pinMode(LEFT_SENSOR_PIN, INPUT); pinMode(RIGHT_SENSOR_PIN, INPUT); attachInterrupt(digitalPinToInterrupt(LEFT_SENSOR_PIN), left_isr, RISING); attachInterrupt(digitalPinToInterrupt(RIGHT_SENSOR_PIN), right_isr, RISING); } void loop() { unsigned long left_speed = left_count * 1000 / 50; // 50ms采样周期 unsigned long right_speed = right_count * 1000 / 50; // 50ms采样周期 Serial.print("Left speed: "); Serial.println(left_speed); Serial.print("Right speed: "); Serial.println(right_speed); left_count = 0; right_count = 0; delay(50); } ``` 5. 根据实际需求,将速度数据输出到显示屏、串口、网络等不同的接口。例如,可以使用Serial库函数将速度输出到串口: ``` Serial.begin(9600); ``` 6. 最后,上传程序到Arduino板中,启动程序并观察输出结果。可以通过串口监视器等工具来查看速度输出结果。 需要注意的是,编程前需要先了解Arduino板的引脚分配和库函数的基本使用方法,同时,也需要根据实际需求进行适当的优化和调试,以确保系统的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值