🏠 Лінійка-енкодер
Якщо Ви тільки почали своє знайомство з модулями Arduino, вас обов'язково зацікавлять енкодери — пристрої, що використовуються для точного позиціювання повороту деталі або інструменту в токарних чи фрезерних станках. Більше про управління енкодером ви зможете прочитати в окремій статті, а зараз я покажу, як можна використовувати енкодер в нестандартній ситуації.
🌐 Такі пристрої, як енкодер, використовуються в токарних або фрезерних станках для позиціювання точного повороту деталі або інструменту. Енкодер дуже точний, і чим більше імпульсів за 1 оберт видає, тим точніший енкодер. За приклад візьмемо енкодер EC11, у якого за один оберт видається 24 імпульси. Що це означає? Поки ми крутимо вал енкодера, він на виході видає певну кількість імпульсів — чим більше крутимо, тим більше імпульсів. Якщо крутимо в інший бік, кількість імпульсів також збільшується, але зі знаком «–».
🫠 Отже, сьогодні ми створимо енкодер, який буде міряти відстань. Відстань на будь-якій поверхні — довжину криволінійної підлоги, стелі тощо. Це може бути корисним для вимірювання нестандартних довжин або навіть для роботи над проектами з ремонту та декорування. Але по порядку.
🔧 Нам знадобиться:
- Arduino (наприклад, Nano)
- Енкодер EC11
- 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 метра, що є досить непоганим результатом для аматорського проекту. Якщо ж потрібно підвищити точність, можна використовувати спеціальне колесо з гумовим покриттям для кращого зчеплення.
🌟 Як ще можна використовувати енкодер?
Особисто я думаю, що енкодер може бути корисним не тільки для вимірювання відстані. Наприклад, ось кілька ідей, як його можна застосувати у побуті або для цікавих проектів:
- Точне налаштування гучності звуку або освітлення. Енкодери часто використовують у звичайних аудіосистемах для регулювання гучності. Але можна піти далі — зробити систему керування освітленням у кімнаті, де ви просто повертаєте енкодер, і лампи плавно змінюють свою яскравість. Це зручно, просто і навіть трохи футуристично.
- Керування пристроями у розумному будинку. Уявіть собі, що ви можете використовувати енкодер як ручку, щоб відкривати або закривати штори, чи налаштовувати температуру в кімнаті. Це можна інтегрувати з іншими компонентами Arduino, і таким чином отримати систему, яка дійсно спрощує ваше життя.
- Саморобні контролери для ігор. Якщо ви любите грати в симулятори, як от симулятор водіння, то енкодер може стати частиною вашого власного саморобного керма. Можливо, це не замінить професійні ігрові пристрої, але точно додасть веселощів у процес створення ігор власноруч.
- Проекти для саду та городу. Наприклад, можна зробити саморобний пристрій для вимірювання довжини грядки або огорожі. Це набагато зручніше, ніж носити з собою рулетку, особливо якщо треба виміряти щось довге і звивисте. Просто ведете енкодер по землі — і відразу бачите довжину на дисплеї.
- Точне позиціювання при роботі з інструментами. Якщо вам потрібно робити повторювані точні рухи — наприклад, свердлити отвори на однаковій відстані, — енкодер допоможе точно контролювати рух інструменту і уникнути помилок. Це особливо зручно, якщо працюєте з деревом або металом.
🌍 Поради для покращення точності:
Для досягнення максимальної точності під час вимірювання відстані за допомогою енкодера, слід дотримуватися кількох простих правил:
- Використовуйте колесо з покриттям, яке забезпечить гарне зчеплення з поверхнею.
- Переконайтеся, що вісь енкодера надійно закріплена, щоб уникнути люфту або небажаного руху під час вимірювань.
- Якщо можливо, проводьте вимірювання на рівних поверхнях, щоб мінімізувати вплив нерівностей на результат.
🥇 Універсальність та точність:
Енкодер — це справжній сучасний конкурент рулетці за мірами точності, оскільки він дозволяє не тільки вимірювати відстань, але й контролювати процес обертання та позиціювання. Використовуючи енкодер, ви зможете вимірювати довжини та кути з високою точністю, що відкриває безліч можливостей для реалізації ваших проектів.
Успіхів у вимірюваннях разом з myproject.com.ua! 🛏
© 2024 Мій Проект. Автор: Ardu_miha. Використання матеріалів дозволено лише з посиланням на джерело.
Написати коментар