Дистанционное включение света с пульта на pic12f629. схема

Ардуино – принцип действия

Плата Ардуино – это устройство, на котором установлен программируемый микроконтроллер. К нему подключены различные датчики, органы управления или encoder и, по заданному скетчу (программе), плата управляет моторами, светодиодами и прочими исполнительными механизмами, в том числе и другими платами Ардуино по протоколу SPI. Контроль устройства может осуществляться через дистанционный пульт, модуль Bluetooth, HC-06, Wi-Fi, ESP или internet, и кнопками. Одни из самых популярных плат – Arduino Nano и Arduino Uno, а также Arduino Pro Mini – устройство на базе микроконтроллера ATmega 328

Программирование осуществляется в среде Ардуино с открытым исходным кодом, установленным на обычном компьютере. Программы загружаются через USB.

Передача и прием команд

Возьмем операцию, которая наиболее часто встречается в быту: дистанционное беспроводное управление телевизором. Первое, что делает схема пульта, определяет, какая кнопка была нажата. Принцип определения тот же, что и в компьютерной клавиатуре: сканирование матрицы размещенных кнопок. Но, в отличие от клавиатуры ПК, на ПДУ генератор сканирования находится в режиме ожидания и включается только при нажатии кнопок на пульте. Этим достигается экономное использование элементов питания.

Затем производится кодирование управляющего сигнала (команды) и передача его ИК-светодиодом. Перед передачей основного сигнала производится синхронизация передающего и приемного устройств, также на приемной стороне производится проверка соответствия кода пульта. Сама же передача будет осуществляться в течение всего времени, пока нажата управляющая кнопка.

Следует заметить, что производители электронных устройств ничем не ограничены в создании алгоритмов кодирования управляющих сигналов и используемых частот модуляции. Это приводит к тому, что часто даже однотипные модели одного производителя требуют для управления разные пульты управления.

Внешний RC-генератор с изменяемой частотой генерации

Частота внешнего RC-генератора определяется параметрами внешней цепи, подключенной к выводу OSC1. Сопротивление этой цепи можно изменять, управляя напряжением на выводе порта GP. Уровень лог. «1 » на GP0 подключает резистор R2 параллельно R1, таким образом, общее сопротивление цепи уменьшается, и частота генерации увеличивается. Перевод состояния GP0 на вход увеличивает сопротивление RC-генератора, тем самым уменьшая его частоту. Данный прием позволяет изменять частоту тактирования микроконтроллера, изменять быстродействие системы, а значит, изменять потребление микроконтроллера в зависимости от выполняемой задачи.

Обработка нескольких кнопок с помощью одного входа

Микроконтроллеры PIC12Fxxx имеют аналоговый компаратор с программируемым источником опорного напряжения, а также два таймера с разрядностью 8 и 16 бит. Следующий пример показывает, как, используя только один вход микроконтроллера с компаратором, а также один из таймеров, можно определить нажатие одной из нескольких кнопок.

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

Программная последовательность:

  1. Конфигурируем GP2 как выход с уровнем лог. «0 » для разрядки конденсатора.
  2. Конфигурируем GP2 как один из входов компаратора, другой вывод компаратора подключается к внутреннему источнику опорного напряжения.
  3. Запускаем таймер и измеряем время до срабатывания компаратора.

Если измеренное время соответствует максимальному для данной схемы, значит, ни одна из кнопок не нажата, и процедура опроса клавиатуры повторяется. Когда какая-либо кнопка нажата, скорость нарастания пилообразного сигнала увеличивается, а время срабатывания компаратора уменьшается.

Обработка нескольких кнопок с помощью одного входа с выходом из режима SLEEP

Микроконтроллеры PIC12Fxxx имеют режим микропотребления SLEEP. В этом режиме работа ядра останавливается, и потребление контроллера может снизиться до 0,9 мкА. Работу предыдущего примера можно дополнить функцией выхода из режима SLEEP при нажатии какой-либо кнопки. Для реализации этой возможности необходимо использовать дополнительный вывод микроконтроллера (рис.5).

До входа в режим SLEEP нужно сконфигурировать вывод GP2 как выход с установленным уровнем лог. «1 », а GP1 — как вход с возможностью прерывания по изменению состояния.

Подтягивающий резистор R1 удерживает GP1 в низком состоянии. При нажатии кнопки вход GP1 переводится в высокое состояние через GP2 и Vdd, что приводит к возникновению прерывания и выходу микроконтроллера из SLEEP. После этого нужно записать в GP2 лог. «0 » для разряда конденсатора C1 через резистор R2. Затем GP1 устанавливаем в лог. «1 », а GP2 конфигурируем как вход компаратора для измерения времени заряда конденсатора.

Программная последовательность:

  1. GP1 соединяется с общим выводом кнопок.
  2. Разрешить прерывание по изменению состояния порта GP1.
  3. До включения режима SLEEP установить GP1 как вход, а GP2 как выход с лог. «1 ».
  4. Если кнопка нажата, микроконтроллер выходит из SLEEP, установить в GP2 лог. «0 » для разряда конденсатора.
  5. Установить GP1 в лог. «1 », определить, какая кнопка нажата, путем измерения времени заряда.

Клавиатура 4×4 с использованием одного входа

Микроконтроллер PIC12F675 имеет в своем составе 10-разрядный АЦП с временем измерения до 20 мкс. Наличие встроенного АЦП позволяет реализовать клавиатуру с большим количеством кнопок, используя всего один вход (см.рис.6). При правильном выборе значений номиналов резисторов замыкание каждой из кнопок сформирует уникальное напряжение, соответствующее именно этой кнопке. Измеряя напряжение Vout с помощью АЦП, можно определить, какая именно кнопка нажата. Для однозначности определения нажатой клавиши лучше использовать точные резисторы. Если ни одна из кнопок не нажата, измеренное напряжение будет около 0 В.

Тестер для ПДУ формата RC5 и NEC на PIC12F629

Каждый начинающий электронщик рано или поздно сталкивается с потребностью в дистанционном управлении. Самый распространенный способ организации беспроводной передачи сигнала – пульт дистанционного управления, работающий по инфракрасному каналу связи. Но, как мы знаем, не все пульты одинаково полезны. Данный тестер позволит определиться с пультами, которых в вашем доме возможно, уже несколько штук.Обычно в пульте и приёмнике используется одна частота модуляции несущей (или частоты излучения ИК-светодиода). Частоты модуляции обычно стандартны – это 36 кГц, 38 кГц, 40 кГц (Panasonic, Sony). Редкими считаются частоты 56 кГц (Sharp). Фирма Bang&Olufsen использует 455 кГц, что является большой редкостью. Пример фотоприёмников: TSOP1736 (он же Hl136AA71) – настроен на частоту 36 кГц, TSOP1738 – 38 кГц (производитель Vishay Telefunken), BRM1020 – 38 кГц. Протокол RC5 работает на частоте 36кГц, NEC на 38кГц, но как показала практика RC5 отлично работает и с приемником на 38кГц.Данное устройство предназначено для определения кода команды пульта дистанционного управления в форматах RC5 и NEC. Это два самых распространенных протокола инфракрасной связи. RC5 является разработкой фирмы Phillips, но его так же используют и многие другие фирмы. NEC разработка одноименной фирмы NEC и является также распространенным протоколом.Схема устройства (кликаем картинку для увеличения):

Работа устройства: после включения устройства на индикаторах загораются два нижних сегмента – устройство готово принимать RC5 команды, после нажатия кнопки на тестере загораются два верхних сегмента – устройство готово принимать NEC команды.По факту нажатия копки на ПДУ на индикаторе высветится шестнадцатеричный код команды кнопки. Например, для протокола RC5 при нажатии на кнопку «Stop» высветится число «36».С протоколом NEC немного по-другому. Если взять три пульта и нажимать одну и туже кнопку (например, Power), то команда во всех трех вариантах может оказаться разная.Фото устройства:

Печатная плата:

Протестированные пульты, по протоколу RC5 работает только один (черный пульт производства Phillips, довольно таки старый), остальные NEC

Так же программа написана для контроллера PIC12F675.Семимегментный индикатор применен с общим анодом, двух-разрядный, одноименные сегменты которого не объединены. Фотоприемник на 38кГц. На стадии отладки приемник на 36кГц ловил сильные помехи с дисплея LCD телевизора, вследствие чего был заменен. В своем образце я промахнулся со стабилизатором, который не плохо греется (7805 TO-92), поэтому рисунок печатной платы был подправлен под стабилизатор с корпусом TO-220.

Файлы:Печатная платаПрошивка PIC12F629Прошивка PIC12F675

Описание протоколов RC5 и NECИсходники и доработка под ваши пульты

Полезные ссылки:Попробуй сделать печатную плату на кухнеСобери себе подходящий программаторУзнай как прошить микроконтроллер прошивкойНаучись программировать и делать прошивкиЗадай вопрос или найди ответ в форуме

Видеоинструкция

Данная схема служит для эффектной подсветки какого-либо предмета, например, аквариуму, и также может быть дополнением для моддинга компьютера. Это устройство управляет трехцветными (RGB) светодиодами и отображает цвета в совершенно случайном порядке.

Общий принцип действия драйвера показан на рисунке 1. Два генератора генерируют прямоугольные импульсы с заполнением 50%, но немного отличаются по частоте (до десятков Гц).

На выходе логического элемента EX-OR (исключающее ИЛИ) высокий уровень появиться только тогда, когда на обоих выходах генераторов одновременно появится 1 или 0.

Диаграмма сигналов на выходах генераторов приведена на рисунке 2. Как видно, на выходе логического элемента EX-OR появляется меандр с переменным заполнением 0…100%. Заполнение это будет изменяться тем медленнее, чем меньше будет разность частот обоих генераторов.

Микросхема CD4060 это 14-разрядный двоичный счётчик с генератором. Миниатюрный дроссель L1, конденсаторы C1 и C2, а также логические элементы CD4060 образуют генератор высокой частоты, работающий на частоте примерно 700 кГц. Эта частота делится в этом счетчике на 212.

Сигнал с генератора также подается на входы CLK 12-разрядных двоичных счётчиков на CD4040, которые подсчитывают импульсы с генератора.

Когда отсчет доходит до того, что на выходе Q11 (ножка 15) появляется логическая единица, на выходе элемента NOT будет низкое состояние, приводящее к блокировке на доли секунды подсчета импульсов (время зависит от емкости C3 и суммарного сопротивления R2 и PR1).

И так происходит при каждом появлении высокого уровня на выходе Q11 CD4040, то есть, как можно заметить, при каждом изменении состояния на выходе Q12 CD4040. Это приводит к тому, что на выходе Q12 CD4060 частота несколько выше от частоты на выходе Q12 CD4040 (разница зависит от C3, R и чем больше значение, тем больше разница).

Благодаря этой минимальной разнице, на элементах EX-OR появляется меандр переменного заполнения по времени. Это в свою очередь приводит к тому, что светодиод, подключенный к выходу этой, цепи будет плавно загораться и гаснуть.

Переменными резисторами можно регулировать скорость изменения заполнения (скорость включения и выключения светодиодов). Так же в схеме добавлен фотодатчик на элементах T4, T5 и R14, для того чтобы схема автоматически включалась только в темное время суток. От сопротивления резистора R14 зависит, при какой яркости схема все еще будет работать.

(233,6 Kb, скачано: 422)

В этой статье рассмотрены основы использования RGB (Red Green Blue (красный, зеленый, синий)) светодиода с Arduino.

Мы используем функцию analogWrite для управления цветом RGB светодиода.

На первый взгляд, RGB светодиоды выглядят так же, как и обычные светодиоды, но на самом деле у них внутри установлено три светодиода: один красный, один зеленый и да, один синий. Управляя яркостью каждого из них, вы можете управлять цветом светодиода.

То есть, мы будем регулировать яркость каждого светодиода и получать нужный цвет на выходе, как будто это палитра художника или словно вы настраиваете частоты на своем плеере. Для этого можно использовать переменные резисторы . Но в результате схема будет достаточно сложной. К счастью, Arduino предлагает нам функцию analogWrite. Если задействовать на плате контакты, отмеченные символом «~», мы можем регулировать напряжение, которое подается на соответствующий светодиод.

Сборка фонарика

Когда плата была готова и прошивка была залита, можно было наконец ставить ее на место старого драйвера. Я выпаял старый драйвер и припаял на его место новый.

Проверив, нет ли короткого замыкания по питанию, подключил питание и проверил работоспособность

Затем смонтировал плату зарядки (TP4056), для этого пришлось немного дремелем рассверлить отверстие разъема зарядки, и зафиксировал ее термоклеем (тут важно было, чтобы клей не затек в разъем, достать его оттуда будет сложно)

Я не стал прикручивать плату винтами, т. к. резьба в корпусе сорвалась от многократных закручиваний, а просто залил ее клеем, провода тоже заклеил в местах пайки, дабы они не перетирались. Драйвер и ЗУ я решил покрыть акриловым бесцветным лаком, это должно помочь от коррозии.

Цифровая схема реверса однофазного асинхронного двигателя на микроконтроллере PIC12F629

Это несложное цифровое устройство было разработано для управления однофазным асинхронным электродвигателем типа 6АЕ80 номинальной мощностью 1100 Вт. Одним из условий было наличие проводного пульта дистанционного управления с кабелем длиной 5 — 6 метров, небольшой вес пульта и низковольтное управление (для электробезопасности оператора). Устройство можно использовать с любым однофазным асинхронным электродвигателем, но следует учитывать мощность мотора. Для более мощных двигателей, возможно, потребуется применение в схеме электромагнитных реле, способных коммутировать больший ток.

Электродвигатель 6АЕ80

Чаще всего электрики делают подобные устройства на основе электромагнитных пускателей, представляющих собой практически мощные электромагнитные реле с обмотками на 220 вольт. Например, распространенных контакторах типа ПМЛ-1100. Это самое распространенное решение, но с точки зрения наших целей оно имеет ряд недостатков. Первое — это большие габариты устройства на электромагнитных контакторах, и второе — это необходимость тянуть к пульту управления (кнопочному пульту) силовые провода большого сечения, по которым течет сравнительно большой ток и присутствует опасное высокое сетевое напряжение 220 вольт. Ниже на картинке — фото одного из таких устройств:

Видим что такое устройство по размерам сопоставимо с размерами самого электродвигателя.

Я решил разработать небольшое по габаритам устройство с цифровым управлением на недорогом 8-пиновом микроконтроллере PIC12F629.

Применение микроконтроллера позволило реализовать управление двигателем всего двумя кнопками (вместо обычных трех кнопок в реверсе на пускателях). При этом оператору не нужно думать об остановке двигателя перед сменой направления вращения — об этом заботится программа, «зашитая» в микроконтроллер.

На фотографии — мой пульт управления двигателем. С блоком контроллера пульт соединяется мягким качественным кабелем длиной 6 метров (При необходимости длину кабеля можно увеличить). Применен микрофонный кабель с двумя жилами и экраном. Кабель имеет диаметр 6 мм (по изоляции) Такой кабель применяется ы звукотехнике для подключения микрофонов. В принципе можно использовать любой трехжильный провод. Я применил микрофонный, так как он качественный, стойкий к изгибам и обрывам, так как рассчитан на использование в «экстремальных» условиях живых концертов.

Микрофонный кабель (один из вариантов)

Пульт управления имеет две кнопки. Зеленая кнопка — вращение вперед, красная кнопка — реверс, то есть вращение в обратную сторону (следует учесть, что направления вращения — условные).

Если двигатель остановлен, то нажатие на любую из кнопок запускает двигатель в соответствующем направлении. Если во время вращения мотора нажать на любую из кнопок, то происходит выключение двигателя.

На корпусе пульта управления есть кольцо, предназначенное для того, чтобы пульт можно было повесить на стену или на шею оператора (желание заказчика). Двигатель используется с редуктором, в станке для гибки труб.

Корпуса пульта управления и самого контроллера разработаны в программе 3D моделирование SolidWorks и напечатаны на 3D принтере.

Корпус кнопочного пульта (слева) и контроллера (справа), распечатанные на 3D принтере.

Контроллер управления, закреплённый на пластиковой крышке распределительной коробки двигателя 6АЕ80.

Включенное состояние (свет включен или приглушен)

Если нажать на настенный выключатель или отправить соответствующий ИК-сигнал с пульта дистанционного управления, лампочка загорится. Включение электрической лампочки осуществляется путем включения симистора, когда напряжение сети пересекает нулевую точку. Это обнаруживается с помощью детектора пересечения нуля, сформированного с помощью R3 и C6.

Если мы включим симистор сразу после обнаружения» нуля», он включит свет на полную мощность. Если мы задержим срабатывание симистора на некоторое время, то сможем эффективно выполнить диммирование (затемнение), так как напряжение, появляющееся на выходе, меньше напряжения питания.

Электрический паяльник с регулировкой температуры
Мощность: 60/80 Вт, температура: 200’C-450’C, высококачествен…

Подробнее

Если мы посмотрим на принципиальную (часть источника питания) мы можем увидеть, что когда симистор включается, то он замыкает наш бестрансформаторный источник питания. В этот момент вся цепь питается от конденсатора С3. Он должен быть достаточно большим, чтобы поддерживать достаточную мощность для TSOP (~5 мА), микроконтроллера (< 1 мА) и MOC3023 (~ 5 мА, но только в течение нескольких микросекунд). Поэтому здесь желательно поставить конденсатор С3 большой емкости: 220 мкФ / 330 мкФ / 470 мкФ.

Если мы будем держать свет включенным на полную яркость, он в конечном итоге полностью разрядит C3 и перезапустит микроконтроллер PIC. Вот программа микроконтроллера не включает свет на полную яркость — мы на самом деле немного задерживаем срабатывание симистора, чтобы «украсть» достаточно энергии, чтобы держать наш конденсатор C3 заряженным. Так что 100 % на самом деле больше похоже на 99 %.

Формат данных цветовой последовательности

Этот файл содержит данные последовательности R GB. Чтобы отредактировать этот файл, вы можете добавить в него данные, удалить данные и изменить их. Убедитесь, что все соответствует описанию

Обратите внимание на маркеры “конец последовательности” и “конец всех данных” и убедитесь, что каждая строка данных последовательности содержит пять записей, разделенных запятыми. (см

скриншот ниже)

Перед вами полезная онлайн-утилита для моделирования последовательностей: RGB LED Simulator

Как видно из скриншота выше, маркер “end_of_all_data” обведен фиолетовым цветом, а те, кто отмечает конец последовательностей, обведены красным цветом.

Требуется минимум одна последовательность и максимум 256 индивидуальных последовательностей.

  1. Каждая строка данных начинается с директивы ассемблера dt (таблица данных).
  2. Все данные указываются с использованием десятичных значений.
  3. Каждое значение данных должно быть разделено запятой.
  4. Данные последовательности в каждой строке имеют пять полей: fade rate: скорость перехода цвета от текущих значений к новым. Каждый шаг происходит с интервалом 5 мс x Fade Rate. Значение скорости затухания 0 означает, что значения RGB будут обновляться немедленно без затухания. Значение скорости затухания не должно быть установлено на 255, кроме как для обозначения конца последовательности. (см. ниже) Время удержания: После завершения затухания происходит задержка перед переходом к следующей строке данных. Интервал 50 мс x время удержания Значение времени удержания 255 после скорости затухания 255 означает конец данных последовательности.Красное значение ШИМ. От 0 = 0% (светодиод не горит) до 255 = 100% (светодиод горит полностью)Зеленый Значение ШИМ. От 0 = 0% (светодиод не горит) до 255 = 100% (светодиод горит полностью)Значение синего ШИМ. От 0 = 0% (светодиод не горит) до 255 = 100% (светодиод полностью горит)Обычно изменения яркости светодиода более заметны между 0 и 128, чем между 128 и 255.Конец текущей последовательности данных обозначается значением поля Fade Rate, равным “255”. Когда приложение обнаруживает это, оно начинает последовательность с самого начала. В конце всех доступных данных последовательности поля Fade Rate и Hold Time должны быть установлены на “255”.
  5. Fade Rate: скорость, с которой цвета переходят от текущих значений к новым. Каждый шаг происходит с интервалом 5 мс x Fade Rate. Значение скорости затухания 0 означает, что значения RGB будут обновляться немедленно без затухания. Значение скорости затухания не должно быть установлено на 255, за исключением случаев, когда оно указывает на конец последовательности. (См. ниже)
  6. Значение Fade Rate, равное 0, означает, что значения RGB будут обновляться немедленно без затухания.
  7. Значение Fade Rate не должно быть установлено на 255, кроме как для обозначения конца последовательности. (См. ниже)
  8. Время удержания: после завершения затухания происходит задержка перед переходом к следующей строке данных. Интервал 50 мс x время удержания Значение времени удержания 255 после скорости затухания 255 означает конец всех данных в последовательности.
  9. Значение времени удержания 255 после скорости затухания 255 означает конец_всех_последовательных_данных.
  10. Красное значение ШИМ. От 0 = 0% (светодиод не горит) до 255 = 100% (светодиод горит полностью)
  11. Зеленый Значение ШИМ. От 0 = 0% (светодиод не горит) до 255 = 100% (светодиод горит полностью)
  12. Значение ШИМ синего цвета. От 0 = 0% (светодиод не горит) до 255 = 100% (светодиод горит полностью)
  13. Обычно изменения яркости светодиода более заметны в диапазоне от 0 до 128, чем от 128 до 255.
  14. Конец текущей последовательности данных обозначается значением “255” в поле Fade Rate. Когда приложение обнаруживает это, оно начинает последовательность с самого начала.
  15. В конце всех доступных данных последовательности оба поля Fade Rate и Hold Time должны быть установлены на “255”.

Отредактированный файл sequenceData.inc необходимо сохранить и перекомпилировать rgb101g3_main.asm. Полученный файл rgb101g3_main.hex может быть запрограммирован с помощью программатора микроконтроллеров PIC.

SCADA «BortX» с поддержкой языка управления в рамках ANSI /ISA-88 для ESP8266

Признаюсь честно — очень люблю cовременные микроконтроллеры. В частности, производства китайского производителя Espressif Systems с интерфейсом Wi-Fi. Речь, естественно, идет о ESP8266 и ESP32, которые обладают большим потенциалом в образовательном контексте.
Конечно, у них есть свои недостатки. Но цена. Это чудо. В частности, если покупаешь условный «Witty Cloud» за три доллара, в котором даже не надо мучаться вопросами питания и программирования. Сфера применения в IoT позволяет создать собственные проекты автоматизации различными путями — классическим образом: путем написания кода и работы в IDE. Или через тот же FLProg. Однако, как всегда, есть нюансы, несколько тормозящие репрезентацию работы в рамках типового применения ESP8266 как аппаратной основы. И проблема вовсе не в сетевом подключении, осуществляемой к домашней/офисной локальной сети с выходом в Internet через роутер.

Что делать, если поймал HardFault?

Что делать, если поймал HardFault? Как понять, каким событием он был вызван? Как определить строчку кода, которая привела к этому? Давайте разбираться.
Всем привет! Сложно найти программиста микроконтроллеров, который ни разу не сталкивался с тяжелым отказом. Очень часто он никак не обрабатывается, а просто остаётся висеть в бесконечном цикле обработчика, предусмотренном в startup файле производителя. В то же время программист пытается интуитивно найти причину отказа. На мой взгляд это не самый оптимальный путь решения проблемы.
В данной статье я хочу описать методику анализа тяжелых отказов популярных микроконтроллеров с ядром Cortex M3/M4. Хотя, пожалуй, «методика» — слишком громкое слово. Скорее, я просто разберу на примере то, как я анализирую возникновение тяжелых отказов, и покажу, что можно сделать в подобной ситуации. Я буду использовать программное обеспечение от IAR и отладочную плату STM32F4DISCOVERY, так как эти инструменты есть у многих начинающих программистов. Однако это совершенно не принципиально, данный пример можно адаптировать под любой процессор семейства и любую среду разработки.

Запускаем трансфлективный TFT дисплей на SSD1283A с помощью STM32

Tutorial

Введение

Модель дисплея называется H016IT01. Данный дисплей интересен прежде всего тем, что он является трансфлективным(transflective). Это означает, что изображение на нем должно быть видно даже под ярким солнцем. А также это чуть ли не единственная доступная модель с этой особенностью на известном китайском сайте.
Статья же увидела свет потому, что информации по контроллеру SSD1283A очень мало(как в русском, так и западном сегменте сети), и руководства я нигде не встречал. В сети можно найти даташит, однако там нет информации по инициализации и работе с дисплеем, а из полезного только описания регистров.
Хочу подчеркнуть, что данный материал конечно же не является истиной последней инстанции. Я привожу лишь свой опыт взаимодействия с устройством. Основная цель статьи проста — помочь всем тем, кто решил, хочет или захочет поработать с данным дисплеем, не более.

Управление устройствами

Подключенными устройствами (или только одним) можно управлять с помощью пульта дистанционного управления или настенной кнопки.

— Пульт дистанционного управления может работать в двух режимах: Toggle и ON/OFF (настраивается перемычкой Jp1).

Режим Toggle используется для управления устройством с помощью только одной кнопки ПДУ: первое нажатие кнопки включает канал, а второе нажатие кнопки выключает.

Для режима ON/OFF требуется как минимум две кнопки ПДУ: одна для включения канала, а другая для выключения.

— Настенная кнопка может управлять обоими каналами (приборами).

Один щелчок выключает все каналы, а другой один щелчок включает те каналы, которые были включены до их выключения.

Двойной щелчок включит все каналы, если оба канала были ВЫКЛЮЧЕНЫ, и если хотя бы один канал был включен, он переключит второй канал. Это может показаться сложным, но уверяю вас, что это не так.

ШИМ управление LED подсветкой ЖК монитора на PIC12F675

В один прекрасный день перестал радовать своей яркой картинкой монитор LG 1510. Озадачившись ремонтом, полез в инет в поисках причины угасшего монитора. В итоге перепайка указанных, сгоревших элементов не оживила CCFL подсветку. Но попутно наткнувшись на тему переделки CCFL подсветки на LED, решил реализовать свою идею. В итоге вырисовалась простая схема включения и ШИМ регулирования яркости подсветки монитора посредством сигналов от штатной схемы управления монитора.

Для начала был разобран монитор, для замера необходимой ширины LED ленты. На али заказал ленту шириной 5 мм White SMD2835 120 светодиодов/м.

Для разработки схемы был выбран пик контроллер PIC12F675. В котором задействовал основные аппаратные функции: АЦП (пин 5) для измерения заданной яркости, выходной сигнал в LG 1510 от 0 до 5В (опорное напряжение АЦП – питание ПИКа); прерывание по уровню сигнала на входе (пин 6), для включения и отключения подсветки (on/off в схеме монитора с уровнем 5В); и прерывание по таймеру для реализации программного ШИМ управления яркостью светодиодов, выход (пин 7).

В данном мониторе есть выходное питание 12В и 5В. Но питания ПИКа было реализовано от 12В через кренку, для обеспечения высокой стабильности уровня яркости. В исходной прошивке включен WDT который выводит ПИК из sleep режима раз в 2,3 сек. когда уровень сигнала на входе включения равен нулю

По прерыванию на входе включения высоким уровнем сигнала, запускается ШИМ, со скважностью импульсов пропорционально задающему сигналу яркости. Частота импульсов составляет порядка 1 кГц, при работе ПИКа от внутреннего тактового генератора. Также можно увеличить частоту подключив внешний кварц и поменяв биты конфигурации

С кварцем 20МГц частота ШИМа увеличится пропорционально до 5кГц. Для управления нагрузкой на светодиодах выбрал полевой транзистор N-типа AO3400 c довольно приличным нагрузочным током для своих габаритов. В схеме самого монитора были выпаяны почти все элементы CCFL подсветки, и добавлен в цепь питания (12В) новой схемы LC фильтр

Также можно увеличить частоту подключив внешний кварц и поменяв биты конфигурации. С кварцем 20МГц частота ШИМа увеличится пропорционально до 5кГц. Для управления нагрузкой на светодиодах выбрал полевой транзистор N-типа AO3400 c довольно приличным нагрузочным током для своих габаритов. В схеме самого монитора были выпаяны почти все элементы CCFL подсветки, и добавлен в цепь питания (12В) новой схемы LC фильтр.

После сборки и включения, монитор порадовал своей равномерной и высокой яркостью картинки, потраченные усилия привели к хорошему результату. И в свою очередь позволили вдохнуть достижение в ЖК промышленности в старый монитор.

Максимальная и минимальная яркость LG 1510, в сравнении с моим IPS.

Также данную схему можно применить в иных целях, где требуется управление посредством ШИМ. Данные, Data: адрес 0х2104 — порог максимальной яркости (1…255). адрес 0х2105 — порог минимальной яркости (0…254), минимальный порог должен быть ниже максимально, в противном яркость не будет регулироваться. адрес 0х2106 — коррекция частоты внутреннего генератора ПИК контроллера, для изменения частоты ШИМа (х*4 до 252). адрес 0х2107 — подключение подтягивающего резистора, высокий уровень на входе для включения ШИМа.( =1 подключен, =0 нет)

Данная схема не критична к номиналам элементов.

Программа для микроконтроллера

Прошивка для микроконтроллера PIC12F629 написана на языке Си в среде MikroC Pro For Pic. Для прошивки микроконтроллера вам потребуется любой из программаторов, способных прошивать микроконтроллеры PIC.

в архиве:Программа (прошивка) для микроконтроллера с исходными кодамиСама прошивка — это файл Revers_12F629.hexтакже в архиве найдете проект для симуляции в Proteus. Это файл Reves12F6298.pdsprjПроект печатной платы в формате DipTrace и 3D модели для печати корпусов контроллера и кнопочного пульта

Серия видео об изготовлении этого устройства:

Понравилась статья? Поделиться с друзьями:
Зинг-Электро
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: