Шим-контроллер для rgb светодиодов с использованием pic pic12f629

Видео 1

Для управления мощностью двигателей предусмотрены входы ENA и ENB. ENA привязан к IN1, IN2, а ENB регулирует мощность двигателя, управляемого через IN3, IN4. В простейшем случае, когда нет необходимости в регулировании оборотов двигателя, эти входы замкнуты перемычками на шину питания. Для управления скоростью вращения электромоторов используется ШИМ , соответственно необходимо подключать к данным входам драйвера те порты Arduino, которые поддерживают данный режим. При этом для управления одним двигателем в данном режиме понадобится три порта Arduino (программа L298N_2, взята из ).

Режим ожидания (свет выключен)

Устройство питается от сетевого напряжения, через резистивную нагрузку (лампочку). Схема потребляет очень мало энергии. Основным потребителем является ИК-приемник TSOP, но вы также можете использовать маломощные TSOP, такие как TSOP38238, если хотите снизить потребление тока до менее чем 1 мА.

В этом состоянии микроконтроллер (PIC12F629/PIC12F675) ожидает ИК-сигнала от TSOP или нажатия от настенного выключателя. Имейте в виду, что настенный выключатель больше не должен быть классическим выключателем включения/выключения — он должен быть заменен кнопочным выключателем, который замыкает контакты только тогда, когда вы продолжаете нажимать на него.

Микроконтроллеры серии PIC12

Микроконтроллеры PIC12 наряду с серией PIC10 занимают нишу маломощных  устройств в линейке процессорной продукции Microchip. Минимум периферии и корпус с 8-ю выводами предполагают их применение только в относительно простых приложениях. Эти же факторы и вытекающая из них низкая стоимость, обусловили популярность данных микроконтроллеров среди большого числа радиолюбителей.

Главной особенностью серии PIC12, как уже было сказано выше, является 8-ми выводной корпус. В таком корпусе выпускаются абсолютно все варианты за исключением нового процессора PIC12LF1840T48A со встроенным радиопередатчиком. Пользователю доступно 6 линий ввода вывода, при условии, что одна из них работает только на вход. Так же как и у других процессоров вывода могут выполнять разные функции. Из стандартной периферии доступны таймеры на 8 и 16 бит, компараторы и АЦП.

Ограниченность по выводам привела к тому, что в серии PIC12 сравнительно мало моделей и все они относительно схожи по своим характеристикам. В некоторых случаях,  для выбора достаточно определиться только с наличием или отсутствием АЦП и требуемым объемом памяти. Но можно подобрать микросхему и для конкретного, специфического проекта. В частности серия PIC12 может оснащаться встроенным модулем радиопередатчика или модулем шифрования KeeLoq.

В микросхемах семейства PIC12 используются три базовых архитектуры ядер. Наиболее  дешевые микросхемы построены на базовой архитектуре (Baseline). 12-ти разрядная шина команд и всего 33 инструкции упрощают освоение этих микроконтроллеров. Микросхемы с базовым ядром оснащаются только одним 8-ми разрядным таймером и не имеют энергонезависимой памяти (исключение PIC12F519). Более совершенные устройства оснащаются ядром средней серии с 14-ти разрядной шиной команд. Эти микроконтроллеры содержат два таймера, один из которых 16-ти разрядный.

Тип

Flashпамять Кслов

EEPROM байт

RAM, байт

АЦП

Комп

Таймер

Макс. частота МГц

Встр. генератор МГц

BOR/ PBOR/ PLVD

Доп.

Базовая серия, шина программ 12 бит, 33 инструкции

PIC12F508

0.5

25

1-8бит, WDT

4

4 МГц

PIC12F509

1

41

1-8бит, WDT

4

4 МГц

PIC12F510

1

38

3×8 бит

1

1-8бит, WDT

8

8 МГц

ICD

PIC12F519

1

64

41

1-8бит, WDT

8

8 МГц

ICD

Средняя серия, шина программ 14 бит, 35 инструкции

PIC12F609

1

64

1

1-8бит,

 1-16бит, WDT

20

4 МГц,

8 МГц

BOR

PIC12F615

1

64

4×10 бит

1

2-8бит,

 1-16бит, WDT

20

4 МГц,

8 МГц

BOR

ECCP

PIC12F617

2

128

4×10 бит

1

2-8бит,

 1-16бит, WDT

20

4 МГц

BOR

Selfwrite, ECCP

PIC12F629

1

128

64

1

1-8бит,

1-16бит, WDT

20

4 МГц

BOR

PIC12F635

1

128

64

1

1-8бит,

 1-16бит,  WDT

20

32кГц, 8МГц

BOR/ PLVD/ ULPV

KeeLOQ, nW

PIC12F675

1

128

64

4×10 бит

1

1-8бит,

 1-16бит, WDT

20

4 МГц

BOR

PIC12F683

2

256

128

4×10 бит

1

2-8бит,

 1-16бит, WDT

20

32кГц, 8МГц

BOR/ ULPV

CCP,nW, , Cap

Touch

PIC12F752

1

64

2

2-8бит,

1-16бит, WDT

20

8 МГц

BOR

Self-write, CCP, DAC, COG

PIC12LF1552

2

256

4×10 бит

1-8бит, WDT

20

32кГц, 16МГц

LPBOR

Selfwrite, SPI, I2C, MSSP, Cap

Touch

Улучшенная средняя серия, шина программ 14 бит, 49 инструкции

PIC12F1501

1

64

4×10 бит

1

2-8бит,

1-16бит,  EWDT

20

32кГц, 16МГц

LPBOR

Selfwrite, CWG, NCO, CLC, Cap

Touch, DAC, PWM

PIC12F1822

2

256

128

4×10 бит

1

2-8бит,

 1-16бит, EWDT

32

32кГц, 32МГц

BOR

Selfwrite,  XLP, SPI, I2C, MSSP, Cap

Touch

PIC12F1840

4

256

256

4×10 бит

1

2-8бит,

 1-16бит, EWDT

32

32кГц, 32МГц

BOR

Selfwrite,  XLP, SPI, I2C, MSSP, ECCP, ECCP, Cap

Touch

PIC12LF1840T (14 TSSOP with RF Transmitter)

4

256

256

4×10 бит

1

2-8бит,

1-16бит,  EWDT

32

32кГц, 32МГц

BOR

Selfwrite,  XLP, SPI, I2C, MSSP,

ECCP, Cap

Touch

Последние модели микроконтроллеров используют расширенное ядро средней серии, благодаря чему их характеристики и возможности увеличились. В частности повысилась частота  внутреннего тактового генератора до 32МГц, возрос объем памяти программ, добавились таймеры, модули ШИМ, а в некоторых моделях появились интерфейсы A/E/USART и MSSP(SPI/I2C) и сенсорный интерфейс mTouch. Увеличенное количество инструкций позволяет создавать более компактный программный код. В некоторых микроконтроллерах может отсутствовать отдельный модуль энергонезависимой памяти, а для сохранения необходимых данных используется Flash-память программ.

Основное направление применения PIC12 – интеллектуальные датчики и простые исполнительные устройства. Также эти процессоры широко используются в системах сигнализации и дистанционного управления.  Низкий уровень энергопотребления и широкий диапазон напряжений питания делает процессоры привлекательными для  использования в системах с батарейным питанием. Несколько конструкций с использованием PIC12 можно найти в рвзделе Проекты.

You have no rights to post comments

Источники

  • 1) https://radioskot.ru/publ/raznoe/shassi_dlja_kolesnogo_robota/18-1-0-1122
  • 2) Лекомцев Д.Г. Arduino. Подключение типовых внешних устройств. – Радио, 2020, №11, с. 51-54
  • 3) https://cxem.net/arduino/arduino70.php
  • 4) https://www.2150692.ru/faq/72-l298n-arduino
  • 5) https://zelectro.cc/Motor_shield_L298N_Arduino
  • 6) https://robot-kit.ru/article_info.php/articles_id/22/article/-font-color—993300—Draiver-motorov-na-L298N-podklyuchenie-k-Arduino—font-
  • 7) Холостов К. Робот-пылесос. Журнал Левша №3 2020 г. с.12-14
  • Холостов К. Умный дом. Журнал Левша №2 2013 г. с.12-14
  • 9) Лекомцев Д.Г. Arduino. Подключение типовых внешних устройств. – Радио, 2020, №11, с. 51-54
  • 10) https://robocraft.ru/blog/arduino/58.html
  • 11) https://arduino-diy.com/arduino-drayver-shagovogo-dvigatelya-i-dvigatelya-postoyannogo-toka-L298N

Форум

Обсудить статью ДРАЙВЕР НИЗКОВОЛЬТНЫХ ЭЛЕКТРО ДВИГАТЕЛЕЙ

Описание схемы

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

Резисторы R1, R 2 и R 3 ограничивают ток через светодиоды до безопасного значения (при использовании источника питания 12 В).

Катоды каждой цепочки светодиодов подключены к NPN транзисторам (BC547), которые используется для включения и выключения светодиодов. Эти транзисторы, в свою очередь, управляются PIC микроконтроллером. Управление транзисторами осуществляется посредством ШИМ. Кнопка S1 используется для выбора различных цветовых эффектов.

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

Готовые модули на L298

В интернете можно заказать готовый модуль на L298, правда в нем будет 6 входов для управления.

Рис. 6. Готовые модули на L298.

Я для своих нужд приобрел готовый модуль по типу как на рисунке слева. В нем присутствует микросхема L298 и небольшой стабилизатор для подачи +5В на логику микросхемы.

Для подключения данной платки важно четко уяснить одну особенность:

  • Если для питания двигателей используется напряжение более чем 12В то перемычку нужно убрать и подавать отдельно 5В на выделенный для этого коннектор
  • Если питание двигателей будет осуществляться от напряжения 5-12В то перемычку нужно утсановить и дополнительное питание 5В не понадобится.

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

Для того чтобы сэкономить два входа при подключении такого блока к Arduino или Raspberry Pi можно добавить часть схемы на CD4001, как на рисунке 5.

Нагрев резистора R1

Одной из проблем этого устройства является возможный нагрев резистора R1. Это естественно для предотвращения пускового тока, который может разрушить конденсатор C1

Когда устройство загорается на полную яркость, форма волны выглядит примерно так (обратите внимание на задержку с перехватом энергии, чтобы мы могли держать C3 заряженным)

Во время максимальной яркости конденсатор C1 в бестрансформаторном источнике питания сохраняет небольшое количество энергии. Поэтому, когда симистор замыкает накоротко C1 через R1 и стабилитрон ZD1, вся эта энергия рассеивается на резисторе R1. К счастью, этой энергии не так много, поэтому R1 даже не греется. Проблемы начинают возникать, когда энергия, накопленная в C1, является значительной, например, когда устройство затемняет лампочку:

Как видно из диаграммы, количество энергии в C1 — это то, что требует нашего внимания. Когда срабатывает симистор, все, что рассеивается на нашем бедном R1 должно хорошо отводиться. Большие значения сопротивления R1 будут рассеивать больше тепла, но при этом C1 будет работать в комфортных условиях, а более низкие значения сопротивления R1 означают меньше тепла, но C1 начнет гудеть как сумасшедший.

Решение проблемы — использовать C1 с меньшей емкостью (чтобы он не мог удерживать слишком много энергии, но ее было бы достаточно для питания нашего устройства) и использовать правильное значение сопротивления R1. Я определил, что использование резистора R1 с сопротивлением 220…680 Ом и конденсатора C1 емкостью 0,22 мкФ является оптимальным решением.

Подключение устройства:

Процесс определения калибровочной константы

  • Программируем PIC12F629 или PIC12F675 прошивкой, которая приведена в конце статьи.
  • Переключатель  SB2 оставляем незамкнутым для сети 50 Гц, и замыкаем если частота в электросети равна 60 Гц. Для успешно проведения работ, данный сигнал должен быть подан до начала калибровки.
  • Вставляем МК в панельку, переключатель  SB1 замыкаем, тем самым подаем питание 5 вольт.

Если все нормально светодиоды мигнут один раз.

Если опорный сигнал не будет обнаружен на выводе 5 МК, то загорится красный светодиод, а зеленый будет мигать до появления сигнала. Если это произойдет, то выключите питание и включите снова.

В процессе калибровки оба светодиода выключены. Калибровка по времени занимает не более 5 секунд.

Если калибровка не удалась — загорится красный светодиод.

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

Следующим этап – необходимо прочитать программатором EEPROM микроконтроллера.

Возможны три варианта данных по адресам 0x00 и 0x01 в EEPROM:

  1. Если в обоих адресах 0xFF – калибровка не удалась.
  2. Если в обоих адресах 0x00, необходимо убедиться, что опорная частота выбрана правильно.
  3. В адресе 0x00 содержится 0x34 и в адресе 0x01 содержит 0xNN, где NN и является наша новая константа калибровки.

Восстановление калибровочной константы PIC12f629 и PIC12f675

Собрав ниже приведенную схему и установив в панельку исследуемый микроконтроллер PIC12f629 или PIC12f675 можно с точностью до 1% определить КК.

Для калибровки внутреннего генератора микроконтроллера требуется заведомо известная опорная частота. К счастью, для этого мы не должны собирать отдельно стабильный генератор сигнала. Для этого можно воспользоваться переменным напряжением электросети частотой 50 Гц (в некоторых странах частота может быть 60 Гц). Данный сигнал можно снять со вторичной обмотки сетевого трансформатора.

Частота внутреннего генератора в микроконтроллере PIC12F629 и PIC12F675 может незначительно меняется от изменения температуры и напряжения питания. По мере увеличения напряжения питания, частота его немного уменьшается. Когда переключатель  SB1 не замкнут, напряжение питания 5 вольт, пройдя через два диода, которые создают падение напряжения около 1,6 вольта, поступает на вывод питания ПИКа (3,4 вольт). С замкнутыми контактами  SB1, микроконтроллер работает от 5 вольт. С помощью данной схемы появляется возможность для калибровки либо на 3,4 вольт, либо на 5 вольт питания.

Еще раз:

  •  SB1 разомкнут — калибровка происходит при 3,4 вольта.
  •  SB1 замкнут — калибровка происходит при 5 вольт.

Два диода создают падение напряжения, а резистор R1 создает достаточный ток для стабильности напряжения на диодах.

Опорный сигнал подается с вторичной обмотки трансформатора (от 6 до 12 вольт) через диод VD3, резистор R4 и транзистор VT1. Транзистор любой типа NPN.

Тестер транзисторов / ESR-метр / генератор
Многофункциональный прибор для проверки транзисторов, диодов, тиристоров…

Подробнее

Внимание. Переменное напряжение на транзистор следует подавать только через трансформатор

Ни в коем случае не напрямую от электросети!

Принципиальная схема и конструкция

В основе принципиальной схемы измерителя лежит микроконтроллер PIC12F629 от Microchip. Данный процессор выпускается в корпусах с 8 выводами и способен работать при напряжении питания от 2 до 5.5В. К его достоинством можно отнести встроенный генератор тактовой частоты и режим пониженного энергопотребления. Объем внутренней Flash-памяти программ — 1Кб позволяет легко реализовать опрос датчика и преобразование температуры.

Принципиальная схема термометра

Датчиком температуры выбран термометр с цифровым выходом MCP9800, опять же от Microchip.Эта микросхема интересна, прежде всего тем, что выпускается в компактном корпусе SOT-23. Использование  шины I2C делает ее подключение к микроконтроллеру элементарным. Опять же наличие спящего режима повышает привлекательность применения MCP9800 для систем с батарейным питанием.

Отображение показаний температуры производится на жидкокристаллическом индикаторе TIC3321. Он не требует подсветки, вследствие чего потребляет минимальный ток. Для передачи данных в индикатор необходимо подключить всего три линии.  Широкий температурный диапазон работы от -40 до +80ºС позволяет строить не только комнатные, но и уличные модели приборов.

Печатная плата Вид со стороны элементов

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

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

Данные об RGB последовательности, хранятся в файле «sequenceData.inc». Вы можете редактировать этот файл, чтобы добавлять, удалять или изменять имеющиеся там данные. Вы должны убедиться, что он соответствует описанному формату

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

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

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

В приведенном выше скриншоте обратите внимание на маркеры end_of_sequence, обведенные красным, и маркер «end_of_all_data», обведенные фиолетовым. У вас должна быть, по крайней мере, одна последовательность, максимум до 256 отдельных последовательностей

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

  1. Каждая строка данных начинается с директивы ассемблера dt (таблица данных).
  2. Все данные указываются с использованием десятичных значений.
  3. Каждое значение данных должно быть разделено запятой.
  4. Данные последовательности в каждой строке имеют пять полей:
    1. Fade Rate: скорость перехода цветов от текущих значений к новым. Каждый шаг происходит с интервалом 5 мс x Fade Rate.
      • Значение скорости затухания 0 указывает, что значения RGB будут обновлены немедленно без затухания.
      • Значение Fade Rate не должно быть установлено на 255, кроме как для обозначения конца последовательности. (см. ниже)
    2. Время удержания: после завершения затухания задержка перед переходом к следующей строке данных. Интервал 50 мс x время удержания
    3. Красное значение ШИМ. От 0 = 0% (светодиод не горит) до 255 = 100% (светодиод полностью включен)
    4. Зеленое значение ШИМ. 0 = 0% (светодиод не горит) до 255 = 100% (светодиод полностью включен)
    5. Значение синего ШИМ. От 0 = 0% (светодиод не горит) до 255 = 100% (светодиод полностью включен)
    6. Конец данных текущей последовательности обозначается значением поля Fade Rate «255». Когда приложение обнаруживает это, оно перезапускает последовательность с начала.
    7. В конце всех доступных данных последовательности оба поля Fade Rate и Hold Time должны быть установлены на «255».

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

Скачать файлы проекта (67,6 KiB, скачано: 260)

Простой термометр на микроконтроллере PIC12F629 с батарейным питанием.

Подробности
Опубликовано 20.07.2013 09:50

Общее количество конструкций термометров на микроконтроллерах посчитать сложно. Каждый автор стремиться привнести что-то свое в этот простой прибор. В итоге увеличивается функциональность, точность и область практического применения электронных температурных измерителей. Ниже описан еще один вариант термометра, главными особенностями которого стали предельная простота конструкции и автономное питание.

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

Схема драйвера на микросхеме L298

Ниже представлена простая схема для драйвера двигателей на микросхеме L298N. Управление осуществляется по четырем проводам (вместо шести у L298) благодаря использованию дополнительных инверторов в микросхеме CD4011.

Рис. 5. Принципиальная схема драйвера электродвигателей на микросхеме L298N.

Для питания логики обеих микросхем нужно стабилизированное напряжение +5В (P2), можно использовать интегральный стабилизатор, например L7805 или же питать логику от имеющейся линии питания +5В. Для подачи питающего напряжения на двигатели используется отдельная линия питания P1.

Выводы P4, P5 используются для установки полярности каждого из каналов, а выводы P6, P7 — разрешают подачу питания на каскады (ключи) внутреннего H-моста для каждого канала.

Микросхему CD4011 можно заменить на отечественную К176ЛА7. Диоды Шоттки можно поставить другого номинала, на 35В/4А и более. Если не планируется ограничивать ток обмоток двигателя(двигателей) то низкоомные ограничивающие резисторы R9-R10 можно исключить из схемы, заменив их на перемычки.

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

L298N, Arduino и шаговый двигатель

Для нашего примера мы используем шаговый двигатель Nema 17, у которого четыре кабеля для подключения.

Этот двигатель имеет 200 шагов на оборот и может работать с частотой вращения 60 об/мин. Если вы используете другой шаговый двигатель, уточните шаг его шаг и максимальную частоту вращения. Эти параметры понадобятся вам при программировании Arduino.

Еще один важный момент — определить какие именно кабели соответствуют A+, A-, B+ и B-. В нашем примере соответствующие цвета кабелей: красный, зеленый, желтый и голубой. Переходим к подключению.

Кабели A+, A-, B+ и B- от шагового двигателя подключаем к пинам 1, 2, 13 и 14 соответственно. Контакты на коннекторах 7 и 12 на контроллере L298N оставьте замкнутыми. После этого подключите источник питания к пину 4 (плюс) и 5 (минус) на контроллере.

Опять таки, если источник питания меньше 12 вольт, контакт, отмеченный 3 на рисунке модуля, можно оставить замкнутым. После этого, подключите пины модуля L298N IN1, IN2, IN3 и IN4 к соответствующим цифровым пинам D8, D9, D10 и D11 на Arduino.

Теперь подключаем GND пин с Arduino к пину 5 на контроллере, а 5V к 6 пину на модуле. С управлением шагового двигателя проблем быть не должно благодаря встроенной в Arduino IDE библиотеке Stepper Library.

Для проверки работоспособности просто загрузите скетч stepper_oneRevolution, который входит в состав библиотеки. Данный пример находится в меню

File -> Examples -> Stepper

в Arduino IDE.

Что такое H-мост

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

Почему такое название? — потому что схема включения двигателя и переключателей для коммутации напоминает латинскую букву H. Принципы работы H-моста показан нарисунке ниже.

Рис. 1. Как работает H-мост, принцип коммутации двигателя для вращения в разные стороны.

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

Важно заметить что НЕЛЬЗЯ допускать замыкания двух ключей на одной стороне H-моста, поскольку получится короткое замыкание, при проектировании схемы моста нужно заложить это правило в логику и таким образом реализовать защиту