Простая схема управления сервоприводом на микроконтроллере PIC12F675
Сервоприводы идеально подходят для приложений, отличных от тех, для которых они предназначены, например, в качестве привода ригеля замка двери.
В таком нестандартном применении сервопривода, сложность составляет в формировании управляющего импульса необходимой продолжительности. Данная схема избавит нас от такой проблемы.
Принципиальная схема контроллера сервопривода показана на следующем рисунке. Схема содержит всего несколько элементов: диод VD1 (1N4007) защищает схему от обратного подключения напряжения питания, стабилизатор DA1 (7805) обеспечивает напряжение 5 В для сервомотора, а через фильтр R4 и C1 подается питание на микроконтроллер DD1 (PIC12F675).
Потенциометры R6 и R7, подключенные к АЦП микроконтроллера, используются в качестве делителя напряжения для установки двух значений напряжения, которые изменяют продолжительность управляющих импульсов сервопривода. Переключатель SA1 предназначен для перевода сервомотора в одно из двух положений.
Работой контроллера сервопривода управляет программа, содержащаяся в памяти микроконтроллера. Таймер микроконтроллера TIMER1 — это 16-разрядный счетчик, который задействован для генерации прерываний каждые 20 мсек, таким образом, устанавливается стандартная частота управляющих импульсов. Прерывание TIMER1 происходит, когда счетчик переполняется.
Как известно, положение сервопривода определяется длиной импульса. Длительность каждого импульса определяется с помощью TIMER0. Его запуск синхронизируется с прерыванием от TIMER1. Переполнение TIMER0 генерирует второе прерывание, которое завершает импульс и останавливает счетчик.
Время переполнения TIMER0 и, следовательно, длительность импульса определяется начальным значением счетчика, которое пропорционально результату преобразования АЦП. Таким образом, изменение напряжения в диапазоне 0…5 В на входе АЦП приводит к изменению длительности импульса в диапазоне 0,5…2,5 мсек.
Кроме того, состояние SA1 определяет, какой потенциометр (R6 или R7) будет определять напряжение на входе АЦП. Благодаря этому сервопривод может управляться либо через SA1, либо в полном объеме путем изменения положения потенциометров.
Схема проверена в Proteus:
Устройство собрано на печатной плате, схема монтажа которой показана ниже. Следует обратить внимание на то, что R1…R5 — SMD резисторы, которые установлены на другой стороне платы.
Скачать рисунок печатной платы, прошивку, модель Proteus (38,1 Kb, скачано: 627)
www.joyta.ru
Простой таймер на микроконтроллере PIC12F675. Схема и описание
Этот простой таймер на микроконтроллере
Схема и конструкция таймера исходит из требований, которые я хотел реализовать в нем, а именно использовать одну кнопку, один потенциометр (220 кОм) и два светодиода.
Использование интегрального таймера NE555 не заслуживало моего внимания. Можно было бы использовать микросхему HCF4541B, но для этого мне бы пришлось для заданного интервала времени использовать относительно стабильный генератор с частотой 3-36 Гц.
В конце концов, я решил использовать микроконтроллер PIC12F675. Положение потенциометра сканируется внутренним АЦП микроконтроллера, а тактовый сигнал 32,768 кГц используется в качестве источника синхронизации. Для данной цели точности более чем достаточно, кроме того, я обошелся минимумом деталей.
Разрешение АЦП я снизил до 8 бит. Вся дорожка потенциометра условно поделена на 255 шагов по 80 секунд каждая. Минимальный интервал времени задал 30 минут (потенциометр в крайнем положении).
Отсюда максимальное время составляет 30 минут + 255 x 80 секунд = примерно 6 часов и 10 минут. Простое изменение пары констант в исходнике, позволяет установить произвольные временные интервалы.
Скачать прошивку (скачено: 132)
Управлять таймером просто — вращением ползунка потенциометра, устанавливаем необходимый интервал времени и нажимаем кнопку.
После нажатия на кнопку выполняется преобразование АЦП и начинает обратный отсчет. При повторном нажатии кнопки обратный отсчет останавливается и таймер сбрасывается.
www.tosi.cz
Реле поворотов на микроконтроллере PIC12F675 — Меандр — занимательная электроника
Каждый автолюбитель не однажды сталкивается с ситуацией, когда начинает «залипать» реле поворотов. Причем оно может «залипнуть» как при повороте направо, так и при повороте налево. В дороге эта неприятность иногда устраняется легким постукиванием по нему, но, как правило, ненадолго. Кардинально проблема решается заменой реле новым. В гараже у каждого автолюбителя имеется, пожалуй, несколько таких неисправных устройств, в корпусе одного из них и было изготовлено реле поворотов на микроконтроллере PIC12F675, описание которого приведено в этой статье.
Стандартное электромагнитное реле поворотов работает, как прерыватель тока, только при подключенной нагрузке. От сопротивления и тока нагрузки часто зависит работа реле-прерывателя поворотов. Если в своей машине в указателях поворотов вместо ламп накаливания вы решили установить светодиодные лампы, то частота их «моргания» заметно изменится. В Интернете некоторые
автолюбители советуют устанавливать на выходе реле параллельно светодиодным лампам сопротивление нагрузки — мощный проволочный резистор. Сопротивление и мощность этого резистора советуют самые разные. Заметим, что при этом теряется такое достоинство светодиодных по- воротников, как экономичность.
Многие любительские схемы реле поворотов на аналоговых компонентах, например на 555-ом таймере, также не выдерживают критики, так как постоянно генерируют импульсы. Нормальное реле поворотов, как было замечено выше, работает, как прерыватель, только когда к нему подключена нагрузка. Разработанное и изготовленное автором реле поворотов на PIC12F675 лишено этого недостатка и обеспечивает надежную работу поворотников как на светодиодах, так и на лампах накаливания. Его схема показана на рис.1.
Рис. 1
Основой этого реле является микроконтроллер (МК) DD1 PIC12F675 в корпусе DIP-8. Назначение выводов этого МК, с учетом «залитой» в него программы, приведено в таблице.
Обозначение | Назначение | |
1 | Vdd | Напряжение питания |
2 | СР5 | Выводы не используются (уровень лог. «1»)
|
3 | СР4 | |
4 | СР3 | |
5 | Vss | Корпус |
6 | CP1 | Вход от делителя напряжения с нагрузки |
7 | СР0 | Выход импульсов |
8 | CP2 | Корпус |
МК DD1 питается напряжением 4,7 В от параметрического стабилизатора на стабилитроне VD1 и балластном резисторе R1. В качестве силового ключа использован мощный p-канальный МДП-транзистор VT3 типа IRF4905, который управляют с выхода GPO (вывод 7) DD1 через усилитель на n-p-n транзисторе VT2 типа 2SC1815. Резистор R2 — ограничивающий в цепи базы VT2, a R3 — нагрузка этого транзистора. При включении правого или левого поворота к выходу реле подключается хотя бы одна лампа, нагружая его. DD1 фиксирует наличие нагрузки и подает на выход GPO (вывод 7) DD1 положительные импульсы (включает реле).
Для определения наличия подключенной нагрузки (ламп накаливания или светодиодных ламп) в схему введен делитель напряжения R4, R5, R6. С резистора R6 снимается напряжение на вход GP1 (вывод 6) DD1. При отсутствии нагрузки, когда VT3 заперт, на вывод 6 DD1 с делителя поступает уровень лог. «1», и МК поддерживает VT3 в запертом состоянии. Когда при запертом VT3 нагрузка подключена, она шунтирует последовательно соединенные резисторы R5 и R6. При этом на вывод 6 DD1 с делителя поступит уровень лог. «О», который программно обеспечит включение реле поворотов.
Когда конструкция была уже готова, было решено для контроля работы реле поворотов последовательно с резистором R3 включить красный светодиод (на схеме рис.1 он не показан).
Программа была создана в среде Flowcode [1] для МК DD1 PIC12F675, но ее несложно портировать и для PIC12F629. Код получился несложным, но объемным, как, пожалуй, все коды, создаваемые во Flowcode.
Устройство собрано на печатной плате размерами 22×23 мм с применением SMD-компонентов. Плата установлена в корпусе от стандартного реле поворотов (см. фото). Печатная плата реле поворотов, как, впрочем, и принципиальная схема, разрабатывались в программе DipTrace.
Скачать архив к проекту (файлы проекта реле поворотов в Proteus с исходниками и прошивкой, а также чертежи принципиальной схемы и печатной платы).
Ссылки
- http://flowcode.info/ — сайт русскоязычной поддержки программы Flowcode.
- https://www.driveru/b/2575388/- Реле поворотов на PIC12F675 в блоге Максима Батурина.
Автор: Максим Батурин, г. Мурманск
Возможно, вам это будет интересно:
meandr.org
Сообщества › Электронные Поделки › Блог › Контроллер электровентилятора охлаждения двигателя на pic12f675
После сборки и установки на свой автомобиль устройства плавного пуска электровентилятора системы охлаждения двигателя, было предложено собрать устройство плавного регулирования оборотов того же электровентилятора системы охлаждения относительно температуры двигателя. Контроллер вентилятора охлаждения радиатора. Для сбора данного устройства как раз нашлись все подходящие детальки. Решил собирать на макетной платке, так как не было времени и разрабатывать плату было честно лень. Провозившись часа три и проматерив всё и вся устройство было готово. Фотографировать не стал, так как это был, просто ужас, куча спутанных проводков и деталек. После включения устройство естественно не за работало. Схему перепаивал дважды, но с таким же печальным результатом. И, чтобы не тратить опять время, собрал схему по оригинальной версии модуля плавного регулирования оборотов автомобильного электровентилятора системы охлаждения двигателя Смерч-7 предложенную Турмалином-НН.
Схема контроллера
Схема довольно простая и не составит особого труда повторить её начинающим радиолюбителем.
А вот и моя плата, под дип.
Плату разрабатывал исключительно под свои компоненты. Как видите, транзистор посадил на довольно мощный радиатор SK-104, так как охлаждение много не бывает. Резисторы ставил столбиком, как на плате в старом телевизоре. Штепсиль использовал от платы стиральной машины.
Готовое устройство
Вид со стороны деталей
Сторона дорожек
Готовое устройство под установку
Плата получилось довольно симпатичной.
А, также набросал плату в смд варианте. При оставшимся том же радиаторе, применил вместо штепсися от стиралки, привычный винтовой клемник.
Плата смд варианта
Первое включение устройства собрал по варианту плавного пуска и остановки вентилятора. То есть контакт ХТ2 замкнул на +12В.
Первая схема – плавное управление вентилятором. Вторая схема – плавное включение и выключение вентилятора.
При подаче питания тестовый мотор на секунду включался и останавливался. А вот уже при замыкании контакта ХТ3 на землю наблюдается плавное раскручивание моторчика и при отключение контакта ХТ3 от земли мотор плавно останавливается. Устройство можно считать рабочим.
Теперь самое интересное. Как заставить работать устройство относительно температуры. Подключаем контакт ХТ2 к датчику ТМ-106, далее, доведя температуру двигателя до температуры примерно 85-90 добиваемся путём поворота движка переменного резистора R5 момента начала вращения электровентилятора. Дальше при росте температуры сопротивление датчика будет уменьшаться, и соответственно обороты электровентилятора будут увеличиваться. А при понижении температуры, наоборот уменьшаться вплоть до его остановки.
Тут основной смысл в том, что автомобиль должен быть оборудован датчиком резистивного типа. И ежели датчик у вас цифровой или по сопротивлению сильно разнится с датчиком ТМ-106, а его сопротивление должно быть порядка 240 Ом, то нужно будет устанавливать дополнительный датчик. И при номинальной температуре с датчика должно выходить в районе 6 вольт. Так как датчика ТМ-106 у меня нет и для проверки устройства на столе, собрал делитель напряжения с переменным резистором в 1 кОм. На выходе с делителя настроил напряжение около 6 вольт и поворотом резистора R5 добился момента начало вращения тестового электродвигателя. Имитируя работу термодатчика путём поворота движка резистора делителя напряжения, наблюдаем пук моторчика при уменьшении напряжения и его остановку при увеличении напряжения. Полагаю данный прибор можно установить практически на любой автомобиль. Если устройство не работает то следует по экспериментировать с подбором сопротивления резисторов R1 и R4. Данное устройство построено на микроконтроллере pic12f675 имеющий два порта АЦП. Полагаю прошивка схемы работает по принципу сравнения напряжения во внутреннем делителе напряжения со внешним.
Выкладываю свои материалы по сборке устройства.
Скачать схему, платы в DipTrace, фотографии и прошивки.
О том как всё это будет стоять на моём автомобиле будет отдельная тема.
Всем всего хорошего и удачи на дорогах.
www.drive2.ru
Ленивые поворотники на микроконтроллере pic12f675 — DRIVE2
В продолжение темы Реле поворотов на микроконтроллере pic12f675 Решил реализовать устройство комфортных поворотников, называемых мною ленивыми. В своём прошлом БЖ Удлинитель поворотников (собственная версия). подробно описывал процесс изготовления и установки подобного устройства. Это устройство до сих пор исправно работает в автомобиле. К тому времени я начал интересоваться программированием для МК. С начала я не знал каким процессорам отдать предпочтение. Попробовал поработать с PIC и так и на них пока остановился. Так как AVR и PIC почти братья решил попробовать устройство комфортных поворотников сделать в PIC варианте. Сначала порылся в интернете есть ли подобные проекты, оказалось их почти нет. Одна схема то без платы, другая без прошивки, третья вообще без какого либо описания только схема.
Мне понравился вариант без щёлкающих релюшек.
Нашёл эту схему.
Прошивка к ней была но какая то очень глючная, недописанная. Схема не работала, проверял в протеусе.
Вот и решил закончить проект.
Эта уже моя схема
А это моя плата.
Сделать реальное устройство не составило труда, благо уже есть опыт.
И вот готовое устройство.
Теперь самое сложное написать программу для МК. Сказу честно что код мне дался сложно, без помощи ребят с форума Русский Flowcode сам бы я до многого не додумался. Код полностью мой, за меня его ни кто не писал. Я часами вглядывался в кубики программы прогонял эмуляцию пошаговом режиме, даже чертил на на бумаге. В итоге родился это код. Да в моём коде ещё есть над чем работать но устройство работает как ни странно именно так как задумывалось. Что свидетельствует сделанное мною видео.
Прошивка стандартная, реле домыргивает 3 раза после отпускания переключателя, при включении заднего хода мигает аварийка. Добавить в новую версию кода хочу чтоб при движении задним ходом мигала аварийка постоянно, но при том чтобы можно было показывать и поворот. То есть 2 раза аварийка один раз поворот или наоборот. Предлагайте свои варианты алгоритма, а я уже по мере возможности попробую его написать.
Спасибо за помощь: mim, Taska, Eddy71
Скачать архив с материалами по проекту Ленивые поворотники на микроконтроллере pic12f675
www.drive2.ru
Встраиваемый вольтметр на PIC12F675 — RadioRadar
Измерительная техника
Главная Радиолюбителю Измерительная техника
В этом приборе автор использовал оригинальный метод управления четырёхразрядным семиэлементным светодиодным индикатором сигналами всего с четырёх выводов микроконтроллера. В программе микроконтроллера предусмотрен режим автоматической калибровки вольтметра.
Ставшее уже традиционным соединение светодиодного цифрового индикатора с микроконтроллером через преобразователь последовательного кода в параллельный 74HC595 требует использовать три вывода микроконтроллера для управления преобразователем кода и ещё по одному выводу для каждого разряда индикатора. Следовательно, для четырёхразрядного индикатора требуются семь выводов. Это не даёт возможности применять такие индикаторы с маловыводными микроконтроллерами, например, c PIC12F675, имеющим всего шесть выводов (не считая выводов питания).
Предлагаю совместить управление преобразователем кода и разрядами индикатора, используя всего четыре вывода микроконтроллера. При этом заложенный в программу алгоритм обеспечит отсутствие влияния индикатора на работу с преобразователем и паразитной засветки элементов индикатора.
Как обычно, информация выводится на индикатор разряд за разрядом по запросам прерывания от таймера микроконтроллера, следующим с периодом 2 мс. Процедура обработки каждого запроса состоит из пяти этапов. На первом этапе она устанавливает низкий уровень на выводе 10 микросхемы 74HC595, обнуляя этим её сдвиговый регистр. Этот этап — единственный, на котором через элементы индикатора течёт паразитный ток, но поскольку продолжительность его импульсов всего 1 мкс при периоде повторения 2000 мкс, паразитное свечение незаметно даже в темноте.
На втором этапе нарастающий перепад уровня на выводе 12 микросхемы 74HC595 переписывает нулевое содержимое сдвигового регистра в регистр хранения. Это полностью гасит индикатор.
На третьем этапе происходит загрузка информации в сдвиговый регистр микросхемы 74HC595 последовательным кодом, формируемым микроконтроллером на выводе 14 микросхемы. На её вывод 11 поступают тактовые импульсы.
На четвёртом этапе нарастающим перепадом уровня на выводе 12 микросхемы 74HC595 информация из её сдвигового регистра поступает в регистр хранения, причём благодаря высоким уровням на катодах разряды индикатораостаются погашенными.
На пятом этапе на общем катоде разряда, для которого предназначен выведенный на выходы микросхемы 74HC595 параллельный код, программа устанавливает низкий уровень, включая его элементы в соответствии с этим кодом. На этом обработка прерывания завершается, а установленное состояние индикатора сохраняется неизменным до следующего прерывания.
Для управления восьмиразрядным индикатором потребуются восемь выходов микроконтроллера. При этом сигналы с дополнительных четырёх выводов просто управляют уровнями на катодах разрядов. Стоит отметить, что в этом случае возможно применение индикаторов как с общими катодами, так и с общими анодами, подключая к выходам преобразователя кода соответственно элементы или разряды. По причинам, изложенным ниже, динамическую индикацию в первом случае предпочтительно организовать поэлементно, а во втором — поразрядно.
Теперь расскажем о вольтметре, в котором использован описанный принцип.
Основные технические характеристики
Измеряемое напряжение, В …………… 0…80
Дискретность измерения, В …….0,1
Погрешность……………..0,5% + ед. мл. разр.
Напряжение питания, В…………7…15
Ток потребления, мА, не более ……………………30
Схема вольтметра показана на рис. 1. В нём применена поэлементная динамическая индикация. В каждый момент времени высокий уровень установлен на анодах одной группы одноимённых элементов всех разрядов индикатора HG1. На общих катодных выводах разрядов, в которых эти элементы должны светиться, устанавливают низкий уровень, в противном случае — высокий. Обратите внимание, что одноимённые элементы могут быть включены одновременно во всех разрядах, но в каждом разряде в текущий момент времени включён только один элемент. Именно поэтому выбрано подключение анодов элементов к выходам микросхемы DD2, нагрузочная способность которых выше, чем выходов микроконтроллера.
Рис. 1. Схема вольтметра
При периоде прерываний 2 мс частота обновления изображения на индикаторе равна 64 Гц и его мигание на глаз незаметно. Выбранный способ динамической индикации также позволил вдвое уменьшить число резисторов (R4-R7), ограничивающих ток через светодиоды индикатора.
У микроконтроллера PIC12F675-I/P (DD1) остаются не занятыми в динамической индикации линии ввода-вывода GP0 и GP3. Первая использована как вход АЦП, на неё подают через делитель R1R2 измеряемое напряжение. На линии GP3 в отсутствие перемычки S1 благодаря резистору R3 установлен высокий логический уровень, что служит сигналом, переводящим вольтметр в режим калибровки. Если перемычка установлена, уровень на этом выводе низкий и вольтметр работает в обычном режиме.
При первом включении вольтметра с отсутствующей перемычкой S1 на индикатор HG1 будет выведено с мигающим крайним правым знаком. В этом состоянии на вход прибора следует подать как можно более близкое к 80 В напряжение, контролируя его образцовым вольтметром. При кратковременном соединении контактных площадок, предназначенных для перемычки S1, прибор вычислит и запомнит калибровочный коэффициент и будет использовать его в дальнейшем.
Однако 80 В — довольно большое напряжение, не исключены затруднения с его получением. В таком случае во время индикации значения образцового напряжения прибор нужно выключить и снова включить. На индикаторе появится , а при следующих выключениях и включениях — , , снова и далее по кругу. Калибровку следует произвести при максимальном доступном из этих значений напряжения. Чем больше образцовое напряжение, тем точнее калибровка. Если в момент калибровки входное напряжение слишком сильно отличается от образцового, коэффициент вычислен не будет, а на индикатор выведено
После калибровки выключите вольтметр и окончательно установите перемычку S1, иначе при следующем включении всё придётся повторить заново. Вольтметр может работать и без калибровки, если при его первом включении перемычка S1 уже установлена. В этом случае он использует коэффициент, записанный в программе, но погрешность может превысить 10 %. Об этом предупредит включённая точка в крайнем правом разряде индикатора.
Аналого-цифровое преобразование производится в «спящем» режиме микроконтроллера для уменьшения помех со стороны его работающих узлов. Из этого состояния он автоматически выходит по окончании преобразования.
Питается прибор напряжением 5 В, полученным с помощью интегрального стабилизатора напряжения DA1. Использовать вместо указанного на схеме стабилизатор 78L05 можно только в крайнем случае, так как стабильность его выходного напряжения на порядок хуже. Без ухудшения параметров можно применить стабилизатор LP2951. Стабилитрон VD1 на напряжение 5,6 В совместно с внутренним защитным диодом микроконтроллера предохраняют последний от повреждения при превышении измеряемым напряжением допустимого значения. Без ограничителя напряжение питания микроконтроллера в этой ситуации может критически увеличиться.
Устройство собрано на печатной плате размерами 40×36 мм из односторонне фольгированного стеклотекстолита толщиной 1,5 мм, показанной на рис. 2. Большинство резисторов и конденсаторов — типоразмера 0805 для поверхностного монтажа. Резистор R1 для надёжной работы при повышенном напряжении применён выводной мощностью 0,5 Вт. Конденсатор C1 можно установить и керамический, и выводной оксидный, для которого на плате предусмотрено посадочное место, обозначенное C1′. Индикатор FYQ-3641AHR-11 можно заменить другим из серии 3641А или трёхразрядным серии 3631А без переделки платы. Фотоснимок собранной платы прибора показан на рис. 3.
Рис. 2. Печатная плата
Рис. 3. Фотоснимок собранной платы прибора
Программа микроконтроллера написана на языке C в среде разработки MikroC.
Файл печатной платы в формате Sprint Layout 5.0 и программа микроконтроллера можно скачать здесь.
Автор: Б. Балаев, г. Нальчик, Кабардино-Балкария
Дата публикации: 15.04.2016
Мнения читателей
- basmach / 03.05.2016 — 23:05
под PIC12F683 было бы интересно попробовать
Вы можете оставить свой комментарий, мнение или вопрос по приведенному вышематериалу:
www.radioradar.net
Сообщества › Электронные Поделки › Блог › Реле поворотов на микроконтроллере pic12f675
Один знакомый попросил собрать ему реле поворотов без реле, то есть на транзисторном ключе. И как раз на шёл на нашем сайте подобную тему Электронное реле поворотов. Собрал схемку, но работой не был удовлетворён, так как реле работает постоянно генерируя импульсы. Нормальное реле поворотов работает как прерыватель тока только когда к нему подключена нагрузка. Тут я решил применить свои навыки программирования в среде Flowcode. За основу взял микроконтроллер pic12f675, можно сделать прошивку и под pic12f629. Код получился не сложным, не буду утверждать что он абсолютно правильный, но реле работает исправно. В цепь добавил контрольный светодиод. То есть когда питание на реле есть но нагрузка не подключена реле молчит. А при включении нагрузки светодиод начинает мигать показывая что реле работает. В качестве силового ключа применил мощный р-канальный МОП.
Вот собственно схема устройства.
Сразу сделал устройство в стандартном корпусе и применил смд компоненты.
Плата реле поворотов
Картинки готового устройства.
Скачать схему, плату, прошивку и исходник.
Видео работы моего реле
На видео кроме моего реле, собран стенд испытания нового проекта Комфортных поворотников на pic12f675/629. Код почти готов, а это уже другая тема.
www.drive2.ru