Розроблення тахометра на базі MK-duino
Тахометр — прилад для вимірювання частоти обертання валів машин і механізмів. Переважно застосовуються відцентрові механічні, магнітні та електричні тахометри, рідше використовуються пневматичні і гідравлічні. В механічному відцентровому тахометрі на валу встановлена ковзаюча муфта з шарнірними важелями, несучими на собі розбіжні при обертанні вала вантажі, які переміщують муфту по валу, долаючи… Читати ще >
Розроблення тахометра на базі MK-duino (реферат, курсова, диплом, контрольна)
Зміст
- Вступ
- 1. Опис актуальності завдання та область використання
- 1.2 Дослідження, проектування і розробка схем
- 1.3. Конструкція MK-duino
- 1.4 Перелік елементів
- 2. Проектування і розробка схеми.
- 2.1 Функції основних елементів.
- 2.2 Зборка схеми
- 2.3 Програмна частина
- Висновок
- Перелік літератури
- Вступ
- Підвищення технічного рівня та ефективності електронного обладнання на основі новітніх досягнень електроніки — одна з найважливіших завдань розвитку суспільства. Створення мікропроцесорів обумовлено досягненнями в області технології виробництва великих інтегральних схем (ВІС). Слідом за появою мікропроцесорів розробляється і одержує широкий розвиток спеціальна багатофункціональна апаратура, яка використовується при вирішенні великого числа завдань сучасної техніки. Мікропроцесори дозволяють на єдиній технологічній схемо-технічної базі за рахунок програмування створювати різні типи приладів. Так і в своїй роботі я вирішив реалізувати прилад на основі мікропроцесора. В якості мікросхеми була обрана Arduino UNO.
- У цій курсовій роботі був розроблений пристрій на мікроконтролері, написана програма. Даним пристроєм є тахометр на базі MK-duino (Arduino UNO).
1. Опис актуальності завдання та область використання
У цій роботі на основі мікросхеми Arduino UNO було спроектовано і реалізовано пристрій — Тахометр.
Тахометр — прилад для вимірювання частоти обертання валів машин і механізмів. Переважно застосовуються відцентрові механічні, магнітні та електричні тахометри, рідше використовуються пневматичні і гідравлічні. В механічному відцентровому тахометрі на валу встановлена ковзаюча муфта з шарнірними важелями, несучими на собі розбіжні при обертанні вала вантажі, які переміщують муфту по валу, долаючи дію пружини, що врівноважує положення муфти на валу відповідає частоті обертання валу і передається системою важеля на стрілку покажчика — відлікового пристрою, шкала якого відградуйована в об / хв. Вал може отримувати обертання безпосередньо від контрольованого об'єкта або через гнучкий вал. У магнітному тахометрі взаємодіють магнітні поля, створювані постійним магнітом і обертовим ротором, частота обертання якого пропорційна виникаючим вихровим струмам, що прагнуть відхилити на певний кут диск, встановлений на валу ротора і утримуваний пружиною. Відхилення диска, жорстко пов’язаного зі стрілкою, реєструються на шкалі. Електричні Т. можуть бути електромашинними або електронними. У електромашинному тахометрі ЕРС генератора постійного або змінного струму пропорційна кутовий швидкості, вимірявши яку можна визначити частоту обертання валу; показання передаються дистанційно на шкалу вимірювального приладу. Принцип дії електронного Т. заснований на перетворенні імпульсів струму, що виникають в первинному ланцюзі системи запалювання при розмиканні контактів переривника, в ток, що направляється до магнітоелектричного вказівного приладу. Частота імпульсів в первинному ланцюзі пропорційна частоті обертання вала двигуна.
Тахометр — це корисний інструмент для підрахунку RPM (оборотів на хвилину) колеса або всього, що крутиться. Найпростіший спосіб зробити тахометр — це використовувати ІК передавач і приймач. Коли зв’язок між ними переривається, ви знаєте, що щось обертається і можете застосовувати код для обчислення RPM, орієнтуючись на частоту переривання зв’язку
1.2 Дослідження, проектування і розробка схем
MK-duino це просте, програмоване ядро для самостійної розробки пристроїв на базі: мікропроцесора ATmega;
вільно-поширюваної програмної оболонки Arduino http://arduino.cc/, та величезного ресурсу готових прикладів.
В тому числі: управління двигунами, управління світлодіодами, управління РКІ, управління звуком, цифрових осцилографів, генераторів сигналів, роботів, маніпуляторів, ЧПУ, і багатьох інших прикладів.
Чому Arduino, а не більш професійні інструменти для програмування мікропроцесорних пристроїв ?
Робота в середовищі програмування Arduino доступна всім, хто має доступ до персонального комп’ютера, і не вимагає знань тонкощів програмування.
Як то: за особливостями роботи компіляторів, лінковщік, завантажувачів; особливостям планування адресного простору пам’яті, портів введеннявиведеня, переривань, та багатьох інших, малозрозумілих для початківця речей. Оболонка ховає від новичка всю складність внутрішнього устрою кухні програмування мікропроцесорів.
Конструкція Duino — надзвичайно проста.
Це невелика плата з мікропроцесором, кварцовим резонатором і гніздами для підключення: живлення, інтерфейсу з персональним комп’ютером і зовнішніх пристроїв. Фактично — це голий процесор із зручними гніздами для підключення розширень.
Відповідно, вартість конструкції дуже низька — близько 5 $ плата процесора, і ще приблизно 5 $ інтерфейсний кабель на USBпорт комп’ютера (якщо на комп’ютері немає порту RS- 232).
Є тисячі готових прикладів різноманітних пристроїв з вихідними текстами програм. Це дозволяє з мінімальними витратами часу розробити і виготовити діючий пристрій, модифікувавши і скомпонувавши фрагменти інших програм.
Чому саме MK — duino ?
Arduino має безліч клонів які об'єднані в загальне Duino — сімейство.
Як правило, нові плати Arduino виготовляються за найсучаснішими технологіями з SMD — елементів, процесора з планарними виводами з кроком виводів близько 1 міліметра, та плати з двостороннім монтажем .
Виготовити і розпаяти такий пристрій в домашніх умовах досить важко, особливо початківцю .
На платі більшості Arduino встановлена?? мікросхема USB — моста, перетворювача інтерфейсу USB персонального комп’ютера в послідовний інтерфейс RS- 232. Цей міст має ще більш дрібний крок виводів і розпаяти його без мікроскопа практично неможливо.
Кілька років тому мобільні телефони оснащувалися послідовним інтерфейсом RS- 232. Цей інтерфейс був витіснений інтерфейсом USB, але протягом тривалого періоду часу існували перехідні моделі: телефон з інтерфейсом RS- 232 і USBкабель перехідник з мікросхемою USB — моста в кабелі.
Всі сучасні моделі мобільних телефонів мають справжній USBінтерфейс. І їх кабель, це просто кабель з роз'ємами на кінцях. USB — кабель від морально застарілого мобільного телефону з USB — перетворювачем — ідеальний, за простотою і вартістю, рішення для сполучення мікропроцесорного пристрою з комп’ютером.
Ну, а якщо вам не пощастило знайти USB — кабель для старого мобільного телефону з драйвером, прийдеться спаяти перетворювач рівнів сигналу RS- 232 (він передбачений на платі MK — duino) .
І скористатися інтерфейсом RS- 232 стаціонарного комп’ютера (на ноутбуках його вже давно немає), або придбати кабель перетворювача USB — RS 232 (ці перетворювачі знову набули широкого поширення у зв’язку із застосуванням інтерфейсу RS- 232 в супутникових тюнерах) .
На платі Arduino, як правило встановлюється стабілізатор живлення на 5V з струмом до 1.5A для живлення периферійних пристроїв. При тому, що сам процесор споживає струм близько 20mA, і успішно працює від трьох пальчикових батарей на 1.5V (сумарна напруга 4.5V і менше). Для самого процесора такий потужний стабілізатор не потрібен, а для периферії потужності такого стабілізатора, як правило, не достатньо.
Отже, MK-duino це констукція для самостійної розробки в домашніх умовах, з використанням доступних елементів: мікропроцесора в dip-корпусі, і обрамлення, переважно, з SMD-елементів, без стабілізатора живлення на самій платі процесора, але з додатковим USB-кабелем для мобільного телефону.
1.3 Констукція MK-duino
Схема цокольовки раз'ємів та процесора:
Таблиця комутації виводів роз'ємів та виводів мікропроцесора
Digital | мPC | Analog | мPC | ISP | мPC | Power | мPC | ||||
0 -Rx | 2 -PD0 | 5 -SCL | 28-PC5 | MISO | 18-MISO | Gnd | Gnd | ||||
1 -Tx | 3 -PD1 | 4 -SDA | 27-PC4 | SCK | 19-SCK | NC | |||||
4 -PD2 | 26-PC3 | Reset | 1 -Reset | Vcc | 7 -Vcc | ||||||
5 -PD3 | 25-PC2 | Reset | 1 -Reset | ||||||||
6 -PD4 | 24-PC1 | Vcc | 7 -Vcc | ||||||||
11-PD5 | 23-PC0 | MOSI | 17-MOSI | ||||||||
12-PD6 | Gnd | Gnd | RS-232 | мPC | |||||||
13-PD7 | |||||||||||
14-PB0 | USB-Bridge | мPC | |||||||||
15-PB1 | Power Bat | мPC | |||||||||
16-PB2 | Gnd | Gnd | |||||||||
17-PB3 | |||||||||||
18-PB4 | Tx-PC | 200ЩRx | RX-RS | От Tx через инвертор | |||||||
19-PB5 | Rx-PC | 200ЩTx | |||||||||
Gnd | Gnd | Gnd | +4.5V | Diode-Vcc | TX-RS | На Rx через инвертор | |||||
Ref | 21-Aref | +5V USB | Diode-Vcc | Gnd | Gnd | ||||||
Схема розміщення елементів на платі:
Принципіальна схема:
Конструкція Duino — подібних пристроїв надзвичайно проста.
Схема MK-duino:
Лінії Rx_PC, Tx_PC підключаються до мікросхеми USB-моста та мають інверсну полярність відносно відповідних сигналів на RS-232.
Деякі моделі процесорів ATmega «шумлять» по лінії прийому при «підвішаному» виводі процесора 2-RXD. Тому може знадобитись установка резистора 100KЩ між цим виводом та заземленням.
Перетворювач інтерфейсу RS-232 для MK-duino.
Перетворювач монтується на плату лише за відсутності кабеля-перехідника USB-моста від мобільного телефону, і реальної необхідності використання інтерфейсу RS-232.
Перетворювач здійснює інверсію і перетворення рівнів сигналів послідовного інтерфейсу: 0/5V — +12 V/-12V.
Схема перетворювача рівнів
Передавач на транзисторі Q1 живиться негативною напругою паузи передачі Tx-RS 232 від зовнішнього пристрою (комп'ютера або іншого пристрою)
1.4 Перелік елементів
Элемент | Назва | Номінальне значення допуск) | Примітка | |
IC1 | Мікропроцесор | ATmega8−16, ATmega8L-8, ATmega8A-PU, ATmega168−20PU | Робоча частота не меньша 16MHz | |
Q1 | кварцовий резонатор | 16.000MHz | Низько-профільний корпус | |
L1 | Індуктивність | 100мH (70мH — 150мH) | ||
C1, C2 | Конденсатор | 22pF (18pF — 24pF) | SMD | |
C3, C4, C6 | Конденсатор | 100nF (70nF -200nF) | SMD | |
C5 | Конденсатор электролітичний | 100мF (100мF-220мF) | Низько-профільний корпус | |
U1 | Діод здвоєний із загальним катодом | Діод Шотки на ток не менш 50mA | SMD | |
LED13, LED14 | Світло діод | Будь-який світло діод з невеликим падінням напруги (червоний, жовтий, зелений), але не синій, і не білий, і не понад-яскравий. | Діаметр не більший 3 mm | |
R1, R2 | Резистор | 200Щ (100Щ — 250Щ) | SMD | |
R3, R4 | Резистор | 1KЩ (0.8KЩ — 1.5KЩ) | SMD | |
R11 | Резистор | 10KЩ (8KЩ — 15KЩ) | SMD | |
R12 | Резистор | 100KЩ (80KЩ — 150KЩ) | SMD | |
Перелік елементів адаптера інтерфейсу RS-232
Елемент | Назва | Номінальні значення (допуск) | Примітка | |
Q01 | PNP-транзистор | Любий PNP-транзистор з колектором посередині | SMD | |
Q02 | NPN-транзистор | Любий NPN-транзистор с колектором посередині | SMD | |
D01, D02 | Діод | Любий кремневий діод невеликкого розміру | дротові виводи | |
C01 | Конденсатор | 1мF (0.8мF — 2мF) неполярний | SMD | |
R01, R02, R03, R04, R05 | Резистор | 5KЩ (4KЩ — 7KЩ) | SMD | |
R06 | Резистор | 500Щ (300Щ — 1.2KЩ) | SMD | |
2. Проектування і розробка схеми
Метою даного проекту є створення системи з одним входом і одним виходом. На вході пристрою присутній сигнал, що змінюється з високого (+5 В) на низький (+0 В) рівень при порушенні зв’язку. Згідно цьому сигналу, Arduino збільшуватиме значення внутрішнього лічильника. Потім проводитися додаткова обробка і розрахунок, і по перериванню тригера на РК-дисплей виводитиметься розраховане RPM.
Для зв’язку ми будемо використовувати ІЧ-промінь від ІКсвітлодіода, включеного через низько-омний резистор так, щоб світитвся яскраво. Як приймач ми будемо використовувати фототранзистор, який за відсутності світла ІЧ-світлодіода «закривається». Комп’ютерний вентилятор буде розміщений між ІЧ-передавачем і приймачем і включений. ІЧ-приймач включений через транзисторну схему, буде генерувати переривання. Для виведення результату буде використовуватися Arduino LCD інтерфейс, буде виводитись остаточне значення RPM на РК-дисплей.
Елементи:
Arduino UNO
16×2 LCD
макетна плата
Регулюючий резистор 5 кОм
перемички
SIP роз'єми
2x 2N2222 NPN транзистор
інфрачервоний світлодіод
фототранзистор
Резистор 10 Ом
Резистор 100 кОм
Резистор 15 кОм або 16 кОм
Комп’ютерний вентилятор
2.1 Функції основних елементів
Arduino UNOце плата Arduino, яка використовується для обробки імпульсів від переривання ІЧ-променя, які повідомляють про знаходження лопасті комп’ютерного вентилятора між приймачем і датчиком. Arduino використовує ці імпульси поряд з таймером, щоб обчислити RPM вентилятора.
РК-дисплей 16x2
Після того, як Arduino вичислило RPM, це значення відобразиться на дисплеї в зрозумілому для користувача вигляді.
Регулюючий резистор 5 кОм:
Цей резистор використовується для регулювання контрастності РКдисплея 16×2. Він дає аналогову напругу в діапазоні від 0 до +5 В, дозволяючи налаштувати яскравість РКдисплея.
Інфрачервоний світлодіод та Фототранзистор:
Фототранзистор відкривається, коли потужний ІЧсвітло падає на нього. Тому, коли інфрачервоний світлодіод горить, він тримає фототранзистор відкритим, але якщо інфрачервоний світлодіод закривається наприклад, лопаттю вентилятора, то фототранзистор закривається.
2N3904 та 2N3906:
Ці транзистори використовуються для перетворення рівня сигналу, з метою забезпечення вихідних імпульсів з фототранзистора для Arduino, в яких немає ніяких напруг крім +0 і +5 В.
У схемі, інтерфейс зв’язку з РК-дисплеєм спрощений і має тільки 2 лінії управління і 4 лінії передачі даних.
Особливості схеми:
— Інтерфейс РК-дисплея 16x2
— 2 керуючих контакта та 4 для передачі даних підключені від Arduino до РК-дисплею. Це те, що вказує ЖК-дисплею, що і коли робити.
Принципова схема Схема обриву ІЧ-променя:
Сигнал обриву ІЧ-променя йде на 2-ий цифровий контакт Arduino. Це перериває Arduino, що дозволяє йому зарахувати імпульс і дозволяє тахометру отримувати дані.
Arduino LCD бібліотека:
Для цього проекту використовувалась Arduino LCD бібліотека. В основному буде просто оновлення значення RPM на другому рядку на нове.
В якості підготовки, подивіться на код наведений нижче, в якому за допомогою цієї бібліотеки на РК-дисплей виводитися «Hello, World!» У тахометрі будло використано схожий код, особливо: «lcd.print (millis () / 1000);» .
Підрахунок RPM за допомогою Arduino:
Так як буде підрахуватись RPM комп’ютерного вентилятора, ви повинні розуміти, що для підрахунку використовується переривання ІЧпроменя. Це дуже зручно, але потрібно враховувати, що у комп’ютерного вентилятора 7 лопатей, що означає, 7 переривань за 1 оберт.
Якщо відстежувати переривання, то потрібно враховувати, що кожне сьоме переривання означає, що тільки що стався 1 повний оберт. Якщо відстежити час, необхідний для повного обороту, то можна легко обчислити RPM .
Для розрахунку RPM використовуємо формулу наведену вище. Формула точна, і точність залежить від того, наскільки добре Arduino зможе відстежувати час між перериваннями та підраховувати кількість повних обертів .
2.2 Зборка схеми
На фотографії (Рис.1) нижче ви можете побачити всі необхідні деталі і перемички як на схемі. мікросхема тахометр адаптер інтерфейс Рис.1
Для початку підключається +5 В і лінії даних / управління РК-дисплея. Потім РК-дисплей, потенціометр контрастності таі світлодіод живлення (Рис.2).
Рис.2
Схема обриву ІЧ-променя зібрана. Необхідно, щоб між ІЧсвітлодіодом та фототранзистором була відстань. На цій фотографії (Рис.3) видно відстань між ІЧ-світлодіодом та фототранзистором, де буде розміщуватись комп’ютерний вентилятор.
2.3 Програмна частина
#include
LiquidCrystal lcd (3, 5, 9, 10, 11, 12);
volatile float time = 0;
volatile float time_last = 0;
volatile int rpm_array[5] = {0,0,0,0,0};
void setup ()
{
//Digital Pin 2 Set As An Interrupt
attachInterrupt (0, fan_interrupt, FALLING);
// set up the LCD’s number of columns and rows:
lcd.begin (16, 2);
// Print a message to the LCD.
lcd.print («Current RPM:»);
}
void loop ()
{
int rpm = 0;
while (1){
//Slow Down The LCD Display Updates
delay (400);
//Clear The Bottom Row
lcd.setCursor (0, 1);
lcd.print (««);
//Update The Rpm Count
lcd.setCursor (0, 1);
lcd.print (rpm);
////lcd.setCursor (4, 1);
////lcd.print (time);
//Update The RPM
if (time > 0)
{
//5 Sample Moving Average To Smooth Out The Data
rpm_array[0] = rpm_array[1];
rpm_array[1] = rpm_array[2];
rpm_array[2] = rpm_array[3];
rpm_array[3] = rpm_array[4];
rpm_array[4] = 60*(1 000 000/(time*7));
//Last 5 Average RPM Counts Eqauls…
rpm = (rpm_array[0] + rpm_array[1] + rpm_array[2] + rpm_array[3] + rpm_array[4]) / 5;
}
}
}
void fan_interrupt ()
{
time = (micros () — time_last);
time_last = micros ();
}
В основному циклі підраховуються обороти та поновлення РК-дисплея. Оскільки основний цикл це гігантський while (1) цикл, то він працюватиме завжди, RPM підраховується, а РК-дисплей оновлюється кілька разів на секунду. Функція у перериванні підраховує час між перериваннями ІК, тому рахувати RPM можна в основному циклі.
Пам’ятаємо, що комп’ютерний вентилятор має 7 лопатей, так що це тахометр призначений для роботи тільки з такими вентиляторами. Якщо ваш вентилятор або інший пристрій дає тільки 4 імпульси за одне обертання, змініть в коді «(time * 4)» .
Висновок
Системи на основі обриву променя корисні не тільки при вимірі RPM, але і в якості інших датчиків. Наприклад якщо хочеться знати відкриті двері а бо закриті. Можливо, ви захочете дізнатись, чи не проходив хто повз. Є багато застосувань обриву променя, а схема використана тут настільки проста, що є багато шляхів для поліпшення і збірки інших дивних пристроїв.
Вентилятор працює нашвидкості приблизно 3000 оборотів в хвилину, з похибкою близько + / -100 оборотів в хвилину.
Вентилятор генерує імпульси переривання, а на виході бачимо RPM. Хоча точність не 100%, а приблизно 95%, при вартості елементів всього у10 $ є сенс побудови такого тахометра на Arduino.
Перелік літератури
1. Рюмик С. М. Микроконтроллеры Duino. Цикл статей. Журнал «Радiоаматор», 2010 г., № 2−6.
2. Рюмик С. Микроконтроллерный модуль InterDuino. Журнал «Радио», 2010 г., № 10.
3. http://cxem.net/
4. http://mk-duino.narod.ru/