Вы смотрели
Каталог товаров
Клиенту
Тема сайта:
+38 (066) 305-77-25
Наш адрес
Харьков, времено - только доставка Новой Почтой, УкрПочтой, МистЕкспрес, ROZETKA Delivery
Телефоны:
Время работы
  • Пн-Пт: с 9 до 18
  • Сб.: с 10 до 17
  • Вс: с 11 до 16
E-mail
Мы в соцсетях
Перейти в контакты
0 0
Каталог
Главная
Смотрели
1
Закладки
0
Сравнить
0
Контакты

Лінійка-енкодер

Чи була корисною ця стаття?
Лінійка-енкодер

🏠 Линейка-энкодер

Если Вы только начали своё знакомство с модулями Arduino, вас обязательно заинтересуют энкодеры — устройства, используемые для точного позиционирования поворота детали или инструмента в токарных или фрезерных станках. Подробнее об управлении энкодером вы сможете прочитать в отдельной статье, а сейчас я покажу, как можно использовать энкодер в нестандартной ситуации.

🌐 Такие устройства, как энкодер, используются в токарных или фрезерных станках для позиционирования точного поворота детали или инструмента. Энкодер очень точный, и чем больше импульсов за 1 оборот выдает, тем точнее энкодер. В качестве примера возьмем энкодер EC11, у которого за один оборот выдается 24 импульса. Что это означает? Пока мы крутим вал энкодера, он на выходе выдает определенное количество импульсов — чем больше крутим, тем больше импульсов. Если крутим в другую сторону, количество импульсов также увеличивается, но со знаком «–».

🫠 Итак, сегодня мы создадим энкодер, который будет измерять расстояние. Расстояние на любой поверхности — длину криволинейного пола, потолка и т. д. Это может быть полезным для измерения нестандартных длин или даже для работы над проектами по ремонту и декорированию. Но по порядку.

🔧 Нам потребуется:

  1. Arduino (например, Nano)
  2. Энкодер EC11
  3. LCD1602 I2C дисплей (необязательно)

🔬 Схема подключения:

Схема підключення

💡 Дисплей (необязательно):

  • VCC (дисплей) к +5V (Arduino)
  • GND (дисплей) к GND (Arduino)
  • SDA (дисплей) к A4 (Arduino)
  • SCL (дисплей) к A5 (Arduino)

💡 Подключение энкодера:

  • 5V (энкодер) к +5V (Arduino)
  • GND (энкодер) к GND (Arduino)
  • S1 (энкодер) к D2 (Arduino)
  • S2 (энкодер) к D3 (Arduino)
  • Key (энкодер) никуда не подключается.

🛠 Переходим к коду:

🛠 При использовании дисплея нужно установить библиотеку LiquidCrystal_I2C.h. Эта библиотека позволяет легко работать с LCD-дисплеями через шину I2C, что значительно упрощает процесс подключения и программирования.

Для измерения расстояния нам потребуется несколько адаптировать код. Прежде всего, мы должны надеть колесо на вал энкодера. Диаметр этого колеса можно указать в коде для точного вычисления пройденного расстояния. Кроме того, в коде нужно указать количество импульсов за один оборот — эта информация берется из описания энкодера, в нашем случае это 24 импульса.

Редактирование настроек кода

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

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

const int pinS1 = 2; // S1 
const int pinS2 = 3; // S2 

volatile long pulseCount = 0;

const float wheelDiameter = 50.0; // Диаметр колеса в мм
const int pulsesPerRevolution = 24; // Количество импульсов за оборот
const float mmPerPulse = (wheelDiameter * 3.14159) / pulsesPerRevolution;

void setup() {
  pinMode(pinS1, INPUT);
  pinMode(pinS2, INPUT);
  attachInterrupt(digitalPinToInterrupt(pinS1), encoderInterrupt, CHANGE);
  Serial.begin(9600);
  lcd.init(); 
  lcd.backlight(); 
  lcd.setCursor(0, 0); 
  lcd.print("Distance: ");
}

void loop() {
    float distanceMM = pulseCount * mmPerPulse;
  Serial.print("Импульсов ");
  Serial.print(pulseCount);
  Serial.print(" Расстояние: ");
  Serial.print(distanceMM);
  Serial.println(" мм");

  lcd.setCursor(0, 1);
  lcd.print("                "); 
  lcd.setCursor(0, 1); 
  lcd.print(distanceMM); 
  lcd.print(" mm");

   delay(500);
}

void encoderInterrupt() {
  int s1State = digitalRead(pinS1);
  int s2State = digitalRead(pinS2);

  if (s1State == s2State) {
     pulseCount++;
  } else {
    pulseCount--;
  }
}

🔖 Загрузка и тест:

📈 Загрузив код на Arduino, на дисплее (если он используется) будут отображаться значения дистанции в реальном времени.

Вывод на дисплее

Это позволяет не только контролировать процесс измерения, но и анализировать полученные результаты. Если дисплей не используется, значения можно просматривать в мониторе порта, доступном в среде программирования Arduino IDE. Выглядит это так:

Вывод на монитор порта

Во время тестирования я использовал обычную пластиковую крышку, чтобы сделать колесо для вала энкодера. Хотя крышка иногда проскальзывала, погрешность составила всего 3 мм на длине около 1 метра, что является довольно неплохим результатом для любительского проекта. Если же требуется повысить точность, можно использовать специальное колесо с резиновым покрытием для лучшего сцепления.

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

🌟 Как ещё можно использовать энкодер?

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

  1. Точная настройка громкости звука или освещения. Энкодеры часто используются в обычных аудиосистемах для регулировки громкости. Но можно пойти дальше — создать систему управления освещением в комнате, где вы просто поворачиваете энкодер, и лампы плавно меняют свою яркость. Это удобно, просто и даже немного футуристично.
  2. Управление устройствами в умном доме. Представьте себе, что вы можете использовать энкодер как ручку, чтобы открывать или закрывать шторы, или настраивать температуру в комнате. Это можно интегрировать с другими компонентами Arduino, и таким образом получить систему, которая действительно упрощает вашу жизнь.
  3. Самодельные контроллеры для игр. Если вы любите играть в симуляторы, как, например, симулятор вождения, то энкодер может стать частью вашего собственного самодельного руля. Возможно, это не заменит профессиональные игровые устройства, но точно добавит веселья в процесс создания игр своими руками.
  4. Проекты для сада и огорода. Например, можно сделать самодельное устройство для измерения длины грядки или ограды. Это намного удобнее, чем носить с собой рулетку, особенно если нужно измерить что-то длинное и извилистое. Просто ведёте энкодер по земле — и сразу видите длину на дисплее.
  5. Точное позиционирование при работе с инструментами. Если вам нужно делать повторяющиеся точные движения — например, сверлить отверстия на одинаковом расстоянии, — энкодер поможет точно контролировать движение инструмента и избежать ошибок. Это особенно удобно, если работаете с деревом или металлом.

🌍 Советы для повышения точности:

Для достижения максимальной точности при измерении расстояния с помощью энкодера, следует придерживаться нескольких простых правил:

  • Используйте колесо с покрытием, которое обеспечит хорошее сцепление с поверхностью.
  • Убедитесь, что ось энкодера надёжно закреплена, чтобы избежать люфта или нежелательного движения во время измерений.
  • Если возможно, проводите измерения на ровных поверхностях, чтобы минимизировать влияние неровностей на результат.

🥇 Универсальность и точность:

Энкодер — это настоящий современный конкурент рулетке по мерам точности, так как он позволяет не только измерять расстояние, но и контролировать процесс вращения и позиционирования. Используя энкодер, вы сможете измерять длины и углы с высокой точностью, что открывает множество возможностей для реализации ваших проектов.

Удачи в измерениях вместе с myproject.com.ua! 🛏

© 2024 Мій Проект. Автор: Ardu_miha. Использование материалов разрешено только с указанием источника.

Живий чат
Живий чат