测试光流传感器速度特性

简 介:

关键词 光流传感器输出范围

光流传感器
目 录
Contents
背景介绍
测量方法
测量相对运动
总结
测量程序和数据

§01 流传感器


一、背景介绍

  在光流传感器初步测试:GL9306中对于光流传感器进行了初步测试。有一个问题: 传感器输出与相对速度之间是否是线性? 最大的测量速度是否有上限?

  GM1657872079_1280_800.MPG| -2-

二、测量方法

1、测试方法

  为了测试光流传感器上述特性, 使用一个直流电机带动一个转盘转动。 放在光流传感器上面产生相对运动。

  GM1657872386_1280_800.MPG| GM1657872512_1280_800.MPG| *

2、直流电机

  直流电机接口, 具有磁编码器输出。 这里给出了6PIN接口功能定义。

  -3-
  给电机施加不同直流电压, 电机就会以不同的转速 运行。 这是点击后面的磁编码器的输出波形。 速度脉冲的频率可以通过万用表测量得到。

  GM1657873696_1280_800.MPG| GM1657873733_1280_800.MPG| GM1657873841_1120_699.MPG|
  下面首先测量一下电机电压与磁编码器之间的关系。 这是测量结果, 可以看到电压与速度之间基本上是线性关系。 经过线性拟合,这个线性关系为:f=200*v-74.3

  GM1657874017_1280_800.MPG| -3-

三、测量相对运动

  将光流传感器放置在旋转红色隔热棉前面, 距离大约 5 个厘米。 应用 MicroPython 实验板读取光流传感器的输出。 编程显示光流传感器输出的x,y方向的移动速度。 由于转盘是圆周运动, 可以看到x,y两个方向上面的运动分量。

  GM1657876149_1280_800.MPG| GM1657876406_1280_800.MPG| * GM1657876678_1280_800.MPG| -2-
  调整光流传感器与旋转盘的距离,可以看到光流传感器输出数值的变化。 虽然转盘转速没有变,但距离的变化使得相对运动速度发生了改变。

  GM1657877187_1280_800.MPG| GM1657877235_1280_800.MPG|
  增加电机供电电压,提高转盘旋转速度,可以看到,光流传感器输出的最大值不超过28。特别是速度很高的时候,光流传感器输出的数值明显出现跳动。

  GM1657877345_1280_800.MPG|
 

结 ※


一、测量程序和数据

  通过实验检查光流传感器输出数值特性。 可以看到它的输出有最大值显示, 不超过25, 由于直流电机转速在 低速下无法精确控制, 所以输出线性关系就没有进一步验证了。

  -6-

1、测量电机转速与脉冲频率

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2022-07-15
#
# Note:
#============================================================

from headm import *
from tsmodule.tsvisa        import *
from tsmodule.tsstm32       import *


vdim = linspace(2, 7, 50)
fdim = []


for v in vdim:
dh1766volt(v)
time.sleep(2)
meter = meterval()

fdim.append(meter[0])
printff(v, meter)

tspsave('measure', vdim=vdim, fdim=fdim)


dh1766volt(0)

plt.plot(vdim, fdim)

plt.xlabel("Voltage(V)")
plt.ylabel("Frequency(Hz)")
plt.grid(True)
plt.tight_layout()
plt.show()


#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

2、拟合电机与频率线性关系

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# DRAW1.PY                     -- by Dr. ZhuoQing 2022-07-15
#
# Note:
#============================================================

from headm import *
from scipy.optimize        import curve_fit

vdim, fdim = tspload('measure', 'vdim', 'fdim')

def linefun(x, a, b):
return a*x + b

param = (1, 0)
param, conv = curve_fit(linefun, vdim, fdim, p0=param)
printf(param)


plt.plot(vdim, fdim)

plt.xlabel("Voltage(V)")
plt.ylabel("Frequency(Hz)")
plt.grid(True)
plt.tight_layout()
plt.show()




#------------------------------------------------------------
#        END OF FILE : DRAW1.PY
#============================================================

3、电机电压与频率测量数据

4、Python 程序

from machine                import Pin,UART
import time

uart = UART(1, baudrate=19200)
print(uart)

inbuf = bytes([0]*7)
recebuf = b''
mx = 0
my = 0
squal = 0

printcount = 0

while True:
if uart.any() > 0:
inb = uart.read(uart.any())
recebuf = recebuf + inb

buflen = len(recebuf)
delflag = 1
if buflen > 0:
id = 0
for b in recebuf:
if b == 0xfe:
if buflen >= id+9:
mx = recebuf[id+3]
mx = mx*256 + recebuf[id+2]
my = recebuf[id+5]
my = my*256 + recebuf[id+4]
squal = recebuf[id+7]

else:
recebuf = recebuf[id:]
delflag = 0
break

id += 1

if delflag > 0: recebuf = b''

time.sleep_ms(10)

printcount += 1
if printcount >= 10:
printcount = 0
print(mx, my, squal)


■ 相关文献链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/125806516