- Работно обяснение:
- Компоненти:
- Програмиране:
- Дизайн на вериги и печатни платки с помощта на EasyEDA:
- Изчисляване и поръчване на проби от печатни платки онлайн:
В този проект ще използваме PIC микроконтролер за дистанционно управление на няколко AC натоварвания само с помощта на IR дистанционно. Подобен проект IR дистанционно управлявана домашна автоматизация вече е направен и с Arduino, но тук го проектирахме на печатни платки, използвайки онлайн дизайнера и симулатора на печатни платки на EasyEDA и използвахме техните услуги за проектиране на печатни платки, за да поръчаме платките, както е показано в следващия раздел на статия.
В края на този проект ще можете да превключвате (ВКЛ. / ИЗКЛ.) Всяко натоварване с променлив ток, като използвате обикновено дистанционно управление от удобството на вашия стол / легло. За да направим този проект по-интересен, ние също така активирахме функция за контрол на скоростта на вентилатора с помощта на Triac. Всичко това може да се направи с прости щраквания на вашето IR дистанционно управление. Можете да използвате всяко ваше дистанционно управление за телевизор / DVD / MP3 за този проект. Различните IR сигнали от дистанционното се получават от микроконтролера, който след това управлява съответните релета чрез верига на релейния драйвер. Тези релета се използват за свързване и изключване на натоварванията с променлив ток (светлини / вентилатор).
Работно обяснение:
Работата на този проект е сравнително лесна за разбиране. Когато се натисне бутон на IR дистанционното, той изпраща последователност от кодове под формата на кодирани импулси, използвайки модулираща честота 38Khz. Тези импулси се приемат от сензора TSOP1738 и след това се отчитат от контролера. След това контролерът декодира получената последователност от импулси в шестнадесетична стойност и я сравнява с предварително зададените шестнадесетични стойности в нашата програма.
Ако се случи някакво съвпадение, тогава контролерът извършва относителна операция чрез задействане на съответното реле / триак и съответният резултат също се показва от бордовите светодиоди. Тук в този проект ние използвахме 4 крушки (малки крушки) с различни цветове като светлинни натоварвания, а друга крушка (по-голяма крушка) се счита за вентилатор за демонстрационни цели.
Избрахме клавиш 1 за превключване на релето1, 2 за превключване на релето2, 3 за превключване на релето3, 4 за превключване на релето4 и Vol + за увеличаване на скоростта на вентилатора и Vol- за намаляване на скоростта на вентилатора.
Забележка: Тук сме използвали крушка от 100 вата вместо вентилатор.
Има много видове IR дистанционни устройства, налични за различни устройства, но повечето от тях работят около 38KHz честота. Тук в този проект ние контролираме домакински уреди с помощта на IR TV дистанционно и за откриване на IR сигнали използваме TSOP1738 IR приемник. Този сензор TSOP1738 може да усети 38Khz Честотен сигнал. Работата на IR дистанционното и TSOP1738 е описана подробно в тази статия: IR предавател и приемник
Нашият PIC микроконтролер работи при + 5V, а релетата работят при + 12V, затова използваме трансформатор, за да намалим 220V AC и да го коригираме с пълен мостов изправител. След това това коригирано постояннотоково напрежение се регулира до + 12V и + 5V чрез използване на IC на регулатора съответно 7812 и 7805.
За задействане на релето използваме транзистори като BC547, които могат да действат като електронен превключвател за включване / изключване на релетата въз основа на сигнала от микроконтролера PIC. Освен това за контрол на скоростта на вентилатора използваме TRIAC. TRIAC е силов полупроводник, който може да контролира изходното напрежение; тази възможност се използва за контрол на скоростта на вентилатора.
Също така използвахме Triac Driver за управление на Triac с помощта на нашия PIC микроконтролер. Този драйвер се използва за подаване на импулс на ъгъла на стрелба към Triac, така че изходната мощност да може да се контролира. Тук използвахме 6 ниво на контрол на скоростта. Когато нивото е 0, тогава вентилаторът ще бъде изключен. Когато нивото ще бъде 1, тогава скоростта ще бъде 1/5 от пълната скорост. Когато нивото ще бъде 2, тогава скоростта ще бъде 2/5 от пълната скорост и съответно за другите. Текущото ниво на скоростта може да се следи с помощта на бордовия 7-сегментен дисплей.
Блоковата схема на проекта е показана по-долу.
Компоненти:
Компонентите, необходими за изграждането на този проект, са дадени по-долу:
- PIC18f2520 Микроконтролер -1
- TSOP1738 -1
- IR TV / DVD дистанционно -1
- Транзистор BC547 -4
- Релета 12 волта -4
- Крушка с държач -5
- Свързващи проводници -
- EasyEda PCB -1
- 16x2 LCD
- Захранване 12v
- Клемен конектор 2-пинов `-8
- Терминален конектор 3-пинов -1
- Трансформатор 12-0-12 -1 -
- Регулатор на напрежение 7805 -1
- Регулатор на напрежение 7812 -1
- Кондензатор 1000uf -1
- Кондензатор 10uf -1
- Кондензатор 0.1uf -1
- Кондензатор 0.01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Общ катоден сегмент -1
- 1n4007 диод -10
- BT136 триак -1
- Мъжки / женски колонтитул -
- Светодиоди -6
- Опто-съединител moc3021 -1
- Опто-съединител mtc2e или 4n35 -1
- 20Mhz кристал -1
- 33pf кондензатор -2
- 5.1v ценеров диод -1
- 47 ома 2 вата резистор -1
Всички тези компоненти са често използвани и могат лесно да бъдат закупени. Ако обаче търсите най-добрата покупка онлайн, тогава ще ви препоръчаме LCSC.
LCSC е страхотен онлайн магазин за закупуване на електронни компоненти за всякакви проекти. Те разполагат с около 25 000 вида компоненти и най-хубавото е, че те продават дори малки количества артикули за малки проекти, а също така имат и Global Shipping.
Декодиране на IR дистанционното:
Както казахме по-рано, можете да използвате всякакъв вид дистанционно за вашия проект. Но трябва да знаем за какъв вид сигнал се генерира от това конкретно дистанционно. За всеки отделен ключ на дистанционното ще има еквивалентна HEX стойност за този ключ. Използвайки тази HEX стойност, ние можем да различаваме всеки клавиш от страната на нашия микроконтролер. Така че, преди да решим да използваме дистанционно, трябва да знаем стойността HEX за предварително зададените клавиши в това дистанционно управление. В този проект използвахме дистанционно управление NEC. Стойностите на HEX за клавишите на дистанционно управление NEC са дадени по-долу.
Както можете да забележите, стойността HEX има 7 знака, от които се различават само последните две, следователно можем да разгледаме само последните две цифри, за да правим разлика между всеки клавиш.
Електрическа схема:
Схемата на проекта е показана по-долу.
Горната схема е улеснена с помощта на редактора на схемата esayEDA, тъй като те предоставят оформления на всички компоненти, използвани в този проект. Освен това не изисква инсталация и може да се използва онлайн в движение.
Стойностите на пиновете и компонентите са ясно посочени в схемата по-горе. Можете също така да изтеглите схематичния файл от тук.
Програмиране:
Програмата за този проект е направена с помощта на MPLABX, кодът също е доста прост и лесен за разбиране. Пълният код ще бъде даден в края на този урок, по-долу са обяснени още няколко важни парчета от програмата.
В началото на кода трябва да включим необходимите библиотеки, да дефинираме пиновете и да декларираме променливите.
#include
След това създадохме проста функция за забавяне, използвайки цикъла „for“.
void delay (int time) {for (int i = 0; i
След това сме инициализирали таймера, като използваме следната функция
таймер за празнота () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Източник на часовника на таймера е от Prescaler T0CS = 0; // Предскалерът получава часовник от FCPU (5MHz) T08BIT = 0; // 16 БИТЕН РЕЖИМ TMR0IE = 1; // Активиране на TIMER0 Прекъсване PEIE = 1; // Активиране на периферно прекъсване GIE = 1; // Активиране на INTs глобално 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; // Активирайте INTs глобално
Сега тук не използваме никакъв режим на прекъсване или улавяне и сравняване за откриване на ИЧ сигнал. Тук току-що използвахме цифров щифт за четене на данни, точно както четем бутон. Всеки път, когато сигналът отиде високо или ниско, ние просто поставяме метода за отмяна и пускаме таймера. Всеки път, когато ПИН промени състоянието си на друго, стойностите на времето ще бъдат записани в масив.
IR дистанционно изпращане логика 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) {} else {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;
Горната част от кода получава и декодира IR сигнала с помощта на таймер прекъсва и съхранява съответната 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; }} иначе ако (cmd == 0x9f) {скорост--; ако (скорост <= 0) {скорост = 0; }}
Сега, за да знаем на кой фен работи в момента, трябва да използваме 7-сегментен дисплей. Следващите редове се използват за инструктиране на щифтовете на 7-сегментния дисплей.
ако (скорост == 5) // изключен 5x2 = 10ms тригер // скорост 0 {PORTA = 0xC0; // показваме 0 RB6 = 1; fanLED = 0; } иначе ако (скорост == 4) // 8 ms задействане // скорост 1 {PORTA = 0xfc; // показва 1 RB6 = 1; fanLED = 1; } иначе ако (скорост == 3) // 6 ms задействане // скорост 2 {PORTA = 0xE4; // показва 2 RB6 = 0; fanLED = 1; } иначе ако (скорост == 2) // 4ms задействане // скорост 3 {PORTA = 0xF0; // показва 3 RB6 = 0; fanLED = 1; } иначе ако (скорост == 1) // 2ms задействане // скорост 4 {PORTA = 0xD9; // показва 4 RB6 = 0; fanLED = 1; } иначе ако (скорост == 0) // 0ms задействане // скорост 5 пълна мощност {PORTA = 0xD2; // показва 5 RB6 = 0; fanLED = 1; }
Функцията по-долу е за външно прекъсване и препълване на времето. Тази функция е отговорна за откриване на пресичане на нулата и задвижване на триака.
void interrupt isr () {if (INT0IF) {delay (speed); трик = 1; за (int t = 0; t <100; t ++); трик = 0; INT0IF = 0; } if (TMR0IF) // Проверете дали е TMR0 Препълващ ISR {TMR0IF = 0; }}
Крайната печатна платка за тази IR дистанционно управлявана домашна автоматизация изглежда както е показано по-долу:
Дизайн на вериги и печатни платки с помощта на EasyEDA:
За да проектираме тази домашна автоматизация с дистанционно управление, ние използвахме EasyEDA, който е безплатен онлайн инструмент за EDA за създаване на платки и платки по безпроблемен начин. Преди това сме поръчали няколко печатни платки от EasyEDA и все още използваме техните услуги, тъй като установихме, че целият процес, от изчертаването на схемите до поръчването на печатни платки, е по-удобен и ефективен в сравнение с други производители на печатни платки. EasyEDA предлага безплатно чертеж на вериги, симулация, дизайн на печатни платки, а също така предлага висококачествена, но ниска цена Персонализирана услуга за печатни платки. Проверете тук за пълния урок за това как да използвате Easy EDA за създаване на схеми, оформления на печатни платки, симулиране на схеми и т.н.
EasyEDA се подобрява от ден на ден; те са добавили много нови функции и са подобрили цялостното потребителско изживяване, което прави EasyEDA по-лесна и използваема за проектиране на схеми. Те скоро ще пуснат версията му Desktop, която може да бъде изтеглена и инсталирана на вашия компютър за офлайн употреба.
В EasyEDA можете да направите вашите схеми и печатни платки публични, така че другите потребители да могат да ги копират или редактират и да се възползват от тях, ние също направихме цялата ни схема на платки и печатни платки публична за тази автоматизация на дома от дистанционно управление.
По-долу е моментната снимка на горния слой на оформлението на печатни платки от EasyEDA, можете да видите всеки слой (отгоре, отдолу, горната част, долната коприна и т.н.) на печатната платка, като изберете слоя от прозореца „Слоеве“
Изчисляване и поръчване на проби от печатни платки онлайн:
След като завършите дизайна на печатни платки, можете да щракнете върху иконата на изхода за производство , която ще ви отведе на страницата за поръчка на печатни платки. Тук можете да видите вашата PCB в Gerber Viewer или да изтеглите Gerber файлове на вашата PCB и да ги изпратите на произволен производител, също така е много по-лесно (и по-евтино) да я поръчате директно в EasyEDA. Тук можете да изберете броя на печатни платки, които искате да поръчате, колко медни слоя имате нужда, дебелината на печатната платка, теглото на медта и дори цвета на печатната платка. След като сте избрали всички опции, щракнете върху „Запазване в кошницата“ и завършете поръчката си, след което ще получите своите ПХБ в рамките на няколко дни.
Можете директно да поръчате тази PCB или да изтеглите файла Gerber, като използвате тази връзка.
След няколко дни поръчка на печатни платки получихме печатните платки. Таблата, които получихме, са показани по-долу.
След като получихме печатни платки, монтирах всички необходими компоненти върху печатната платка и накрая подготвихме нашата IR дистанционно управлявана домашна автоматизация, проверете тази схема, работеща в демонстрационно видео в края на статията.