Лазерный дальномер(измеритель ширины детали) на базе датчика и ардуино

Pashtet
Offline
Зарегистрирован: 30.06.2016

Добрый день.

Для упрощения трудовых будней решил сделать измеритель ширины деталей.

Есть стол шириной "С", допустим 0,6 метра - постоянная величина.

Кладётся деталь "А",  дальномер измеряет расстояние "B" (от себя до детали). 

Считаем "A=C-B" и выводим на экран.

 

Вопрос - на сколько точным может быть датчик по ссылке ниже или не стоит даже вязаться? Точность нужна не хуже 0,3мм.

Заранее огромное спасибо.

http://ru.aliexpress.com/item/40m-High-precision-laser-distance-sensors-...

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Так там же в описании написано:

Цитата:

Measuring range: 0.045-40 m 

Resolution: 0.01 mm (0.00001 m)

Measurement accuracy (standard deviation): ± 2.mm (10 m) greater than 10 m formula ± 2+0.05* (D-10), and d is the distance

Плюс-минус лапоть, т.е. 2мм.

Pashtet
Offline
Зарегистрирован: 30.06.2016

DIYMan - тоска, значит придёться делать из лазерного дальномера с БлюТус или делать цифровой вывод у дальномера(что сам врятли потяну).

 

Спасибо!

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Pashtet пишет:

DIYMan - тоска, значит придёться делать из лазерного дальномера с БлюТус или делать цифровой вывод у дальномера(что сам врятли потяну).

 

Спасибо!

Точность будет такая же - лапоть ;)

Pashtet
Offline
Зарегистрирован: 30.06.2016

Т.е. аналоговая рулетка будет лучше?

Честно говоря думал, что у лазерных рулеток (~10-15 тыс руб ценовой категории) погрешность на 0,6 метра скромнее 0,5 мм.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Вы заявили требуемую точность 0,3 мм, смотрите, чего обещает тот или иной производитель, от этого и отталкивайтесь. Типовое значение для бытовухи, ЕМНИП - плюс/минус 2мм на 10 м, но это ещё не значит, что на 0,6м будет оооочень точно - надо смотреть доку на конкретный прибор.

Бегло просмотрел бытовые лазерные рулетки - точностью в 0,3 мм там и не пахнет.

MagicianT
Offline
Зарегистрирован: 03.10.2015

Делаете как здесь

https://vimeo.com/44707148

Там не показано, но кроме трэкинга ардуино меряет и расстояние тоже, т.е. одним лучом можно показать куда мерять, она повернётся и померяет до указаного места. Но если такая функциональность излишняя, то ещё проще

ардуино меряет где-то 800-900 единиц на расстоянии 1 метра, т.е. 1.1 - 1.2 мм разрешение по растоянию. Но там скорость 60 раз в секунду, усредняя запросто получите 0.1-0.15 мм раз в секунду если результат брать. Стоимость проэкта меньше $10.
Ширина детали больше 3 см, с ровной поверхностью, это минус, там луч смещяется, и если неровно то ошибка будет.
Pashtet
Offline
Зарегистрирован: 30.06.2016

Добрый день.

Получил дальномер. Но, так получилось, что дальномер уже не нужен (руководством было решено <s>считать поверхность луны твёрдой</s> оставить аналоговые линейки и точка).

Подключить хочется исключительно для спортивного интереса - посмотреть на сколько он точный и потом продать хоть за сколько (в данном случае инициатива вышла боком инициатору - мне, т.к. покупал в надежде, что оценят)

Подскажите, пожалуйста, как можно подключить железку и считать с неё данные. В архиве инструкция по управляющим кодам что шла в комплекте.

https://cloud.mail.ru/public/NGsf/LQnbUcYe5

https://cloud.mail.ru/public/AGDM/sXg9iAYu8

На сколько я понимаю, подключить его к 3,3V, GND, RXD, TXD что бы просто считать данные как для ультразвукавого дальномера (код ниже) у меня не получится?

Заранее огромное спасибо.

/*Ультразвуковой датчик расстояния и Arduino – полный гайд

Распиновка ультразвукового датчика расстояния:

VCC: +5V

Trig : Триггер (INPUT) – 11 пин

Echo: Эхо (OUTPUT) – 12 пин

GND: GND

*/

int trigPin = 11;    //Триггер – зеленый проводник

int echoPin = 12;    //Эхо – желтый проводник

long duration, cm, inches;

void setup() {

//Serial Port begin

Serial.begin (9600);

//Инициализирум входы и выходы

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

}

void loop()

{

// Датчик срабатывает и генерирует импульсы шириной 10 мкс или больше

// Генерируем короткий LOW импульс, чтобы обеспечить «чистый» импульс HIGH:

digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

// Считываем данные с ультразвукового датчика: значение HIGH, которое

// зависит от длительности (в микросекундах) между отправкой

// акустической волны и ее обратном приеме на эхолокаторе.

pinMode(echoPin, INPUT);

duration = pulseIn(echoPin, HIGH);

// преобразование времени в расстояние

cm = (duration/2) / 29.1;

inches = (duration/2) / 74;

Serial.print(inches);

Serial.print("in, ");

Serial.print(cm);

Serial.print("cm");

Serial.println();

delay(250);

}

Использование библиотеки NewPing

Ниже приведен пример программы с использованием библиотеки NewPing.

#include <NewPing.h>

#define TRIGGER_PIN 12

#define ECHO_PIN 11

#define MAX_DISTANCE 200

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния.

void setup() {

Serial.begin(9600);

}

void loop() {

delay(50);

unsigned int uS = sonar.ping_cm();

Serial.print(uS);

Serial.println(“cm”);

}