Цифровой измеритель расстояния ("линейка") на ATtiny85

Цифровое измерение расстояний в настоящее время находит широкое применение в системах контроля движения транспортных средств, медицине, устройствах для слабовидящих и т.д. Наиболее дешевым способом измерения расстояний является использование для этой цели ультразвуковых датчиков, среди которых наиболее распространен датчик HC-SR04.

Внешний вид цифрового измерителя расстояния на ATtiny85

В данной статье мы рассмотрим создание цифровой измерителя расстояния (цифровой "линейки") на основе микроконтроллера AVR ATtiny85. Приведены чертежи печатной платы разработанного изделия. Для лучшего понимания материала данной статьи рекомендуется посмотреть два наших предыдущих проекта на микроконтроллере AVR ATtiny85: программирование ATtiny85 с помощью платы Arduino Uno и USB программатор для ATtiny85 на основе загрузчика Digispark.

Ранее на нашем сайте мы уже рассматривали измерение расстояний с помощью микроконтроллера AVR и датчика HC-SR04. Также на нашем сайте вы можете посмотреть все проекты с использованием датчика HC-SR04 – их достаточно много.

Необходимые компоненты

  1. Микроконтроллер ATtiny85 (купить на AliExpress).
  2. Ультразвуковой датчик HC-SR04 (купить на AliExpress).
  3. Модуль OLED дисплея с поддержкой интерфейса I2C (купить на AliExpress).
  4. Регулятор напряжения 5V AMS1117 (купить на AliExpress - можно купить не в виде модуля, а в виде отдельной микросхемы (от 5 до 7 рублей за штуку), но на момент публикации данной статьи не нашел на алиэкспрессе магазина с дешевой доставкой данной микросхемы).
  5. Резистор 10 кОм (3 шт.) (купить на AliExpress).
  6. Конденсатор 10 мкФ (купить на AliExpress).
  7. Батарейка 9V.

Схема проекта

Схема цифрового измерителя расстояния на ATtiny85 представлена на следующем рисунке.

Схема цифрового измерителя расстояния на ATtiny85

Взаимодействие между OLED дисплеем и микроконтроллером ATtiny85 осуществляется по протоколу I2C: контакт SCL (PB2) ATtiny85 подключен к контакту SCL OLED дисплея, а контакт SDA (PB0) ATtiny85 подключен к контакту SDA OLED дисплея. Контакты Echo и Trig ультразвукового датчика подключены к контактам PB3 и PB4 ATtiny85 соответственно. Для питания схемы используется батарейка на 9V – напряжение с выхода данной батареи преобразуется в напряжение 5V с помощью регулятора напряжения AMS117.

Печатная плата для измерителя расстояния

3D модель печатной платы для нашего цифрового измерителя расстояния представлена на следующих рисунках.

3D модель печатной платы для цифрового измерителя расстояния

Gerber файлы для изготовления данной печатной платы вы можете скачать по следующей ссылке – Gerber file for ATtiny85 Ultrasonic Ruler.

Заказ печатной платы на сервисе PCBWay

Для изготовления печатной платы с помощью сервиса PCBWay выполните следующую последовательность шагов.

Шаг 1. Зайдите на сайт https://www.pcbway.com/, зарегистрируйтесь на нем если вы заходите на него в первый раз. Затем на вкладке PCB Prototype введите размеры вашей печатной платы, число слоев и число необходимых вам экземпляров вашей печатной платы.

Ввод основных параметров печатной платы на сервисе PCBWay

Шаг 2. После этого нажмите на кнопку ‘Quote Now’. На открывшейся странице вам необходимо будет ввести ряд дополнительных параметров, необходимых для изготовления вашей печатной платы: тип платы, слои, материал, толщину платы и т.д. Большинству из этих параметров вы можете оставить значения по умолчания, предлагаемые сервисом.

Ввод дополнительных параметров печатной платы на сервисе PCBWay

Шаг 3. Загрузите Gerber файлы вашей печатной платы и оплатите заказ. После загрузки Gerber файлов платы сервис PCBWAY проверяет их на корректность – это дает уверенность в том, что в результате вы получите качественную, пригодную к использованию плату.

Загрузка файлов печатной платы на сервисе PCBWay

Разумеется, вы можете заказать изготовление печатной платы в любом сервисе, с которым вы привыкли работать, а не только в PCBWAY.

Сборка конструкции проекта

Через несколько дней после оплаты заказа авторы проекта получили изготовленную печатную в упаковке. Качество изготовления оказалось на высоте. Внешний вид обоих сторон изготовленной печатной платы для нашего проекта показан на следующих рисунках.

Внешний вид обоих сторон изготовленной печатной платы для нашего проекта

После этого авторы проекта припаяли на изготовленную печатную плату необходимые компоненты и в результате получили следующую собранную конструкция цифрового измерителя расстояния на основе микроконтроллера ATtiny85.

Конструкция цифрового измерителя расстояния на основе микроконтроллера ATtiny85

Объяснение программы для ATtiny85

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В нашей программе мы будем использовать библиотеки TinyWireM.h и TinyOzOLED.h. Библиотеку TinyWireM можно скачать и установить с помощью менеджера библиотек (Library Manager) Arduino IDE, для этого в Arduino IDE откройте пункт меню Sketch < Include Library < Manage Libraries. Далее в строке поиска введите TinyWireM.h и после этого установите библиотеку.

Установка библиотеки TinyWireM.h с помощью Arduino IDE

Библиотеку TinyOzOLED.h скачайте по следующей ссылке.

После скачивания и установки данных библиотек необходимо подключить их использование в программе.

В следующих фрагментах кода дадим осмысленные имена используемым контактам – к ним подключатся контакты trig и echo ультразвукового датчика.

Далее в функции setup() зададим режимы работы (на ввод или вывод данных) используемых контактов и инициализируем связь с OLED дисплеем.

Затем в функции loop() мы будем измерять расстояние с помощью ультразвукового датчика и отображать его на OLED дисплее. Для измерения рассстояния мы сначала подаем на контакт trigpin напряжение низкого уровня (LOW) на 2 мкс чтобы “очистить” его, затем на trigPin мы подаем напряжение высокого уровня (HIGH) на 10 мкс. Затем с помощью функции pulseIn() мы считываем длительность импульса на контакте echoPin, которое равно времени распространения излученной ультразвуковой волны до препятствия и обратно, и сохраняем его в переменной  “duration”. В функции pulseIn() два параметра – номер контакта (в нашем случае echo pin) и состояние контакта (в нашем случае HIGH). Затем конвертируем время в расстояние с помощью функции microsecondsToCentimeters и отображаем его на экране OLED дисплея.

Тестирование работы проекта

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

Тестирование работы цифрового измерителя расстояний

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
55 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *