Рубрики
Схемы на AVR

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

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

В данной статье мы рассмотрим создание цифровой измерителя расстояния (цифровой «линейки») на основе микроконтроллера 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 представлена на следующем рисунке.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4 ответа к “Цифровой измеритель расстояния («линейка») на ATtiny85”

Бесполезное устройство. Зачем слабовидящим малюсенький экранчик? )

Если для вас важен размер экрана, то не вижу проблем использовать в этом проекте дисплей с экраном побольше

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

Ну тогда вместо нее можно использовать дешёвую плату STM32 Blue Pill, она программируется точно также с помощью Arduino IDE, ну или использовать модуль ESP8266

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

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