给Phyphox增加位移传感器(1)

给Phyphox增加位移传感器(1)

做些准备工作,给Phyphox增加位移传感器,以便有多种方法实现运动学中的、离开实验室的实验。

VL6180X是一款TOF飞行时间传感器,测量原理是通过芯片上的一个光孔发出850nm的红外光,然后用时钟记下光从发出到从物体表面反射反射回来的时间,就测算出来了距离。VL6810X也能测量环境光和姿势。其量程为20cm左右,误差1mm。

VL6180X引脚说明:

(1)VIN即电源正,接Arduino/ESP32的5V或3V3,GND即电源负,接Arduino/ESP32的GND。

(2)2V8是从VL6810上输出的稳压2.8V,加在VL6810X电源输入3V3或5V时,VL6810X都会把它分出一个稳定的2.8V从这个引脚输出出来,以便他用。

(3) SDA和SCL,I2C通信引脚,ESP32板上分别接IO21和IO22,Arduino UNO上是A4和A5。

(4)GPIO用于告知VL6810X是否已就绪。就绪输出2.8V高电平,否则输出低电平。一般悬空不用,因为2.8V高电平ESP32和Arduino都不认识。

(5)SHDN用来控制VL6810X工作状态,平常时候VL6810X都是正常工作的,给SHDN低电平,VL6810X停止工作,给高电平,开始工作。一般悬空不用。

接线:

直接修改ADA水果库里的例子:

#include <phyphoxBle.h>
//使用VL6180X
#include <Wire.h>
#include "Adafruit_VL6180X.h"
Adafruit_VL6180X vl = Adafruit_VL6180X();
float fV = 0.00;
void setup()
{
  PhyphoxBLE::start("MxxBLE");
  PhyphoxBleExperiment plotVoltage;

plotVoltage.setTitle("高精度位移传感器测距");
  plotVoltage.setCategory("阿璇实验创作集");
  plotVoltage.setDescription("北京市和平街第一中学,梅晓璇,使用VL6180X测微小距离,量程不大于20cm,精度1mm。");

//View
  PhyphoxBleExperiment::View firstView;
  firstView.setLabel("MyView"); //Create a "view"

//Graph
  PhyphoxBleExperiment::Graph firstGraph;
  firstGraph.setLabel("displacemet-time curve");
  firstGraph.setUnitX("s");
  firstGraph.setUnitY("mm");
  firstGraph.setLabelX("time");
  firstGraph.setLabelY("displacemet");

firstGraph.setChannel(0, 1);

firstView.addElement(firstGraph);
  plotVoltage.addView(firstView);
  PhyphoxBLE::addExperiment(plotVoltage);
  //以下可离开Phyphox使用串口调试
  Serial.begin(115200);
  // wait for serial port to open on native usb devices
  while (!Serial) {
    delay(1);
  }
  Serial.println("Adafruit VL6180x test!");
  if (! vl.begin()) {
    Serial.println("Failed to find sensor");
    while (1);
  }
  Serial.println("Sensor found!");
}

void loop()
{
  float lux = vl.readLux(VL6180X_ALS_GAIN_5);

//Serial.print("Lux: "); Serial.println(lux);

uint8_t range = vl.readRange();
  uint8_t status = vl.readRangeStatus();

if (status == VL6180X_ERROR_NONE) {
    Serial.print("Range: "); Serial.println(range);
    fV = float(range);
  }
  else {
    fV = -1.00;
  }

// Some error occurred, print it out!

if  ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) {
    Serial.println("System error");
  }
  else if (status == VL6180X_ERROR_ECEFAIL) {
    Serial.println("ECE failure");
  }
  else if (status == VL6180X_ERROR_NOCONVERGE) {
    Serial.println("No convergence");
  }
  else if (status == VL6180X_ERROR_RANGEIGNORE) {
    Serial.println("Ignoring range");
  }
  else if (status == VL6180X_ERROR_SNR) {
    Serial.println("Signal/Noise error");
  }
  else if (status == VL6180X_ERROR_RAWUFLOW) {
    Serial.println("Raw reading underflow");
  }
  else if (status == VL6180X_ERROR_RAWOFLOW) {
    Serial.println("Raw reading overflow");
  }
  else if (status == VL6180X_ERROR_RANGEUFLOW) {
    Serial.println("Range reading underflow");
  }
  else if (status == VL6180X_ERROR_RANGEOFLOW) {
    Serial.println("Range reading overflow");
  }

PhyphoxBLE::write(fV);
  delay(10);
  PhyphoxBLE::poll();
}

编译,通过蓝牙BLE上传到ESP32,开始实验。竖直的小板子即VL6810X。

被测物体,是一个小盒子:

通过细线悬挂两张卡片和一袋LED:

Phyphox捕获数据曲线。当超出20cm量程后,强行返回负的1mm,意思是该数据已无效。

把数据传入Excel,画图线、拟合函数曲线:

得加速度0.75米每二次方秒,挺象的。然额。。。为什么每一个时刻或极邻近某一个时刻,会同时返回3个测量值呢?????若是把这极相邻的3个时刻打掉两个,只留1个,看起来R方增大了,但凭什么这么做呢?????

------心存DREAM喜欢琢磨实验并自娱自乐的MIRACLE------

实验教学值得学习的去处:

1.中学物理实验教学研讨

2.学生自主创新实验

(0)

相关推荐

  • 利用VL6180X、ESP32和Phyphox测量物体运动的速度

    如果有一天,你不再渴求爱情,只是去爱:如果有一天,你不再渴求成功,只是去做:一切才真正开始. --纪伯伦 这几天一直在跟着北京和平街一中的梅老师学习利用VL6180X.ESP32和Phyphox测量物 ...

  • ESPcopter无人机源码分析.1

    ESPcopter无人机初探(UWB定位+ESP8266MCU) 这篇文章就开始对无人机的源码开始分析了,对飞机的具体说明在上了链接~ 按说这个库是可以记载在Arduino的,但是失败了 http:/ ...

  • 普通Arduino控制GoPro全系列

    就是这些个小东西的随意组合 安装库 安装 成功 显示两个头文件 GoPro Arduino控制库.阅读源码.1 Gopro Ardunio控制库.2 Gopro Ardunio控制库.3 #inclu ...

  • 利用Phyphox和ESP32蓝牙描绘电源输出功率与外电阻的关系曲线

    利用Phyphox和ESP32蓝牙描绘电源输出功率与外电阻的关系曲线

  • 罗姆传感器评估套件(3)加速度传感器KX022-1020

    往期回顾: 罗姆传感器评估套件开箱 罗姆传感器评估套件(2)Sensor Shield的使用和软件平台搭建 传感器介绍 套件里的加速度传感器型号为KX022-1020,是一款三轴加速度传感器. 其芯片 ...

  • 利用Phyphox和ESP32蓝牙做关于楞次定律的实验探究

    近日,一直困扰于ESP32开发板不能测量反向电流的问题,如果ESP32开发板不能测量方向变化的电流,那么设计电流方向变化的探究实验就无法利用智能手机开开展. 2020年10月15日,微主在微信群交流中 ...

  • 罗姆传感器评估套件(5)地磁传感器BM1422GMV

    往期回顾: 罗姆传感器评估套件开箱 罗姆传感器评估套件(2)Sensor Shield的使用和软件平台搭建 罗姆传感器评估套件(3)加速度传感器KX022-1020 罗姆传感器评估套件(4)气压传感器 ...

  • VL53L0X激光测距传感器.Arduino使用篇

    这里因为DF家的demo是Arduino的,我这里就先用Arduino做演示~后面用手头别的开发板来演示. https://github.com/DFRobot/DFRobot_VL53L0X 下载库 ...

  • 利用Phyphox和ESP32蓝牙做线圈通电自感实验

    近日,微主得到到一个线圈,利用ESP32和Phyphox做了线圈通电自感实验,由于线圈的电感比较小,通电自感现象不太明显,但是技术方案得到了验证,如果能得到匝数多且带铁芯的电感,实验效果应该会比较理想 ...

  • 利用Phyphox、Esp32和VL53L0X组合描绘弹簧振子的振动图像

    近日,微主搞到了四枚量程为1200毫米的距离传感器VL53L0X,没想到小小的身躯里竟然隐藏着巨大的能力. 有了它,就可以肆无忌惮地研究各种变速直线运动了,感觉在中学生科学探究领域,VL53L0X距离 ...

  • 利用ESP32和VL6180研究匀变速直线运动

    近日,微主在研究如何利用ESP32开发板与VL6180距离传感器组合研究匀变速直线运动问题.VL6180距离传感器利用激光脉冲在光源和运动物体之间的反射测距离的. 本来要研究小车在倾斜轨道上的运动规律 ...