Measurino: измерительное колесо. Подтверждение концепции: 9 шагов
Measurino: измерительное колесо. Подтверждение концепции: 9 шагов
Anonim
Measurino: измерительное колесо, доказывающее концепцию
Measurino: измерительное колесо, доказывающее концепцию

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

Шаг 1: Детали и компоненты

  • Ардуино Нано ред. 3
  • 128 × 64 OLED-дисплей (SSD1306)
  • Инкрементальный фотоэлектрический поворотный энкодер (400P / R)
  • Резиновое колесо для авиамоделей (диаметр 51 мм)
  • 2 кнопки
  • Батарея 9v

Шаг 2: кодировщик

Кодировщик
Кодировщик
Кодировщик
Кодировщик

Для этого проекта я протестировал несколько дешевых поворотных энкодеров, но сразу отказался от них из-за проблем с точностью / чувствительностью. Итак, я пошел к инкрементальному фотоэлектрическому поворотному энкодеру DFRobot - 400P / R SKU: SEN0230. Это промышленный инкрементальный фотоэлектрический датчик угла поворота с алюминиевым материалом, металлическим корпусом и валом из нержавеющей стали. Он генерирует двухфазный ортогональный импульсный сигнал AB за счет вращения диска решетки и оптопары. 400 импульсов / цикл для каждой фазы и 1600 импульсов / цикл для двухфазного 4-кратного вывода. Этот поворотный энкодер поддерживает максимальную скорость 5000 об / мин. И его можно использовать для измерения скорости, угла, угловой скорости и других данных.

Фотоэлектрический энкодер имеет выход с открытым коллектором NPN, поэтому вам нужно использовать подтягивающие резисторы или включить подтягивание внутреннего Arduino. Он использует микросхему регулятора напряжения 750L05, которая имеет широкий диапазон входной мощности постоянного тока 4,8-24 В.

Шаг 3: Чувствительность

Чувствительность
Чувствительность

Этот оптоэлектрический поворотный энкодер обладает действительно высокой чувствительностью, что делает его идеальным для приложений управления валом и позиционирования. Но для моей цели это было слишком разумно. С колесом диаметром 51 мм этот энкодер имеет чувствительность 0,4 мм, что означает, что если у вас в руке минимальные дрожания, они будут записаны. Поэтому я снизил чувствительность, добавив гистерезис в процедуру прерывания:

пустое прерывание ()

{char i; i = digitalRead (B_PHASE); если (i == 1) count + = 1; иначе count - = 1; if (abs (count)> = гистерезис) {flag_A = flag_A + count; count = 0; }}

Этого трюка хватило, чтобы придать мерке хорошую устойчивость.

Шаг 4: Измерение

Выберите единицу измерения (десятичную или британскую), а затем просто поместите колесо так, чтобы его контактная точка находилась в начале измерения, нажмите кнопку «Сброс» и продолжайте вращать колесо до конца. Слева направо мера увеличивается и суммируется, справа налево она уменьшается и вычитается. Вы также можете измерять кривые объекты (форма вашего автомобиля, перила винтовой лестницы, длина руки от плеча до запястья с согнутым локтем и т. Д.).

Полный оборот колеса диаметром = D дает длину D * π. В моем случае с колесом диаметром 51 мм это 16,02 см, а каждая отметка составляет 0,4 мм (см. Параграф «Чувствительность»).

Шаг 5: Сборка

PoC был сделан на макете, чтобы продемонстрировать схему. Каждый компонент был прикреплен к плате, а поворотный энкодер подключен к клеммной колодке с винтовыми полюсами 2x2. Батарея представляет собой стандартную батарею на 9 В, а общая потребляемая мощность цепи составляет около 60 мА.

Шаг 6: Код

Для дисплея я использовал U8g2lib, который является очень гибким и мощным для этого типа OLED-дисплеев, позволяя широкий выбор шрифтов и хорошие функции позиционирования. Я не стал тратить слишком много времени на заполнение дисплея информацией, так как это был просто Poc.

Чтобы прочитать кодировщик, я использую прерывания, генерируемые одной из двух фаз: каждый раз, когда вал кодировщика перемещается, он генерирует прерывание для Arduino, связанное с нарастанием импульса.

attachInterrupt (digitalPinToInterrupt (A_PHASE), прерывание, RISING);

Дисплей автоматически переключается с миллиметров на метры, на километры и (если выбрано с помощью кнопки) с дюймов на ярды и мили, в то время как кнопка RST сбрасывает измерение на ноль.

Шаг 7: Схема

Схемы
Схемы

Шаг 8: От PoC к производству

Почему это доказательство концепции? Из-за множества улучшений, которые можно / нужно сделать до создания полностью функционирующего оборудования. Рассмотрим подробнее все возможные улучшения:

  • Колесо. Чувствительность / точность Measurino зависит от колеса. Колесо меньшего размера может дать вам лучшую точность при измерении малых длин (от миллиметров до сантиметров). Колесо гораздо большего размера с удлиненной стрелой позволит ходить по дороге и измерять километры. Для маленьких колес необходимо учитывать материал: полностью резиновое колесо может немного деформироваться и повлиять на точность, поэтому в этом случае я предлагаю алюминиево-стальное колесо с тонкой лентой, чтобы избежать скольжения. С тривиальным программным редактированием (выберите правильный диаметр колеса с помощью переключателя) вы можете рассмотреть возможность замены сменных колес для адаптации к любым параметрам, используя 4-контактный разъем (например: порт USB).
  • Программное обеспечение. Добавив еще одну кнопку, программное обеспечение может также позаботиться об измерении площадей прямоугольников или амплитуды углов. Я также советую добавить кнопку «Удерживать», чтобы заморозить измерение в конце, избегая непреднамеренного перемещения колеса перед чтением значения на дисплее.
  • Заменить колесо катушкой. На короткие расстояния (в пределах нескольких метров) колесо можно заменить подпружиненной катушкой с нитью или лентой. Таким образом, вам просто нужно потянуть за нить (заставляя вращаться вал энкодера), снять мерку и посмотреть на дисплей.
  • Добавить отображение состояния батареи. Эталонный вывод 3,3 В Arduino (с точностью до 1%) можно использовать в качестве основы для преобразователя АЦП. Итак, выполнив аналого-цифровое преобразование на выводе 3,3 В (подключив его к A1), а затем сравнив это показание с показанием датчика, мы можем экстраполировать реальное показание, независимо от того, какой VIN (пока оно выше 3,4 В). Рабочий пример можно найти в этом другом моем проекте.

Шаг 9: Галерея изображений

Рекомендуемые: