Ремонт шагомера своими руками
Эта схема измеряет пройденное расстояние. Устройство размещается в небольшой коробке, которую носят в кармане штанов. Показания устройства интерпретируются следующим образом. Левая цифра (старшая, индикатор D2) показывает километры, от 0 до 9, а постоянно зажженная десятичная точка этого индикатора отделяет километры от сотен метров. На правом индикаторе (D1, младшая цифра) отображаются сотни метров, а десятичная точка зажигается через каждые 50 метров пути. Звуковой сигнал отмечает каждый цикл счета. Звук можно отключить.
Считается, что нормальный шаг среднего человека равен 78 см. Следовательно, светодиод (десятичная точка), отмечающий отрезки пути по 50 м, должен зажигаться через 64 шага, или через 32 цикла переключения ртутного выключателя, отрезки в 100 м через 128 шагов и т.д. Для экономии расхода батарей индикация включается только при нажатии кнопки P2. Случайный сброс счетчиков невозможен, т.к. для этого нужно нажать обе кнопки одновременно.
Конечно же, этот измеритель не отличается высокой точностью, но для обозначенных целей он вполне подходит. В любом случае, наиболее ответственным этапом в изготовлении устройства будет выбор правильного положения и ориентации ртутного выключателя внутри корпуса.
Работа схемы:
На микросхемах IC1A и IC1B собран ждущий мультивибратор, нейтрализующий, в определенной степени, влияние случайных встряхиваний ртутного переключателя. На вход IC2 подаются прямоугольные импульсы правильной формы, частота которых делится микросхемой на 64. Транзистор Q2 управляет включением десятичной точки индикатора D1 через каждые 32 импульса. Каждая из микросхем IC3 и IC4 делит частоту на 10 и управляет 7-сегментным индикатором. Кнопка P1 сбрасывает счетчики, а P2 включает индикацию. Микросхема IC1C вырабатывает прямоугольные импульсы звуковой частоты в течение небольшого отрезка каждого цикла работы ждущего мультивибратора. Транзистор Q1 управляет пьезоизлучателем, а выключатель SW2 служит для отключения звука.
Добрый день! В прошлой статье мы научились работать с цифровым акселерометром, теперь попробуем на его основе собрать счетчик шагов. При ходьбе мы совершаем небольшие колебания, для нас они еле заметны, но акселерометру по силам их зарегистрировать. Датчик показывает нам статическое и динамическое ускорение по трем осям (x, y, z), но так как в каком положении он окажется неизвестно, мы будем работать с суммарным вектором, который рассчитаем по формуле: x²+y²+z². Чтобы проанализировать значения, подключим акселерометр к ардуино по шине I2C, как мы делали в прошлой статье ( на arduino nano это А4 - SDA, A5 - SCL), и подадим питание 3,3В.
Для работы с акселерометром нужна библиотека:
- Библиотека для работы с модулем Adafruit_ADXL345-master скачать .
Загрузим не большой скетч для вывода значений суммарного вектора ускорений в монитор порта.
В наше время стали весьма популярными разнообразные браслеты для фитнеса, которые могут не только считать шаги, но и показывать количество сожжённых вами калорий, отображать на экране вашу частоту пульса, показывать время и многое другое. Большинство этих умных устройств, относящихся к категории интернета вещей (IoT – Internet of Things) сохраняют всю эту информацию в облаке, благодаря чему вы всегда можете просмотреть ее на своем смартфоне. Ранее на нашем сайте мы уже рассматривали умную систему мониторинга здоровья пациента на основе Arduino, которая сохраняет всю критически важную информацию на сервере ThingSpeak, откуда ее можно прочесть из любой точки мира (где есть интернет).
Но кроме таких умных браслетов в настоящее время также востребованы и обычные счетчики шагов (шагомеры). В данной статье мы рассмотрим создание простого и дешевого шагомера (педометра) на основе платы Arduino и акселерометра. Этот шагомер будет подсчитывать количество шагов и отображать его на экране ЖК дисплея 16x2. Этот шагомер можно интегрировать с умными часами на основе Arduino. Также на нашем сайте вы можете посмотреть проект шагомера на основе микроконтроллера ATtiny85.
Необходимые компоненты
- Плата Arduino Nano (купить на AliExpress).
- Акселерометр (ADXL335) (купить на AliExpress).
- ЖК дисплей 16х2 (купить на AliExpress).
- Модуль I2C для работы с ЖК дисплеем (LCD I2C Module) (купить на AliExpress).
- Батарейка.
Акселерометр ADXL335
ADXL335 представляет собой 3-осевой аналоговый акселерометр, принцип работы которого основан на обнаружении изменения емкости. ADXL335 имеет небольшие размеры, потребляет мало мощности и содержит внутри себя поликристаллический кремниевый датчик и схему обработки сигналов от данного датчика. Данный акселерометр может измерять как статическое, так и динамическое ускорение. В нашем проекте счетчика шагов на Arduino акселерометр ADXL335 будет выполнять роль датчика шагов.
Акселерометр является устройством, которое преобразует ускорение в любом направлении в соответствующее изменение напряжения. Это достигается при помощи использования конденсаторов внутри акселерометра, при ускорении емкость этих конденсаторов изменяется, что приводит к изменению напряжения.
На следующем рисунке показан внешний вид передней и задней частей акселерометра.
Назначение контактов акселерометра ADXL335:
Vcc – контакт для подачи напряжения постоянного тока 5 В.
X-OUT – выход акселерометра по оси x.
Y-OUT – выход акселерометра по оси y.
Z-OUT – выход акселерометра по оси z.
GND – общий провод (земля).
ST – этот контакт используется для установки чувствительности датчика.
На нашем сайте вы можете посмотреть следующие проекты с использованием акселерометра ADXL335:
Схема проекта
Схема шагомера на основе платы Arduino и акселерометра ADXL335 представлена на следующем рисунке.
На представленной схеме контакты X, Y и Z акселерометра подключены к аналоговым контактам A1, A2 & A3 платы Arduino Nano. Для подключения ЖК дисплея 16x2 к плате Arduino Nano мы в этом проекте использовали модуль интерфейса I2C. Контакты SCL и SDA данного модуля подключены к контактам A5 и A4 платы Arduino Nano соответственно. Полная схема соединений нашего проекта представлена в следующей таблице.
Arduino Nano | ADXL335 |
3.3V | VCC |
GND | GND |
A1 | X |
A2 | Y |
A3 | Z |
Arduino Nano | LCD I2C Module |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Внешний вид собранной на макетной плате конструкции нашего проекта показан на следующем рисунке.
После тестирования проекта на макетной плате мы спаяли его затем на перфорированной плате (Perfboard) и у нас получилась конструкция следующего вида:
Принцип работы счетчика шагов (шагомера)
Счетчик шагов (шагомер) подсчитывает общее количество шагов, сделанное человеком, используя значения изменения осей X, Y и Z, получаемые с акселерометра. Акселерометр непрерывно обновляет максимальное и минимальное значения этих осей после определенного числа отсчетов. Среднее значение этих трех осей ((Max + Min)/2) называется динамическим пороговым значением и именно это значение используется для принятия решения о том был ли сделан шаг или нет.
Во время движения шагомер может находиться в любой ориентации (положении), поэтому он считает шаги вдоль той оси, вдоль которой происходят наибольшие изменения ускорения.
Краткий алгоритм работы шагомера выглядит следующим образом:
- После подачи питания шагомер производит свою калибровку.
- Затем в функции void loop он непрерывно считывает значения осей X, Y и Z.
- После этого шагомер рассчитывает вектор суммарного ускорения от начальной точки.
- Вектор ускорения представляет собой квадратный корень из (x^2+y^2+z^2).
- Далее шагомер сравнивает рассчитанный вектор ускорения с заранее определенной границей и на основании этого принимает решение увеличивать ли счетчик шагов или нет.
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Вначале в программе подключим библиотеку для работы с ЖК дисплеем по протоколу I2C. Для работы с акселерометром ADXL335 не требуется никакой библиотеки поскольку у него аналоговый выход.
Прототипом шагомеров является одометр – устройство, считающее количество оборотов колеса. Первый одометр был изобретён в начале нашей эры греческим механиком и математиком Героном Александрийским. Долгое время одометры использовались в картографии и военном деле для уточнения расстояний, а сейчас вы можете увидеть их в любом автомобиле.
Создателем шагомера считается великий Леонардо да Винчи. С учётом развития технологий в годы его жизни (середина XV – начало XVI века) о компактности и удобстве речи не шло – согласно чертежам, шагомер представлял из себя маятниковый механизм, прикрепляемый к поясу (на рисунке – третий чертёж). Нам неизвестно, был ли реализован такой шагомер на практике, или же остался, как и многие другие задумки гения, на бумаге, но, тем не менее, это устройство вполне могло бы считать шаги.
В последующие века шагомеры развивались в том же направлении, что и близкие к ним по конструкции механические часы, но, в отличие от часов, оставались лишь высокотехнологичной игрушкой. Шагомер первой половины XX века снаружи был неотличим от карманных часов, да и внутри имел похожий механизм – колебания подвешенного груза приводили в движение систему шестерней, которые, в свою очередь, двигали стрелки, показывающие количество шагов. Позже часовщики стали использовать принцип работы шагомера для автоматического подзавода часов от движения руки.
В народ шагомеры ушли в 1960-х годах с руки японского предпринимателя Есиро Хитано, который стал продавать их под брендом Manpo-Kei, продвигая идею о 10000 шагов в день. Его шагомеры всё ещё были механическими, но со временем механику вытеснила электроника. В электронных шагомерах вместо давления груза на пружину, прикреплённую к шестерням, стали использовать изменение ёмкости конденсаторов или потенциала (пьезоэлектрический эффект) при механическом воздействии. Сам механизм, регистрирующий движение внутри шагомера, называется акселерометром.
Как работает шагомер
Шагомер как отдельное устройство известен еще с 60-х годов прошлого века. Первые приборы, изобретенные в Японии, могли высчитывать только пройденный километраж. По ходу научного прогресса увеличивалась их точность, прописывались новые алгоритмы, уменьшались размеры. Все это привело к тому, что шагомер стал одной из встроенных функций в большинстве мобильных гаджетов: смартфонах, умных часах, фитнес-браслетах.
Современные версии, сопровождаемые программным обеспечением, позволяют не только регулировать достижения, но и высчитывать среднюю норму активности, таким образом, корректируя свой ежедневный график.
За подсчет шагов отвечает особое устройство – акселерометр. Он бывает двух- и трехкомпонентный. Проще говоря, отслеживание ускорения происходит по указанному количеству осей координат (2 или 3). В большинстве современных моделей в комплект к акселерометру устанавливается гироскоп. Это устройство определяет изменение угла ориентации в пространстве. Подобный тандем позволяет более точно производить подсчет, при этом не учитывая обычные взмахи или движения рукой.
Встроенный акселерометр, измеряя ускорение, определяет, находится ли рука в движении, или она неподвижна. Все данные передаются в микропроцессор шагомера, где с помощью специального алгоритма производится анализ, выдается результат: перемещается ли человек в пространстве или просто случайно взмахнул рукой. Более сложные алгоритмы призваны различать ходьбу и бег.
При гироскопе и данных получаемых с 3 осей координат результаты могут быть на порядок точнее. В этом случае проблем отличия взмаха от движения не возникает. Помимо этого, значение имеет и тип поверхности, по которой происходит движение. Наиболее точные значения снимаются с ровной асфальтированной дороги, а вот прогулка по гористой местности или морскому каменистому побережью может дать погрешность в 5-10%.
В этой статье мы рассмотрим создание портативного счетчика шагов (шагомера) на основе микроконтроллера AVR ATtiny85, акселерометра и гироскопа MPU6050, и OLED дисплея. Питание на шагомер будет подавать от простой батарейки на 3V, что позволяет сделать его достаточно компактным и удобным для переноски. Для изготовления данного шагомера потребуется сравнительно мало компонентов, код программы также будет достаточно простой.
В программе шагомера с помощью датчика MPU6050 производится измерение ускорения по 3-м осям (X, Y и Z). Затем производится вычисление разницы между текущими и предыдущими значениями ускорения. Если эта разница будет больше определенной величины (для ходьбы больше 6, для бега более 10), производится увеличение счетчика числа шагов. Общее число сделанных шагов отображается на экране OLED дисплея.
Чтобы сделать наш шагомер максимально компактным мы изготовили для него печатную плату с помощью сервиса PCBWay. При желании вы можете добавить в данный проект датчик частоты сердечных сокращений. Также на нашем сайте вы можете посмотреть проект шагомера на основе платы Arduino.
Необходимые компоненты
- Микроконтроллер ATtiny85 (купить на AliExpress).
- Модуль (датчик) MPU6050 (купить на AliExpress).
- Модуль OLED дисплея (купить на AliExpress).
- Резисторы (SMD) 10 кОм – 5 шт. (купить на AliExpress).
- Кнопки – 2 шт.
Гироскопический датчик (гироскоп) MPU-6050
Распиновка MPU-6050:
Vcc – контакт для подачи питающего напряжения постоянного тока;
GND – земля модуля;
SDA – это контакт используется для передачи данных между модулем mpu6050 и микроконтроллером;
SCL – вход синхронизации;
XDA – линия передачи данных (опциональная) по протоколу I2C для конфигурирования и считывания данных с внешних датчиков (не используется в нашем проекте);
XCL – вход синхронизации протокола I2C для конфигурирования и считывания данных с внешних датчиков (не используется в нашем проекте);
ADO – I2C Slave Address LSB (не используется в нашем проекте);
INT – контакт прерывания для индикации готовности данных.
На нашем сайте вы можете посмотреть следующие проекты на основе гироскопа MPU6050:
Работа схемы
Схема шагомера на ATtiny85 и акселерометре MPU6050 представлена на следующем рисунке.
Взаимодействие между MPU6050, OLED дисплеем м платой Arduino осуществляется с помощью протокола I2C. Поэтому контакт SCLPin (PB2) микроконтроллера ATtiny85 подключен к контактам SCLPin датчика MPU6050 и OLED дисплея. Аналогичным образом, контакт SDAPin (PB0) микроконтроллера ATtiny85 подключен к контактам SDAPin датчика MPU6050 и OLED дисплея. Две кнопки подключены к контактам PB3 и PB4 микроконтроллера ATtiny85. Эти кнопки используются для скроллинга или изменения текста на экране дисплея.
Изготовление печатной платы для шагомера на основе ATtiny85
Для проектирования печатной платы мы использовали редактор EasyEDA. 3D модель спроектированной нами печатной платы для этого проекта выглядит следующим образом:
Gerber файлы для изготовления печатной платы данного проекта можно скачать по следующей ссылке - Gerber file for ATtiny85 Step Counter.
Заказ печатной платы с сервиса PCBWay
Для заказа печатной платы с сервиса PCBWay (разумеется, вы можете использовать любой удобный вам способ заказа печатной платы) выполните следующую последовательность шагов.
Шаг 2. Нажмите на кнопку ‘Quote Now’ (заказать сейчас). После этого вас перебросит на страницу, на которой вам необходимо будет ввести дополнительные параметры печатной платы: ее тип, слои, материал, толщину и т.д. Большинство этих параметров можно оставить такими, какими их сервис предлагает по умолчанию.
Шаг 3. В заключение вам необходимо загрузить в сервис Gerber файлы и оплатить заказ. Перед переходом к процессу оплаты сервис PCBWAY проверяет ваши Gerber файлы на корректность.
Сборка шагомера на печатной плате
Нашу плату сервис изготовил за несколько дней, ее качество было на высоте. Низ и верх нашей печатной платы показаны на следующем рисунке.
После припаивания компонентов проекта к печатной плате у нас получилась конструкция следующего вида:
Объяснение программы для ATtiny85
Полный текст программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Поскольку здесь используется программирование микроконтроллера ATtiny85 с помощью Arduino IDE, то для этого можно использовать USB программатор для ATtiny85 на основе загрузчика Digispark.
Читайте также: