- Рабочее объяснение:
- Составные части:
- Программирование:
- Проектирование схем и печатных плат с использованием EasyEDA:
- Расчет и заказ образцов печатных плат онлайн:
В этом проекте мы собираемся использовать микроконтроллер PIC для удаленного управления несколькими нагрузками переменного тока, просто используя ИК-пульт. Аналогичный проект домашней автоматизации с ИК-дистанционным управлением уже был реализован с помощью Arduino, но здесь мы разработали его на печатной плате, используя онлайн-конструктор и симулятор печатных плат EasyEDA, и использовали их услуги по проектированию печатных плат, чтобы заказать платы печатных плат, как показано в следующем разделе статья.
В конце этого проекта вы сможете переключать (ВКЛ / ВЫКЛ) любую нагрузку переменного тока с помощью обычного пульта дистанционного управления, не вставая с кресла / кровати. Чтобы сделать этот проект более интересным, мы также включили функцию управления скоростью вентилятора с помощью Triac. Все это можно сделать простым щелчком на ИК-пульте дистанционного управления. Вы можете использовать для этого проекта любой пульт от вашего TV / 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 - это силовой полупроводник, способный управлять выходным напряжением; эта возможность используется для управления скоростью вентилятора.
Мы также использовали драйвер симистора для управления симистором с помощью нашего микроконтроллера PIC. Этот драйвер используется для подачи импульса угла зажигания на симистор, чтобы можно было контролировать выходную мощность. Здесь мы использовали 6 уровней регулировки скорости. Когда уровень равен 0, вентилятор выключен. Когда уровень будет равен 1, скорость будет 1/5 полной скорости. Когда уровень будет 2, тогда скорость будет 2/5 полной скорости и соответственно для других. Текущий уровень скорости можно контролировать с помощью встроенного 7-сегментного дисплея.
Блок-схема проекта представлена ниже.
Составные части:
Компоненты, необходимые для создания этого проекта, приведены ниже:
- PIC18f2520 Микроконтроллер -1
- TSOP1738 -1
- ИК-ТВ / DVD пульт -1
- Транзистор BC547 -4
- Реле 12 вольт -4
- Лампа с держателем -5
- Соединительные провода -
- Печатная плата EasyEda -1
- ЖК-дисплей 16x2
- Блок питания 12в
- Клеммный разъем 2 пин `-8
- Клеммный разъем 3 пин -1
- Трансформатор 12-0-12 -1 -
- Регулятор напряжения 7805-1
- Регулятор напряжения 7812-1
- Конденсатор 1000 мкФ -1
- Конденсатор 10 мкФ -1
- Конденсатор 0,1 мкФ -1
- Конденсатор 0,01 мкФ 400 В -1
- 10к -5
- 1к -5
- 100 Ом -7
- Общий катодный сегмент -1
- 1n4007 диод -10
- BT136 симистор -1
- Мужской / женский заголовок -
- Светодиоды -6
- Оптопара moc3021 -1
- Оптопара mtc2e или 4n35 -1
- Кристалл 20 МГц -1
- Конденсатор 33пФ -2
- 5.1v стабилитрон -1
- Резистор 47 Ом 2 Вт -1
Все эти компоненты широко используются и их легко купить. Однако, если вы ищете лучшую покупку в Интернете, мы рекомендуем вам LCSC.
LCSC - отличный интернет-магазин, где можно купить компоненты электроники для любых проектов. В них представлено около 25 000 видов компонентов, и самое лучшее, что они продают даже небольшие партии для небольших проектов, а также у них есть Global Shipping.
Расшифровка ИК-пульта ДУ:
Как было сказано ранее, вы можете использовать любой пульт для своего проекта. Но мы должны знать, какой сигнал генерируется именно этим пультом. Для каждого отдельного ключа на пульте дистанционного управления будет эквивалентное шестнадцатеричное значение для этого ключа. Используя это значение HEX, мы можем различать каждую клавишу на стороне нашего микроконтроллера. Поэтому, прежде чем мы решим использовать пульт, мы должны знать шестнадцатеричное значение для ключей, предустановленных на этом конкретном пульте. В этом проекте мы использовали пульт NEC. Ниже приведены значения HEX для ключей на пульте дистанционного управления NEC.
Как вы можете заметить, значение HEX состоит из 7 символов, из которых отличаются только последние два, поэтому мы можем рассматривать только последние две цифры, чтобы различать ключи.
Принципиальная электрическая схема:
Схема проекта представлена ниже.
Вышеупомянутая схема была упрощена с использованием редактора схем esayEDA, поскольку они предоставляют макеты всех компонентов, используемых в этом проекте. Он также не требует установки и может использоваться онлайн на ходу.
Распиновка и значения компонентов четко указаны на схеме выше. Вы также можете скачать файл схемы отсюда.
Программирование:
Программа для этого проекта написана с использованием MPLABX, код также довольно прост и понятен. Полный код будет приведен в конце этого руководства, а некоторые другие важные фрагменты программы описаны ниже.
В начале кода мы должны включить необходимые библиотеки, определить контакты и объявить переменные.
#включают
После этого мы создали простую функцию задержки, используя цикл «for».
void delay (int time) {for (int i = 0; i
После этого мы инициализировали таймер, используя следующую функцию
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Источник тактовых импульсов таймера от предделителя T0CS = 0; // Предделитель получает частоту от FCPU (5 МГц) T08BIT = 0; // 16-БИТНЫЙ РЕЖИМ TMR0IE = 1; // Разрешить прерывание TIMER0 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; я = 0; ir = 0; tric = 0; таймер (); INTEDG0 = 0; // Прерывание по заднему фронту INT0IE = 1; // Разрешить внешнее прерывание INT0 (RB0) INT0IF = 0; // Сбрасывает бит флага внешнего прерывания INT0 PEIE = 1; // Разрешить периферийное прерывание GIE = 1; // Включить INT глобально
Здесь мы не используем режим прерывания или захвата и сравнения для обнаружения ИК-сигнала. Здесь мы только что использовали цифровой вывод для чтения данных так же, как мы читаем кнопку. Каждый раз, когда сигнал становится высоким или низким, мы просто устанавливаем метод устранения неполадок и запускаем таймер. Каждый раз, когда вывод меняет свое состояние на другое, значения времени сохраняются в массиве.
ИК-пульт дистанционного управления отправляет логику 0 как 562,5 мкс и логику 1 как 2250 мкс. Когда таймер читает около 562,5 мкс, мы предполагаем, что это 0, а когда таймер читает около 2250 мкс, мы принимаем его как 1. Затем мы конвертируем его в шестнадцатеричное.
Входящий сигнал с пульта содержит 34 бита. Мы сохраняем все байты в массиве, а затем декодируем последний используемый байт.
в то время как (ir == 1); INT0IE = 0; в то время как (ir == 0); TMR0 = 0; в то время как (ir == 1); i ++; dat = TMR0; если (дат> 5000 && дат <12000) {} еще {я = 0; INT0IE = 1; } if (i> = 33) {GIE = 0; задержка (50); cmd = 0; for (j = 26; j <34; j ++) {если (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; }} еще если (cmd == 0x9f) {скорость--; если (скорость <= 0) {скорость = 0; }}
Теперь, чтобы узнать, на каком уровне работает наш вентилятор, мы должны использовать 7-сегментный дисплей. Следующие строки используются для указания выводов 7-сегментного дисплея.
if (speed == 5) // отключил триггер 5x2 = 10 мс // скорость 0 {PORTA = 0xC0; // отображаем 0 RB6 = 1; fanLED = 0; } else if (speed == 4) // триггер на 8 мс // скорость 1 {PORTA = 0xfc; // отображение 1 RB6 = 1; fanLED = 1; } else if (speed == 3) // триггер на 6 мс // скорость 2 {PORTA = 0xE4; // выводим 2 RB6 = 0; fanLED = 1; } else if (speed == 2) // триггер 4 мс // скорость 3 {PORTA = 0xF0; // отображение 3 RB6 = 0; fanLED = 1; } else if (speed == 1) // триггер на 2 мс // скорость 4 {PORTA = 0xD9; // выводим 4 RB6 = 0; fanLED = 1; } else if (speed == 0) // триггер 0 мс // скорость 5 на полную мощность {PORTA = 0xD2; // отображение 5 RB6 = 0; fanLED = 1; }
Следующая функция предназначена для внешнего прерывания и переполнения времени. Эта функция отвечает за обнаружение перехода через ноль и управление симистором.
void interrupt isr () {if (INT0IF) {задержка (скорость); tric = 1; для (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Проверяем, является ли это TMR0 Overflow ISR {TMR0IF = 0; }}
Окончательная печатная плата для этой домашней автоматизации с дистанционным ИК-управлением выглядит так, как показано ниже:
Проектирование схем и печатных плат с использованием EasyEDA:
Для разработки этой домашней автоматизации с дистанционным управлением мы использовали EasyEDA, бесплатный онлайн-инструмент EDA для создания цепей и печатных плат без проблем. Ранее мы заказывали несколько печатных плат у EasyEDA и по-прежнему пользуемся их услугами, поскольку мы обнаружили, что весь процесс, от чертежа схем до заказа печатных плат, более удобен и эффективен по сравнению с другими производителями печатных плат. EasyEDA предлагает бесплатные чертежи схем, моделирование, проектирование печатных плат, а также предлагает высококачественные, но недорогие услуги по индивидуальному заказу печатных плат. Здесь вы найдете полное руководство по использованию Easy EDA для создания схем, макетов печатных плат, моделирования схем и т. Д.
EasyEDA улучшается день ото дня; они добавили много новых функций и улучшили общий пользовательский интерфейс, что делает EasyEDA проще и удобнее для разработки схем. Вскоре они собираются запустить его настольную версию, которую можно будет загрузить и установить на свой компьютер для автономного использования.
В EasyEDA вы можете сделать свои схемы и проекты печатных плат общедоступными, чтобы другие пользователи могли их копировать или редактировать и извлекать выгоду из этого. Мы также сделали общедоступными все макеты схем и плат для этой домашней автоматизации с дистанционным управлением.
Ниже приведен снимок верхнего слоя компоновки печатной платы из EasyEDA. Вы можете просмотреть любой слой (верхний, нижний, Topsilk, снизу и т.д.) печатной платы, выбрав слой в окне «Слои».
Расчет и заказ образцов печатных плат онлайн:
После завершения проектирования печатной платы вы можете щелкнуть значок вывода Fabrication , который перенесет вас на страницу заказа печатной платы. Здесь вы можете просмотреть свою печатную плату в Gerber Viewer или загрузить файлы Gerber вашей печатной платы и отправить их любому производителю. Кроме того, гораздо проще (и дешевле) заказать ее непосредственно в EasyEDA. Здесь вы можете выбрать количество плат, которые вы хотите заказать, сколько слоев меди вам нужно, толщину печатной платы, вес меди и даже цвет печатной платы. После того, как вы выбрали все варианты, нажмите «Сохранить в корзину» и завершите свой заказ, после чего вы получите свои печатные платы в течение нескольких дней.
Вы можете напрямую заказать эту печатную плату или загрузить файл Gerber по этой ссылке.
Через несколько дней после заказа печатных плат мы получили их. Платы, которые мы получили, показаны ниже.
После того, как мы получили печатные платы, я установил все необходимые компоненты на печатную плату, и, наконец, у нас есть готовая домашняя автоматизация с ИК-дистанционным управлением, проверьте работу этой схемы в демонстрационном видео в конце статьи.