- Робоче пояснення:
- Компоненти:
- Програмування:
- Дизайн ланцюгів та друкованих плат із використанням EasyEDA:
- Розрахунок та замовлення зразків друкованої плати в режимі онлайн:
У цьому проекті ми збираємося використовувати мікроконтролер PIC для дистанційного керування кількома навантаженнями змінного струму, просто використовуючи ІЧ-пульт. Подібний проект ІК-дистанційної керованої домашньої автоматизації також вже виконувався з Arduino, але тут ми розробили його на друкованій платі за допомогою онлайн-конструктора та симулятора друкованих плат EasyEDA та використали їх послуги з проектування друкованих плат для замовлення плат друкованих плат, як показано в наступному розділі статті.
Наприкінці цього проекту ви зможете перемикати (ВКЛ / ВИМК) будь-яке навантаження змінного струму за допомогою звичайного пульта дистанційного керування, не виходячи зі свого стільця / ліжка. Щоб зробити цей проект цікавішим, ми також увімкнули функцію управління швидкістю обертання вентилятора за допомогою Triac. Все це можна зробити простими клацаннями на пульті дистанційного керування. Для цього проекту можна використовувати будь-який пульт від телевізора / DVD / MP3. Різні ІЧ-сигнали від пульта приймаються мікроконтролером, який потім керує відповідними реле за допомогою схеми драйвера реле. Ці реле використовуються для підключення та відключення навантажень змінного струму (Фари / Вентилятор).
Робоче пояснення:
Робота цього проекту досить проста для розуміння. При натисканні кнопки на ІЧ-пульті він відправляє послідовність кодів у вигляді закодованих імпульсів із частотою модуляції 38 кГц. Ці імпульси приймаються датчиком TSOP1738, а потім зчитуються контролером. Потім контролер декодує отриманий шлейф імпульсів у шістнадцяткове значення і порівнює його із заздалегідь визначеними шістнадцятковими значеннями в нашій програмі.
Якщо відбувається якесь збіг, тоді контролер виконує відносну операцію, запускаючи відповідне реле / симістор, і відповідний результат також відображається на бортових світлодіодах. У цьому проекті ми використали 4 лампочки (маленькі лампочки) різних кольорів як навантажувальну навантаження, а інша лампочка (більша лампа) вважається вентилятором для демонстрації.
Ми вибрали клавішу 1 для перемикання реле1, 2 для перемикання реле2, 3 для перемикання реле3, 4 для перемикання реле4 та Vol + для збільшення швидкості обертання вентилятора та Vol- для зменшення швидкості обертання вентилятора.
Примітка: Тут ми використали лампу потужністю 100 Вт замість вентилятора.
Існує багато типів ІЧ-пультів, доступних для різних пристроїв, але більшість із них працюють на частоті 38 кГц. У цьому проекті ми управляємо побутовою технікою за допомогою пульта дистанційного керування ІЧ-телевізором, а для виявлення ІЧ-сигналів використовуємо ІЧ-приймач TSOP1738. Цей датчик TSOP1738 може розпізнавати частотний сигнал 38 кГц. Робота ІЧ-пульта та TSOP1738 детально висвітлена в цій статті: ІЧ-передавач та приймач
Наш мікроконтролер PIC працює при + 5В, а реле працюють при + 12В, тому ми використовуємо трансформатор, щоб знизити 220В змінного струму і виправити його за допомогою повного мостового випрямляча. Потім ця випрямлена напруга постійного струму регулюється до + 12В і + 5В за допомогою мікросхем регулятора 7812 та 7805 відповідно.
Для спрацьовування реле ми використовуємо транзистори, такі як BC547, які можуть виконувати функцію електронного перемикача для ввімкнення / вимкнення реле на основі сигналу від мікроконтролера PIC. TRIAC - це силовий напівпровідник, який здатний контролювати вихідну напругу; ця можливість використовується для управління швидкістю обертання вентилятора.
Ми також використовували драйвер Triac для управління Triac за допомогою нашого мікроконтролера PIC. Цей драйвер використовується для подачі імпульсу кута стрільби на Triac, щоб можна було контролювати вихідну потужність. Тут ми використали 6 рівнів регулювання швидкості. Коли рівень дорівнює 0, тоді вентилятор буде вимкнено. Коли рівень буде 1, тоді швидкість буде 1/5 від повної швидкості. Коли рівень буде 2, тоді швидкість буде 2/5 повної швидкості і відповідно для інших. Поточний рівень швидкості можна контролювати за допомогою вбудованого 7-сегментного дисплея.
Блок-схема проекту наведена нижче.
Компоненти:
Компоненти, необхідні для побудови цього проекту, наведені нижче:
- PIC18f2520 Мікроконтролер -1
- TSOP1738 -1
- ІК-телевізор / DVD-пульт дистанційного керування -1
- Транзистор BC547 -4
- Реле 12 вольт -4
- Лампочка з тримачем -5
- Підключення проводів -
- Плата EasyEda -1
- РК-дисплей 16x2
- Блок живлення 12v
- Клемний роз'єм 2-контактний `-8
- Роз'єм терміналу 3-контактний -1
- Трансформатор 12-0-12 -1 -
- Регулятор напруги 7805 -1
- Регулятор напруги 7812 -1
- Конденсатор 1000 мкФ -1
- Конденсатор 10 мкф -1
- Конденсатор 0,1 мкф -1
- Конденсатор 0,01 мкФ 400 В `-1
- 10k -5
- 1k -5
- 100 Ом -7
- Загальний катодний сегмент -1
- 1n4007 діод -10
- BT136 симіак -1
- Чоловічий / жіночий колонтитул -
- Світлодіоди -6
- Оптрон-муфта moc3021 -1
- Оптрон-муфта mtc2e або 4n35 -1
- Кристал 20 МГц -1
- Конденсатор 33pf -2
- Діод стабілізатора 5.1v -1
- 47 Ом резистор 2 Вт -1
Всі ці компоненти широко використовуються і їх легко придбати. Однак якщо ви шукаєте найкращу покупку в Інтернеті, ми рекомендуємо вам LCSC.
LCSC - чудовий інтернет-магазин, де можна придбати електронні компоненти для будь-яких проектів. Вони мають близько 25 000 видів компонентів, і найкраще те, що вони продають навіть невеликі товари для невеликих проектів, а також мають глобальну доставку.
Розшифровка ІК-пульта дистанційного керування:
Як було сказано раніше, ви можете використовувати будь-який пульт дистанційного керування для свого проекту. Але ми повинні знати, для якого виду сигналу генерується саме цей пульт. Для кожного окремого ключа на пульті буде еквівалентне значення HEX для цього ключа. Використовуючи це шістнадцяткове значення, ми можемо розрізнити кожну клавішу на нашому мікроконтролері. Отже, перш ніж ми вирішимо використовувати пульт, ми повинні знати значення HEX для ключів, попередньо встановлених на цьому пульті. У цьому проекті ми використовували пульт дистанційного керування NEC. Значення HEX для клавіш на пульті дистанційного керування NEC наведено нижче.
Як ви можете помітити, значення HEX має 7 символів, з яких відрізняються лише дві останні, отже, ми можемо розглядати лише дві останні цифри, щоб розрізняти кожну клавішу.
Кругова діаграма:
Схема проекту наведена нижче.
Вищезазначену схему було спрощено за допомогою редактора схеми esayEDA, оскільки вони надають макети всіх компонентів, що використовуються в цьому проекті. Він також не вимагає встановлення і може використовуватися в Інтернеті в дорозі.
Розпінації та значення компонентів чітко вказані в схемі вище. Ви також можете завантажити схематичний файл звідси.
Програмування:
Програма для цього проекту виконана за допомогою MPLABX, код також досить простий і зрозумілий. Повний код буде наведено в кінці цього підручника, далі наведено кілька важливих фрагментів програми.
На початку коду ми повинні включити необхідні бібліотеки, визначити висновки та оголосити змінні.
#включати
Після цього ми створили просту функцію затримки, використовуючи цикл “for”.
void delay (int time) {for (int i = 0; i
Після цього ми ініціалізували таймер, використовуючи наступну функцію
таймер порожнечі () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Джерело годинника таймера надходить із Prescaler T0CS = 0; // Прескалер отримує годинник від FCPU (5 МГц) T08BIT = 0; // 16 РІБ РЕЖИМУ TMR0IE = 1; // Увімкнути TIMER0 Interrupt PEIE = 1; // Увімкнути периферійне переривання GIE = 1; // Увімкнути INT в усьому світі TMR0ON = 1; // Тепер запустіть таймер! }
Тепер у головній функції ми маємо дати вказівки обраним контактам та ініціалізувати таймер та зовнішнє переривання int0 для виявлення перетину нуля.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; ПОРТА = 0xc0; TRISB6 = 0; RB6 = 1; реле1 = 0; реле2 = 0; реле3 = 0; реле4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; трик = 0; таймер (); INTEDG0 = 0; // Переривання на падаючому краю INT0IE = 1; // Увімкнути зовнішнє переривання INT0 (RB0) INT0IF = 0; // Очищає біт прапора зовнішнього переривання INT0 PEIE = 1; // Увімкнути периферійне переривання GIE = 1; // Увімкнути INT в усьому світі
Зараз ми не використовуємо жодного режиму переривання або зйомки та порівняння для виявлення ІЧ-сигналу. Тут ми щойно використовували цифровий штифт для зчитування даних так само, як читаємо кнопку. Всякий раз, коли сигнал падає високо або низько, ми просто ставимо метод зняття та запускаємо таймер. Щоразу, коли PIN-код змінює свій стан на інший, значення часу зберігаються в масиві.
ІЧ-віддалена логіка передачі 0 як 562,5us, а логіка 1 як 2250us. Всякий раз, коли таймер читає близько 562,5us, тоді ми приймаємо це 0, а коли таймер читає близько 2250us, тоді ми приймаємо це як 1. Потім ми перетворюємо його в шістнадцяткове.
Вхідний сигнал з пульта містить 34 біта. Ми зберігаємо всі байти в масиві, а потім декодуємо останній використаний байт.
в той час як (ir == 1); INT0IE = 0; в той час як (ir == 0); TMR0 = 0; в той час як (ir == 1); i ++; dat = TMR0; якщо (dat> 5000 && dat <12000) {} ще {i = 0; INT0IE = 1; } if (i> = 33) {GIE = 0; затримка (50); cmd = 0; для (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; інакше якщо (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Вищезгаданий фрагмент коду приймає та декодує ІЧ-сигнал за допомогою таймерних переривань і зберігає відповідне значення HEX у змінній cmd. Тепер ми можемо порівняти це значення HEX (змінна cmd) з нашими попередньо визначеними значеннями HEX і перемкнути реле, як показано нижче
якщо (cmd == 0xAF) {реле1 = ~ реле1; rly1LED = ~ rly1LED; } інакше якщо (cmd == 0x27) {relay2 = ~ relay2; rly2LED = ~ rly2LED; } інакше якщо (cmd == 0x07) {relay3 = ~ relay3; rly3LED = ~ rly3LED; } інакше якщо (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } інакше якщо (cmd == 0x5f) {швидкість ++; якщо (швидкість> 5) {швидкість = 5; }} ще if (cmd == 0x9f) {швидкість--; якщо (швидкість <= 0) {швидкість = 0; }}
Тепер, щоб знати, в який момент працює наш вентилятор, ми повинні використовувати 7-сегментний дисплей. Наступні рядки використовуються для вказівки контактів 7-сегментного дисплея.
якщо (швидкість == 5) // вимкнено 5x2 = 10 мс тригер // швидкість 0 {PORTA = 0xC0; // відображаємо 0 RB6 = 1; fanLED = 0; } ще if (швидкість == 4) // 8 мс тригер // швидкість 1 {PORTA = 0xfc; // відображення 1 RB6 = 1; вентиляторLED = 1; } інакше якщо (швидкість == 3) // 6 мс тригер // швидкість 2 {PORTA = 0xE4; // відображення 2 RB6 = 0; вентиляторLED = 1; } ще if (швидкість == 2) // тривалість 4 мс // швидкість 3 {PORTA = 0xF0; // відображення 3 RB6 = 0; вентиляторLED = 1; } інакше якщо (швидкість == 1) // тривалість 2 мс // швидкість 4 {PORTA = 0xD9; // відображаємо 4 RB6 = 0; вентиляторLED = 1; } else if (швидкість == 0) // 0ms тригер // швидкість 5 на повну потужність {PORTA = 0xD2; // відображаємо 5 RB6 = 0; вентиляторLED = 1; }
Наведена нижче функція призначена для зовнішнього переривання та переповнення часу. Ця функція відповідає за виявлення перетину нуля та керування симістором.
порожнє переривання isr () {if (INT0IF) {затримка (швидкість); трик = 1; для (int t = 0; t <100; t ++); трик = 0; INT0IF = 0; } if (TMR0IF) // Перевірте, чи це TMR0 Переповнення ISR {TMR0IF = 0; }}
Остаточна друкована плата для цієї ІК-системи дистанційного керування будинком виглядає, як показано нижче:
Дизайн ланцюгів та друкованих плат із використанням EasyEDA:
Для проектування даної автоматизованої системи дистанційного керування ми використали EasyEDA, який є безкоштовним онлайн-інструментом EDA для створення ланцюгів та друкованих плат без перешкод. Раніше ми замовили декілька друкованих плат у EasyEDA і все ще користуємося їх послугами, оскільки виявили, що весь процес - від вироблення схем до замовлення друкованих плат - більш зручний та ефективний у порівнянні з іншими виробниками друкованих плат. EasyEDA безкоштовно пропонує креслення схем, моделювання та дизайн друкованих плат, а також пропонує якісну, але низьку ціну Індивідуальну послугу друкованих плат. Подивіться тут повний підручник з того, як використовувати Easy EDA для створення схем, макетів друкованих плат, моделювання схем тощо.
EasyEDA вдосконалюється з кожним днем; вони додали багато нових функцій та покращили загальну взаємодію з користувачем, що робить EasyEDA простішим та зручнішим для проектування схем. Незабаром вони збираються запустити його настільну версію, яку можна завантажити та встановити на ваш комп’ютер для використання в режимі офлайн.
У EasyEDA ви можете зробити свої схеми та друковані плати публічними, щоб інші користувачі могли їх копіювати або редагувати, а також отримувати від цього користь. Ми також зробили загальнодоступними всі наші схеми схем та друкованих плат для цієї автоматизованої системи дистанційного керування будинком.
Нижче наведено Знімок верхнього шару макета друкованої плати від EasyEDA, ви можете переглянути будь-який шар (верхній, нижній, верхній, молочний тощо) друкованої плати, вибравши шар у вікні "Шари".
Розрахунок та замовлення зразків друкованої плати в режимі онлайн:
Після завершення проектування друкованої плати ви можете натиснути на піктограму виводу для виготовлення , яка перенесе вас на сторінку замовлення друкованої плати. Тут ви можете переглянути свою друковану плату в переглядачі Gerber або завантажити файли Gerber з вашої друкованої плати та надіслати їх будь-якому виробнику, а також набагато простіше (і дешевше) замовити її безпосередньо в EasyEDA. Тут ви можете вибрати кількість друкованих плат, яку ви хочете замовити, скільки шарів міді вам потрібно, товщину друкованої плати, масу міді і навіть колір друкованої плати. Після того, як ви вибрали всі параметри, натисніть «Зберегти в кошику» та завершіть замовлення, тоді ви отримаєте свої друковані плати протягом декількох днів.
Ви можете безпосередньо замовити цю друковану плату або завантажити файл Gerber за цим посиланням.
Через кілька днів замовлення друкованих плат ми отримали друковані плати. Дошки, які ми отримали, показані нижче.
Отримавши друковані плати, я змонтував усі необхідні компоненти на друковану плату, і нарешті ми підготували нашу ІК-дистанційну керовану домашню автоматизацію, перевірте цю схему, що працює в демонстраційному відео в кінці статті.