Регулятор хода на pic12f675 схема: PIC12F675 MCProgramming.ru – Простой регулятор на PIC12F629 для коллекторного мотора — Паркфлаер

Простой таймер на микроконтроллере PIC12F675. Схема и описание

Этот простой таймер на микроконтроллере может использоваться для переключения любой нагрузки в интервале времени от 30 минут до 6 часов. Первоначальная задача этого таймера была — управление вытяжкой в ванной комнате.

Схема и конструкция таймера исходит из требований, которые я хотел реализовать в нем, а именно использовать одну кнопку, один потенциометр (220 кОм) и два светодиода.

Использование интегрального таймера NE555 не заслуживало моего внимания. Можно было бы использовать микросхему HCF4541B, но для этого мне бы пришлось для заданного интервала времени использовать относительно стабильный генератор с частотой 3-36 Гц.

В конце концов, я решил использовать микроконтроллер PIC12F675. Положение потенциометра сканируется внутренним АЦП микроконтроллера, а тактовый сигнал 32,768 кГц используется в качестве источника синхронизации. Для данной цели точности более чем достаточно, кроме того, я обошелся минимумом деталей.

Разрешение АЦП я снизил до 8 бит. Вся дорожка потенциометра условно поделена на 255 шагов по 80 секунд каждая. Минимальный интервал времени задал 30 минут (потенциометр в крайнем положении).

Отсюда максимальное время составляет 30 минут + 255 x 80 секунд = примерно 6 часов и 10 минут. Простое изменение пары констант в исходнике, позволяет установить произвольные временные интервалы.

Скачать прошивку (554 bytes, скачано: 214)

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

После нажатия на кнопку выполняется преобразование АЦП и начинает обратный отсчет. При повторном нажатии кнопки обратный отсчет останавливается и таймер сбрасывается.

www.tosi.cz

Реле поворотов на микроконтроллере PIC12F675 — Меандр — занимательная электроника

Поделиться записью

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

PIC12F675, описание которого приведено в этой статье.

Стандартное электромагнитное реле поворотов работает, как прерыватель тока, только при под­ключенной нагрузке. От сопротивления и тока на­грузки часто зависит работа реле-прерывателя по­воротов. Если в своей машине в указателях поворотов вместо ламп накаливания вы решили ус­тановить светодиодные лампы, то частота их «мор­гания» заметно изменится. В Интернете некоторые

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

Многие любительские схемы реле поворотов на аналоговых компонен­тах, например на 555-ом таймере, также не выдерживают критики, так как постоянно генерируют импульсы. Нормальное реле поворотов, как бы­ло замечено выше, работает, как пре­рыватель, только когда к нему подклю­чена нагрузка. Разработанное и изготовленное автором реле поворо­тов на PIC12F675 лишено этого недо­статка и обеспечивает надежную рабо­ту поворотников как на светодиодах, так и на лампах накаливания. Его схе­ма показана на рис.1.

Рис. 1

Основой этого реле является мик­роконтроллер (МК) DD1 PIC12F675 в корпусе DIP-8. Назначение выводов этого МК, с учетом «залитой» в него программы, приведено в

таблице.

ОбозначениеНазначение
1VddНапряжение питания
2СР5 

Выводы не используются (уровень лог. «1»)

 

3СР4
4СР3
5VssКорпус
6CP1Вход от делителя напряжения с нагрузки
7СР0Выход импульсов
8CP2Корпус

МК 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 с ис­ходниками и прошивкой, а также чертежи принци­пиальной схемы и печатной платы).

Ссылки

  1. http://flowcode.info/ — сайт русскоязычной поддержки программы Flowcode.
  2. https://www.driveru/b/2575388/- Реле по­воротов на PIC12F675 в блоге Максима Батурина.

Автор: Максим Батурин, г. Мурманск


Регулятор оборотов вентилятора.

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

 

  

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

 

Именно этот эффект положен в основу принципа Широтно-Импульсной Модуляции (ШИМ), также встречается английское сокращение — PWM (Pulse-Width Modulation). Широтно-Импульсная Модуляция — это способ кодирования аналогового сигналa путём изменения ширины (длительности) прямоугольных импульсов несущей частоты. На Рис. 1 синим цветом представлены типичные графики ШИМ сигнала. Так как при ШИМ частота импульсов, а значит, и период (T), остаются неизменными, то при уменьшении ширины импульса (t) увеличивается пауза между импульсами (эпюра «Б» на Рис. 1.) и наоборот: при расширении импульса пауза сужается (эпюра «В» на Рис. 1.). Если сигнал ШИМ пропустить через фильтр низших частот, то уровень постоянного напряжения на выходе фильтра будет определяться скважностью импульсов ШИМ. Назначение фильтра — не пропускать несущую частоту ШИМ. Сам фильтр может состоять из простейшей интегрирующей RC цепи, или же может отсутствовать вовсе, например, если оконечная нагрузка имеет достаточную инерцию. Таким образом, имея в расположении лишь два логических уровня, «единицу» и «ноль», можно получить любое промежуточное значение аналогового сигнала.

 

Рис.1. Зависимость напряжения от скважности ШИМ.

 

    По принципу вышеизложенного и был разработан регулятор вентилятора. Необходимость в данном устройстве появилась, когда у ребёнка сгорела материнская плата на компьютере и пришлось поставить другую. С другим радиатором и кулером на процессор. Новый кулер был без регулятора оборотов.  Для обеспечения тишины работы компьютера пришлось со своего компа снять залмовский регулятор  и поставить ребёнку на компьютер, всё лучшее детям 🙂 . Теперь мой вентилятор начал шумно работать, а так как моя материнка без корпуса и просто прибита гвоздём к стенке за монитором (Рис.2.), то создавался дискомфорт при работе за компьютером. С этим надо было что то делать, что-нибудь простое и дешевое. В результате чего и родилась данная схема.

Рис.2. «Материнкой» внешний вид не испортишь.

 

    Схема (Рис. 3.)  состоит из стабилизатора на 5В, ключа, на транзисторе ВС547 (при необходимости можно поставить более мощный ключ), и самого процессора управления на PIC12F675 (Можно использовать и PIC12F629, с минимальными изменениями в программе). Управление оборотами производится кнопками S1 (убавить) и S2 (прибавить). При снятии напряжения регулятор запоминает последние выставленные обороты. Подключается регулятор к разъёму вентилятора на материнской плате. Провод оборотов вентилятора сквозной. Так как PIC12F675 имеет АЦП, то можно вместо кнопок установить переменный резистор, изначально я так и делал.

 

Рис. 3. Схема регулятора.

 

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

    Теперь немного о программе. ШИМ организован программно, так как аппаратного модуля ШИМ в данном контроллере нет. После инициализации контроллера программа проверяет в EEPROM значение оборотов, на основе которой производит вычисление ШИМ. Запись в EEPROM производится после нажатия любой из кнопок управления. Чтобы не терзать память, запись в неё производится с задержкой 2-3 сек., когда установится необходимое значение оборотов. 

Рис. 4. Внешний вид регулятора.

 

 

    Как известно контроллер PIC12F675 не имеет интегрированного отладочного модуля. В интернете эти модули иногда ошибочно называют «переходниками». Для отладки данного типа контроллера  необходим модуль AC162050.  Его конечно в наличии нет, а поотлаживать очень хочется. Я в таких случаях собираю схему на отладочной плате, беру контроллер (в данном случае PIC16F877A), который поддерживает внутрисхемную отладку и пишу программу под оба контроллера одновременно. Вернее сначала под отлаживаемый контроллер (PIC16F877A), а потом изменения для основного (PIC12F675). Для того, чтобы компилятор мог определить под какой контроллер производить компиляцию имеются директивы IFDEF и ENDIF

.

    Ниже приведён пример конфигурации для разных контроллеров в одной программе.  Компилятор сам выбирает нужный кусок, в зависимости от того, какой контроллер указан в MPLab (Configure -> Select Device).  Не трудно догадаться под какой контроллер какой кусок программы относится.  Строка ErrorLevel  -302,-205,-207  является общей, не зависимо какой контроллер установлен.

IFDEF __12F675

            LIST        p=12f675
            #Include      
            __config    01FC4h 
ENDIF

;****************************************
IFDEF       __16F877A
            LIST        p=16f877A
            #Include      
            __CONFIG    3731H 
TRISIO      equ         0x06
GPIO        equ         0x86
ENDIF
;****************************************
            ErrorLevel  -302,-205,-207


    Приведу ещё один пример инициализации контроллеров. Здесь всё, то же самое. Что находится между директив IFDEF и ENDIF , относится к определённому контроллеру, а всё остальное является общим кодом для обоих контроллеров.

;****************************************
START       movlw      .7              
            movwf      CMCON         
            bsf        STATUS,RP0  
;****************************************
IFDEF       __12F675
            call       3FFh         
            movwf      OSCCAL         
            movlw      b'00000110'
            movwf      WPU            
            clrf       ANSEL       
            clrf       IOC
ENDIF

;****************************************
IFDEF       __16F877A
            movlw      b'00001110'    
            movwf      ADCON1      
ENDIF
;****************************************
            movlw       b'00000000'
            movwf       OPTION_REG
            movlw       b'00000110' 
            movwf       TRISIO      
            bcf         STATUS,RP0 
            clrf        GPIO       
            clrf        Flag
            call        EERD        ; Чтение значения скорости из EEPROM.



    В итоге получается одна программа под два вида контроллеров (можно и больше). Только не забываем указать в MPLab (Configure -> Select Device), необходимый контроллер, под который надо её скомпилировать.

Файлы для скачивания:

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Список использованных ресурсов:

https://www.myrobot.ru                      

Регулятор скорости для коллекторного (щеточного) двигателя, с реверсом. Радиоуправление. — HelpSet.ru

Откопал в закромах жесткого диска схемку, регулятора скорости для коллекторного — щеточного (brushed) двигателя. speed_con_brushedДля чего, да просто у сына сломалась радиоуправляемая машинка, — пульт благополучно выбросили, а машинку оставили, на запчасти. Найдя её через несколько лет в шкафу — думаю, — а не заказать ли пульт,к ней, на ebay. Сказано — сделанно. Через короткое время, по нашим меркам не много, всего 3 недели, пришел пуль — FS-GT2. И не каким боком приёмник не пристроить к этой машинке. Нет, коробочка очень маленькая, спору нет, но сигнал из этой коробочки не просто сигнал, а Стандартный Серво Сигнал…Т.е. серво машинка работает на ура, хотя и её у меня сначало небыло, нашел у сынишки в Arduino, — рулём обеспечен, а вот скоростью… Так вот, двигатель к приемнику не подключишь, там… ну не важно.

Понадобился регулятор скорости который управляется стандартным серво сигналом, вот и полез в закрома.

Сразу паять на плате не стал, вдруг, думаю лажа. Решил собрать на макетке, благо в наборе с Arduino была макетная плата. Схемка простенькая но на pic контроллере 12f675.

В один вечер собрал простенький программатор для pic — схемка простенькая, но как оказалосось — надёжная и что самое важное рабочая. Схема программатора:

Программатор PIC микроконтроллеровПрограмматор PIC микроконтроллеров

Схема печатной платы:Programmator PIC-8

Программа для прошивки называется icprog106B, можно WinPIC 800 и  PonyProg 2000, также можно использовать прочие программы поддерживающие JDM.

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

Вот что в принуипе у вас должно выйти:prog_pic_finishЭтим программатором можно прошить многие процессора, но мне он нужен был для pic12f675.

Вот схемма того самого регулятора скорости коллекторного двигателя, с обратным ходом ESC, по словам автор (автора найти не смог т.к документ скопировал в Word из интернет), обеспечивает ~ 206 уровней мощности в прямом и обратном направлении, с автоматическим обнаружением нулевой после включения питания… Схема, оказывается представляетиз себя обычный H-мост ( H-bridge ), которым управляет микропроцессор pic12f675, в комплекте сосхемой шел исходник: скачать можно здесь — brushed_ESC_code (если вам понадобится перевести его для другого контроллера например pic 12f639 то в архиве есть исходники), второй файл — прошивка для 12f675 код в шестнадцатиричном виде ( hex ).

Схема печатной платы:

layers - speed control brushed motorlayers — speed control brushed motor

Фото того что получилось у меня:

speed_control_brushed_motor

Ну и на последок подсоединил мост от той самой радиоуправляемой машинки с тем самым коллекторным двигателем, подсоединил серву, приемник и батарейки. Всё работает как часы  — и в перёд и назад и руль в лево, в право. Осталось перенести с макетки на печаную плату. brushed motor ESC( Задний мост, серва, регулятор скорости с реверсом, приёник от FS-GT2, батарейки )

Результаты опубликую в следующей статье когда доделаю.

 

Регулируемый таймер на PIC12F675 — Мои статьи — Каталог статей

   Многие повторившие «Умные кнопки» периодически пишут мне с просьбами сделать кнопку на какое-то определённое время выдержки. Таких просьб уже больше десятка выполнил, а сегодня подумал: зачем людей «привязывать» к определённому фиксированному времени, лучше чтоб человек сам мог выбрать нужный интервал. Даже во время работы устройства.

   Схема таймера традиционно аскетична, практически без деталей. С помощью переменного (или если не нужны частые изменения временных интервалов то подстроечного) резистора задаётся время выдержки. От нуля до 30 минут (позже добавил версию от 0 до 3-х минут). Резистор лучше взять с линейной зависимостью сопротивления от угла поворота ручки (советские — группа «А» или импортные группа «В»). Тогда не нужно будет тратить много времени на калибровку положения ручки и разметку шкалы таймера в минутах будет проще сделать.

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

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

 

   Прошивку таймера можно бесплатно скачать в разделе «Каталог файлов».

 

Если при повторении этой конструкции у Вас возникли какие-то вопросы или идеи по улучшению её, напишите мне в онлайн форме свои соображения по этому поводу.

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



Отправить ответ

avatar
  Подписаться  
Уведомление о