05 2月

距離を測る


距離計は、相手に光を当てて反射して帰ってくる時間で距離を測ることができるんだ。

準備するもの

名前 仕様
マイコン Arduino UNO
距離計 Sharp 製 Infrared Proximity Sensor Short Range – Sharp GP2D120XJ00F

回路図を示す。

arduino_distance-sensor-fig1arduino_distance-sensor-fig1

電圧と距離の関係
arduino_distance-sensor-fig2arduino_distance-sensor-fig2

変換表

bit  \Rightarrow v
v = x \times (\frac{ 5}{1024})

区間 (v) 変換式
\ge 2.0 L = -2.86 \times v + 11.71
2.0 > v \ge 1.4 L = -5.0 \times v + 16.0
1.4 > v \ge 1.05 L = -8.57 \times v + 21.0
1.05 > v \ge 0.85 L = -20.0 \times v + 33.0
0.85 > v \ge 0.65 L = -20.0 \times v + 33.0
0.65 > v \ge 0.56 L = -55.56 \times v + 56.11
0.56 > v \ge 0.42 L = -35.71 \times v + 45.0
0.42 > v \ge 0.32 L = -100.0 \times v + 72.0

Arduino sketch

#define ds_pin 0    // Pin to which the distance sensor is connected
#define ds_scaledResolution (5/1024)

#define ds_valueAt50 900     // The value the sensor returns at 50mm distance
#define ds_valueAt200 200    // The value the sensor returns at 200mm distance

int ds_value;          // Integer to hold distance sensor’s reading
float ds_scaledValue;  // Distance sensor’s scaled value
float volt;
float L;

void setup ()
{
  Serial.begin (9600); // Initiates serial communication at 9600 baud
}


float v2l(float v) {
  float l;
  if (v >= 2.0) {
    l = -2.86 * v + 11.71;
  } else if (v >= 1.4) {
    l = -5.0 * v + 16.0;
  } else if (v >= 1.05) {
    l = -8.57 * v + 21.0;
  } else if (v >= 0.85) {
    l = -20.0 * v + 33.0;
  } else if (v >= 0.65) {
    l = -20.0 * v + 33.0;
  } else if (v >= 0.56) {
    l = -55.56 * v + 56.11;
  } else if (v >= 0.42) {
    l = -35.71 * v + 45.0;
  } else if (v >= 0.32) {
    l = -100.0 * v + 72.0;
  } else {
    l = 9999;  // NG
  } 
  return l;
}


void loop ()
{
  ds_value = analogRead (ds_pin);     // Reads the distance sensor
  volt = (ds_value * 5.0) / 1024;
  L = v2l(volt);

 //     Serial.println(volt);
  if (L == 9999) {
    Serial.print("NG!");
  } else {
      Serial.println( L);
  }
  //Serial.println((int) ds_scaledValue);
  delay(500);  // Delay of 500ms
}


%d人のブロガーが「いいね」をつけました。