Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Проектування і розробка схеми





Метою даного проекту є створення системи з одним входом і одним виходом. На вході пристрою присутній сигнал, що змінюється з високого (+5 В) на низький (+0 В) рівень при порушенні зв'язку. Згідно цьому сигналу, Arduino збільшуватиме значення внутрішнього лічильника. Потім проводитися додаткова обробка і розрахунок, і по перериванню тригера на РК-дисплей виводитиметься розраховане RPM.

Для зв'язку ми будемо використовувати ІЧ-промінь від ІК- світлодіода, включеного через низько-омний резистор так, щоб світитвся яскраво. Як приймач ми будемо використовувати фототранзистор, який за відсутності світла ІЧ-світлодіода "закривається". Комп'ютерний вентилятор буде розміщений між ІЧ-передавачем і приймачем і включений. ІЧ-приймач включений через транзисторну схему, буде генерувати переривання. Для виведення результату буде використовуватися Arduino LCD інтерфейс, буде виводитись остаточне значення RPM на РК-дисплей.

Елементи:

Arduino UNO

16x2 LCD

макетна плата

Регулюючий резистор 5 кОм

перемички

SIP роз'єми

2x 2N2222 NPN транзистор

інфрачервоний світлодіод

фототранзистор

Резистор 10 Ом

Резистор 100 кОм

Резистор 15 кОм або 16 кОм

Комп'ютерний вентилятор

 

2.1 Функції основних елементів.

 

Arduino UNO -це плата Arduino, яка використовується для обробки імпульсів від переривання ІЧ-променя, які повідомляють про знаходження лопасті комп'ютерного вентилятора між приймачем і датчиком. Arduino використовує ці імпульси поряд з таймером, щоб обчислити RPM вентилятора.

РК-дисплей 16x2

Після того, як Arduino вичислило RPM, це значення відобразиться на дисплеї в зрозумілому для користувача вигляді.

 

Регулюючий резистор 5 кОм:

Цей резистор використовується для регулювання контрастності РК- дисплея 16x2. Він дає аналогову напругу в діапазоні від 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.h>

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*(1000000/(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.

Інтернет джерела
1 http://cxem.net/

2 http://mk-duino.narod.ru/

 

Date: 2015-09-05; view: 485; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию