Будівельний портал - Будинок. Водонагрівачі. Димарі. Монтаж опалення. Обігрівачі. Устаткування

Саморобний фазовий лазерний далекомір. Ультразвуковий далекомір Основні причини для монтажу лазерного далекоміра

Вітаю всіх. Потрапив мені в руки нещодавно ультразвуковий датчик, який вимірює відстань до об'єкта – US-100. Подібну річ можна придбати на торгових інтернет-майданчиках. На ринках свого міста таких іграшок у продажу не вдалося знайти. Вирішили побудувати схему на основі такого датчика на поширеному мікроконтролері AVR ATmega8. Призначення пристрою полягає у вимірі відстані до об'єкта, а також вимірювання температури. До речі про температуру. Модель US-100 це ультразвуковий датчик із температурною компенсацією. Швидкість поширення звукової (ультразвукової) хвилі за різних температур буде відрізнятися. Вимір датчика заснований на часі проходження звукової хвилі від об'єкта до приймача датчика. Температурна компенсація, швидше за все не повністю, усуне похибку, викликану температурою навколишнього середовища.

При розгляді друкованої плати можна зробити висновок про джерело вимірювання температури: термометр знаходиться в мікросхемі або вимірювання температури йде за рахунок діода, розташованого на краю плати. При вимірі температури діодом використовується його PN перехід і пов'язано це з температурним коефіцієнтом провідності. З великою впевненістю це другий варіант, так як при роботі нижче наведеної схеми при торканні пальцями цього діода температура змінюється. Так що при вимірі краще намагатися руками не чіпати датчик, щоб отримати більш точні дані про відстань.

Для вимірювання датчик використовує 2 головки, що нагадують великий мікрофон чи маленький динамік. По суті, це і те, і те. Одна з головок випромінює ультразвукову хвилю, друга приймає відбитий сигнал ультразвукової хвилі. За часом проходження визначається пройдена відстань. Очевидно обмеження вимірюваної відстані 4,5 метра обумовлена ​​потужністю випромінювача.

Щодо спілкування датчика з мікроконтролером, модель US-100 має два можливі інтерфейси, що вибираються перемичкою на задній стороні плати датчика. Якщо перемичка стоїть вибраний інтерфейс UART, якщо перемичку знято, використовується інтерфейс або режим роботи GPIO. У першому випадку для спілкування з мікроконтролером використовується апаратні засоби мікроконтролера, або програмні. У другому випадку приймати та передавати дані доведеться лише вручну. У схемі пристрою використовуємо більш простий режим роботи з використанням UART інтерфейсу.

Необхідно уточнити нюанси розпилювання і підключення датчика до мікроконтролера. Зазвичай під час передачі даних UART лінії Rx і Tx підключаються хрест навхрест - Rx на Tx, а Tx на Rx. Даний ультразвуковий датчик потрібно підключати відповідно до підписаних контактів на друкованій платі Rx на Rx, а Tx на Tx. Китайці відпалили, згоден. Перш ніж це визначилося, довелося довго мучитися і зрештою дійти цього. Отже, при роботі з UART для ініціалізації одного вимірювання відстані ультразвуковому датчику US-100 необхідно на виведення Trig/Tx передати значення 0x55, що відповідає символу "U". У відповідь датчик передасть два байти інформації про відстань на виведення Echo/Rx – перший байт – це старші 8 біт, другий байт – молодші 8 біт. Одиниці виміру відстані - міліметри. Щоб два байти перевести на одне значення відстані, необхідно перший байт помножити на 256 і додати другий байт. Необхідно робити таким чином, тому що при переповненні молодшого байта старший байт збільшується на одиницю. Щоб вивести поточне значення температури навколишнього середовища, необхідно передати значення 0x50, що відповідає символу "P". У відповідь датчик передасть значення температури. Фактичне значення температури буде дорівнює отриманому значенню від датчика відібрати 45.

Параметри ультразвукового датчика US-100:

  • напруга живлення - 2,4 - 5,5 вольт постійної напруги
  • споживаний струм у режимі очікування - 2 мА
  • робоча температура – ​​мінус 20 – плюс 70 С
  • кут огляду – 15 градусів
  • інтерфейс - GPIO або UART
  • відстань, що вимірюється - від 2 см до 450 см
  • похибка – плюс мінус 3 мм + 1%

Конфігурація UART для датчика: 9600 baud rate, 8 data bits, parity: none, 1 stop bit.

Перейдемо до схеми пристрою.

Схема ультразвукового далекоміра побудована на основі мікроконтролера Atmega8 та ультразвуковому датчику US-100. Живлення схема береться від лінійного стабілізатора напруги L7805 його можна замінити вітчизняним аналогом КР142ЕН5А, конденсатори в обв'язці стабілізатора обов'язкові, хоча може працювати і без них. Деякі стабілізатори просто не запускаються без конденсаторів. Лінійний стабілізатор можна замінити на імпульсний, наприклад MC34063 або LM2576, але доведеться трохи змінити схему згідно з підключенням імпульсних стабілізаторів у схемі. Конденсатори С5-С7 необхідні забезпечення стабільності роботи мікроконтролера і датчика. Номінали всіх конденсаторів можна варіювати у розумних межах. Резистор R2 необхідний для запобігання мимовільному перезапуску мікроконтролера та служить підтяжкою позитивного живлення на виведення reset. Резистор R1 регулює контраст LCD-дисплея. В якості інформаційної панелі був взятий рідкокристалічний (РК або по іншому LCD) екран SC1602, 2 рядки по 16 символів на основі контролера HD44780. Замінити LCD-дисплей можна на будь-яку іншу модель на базі контролера HD44780 з такою ж кількістю рядків та символів у рядку або більше. На друкованій платі LCD-дисплея є можливість задіяти підсвічування екрану двома способами - або за допомогою допою резистора і перемички на самій платі екранчика або за допомогою спеціальних висновків, зазвичай позначених як "А" і "К". Анод та катод відповідно. До них через струмообмежувальний резистор підключається напруга живлення схеми 5 вольт. У цій схемі задіяний перший спосіб, тому на схемі не зазначено. Замість тактових кнопок S1 – S5 можна використовувати будь-які інші кнопки. Світлодіод LED1 можна використовувати будь-який відповідний за кольором або замінити його на транзистор і керувати якоюсь іншою схемою залежно від перевищення дистанції від датчика. Залежно від застосованого типу транзисторів (P-N-P або N-P-N) при перевищенні ліміту дистанції або відстані вихід матиме позитивну або негативну напругу, тобто при високому логічному сигналі мікроконтролера транзистор N-P-N буде відкритий, а транзистор P-N-P закритий. У прошивку мікроконтролера закладено параметр, у якому при перевищенні зазначеного ліміту відстані виведення PB0 буде подаватися високий логічний рівень напруги. У цій схемі світлодіод просто сигналізує про перевищення. Цей сигнал дублюється на LCD-дисплеї підкресленням даного про ліміт дистанції. Цей параметр можна регулювати кнопками S1, S2. При натисканні відбувається збільшення чи зменшення на 10 мм. Інформація про дистанцію на дисплеї відображається також у міліметрах. Інформація про температуру навколишнього середовища відображається на дисплеї в градусах Цельсія. До статті додається два варіанти прошивок: 1) безперервне вимірювання параметрів дистанції та температури (інтервал приблизно 0,2 секунди), при цьому кнопки S4, S5 не задіяні; 2) при натисканні кнопок S4, S5 відбувається одноразовий запит до датчика на вимірювання температури та відстань. Відео до статті зроблено з прошивкою номер 1. Для програмування мікроконтролера необхідно прошити ф'юз біти:

Початківцям рекомендую користуватися шістнадцятковими значеннями ф'юз бітів HIGH і LOW, щоб не напортачити з розміщенням галочок. Скріншот з AVRstudio (є відмінності від дудки, sina prog та інших програм для прошивки мікроконтролерів). Якщо Ви використовуєте програми для прошивки мікроконтролерів AVR, в яких немає введення параметрів ф'юзів, можна скористатися ф'юз калькуляторами для переведення галочок у шістнадцяткову форму і навпаки.

Схема була зібрана та перевірена на макетній платі для Atmega8:

Конструктивно схему можна оформити, наприклад, у вигляді пістолета з лазерним покажчиком напряму ультразвукового датчика. Єдино обмежена вимірювана відстані, при перевищенні якої похибка різко зростає. Також обмеження стосується положення та розміру предмета, до якого вимірюється відстань - відстань до надто дрібних об'єктів або об'єктів, що знаходяться під великим кутом, буде спотворено. Ідеальне поєднання досить великі предмети, що знаходяться перпендикулярно до напрямку датчика. Похибка вимірювань приблизно відповідає заявленим виробником. Даний пристрій при подальшому розвитку можна використовувати як виявник перешкод, на зразок парктроніка в кімнатних умовах, так як на вулиці ультразвукові головки даного датчика забиваються брудом.

Пропонуйте свої ідеї та варіанти застосування, найцікавіші ідеї у майбутньому можуть бути реалізовані.

До статті додаю 2 варіанти HEX прошивок для МК, проект (версія 7.7, ультразвукового датчика US-100 в базі proteus"а ні, але задіяний UART налагоджувач), а також невелике відео, що демонструє роботу схеми.

Список радіоелементів

Позначення Тип Номінал Кількість ПриміткаМагазинМій блокнот
IC1 МК AVR 8-біт

ATmega8

1 До блокноту
VR1 Лінійний регулятор

L7805AB

1 До блокноту
HG1 LCD-дисплейSC16021 На базі HD44780 До блокноту
U1 УЗ-датчикUS-1001 До блокноту
R1 Підстроювальний резистор10 ком1 3296W-1-103LF До блокноту
R2 Резистор

10 ком

1 0.25 Вт До блокноту
R3 Резистор

390 Ом

1 0.25 Вт

Bruno Gavand

Проект, в якому розглядається просте та дешеве рішення ультразвукового сенсора для вимірювання відстані, виконано на базі мікроконтролера PIC16F877A компанії, але користувачами вихідний код може бути адаптований під інші мікроконтролери. Сенсор може бути вбудований в розробки користувача та пристрої: детектори присутності, роботи, автомобільні системи паркування, пристрої вимірювання відстані та ін.

Відмінні особливості:

  • невелика кількість зовнішніх компонентів;
  • розмір коду 200 байт;
  • діапазон робочих відстаней: 30 см – 200 см;
  • точність вимірів ±1 см;
  • індикація при виході межі вимірів.

Як відомо, швидкість звуку повітря становить близько 340 м/с. Таким чином, принцип ультразвукового сенсора полягає у посилці ультразвукового імпульсу частотою 40 кГц і відстеження відбитого сигналу (луна). Звичайно, звуку ви не почуєте, але ультразвуковий датчик здатний визначити відбитий імпульс. Отже, знаючи час проходження імпульсу та відбитого ультразвукового сигналу, ми зможемо отримати відстань. Розділивши на два, ми отримаємо відстань від ультразвукового датчика до першої перешкоди, від якої було відображено сигнал.

У пристрої застосований п'єзокерамічний ультразвуковий випромінювач MA40B8S та п'єзокерамічний ультразвуковий датчик MA40B8R відкритого типу. Основні параметри наведено у таблиці нижче.

Пристрій Призначення Частота Спрямованість,
град
Місткість,
пФ
Область
детектування,
м
Вхідний
напруга,
макс, В
MA40B8S Випромінювач 40 кГц 50 (симетричний) 2000 0.2 … 6 40
MA40B8R Датчик 40 кГц 50 (симетричний) 2000 0.2 … 6

Для тестування була застосована налагоджувальна платформа компанії.

Однак користувач може використовувати будь-який мікроконтролер PIC, який має хоча б один канал АЦП і один канал ШІМ.

Принципова схема ультразвукового сенсора

Управління випромінювачем здійснюється за допомогою транзистора BD135. Діод 1N4007 служить для захисту транзистора від зворотної напруги. Завдяки використанню транзистора і резонансного ланцюжка, який утворений паралельним включенням дроселя L1 330 мкГн і конденсатора, утвореного самим випромінювачем, напруга живлення випромінювача складе близько 20 В, що забезпечує дальність виявлення до 200 см. Варто помітити, що керувати випромінювачем однак у такому разі діапазон відстаней не перевищує 50 см.

Датчик підключений безпосередньо до АЦП мікроконтролера (при використанні PIC16F877A - канал 1 АЦП), резистор, включений паралельно датчику, необхідний узгодження імпедансу.

Для початку необхідно надіслати ультразвуковий імпульс. Сигнал із частотою 40 кГц легко отримати з використанням апаратного ШІМ мікроконтролера. Відбитий сигнал з датчика надходить в АЦП, роздільна здатність АЦП становить 4 мВ, що цілком достатньо для зчитування даних з датчика, і додаткові компоненти не потрібні.

Зовнішній вигляд макетної плати ультразвукового сенсора


Цей сенсор – найпростіше рішення, і тому має кілька недоліків: невелика вібрація ультразвукового приймача може призвести до неправильних вимірів. Оскільки імпульс, що посилається, не модульований і не кодований, сторонні джерела ультразвукової частоти можуть впливати на вимірювання, і все це може призвести до неправильних результатів (вихід за межі вимірювань).

Написи на зображенні:

ultrasonic burst – ультразвуковий імпульс;
mechanical echo (removed by software) - механічна луна (виключається програмно);
ultrasonic wave reflected by remote object - ультразвукова хвиля, відбита від віддаленого об'єкта.

Ціна поділу осцилографа: по горизонталі - 1 мс/поділ, по вертикалі - 5 мВ/поділ.

Механічне відлуння виключається програмно шляхом введення затримки. Відбита хвиля, що має амплітуду близько 40 мВ, отримана через 9.5 мс після надісланого імпульсу. Враховуючи, що швидкість звуку 340 м/с, отримуємо:

0.0095/2×340 = 1.615 м.

Насправді - це була стеля приміщення на відстані від датчика 172 см, на РК дисплеї, встановленому на платі налагодження було відображено значення 170 см.

Завантаження

Вихідний код до проекту на мікроконтролер PIC16F877A (компілятор mikroC) -

HC-SR04 один з найпоширеніших і найдешевший далекомір у робототехніки. Він дозволяє вимірювати відстані від 2см до 4м (може і більше) із пристойною точністю 0,3-1см. На виході - цифровий сигнал, тривалість якого пропорційно дорівнює відстані до перешкод.

Ультразвуковий далекомір

Цей датчик був мною вже давно придбаний і лежав у своїй коробочці майже забутий. Але в рамках одного проекту було витягнуто на біле світло і, для ознайомлення, на основі нього та плати вольтметра було побудовано досить компактний далекомір.

УЗ далекомір HC-SR04

Характеристики датчика:

Харчування - 5В
Споживаний струм - менше 2мА
Ефективний кут огляду - 15гр
Вимірювана відстань - 2см - 5м
Точність - 3мм
Взято з документації до датчика

Принцип роботи HC-SR04

Принцип роботи

Модуль має 4 висновки, два з яких це харчування - земля і +5В, а ще два - дані. Опитування модуля проводиться у такий спосіб: на висновок Trig посилається імпульс тривалістю 10мкс. Далекомір генерує посилку з 8 ультразвукових 40КГц імпульсів. Які, відбиваючись від більшості поверхонь, повертаються назад, якщо не згаснуть у дорозі. Відразу після відправки сигналу на Trig починаємо очікувати позитивного сигналу у відповідь виведенні Echo, тривалістю від 150мкс до 25мс, який пропорційний відстані до об'єкта. Точніше часу проходження від датчика до перешкоди та назад. Якщо відповіді немає (датчик не почує своєї луни) - сигнал повернеться довжиною в 38 мс. Відстань до об'єкта (перешкоди) обчислюється за такою простою формулою:

Де: L – відстань у сантиметрах до об'єкта, а F – довжина імпульсу на виведенні Echo.
Рекомендований час опитування датчика 50мс або 20Гц.

Перші тести цього модуля проводив за допомогою цифрового осцилографа, який ловив відповідь від модуля і в ручну, швидким замиканням Trig на живлення, намагався отримати стартовий 10мкс імпульс. У половині випадків виходило [:)].

Конструкція

Датчик був підключений до плати вольтметра із загальним анодом, трохи модифікованим для роботи з ним (прибрані непотрібні дільники з конденсатором і доданий висновок від RA3). Був застосований мікроконтролер від 5 версії вольтметра - PIC16F688, з переробленою для УЗ далекоміра прошивкою.

У статті я розповім про те, як я робив лазерний далекомір і принцип його роботи. Відразу зазначу, що конструкція є макетом, і її не можна використовувати для практичного застосування. Робилася вона тільки для того, щоб переконатися, що фазовий далекомір реально зібрати самому.

Теорія

Часто доводиться зустрічати думку, що за допомогою лазера відстань вимірюють тільки шляхом прямого вимірювання часу «польоту» лазерного імпульсу від лазера до об'єкта, що відбиває, і назад. Насправді, цей метод (його називають імпульсним або прольотним часу, TOF) застосовують в основному в тих випадках, коли відстані до потрібного об'єкта досить великі (> 100м). Так як швидкість світла дуже велика, то за один імпульс лазера досить складно з великою точністю виміряти час прольоту світла, а отже, відстань. Світло проходить 1 метр приблизно за 3.3 нс, так що точність вимірювання часу має бути наносекундною, хоча точність вимірювання відстані при цьому все одно становитиме десятки сантиметрів. Для вимірювання часових інтервалів з такою точністю використовують ПЛІС та спеціалізовані мікросхеми.

Відео роботи далекоміра:

Дальність роботи в далекоміра, що вийшов, вийшла досить невелика: 1,5-2 м залежно від коефіцієнта відображення об'єкта.
Для того, щоб збільшити дальність, можна використовувати спеціальний відбивач, на який потрібно спрямовувати промінь лазера.
Для експериментів я зробив лінзовий відбивач, що складається з лінзи, у фокусі якої розташований матовий папір. Така конструкція відображає світло в ту саму точку, звідки він був випущений, щоправда, діаметр променя при цьому збільшується.
Фотографія відбивача:

Використання відбивача:


Як бачимо, відстань до відбивача - 6.4 метра (насправді було приблизно 6.3). Сигнал при цьому зростає настільки, що його доводиться послаблювати, спрямовуючи лазерний промінь на край відбивача.

Точність далекоміра - 1-2 сантиметри, що відповідає точності вимірювання зсуву фаз - 0,2-0,5 градуса. При цьому, для досягнення такої точності дані доводиться занадто довго усереднювати - на один вимір йде 0.5 сек. Можливо, це пов'язано з використанням PLL для формування сигналів – у нього досить великий джиттер. Хоча я вважаю, що для саморобного макета, аналогова частина якого зроблена досить кострубато, в якому присутні досить довгі дроти, навіть така точність - досить непогано.
Зазначу, що я не зміг знайти в Інтернеті жодного існуючого проекту фазового далекоміра (хоча б зі схемою конструкції), що й спричинило написати цю статтю.

Теги:

  • лазерний далекомір
  • stm32
  • stm32f4discovery
Додати теги

З нагоди придбав собі ультразвуковий далекомір HC-SR04. Девайс представляє собою модуль з двома п'єзовипромінювачами, один з яких служить випромінювачем, а другий - приймачем ультразвукової хвилі; плюс керуюча електроніка для керування випромінювачем та приймачем. Для підключення модуль має 4-х контактний роз'єм: два з яких живлення (потрібно 5 вольт), та ще два для спілкування з мікроконтролером.

Інтерфейс зв'язку тут організований дуже просто: на вхід подаємо короткий імпульс тривалістю 10-15 мікросекунд і чекаємо імпульсу на виході. Як тільки до приймача дійде відбита хвиля, модуль розрахує відстань і видасть на ногу Echo імпульс високого рівня довжиною до 25 мс. Довжина вихідного імпульсу буде пропорційна відстані до перешкоди, від якої відбилася ультразвукова хвиля. Нам залишається тільки зловити цей імпульс, порахувати його довжину і перевести це значення у відстань.

Технічні характеристики:

  • Напруга живлення: 5V
  • Струм спокою:< 2 мА
  • Ефективний кут огляду:< 15 °
  • Діапазон відстаней: 2 см – 500 см
  • Роздільна здатність: 0,3 см

Характеристики потирені з документації на модуль. Крім цього виробник наводить формулу, за якою розраховувати відстань залежно від тривалості імпульсу.

S=F/58 ; де S – дистанція в сантиметрах, F – довжина імпульсу у мікросекундах

Як видно, навіть знати швидкість звуку необов'язково.

Для випробувань зібрав таку схему:

Модуль з'єднується безпосередньо до мікроконтролера. Резистори підтяжки не потрібно ставити, вони вже є на платі модуля.

І так, нам потрібно ловити лише один імпульс, а потім порахувати його довжину. Спочатку хотів підбити під цю справу одне із зовнішніх переривань мікроконтролера, при цьому переривання мало відбуватися як по передньому фронту (перехід з низького у високий стан), так і по задньому фронту (з високого на низький). Тобто доведеться на льоту змінювати конфігурацію цього переривання. Плюс до цього потрібно задіяти один із таймерів, який повинен вимірювати довжину імпульсу. Занадто складно для маленької операції фіксування сигналу. У Bascom-AVR на цей випадок є спеціальна команда Pulsein . Ось приклад того, як зловити сигнал за допомогою цієї команди:

Pulsein A, Pind, 5 , 1

Тут, у змінну A запишеться значення довжини імпульсу в десятках мікросекунд, знятого з ноги Pind.5. Одиниця наприкінці команди каже, що потрібно ловити сигнал високого рівня. Якщо змінити на 0, тоді контролер ловитиме сигнал низького рівня.

Ця команда не використовує переривань та хардверного таймера, але здатна визначити появу імпульсу та зафіксувати його довжину з роздільною здатністю 10 мкс. Команда використовує для зберігання довжини імпульсу 2-байтний тип змінної, тому максимальна довжина прийнятого сигналу може бути 655,35 мс. Цього цілком вистачає для поставленого завдання, але за потребою можна відредагувати файл бібліотеки mcs.lib і змінити максимальну тривалість імпульсу, що фіксується.

Повний листинг програми представлений нижче

$regfile = "m8def.dat"

$crystal = 8000000

"конфігурація підключення дисплея до портів МК

Config Lcd = 16 * 2

Config Lcdpin= Pin, Rs= Portc. 5 , E= Portc. 4 , Db4= Portc. 3 , Db5= Portc. 2 , Db6= Portc. 1 , Db7= Portc. 0

Config Portd. 4 = Output "вихід для підключення ноги Trigger

TriggerAlias Portd. 4

Trigger= 0

Config Portd. 5 = Input "вхід для імпульсу Echo

Config Portd. 7 = Output "конфігурація для підключення світлодіоду

LedAlias Portd. 7

Led= 0

Dim AAs Word "сюди копіюється значення довжини сигналу

Dim SAs Single "змінна для зберігання відстані

Const K= 0 . 1725 "коефіцієнт для переведення довжини імпульсу у відстань

Waitms 50

Cursor Off

Cls

Lcd "Sonar HC-SR04"

Locate 2 , 1

Lcd "сайт"

Led= 1

Waitms 100

Led= 0

Wait 3

Do

Trigger= 1 "Даємо імпульс на ногу Portd.4 тривалістю 15 мкс

Waitus 15

Trigger= 0

Waitus 10

Pulsein A, Pind, 5 , 1 "ловимо імпульс високого рівня на PinD.5

Подібні публікації