12F629 схема включения. Автоматическое управление светом на микроконтроллере PIC12F629: схема и описание

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

Содержание

Принцип работы схемы автоматического управления светом на PIC12F629

Микроконтроллер PIC12F629 является центральным элементом схемы автоматического управления светом. Он выполняет следующие основные функции:

  • Анализирует сигналы от датчиков освещенности и движения
  • По заданному алгоритму включает и выключает освещение
  • Управляет яркостью света с помощью ШИМ
  • Реализует задержки включения и выключения
  • Позволяет настраивать параметры работы системы

Рассмотрим подробнее, как работает такая схема автоматического управления светом на PIC12F629:

  1. Датчик освещенности подключается к аналоговому входу микроконтроллера. PIC12F629 с помощью встроенного АЦП измеряет уровень освещенности.
  2. Датчик движения подает сигнал на цифровой вход контроллера при обнаружении движения в зоне.
  3. Микроконтроллер анализирует полученные данные и принимает решение о включении/выключении света по заданному алгоритму.
  4. Управление лампами осуществляется через силовые ключи, подключенные к выходам PIC12F629.
  5. С помощью ШИМ можно плавно регулировать яркость освещения.

Программирование PIC12F629 для управления освещением

Чтобы запрограммировать PIC12F629 для автоматического управления светом, необходимо выполнить следующие шаги:


  1. Настроить порты ввода/вывода микроконтроллера
  2. Инициализировать АЦП для измерения освещенности
  3. Настроить таймеры для задержек и ШИМ
  4. Написать основной алгоритм управления освещением
  5. Реализовать обработку сигналов от датчиков
  6. Добавить функции плавного включения/выключения

Базовый алгоритм работы системы автоматического освещения на PIC12F629 может выглядеть так:

«`c void main() { // Инициализация init_ports(); init_adc(); init_timers(); while(1) { // Измерение освещенности light_level = read_adc(); // Проверка датчика движения motion_detected = check_motion_sensor(); // Принятие решения о включении света if (light_level < LIGHT_THRESHOLD && motion_detected) { turn_light_on(); } else { turn_light_off(); } // Задержка delay_ms(100); } } ```

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

Преимущества использования PIC12F629 для управления светом

Применение микроконтроллера PIC12F629 в системах автоматического управления освещением дает ряд важных преимуществ:


  • Гибкость настройки алгоритмов работы
  • Возможность реализации сложной логики управления
  • Плавное управление яркостью с помощью ШИМ
  • Низкое энергопотребление микроконтроллера
  • Компактные размеры устройства управления
  • Простота изменения параметров работы
  • Надежность и стабильность работы системы

Благодаря этим преимуществам, микроконтроллерные системы на базе PIC12F629 позволяют создавать эффективные и экономичные решения для автоматизации освещения в различных помещениях и на улице.

Схема подключения PIC12F629 для управления освещением

Рассмотрим типовую схему подключения микроконтроллера PIC12F629 для реализации системы автоматического управления освещением:

«` PIC12F629
Датчик света Датчик движения Лампа «`

На этой схеме показаны основные элементы системы автоматического освещения на базе PIC12F629:

  • Микроконтроллер PIC12F629 в центре схемы
  • Датчик освещенности, подключенный к аналоговому входу
  • Датчик движения на цифровом входе
  • Лампа, управляемая через силовой ключ

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


Алгоритмы управления освещением на PIC12F629

Микроконтроллер PIC12F629 позволяет реализовать различные алгоритмы автоматического управления освещением. Рассмотрим несколько типовых вариантов:

1. Простое включение по датчику движения

Этот базовый алгоритм включает свет при обнаружении движения и выключает через заданное время:

«`c void main() { while(1) { if (motion_detected()) { turn_light_on(); delay_sec(60); // Задержка 60 секунд turn_light_off(); } } } «`

2. Управление с учетом освещенности

Более сложный алгоритм учитывает также уровень естественного освещения:

«`c void main() { while(1) { light_level = read_light_sensor(); if (light_level < LIGHT_THRESHOLD && motion_detected()) { turn_light_on(); delay_sec(60); if (light_level < LIGHT_THRESHOLD) { turn_light_off(); } } } } ```

3. Плавное изменение яркости

С помощью ШИМ можно реализовать плавное включение и выключение света:

«`c void main() { while(1) { if (motion_detected()) { for (int i=0; i<100; i++) { set_light_pwm(i); // Плавное включение delay_ms(20); } delay_sec(60); for (int i=100; i>0; i—) { set_light_pwm(i); // Плавное выключение delay_ms(20); } } } } «`

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


Оптимизация энергопотребления в системах на PIC12F629

Одним из важных преимуществ использования микроконтроллера PIC12F629 в системах автоматического освещения является возможность оптимизации энергопотребления. Рассмотрим несколько способов снижения энергопотребления:

  1. Использование режима сна микроконтроллера
  2. Оптимизация частоты опроса датчиков
  3. Применение энергоэффективных алгоритмов
  4. Выбор оптимальных компонентов схемы

Вот пример реализации энергосберегающего алгоритма на PIC12F629:

«`c void main() { init(); while(1) { // Проверка датчиков if (check_sensors()) { // Активный режим при необходимости handle_lighting(); } else { // Переход в режим сна enter_sleep_mode(); } } } void enter_sleep_mode() { // Настройка прерывания для выхода из сна setup_wakeup_interrupt(); // Отключение неиспользуемой периферии disable_unused_peripherals(); // Переход в режим сна sleep(); // Код, выполняемый после пробуждения handle_wakeup(); } «`

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


Заключение

Применение микроконтроллера PIC12F629 позволяет создавать эффективные и гибкие системы автоматического управления освещением. Основные преимущества такого подхода:

  • Широкие возможности по реализации различных алгоритмов работы
  • Низкое энергопотребление и возможность его оптимизации
  • Компактность и надежность устройства управления
  • Простота модификации и обновления прошивки

Благодаря этим факторам, системы на базе PIC12F629 находят широкое применение в сфере автоматизации освещения как в бытовых, так и в промышленных условиях.


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

Особенности схемы включения освещения с пульта дистанционного управления:

Цифровой мультиметр AN8009

Большой ЖК-дисплей с подсветкой, 9999 отсчетов, измерение TrueRMS…

  • схема построена на микроконтроллере PIC12F629 / PIC12F675
  • включение двух независимых источников света с помощью ПДУ;
  • есть возможность включать свет настенным выключателем;
  • возможность включать и выключать свет отдельными кнопками или же одной;
  • двух минутный таймер отключения освещения.

Обучение пульта дистанционного управления ИК-коды (процедура программирования)

После подключения устройства необходимо запрограммировать все 5 кнопок на пульте дистанционного управления. Вот как это сделать:

  1. Нажимаете и удерживайте настенный выключатель SW1 в течение 11 сек, для того чтобы устройство могло перейти в режим программирования. После 11 секунд, индикатор LD1 начнет быстро мигать и оба канала отключатся. Поэтому у вас есть 11 секунд, чтобы завершить последовательность программирования.
  2. Нажмите на первую кнопку на пульте дистанционного управления, которая будет включать первый канал (ON — A).
  3. Нажмите вторую кнопку на пульте дистанционного управления, которая будет использоваться для выключения первого канала (OFF — A).
  4. Нажмите на третью кнопку на пульте дистанционного управления, которая будет включать второй канал (ON — B).
  5. Нажмите четвертую кнопку на пульте дистанционного управления, которая будет использоваться для выключения второго канала (OFF — B).
  6. Наконец нажмите пятую кнопку, которая будет использоваться для активации / деактивации режима сна (SLEEP) 

Во время программирования пульта, после каждого нажатия кнопки, светодиод будет мигать, подтверждая что ИК-команда принята.

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

Вариант 1

Если ваш пульт имеет только две кнопки [X и Y], и если во время программирования вы нажмете: XXYYY, то это означает, что кнопка X будет использоваться для первого канала (включение и выключение света будет происходит от одной кнопки X), и кнопка Y будет использоваться для второго канала (включение и выключение света будет происходит от одной кнопки Y). Для данного режима работы необходимо установить перемычку JP1.

Вариант 2

Если вы выберете комбинацию XXXXY, это означает, что кнопка X будет использоваться для функции включения и выключения первого канала, и кнопка Y будет использоваться для включения / выключения режима сна, при этом второй канал не используется.

Примечание. Если во время программирования вы заметили, что светодиод мигает, даже если вы не нажимали никаких кнопок на ПДУ, то вероятно, это потому, что вы используете модуль приемника TSOP11xx вместо TSOP17xx. В таком случае вы не сможет запрограммировать устройство должным образом.

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

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

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

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

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

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

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

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

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

Таймер сна

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

скачать файлы к статье (269,1 KiB, скачано: 1 114)

Источник 

HILDA — электрическая дрель

Многофункциональный электрический инструмент способн…

Автоматическое управление светом на PIC12F629

Схемы устройств на микроконтроллерах

материалы в категории

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


Схема устройства управления фарами

Схема выполнена на недорогом микроконтроллере pic12f629. Сама схема показана на рисунке ниже

Алгоритм работы схемы управления фарами

1.Питание 12в 
2.При вкл зажигания после прохождения 6 импульсов с датчика скорости вкл ДХО 
3.При вкл габаритов все переходит в штатный режим 
4.При выкл габаритов переходим п.2 
5.При остановке (например в пробке) ДХО выключится через 3 мин при начале движения п.2 
6.При остановке и выключении зажигания, ДХО горит ещё 20 секунд и выключается.

Устройство работает следущим образом

1. Когда выключено зажигание, светодиод HL1 моргает с частотой 1раз в секунду (1Hz), сигнализируя о том ,что устройство находится в дежурном режиме (режим ожидания).

2. При включении зажигания светодиод HL1 начинает светится постоянно,микроконтроллер ждёт прихода импульсов с датчика скорости,и при начале движения автомобиля, через 1 секунду автоматически зажигаются ДХО и горят всё время движения до остановки.

3. Во время остановки, включается режим выдержки времени выключения ДХО (3 минуты), об этом сигнализирует встроенный Бипер (2 коротких звуковых сигнала – это при включёном зажигание и остановки автомобиля), если в это время выключить замок зажигания (например при длительной стоянке), прозвучат 4 коротких звуковых сигнала, сигнализируя о том, что включился режим выдержки времени включения ДХО 20 секунд и затем они выключатся (режим вежливой подсветки), устройство переходит в дежурный режим. 

4. При включении Габаритных огней, устройство автоматически переходит в режим ожидания, ДХО выключаются (правила ПДД), всё работает в штатном режиме. 

5. Режим вежливой подсветки можно включить так: включить зажигание, при этом прозвучат 2 коротких сигнала и сразу его выключить, (прозвучат 4 звуковых сигнала) при этом устройство автоматически перейдёт в режим вежливой подсветки. Если требуется выключить ДХО не дожидаясь выдержки времени, следует включить и тут же выключить Габаритные огни. 

6. Светодиод HL2 сигнализирует о состоянии ДХО ( Светится – ДХО работают, выключен – ДХО не работают)


Применёное реле, на максимальный ток проходящий через контакты 10А, если Вы вдруг захотите применить это устройство для Автоматического включения БС, лучше установить дополнительное реле типа SLC – 12VDC – SL – C , максимальный ток контактов 30А, этого вполне достаточно для управления БС. Светодиоды HL1 и HL2 устанавиваются в удобном месте, например в приборной панели . Пишалка ( BUZZER ) так же устанавливается в удобном для водителя месте. На фотографии собраного устройства видно что светодиоды стоят на самой печатной плате, но это сделано было только для отладки схемы. Установка произвольная!

 

Внимание! При прошивке микроконтроллера сохраните калибровочную константу…, без неё работа устройства не возможна.

Во вложении- печатная плата и прошивка для микроконтроллера

Источник: http://meandr.org/

Вложения к странице
ФайлОписаниеРазмер файла:
avto_dho.rar 33 Кб

Автомобильные охранные системы на PIC12F629

Материал предоставлен журналом Радиолюбитель  

 

В продолжении темы автомобильных охранных систем на микроконтроллерах фирмы MICROCHIP [1], [2] предлагается еще две схемы автомобильных охранных систем на PIC12F629, модернизированных с целью повышения надежности работы как в неблагоприятных климатических условиях, так и в условиях взлома автомобиля, при попытках вывода из строя автомобильной охранной системы.

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

Рис.1. Принципиальная схема автомобильной охранной системы

    Автомобильная охранная система АОСМ выполнена на основе микроконтроллера PIC12F629 фирмы MICROCHIP с энергонезависимой памятью. Наличие энергонезависимой памяти позволяет сохранять текущее состояние АОСМ при нормальном или умышленном отключении питания и переходить в него при восстановлении питания. Изменения алгоритма работы АОС коснулись в основном режима ПОДГОТОВКА [1]. В новом варианте алгоритм работы АОСМ в этом режиме будет следующий:

    ПОДГОТОВКА — после высадки пассажиров и закрытия всех дверей, визуальной проверки состояния капота и багажника, водитель, сидя в кабине, включает потайной тумблер питания SA1 (рис. 1) блока АОСМ и, если питание системы АОСМ было выключено водителем в режиме СНЯТИЕ С ОХРАНЫ, то загорится и будет гореть непрерывно светодиод VD1 (рис. 1).

    Примечание: если питание системы АОСМ было отключено в режиме ОХРАНА, то при восстановлении питания система АОСМ немедленно перейдет в режим ОХРАНА.

    Если питание системы АОСМ было отключено в режиме ОХРАНА после взлома, то при восстановлении питания система АОСМ немедленно перейдет в режим ОХРАНА с блокировкой зажигания.

    Если питание блока АОСМ было отключено во время состояния ВЗЛОМ, то при подаче питания система АОСМ немедленно перейдет в режим ВЗЛОМ с соответствующей звуковой сигнализацией. И только после отработки этого режима и перехода в режим ОХРАНА возможен режим СНЯТИЕ С ОХРАНЫ.

    Таким образом, попытки умышленного вывода из строя системы АОСМ путем вскрытия капота и снятия проводов с клемм аккумулятора и последующего их подключения, будут сопровождаться звуковой сигнализацией при каждом подключении проводов к аккумулятору в режиме ВЗЛОМ.

    Последующий алгоритм работы модернизированной автомобильной охранной системы АОСМ совпадает с алгоритмом работы системы АОС [1].

    Изменение входных цепей приема сигналов от концевых датчиков вызвано необходимостью повышения надежности работы охранной системы в условиях повышенной влажности и в зимних условиях. При срабатывании одного из концевых выключателей, катод VD3 или VD4 (рис. 1) [1] замыкается на корпус. Напряжение на одном из входов PIC-контроллера уменьшается при этом с 4…5 В до 0,5…0,7 В за счет падения напряжения на диоде. В этом случае микроконтроллер будет работать в соответствии с алгоритмом работы, приведенным в [1].

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

    В итоге охранная система не будет становиться на охрану либо не будет реагировать на срабатывание каких-то выключателей. Для исключения подобных ситуаций и проведена доработка входных цепей охранной системы.

    Изменена и схема подключения светодиода на тот случай, если взломщику станут доступны провода подключения к светодиоду, и он попытается вывести из строя АОСМ путем подачи на провод, подключенный к катоду светодиода, напряжения величиной, например в 100 В. В этом случае будет выгорать резистор R12, но работоспособность автомобильной охранной системы не будет нарушена. Способ изготовления датчика удара, другие технические подробности приведены в статье [1].

    Схема на рис. 2 представляет собой один из вариантов технической реализации иммобилайзера — автомобильной охранной системы с двумя каналами блокировки работы двигателя.

Рис.2. Схема подключения

    Иммобилайзер блокирует пуск двигателя при включении зажигания. Постановка на охрану и снятие с охраны осуществляется бесконтактным способом с помощью брелка на ИК-лучах. Схема брелка и описание его работы приведены в [2]. Для передачи команд от брелка блоку иммобилайзера используется 32-разрядный код, индивидуальный для каждого образца автомобильной охранной системы, и фазоимпульсная модуляция инфракрасных лучей.

    Включатель SA1 размещается в труднодоступном месте и предназначен для аварийного отключения блока иммобилайзера при выходе его из строя. Сам блок вместе с фотоприемником и реле размещаются за приборной панелью. Фотоприемник прикрепляют изнутри к приборной панели любым способом, предварительно высверлив в месте крепления отверстие диаметром 1…3 мм для прохождения ИК-лучей. Хотя можно предварительно проверить работу иммобилайзера без сверления отверстия. Возможно, мощности излучения брелка хватит для преодоления препятствия в виде стенки приборной панели.

    Питание 12 В на блок иммобилайзера подается с электроцепи автомобиля, на которой появляется напряжения при включении зажигания. При выключении зажигания иммобилайзер обесточивается и не потребляет тока от аккумулятора.

    Алгоритм работы иммобилайзера следующий:

  1. ВЫКЛЮЧЕНО — питание блока выключено, и охранная система в этом режиме не влияет на электрооборудование автомобиля.
  2. ПОДГОТОВКА — при первоначальной подаче питания на блок иммобилайзера загорается и горит непрерывно светодиод VD1. Реле К1 и К2 при этом отключены. Иммобилайзер запоминает это текущее состояние системы в своей энергонезависимой памяти и при последующих отключениях и включениях питания возвращается в это состояние. В это же состояние иммобилайзер переходит и по команде с брелка при снятии с охраны.
  3. ПОСТАНОВКА НА ОХРАНУ — при включенном зажигании в состоянии ПОДГОТОВКА направить брелок на фотоприемник и нажать кнопку брелка один раз. Система переходит при этом в режим БЛОКИРОВКА.
  4. БЛОКИРОВКА — в этом режиме светодиод VD1 (рис. 2) мигает с частотой 2 Гц, включаются реле К1 и К2 и своими контактами К1.1 и К2.1 разрывают выбранные цепи блокировки. Иммобилайзер запоминает это текущее состояние системы в своей энергонезависимой памяти и, при последующих отключениях и включениях зажигания, возвращается в это состояние, блокируя работу двигателя.
  5. СНЯТИЕ С ОХРАНЫ — при включенном зажигании в режиме БЛОКИРОВКА направить брелок на фотоприемник и нажать кнопку брелка один раз. Иммобилайзер перейдет при этом в режим ПОДГОТОВКА.

    Во время работы в режиме БЛОКИРОВКА микроконтроллер постоянно проводит контроль наличия сигнала с фотодатчика. При пропадании сигнала с фотодатчика частота мигания светодиода уменьшается с 2 Гц до 0,5 Гц, но блокировка двигателя не снимается при выключении и включении зажигания. Для снятия блокировки двигателя необходимо устранить возникшую неисправность либо отключить питание иммобилайзера выключателем SA1 (рис. 2). При появлении сигнала с фотодатчика частота мигания светодиода возвращается к исходной частоте.

    При включении питания и переходе в режим ПОДГОТОВКА микроконтроллер также проводит контроль наличия сигнала с фотодатчика, и при его отсутствии светодиод начинает мигать еще реже с частотой 0,2 Гц, указывая на возникшую неисправность, но не блокируя работу двигателя. Необходимо и в этом случае оперативно устранить возникшую неисправность.

    Фотоприемник DA1 типа ILMS5360 можно заменить фотоприемниками SFH506-36, TFMS5360 и т.д. Выключатель SA1 может быть любого типа, желательно малогабаритный.

    Реле К1 и К2 — любые реле на 12 В с допустимым током через контакты 8…15 А и более, в зависимости от коммутируемой нагрузки.

    Остальные технические подробности работы дистанционного управления на ИК-лучах приведены в статье [2].

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

Источники

  1. «Простая автомобильная охранная система на PIC12C508A», — Радиолюбитель, 2002, №2.
  2. «Простая автомобильная охранная система на PIC12F629 с дистанционным управлением на ИК-лучах», — Радиолюбитель, 2003, №5.

Автор: Н. КУПРЕЕВ, г. Минск, Тел. 283-30-06, E-mail: [email protected]

Устройства на микроконтроллере PIC12F629 Сборник схем прошивок — УСТРОЙСТВА НА МК — radio-bes

Если у вас вдруг возникло желание приобщиться к великому таинству программирования микроконтроллеров или даже создать свою собственную так называемую «Embedded system», но:
  1. вы не знаете, с чего начать
  2. у вас нет паяльника, программатора, коробки с радиодеталями и умения все это совместить
  3. вам лень отрываться от кресла и компьютера

то эта статья точно для вас.

Ни для кого не секрет, что современное программное обеспечение очень облегчило нелегкую жизнь инженера. Имеются тысячи программ для автоматизированного проектирования электронных схем, для моделирования их работы, в том числе и для микроконтроллерных систем. Одна из таких САПР — Proteus VSM, разработнанная компанией Labcenter Electronics(требуйте бесплатную ознакомительную версию).

Итак, для изучения микроконтроллеров нам потребуются:

  1. желание
  2. компьютер с установленным Proteus
  3. свободное время


Для того, чтобы постичь все секреты микроконтроллера, начинать изучение лучше с прочтения документации (для микроконтроллеров PIC документацию можно скачать на сайте производителя ), а программировать начать не на С, Pascal или даже Basic, а на старом добром ассемблере, что позволит понять, как же эта железяка на самом деле работает.
Что можно в первую очередь отметить в микроконтроллере семейства PIC16 с точки зрения программиста:
  1. раздельные память программ (14 бит) и память данных (8 бит)
  2. всего 35 инструкций
  3. большинство инструкций (кроме инструкций перехода и проверки условий) выполняется за 1 машинный цикл (4 такта тактового генератора)
  4. один явно выраженный регистр общего назначения – аккумулятор
  5. обращение к любой ячейке оперативной памяти как к регистру (так называемые регистровые файлы)
  6. порты ввода-вывода
  7. наличие прерываний
  8. аппаратные таймеры

Создадим простое устройство на простом микроконтроллере PIC16F84A. Для этого в Proteus найдем этот микроконтроллер в библиотеке элементов, добавим в проект и разместим его на рабочем листе.

Далее создадим файл с исходным кодом и откроем его во встроенном редакторе.

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

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

LIST p=16F84a
include "P16F84A.INC"
;---------------------------------
CBLOCK 0x0C
W_TEMP ;0x0C
STATUS_TEMP ;0x0D
FLAGS ;0x0E
COUNTER ;0x0F
ENDC
;---------------------------------
TF EQU 0x00 ;Task flag
ORG 0x00
goto START
ORG 0x04
;---------------------------------
INT movwf W_TEMP ;save W
swapf STATUS, W
movwf STATUS_TEMP ;save STATUS
btfss INTCON, T0IF
goto ENDISR
bcf INTCON, T0IF ;clear flag
bsf FLAGS, TF
ENDISR swapf STATUS_TEMP, W
movwf STATUS ;recover STATUS
swapf W_TEMP, F
swapf W_TEMP, W ;recover W
retfie
;---------------------------------
START clrf PORTA
clrf PORTB
bsf STATUS, RP0 ;Bank1
clrf TRISB ;PortB Output
movlw b'11010111'
movwf OPTION_REG ;Set Option_REG
bcf STATUS, RP0 ;Bank0
clrf TMR0
bsf INTCON, T0IE ;Enable Timer0 interrupt
bsf INTCON, GIE ;Enable interrupts
movlw 0x3D
movwf COUNTER
;---------------------------------
MAIN btfss FLAGS, TF
goto MAIN ;If TF = 0
call OUTPUT
bcf FLAGS, TF ;Clear TF
goto MAIN
;---------------------------------
OUTPUT decfsz COUNTER, F
goto NOT0
movlw 0x3C
movwf COUNTER
NOT0 movf COUNTER, W
call TAB
movwf PORTB
return
;---------------------------------
TAB addwf PCL, F
nop
retlw b'00100001' ;1
retlw b'00000001' ;2
retlw b'00100001' ;3
retlw b'00000001' ;4
retlw b'00100001' ;5
retlw b'00000001' ;6
retlw b'00100001' ;7
retlw b'00000001' ;8
retlw b'00100001' ;9
retlw b'00000001' ;10
retlw b'00100001' ;11
retlw b'00100001' ;12
retlw b'00100001' ;13
retlw b'00100001' ;14
retlw b'00100001' ;15
retlw b'00100001' ;16
retlw b'00100001' ;17
retlw b'00100001' ;18
retlw b'00100001' ;19
retlw b'00100001' ;20
retlw b'00010010' ;21
retlw b'00010010' ;22
retlw b'00010010' ;23
retlw b'00010010' ;24
retlw b'00010010' ;25
retlw b'00010010' ;26
retlw b'00010010' ;27
retlw b'00010010' ;28
retlw b'00010010' ;29
retlw b'00010010' ;30
retlw b'00010010' ;31
retlw b'00010010' ;32
retlw b'00010010' ;33
retlw b'00010010' ;34
retlw b'00010010' ;35
retlw b'00010010' ;36
retlw b'00010010' ;37
retlw b'00010010' ;38
retlw b'00010010' ;39
retlw b'00010010' ;40
retlw b'00001100' ;41
retlw b'00001000' ;42
retlw b'00001100' ;43
retlw b'00001000' ;44
retlw b'00001100' ;45
retlw b'00001000' ;46
retlw b'00001100' ;47
retlw b'00001000' ;48
retlw b'00001100' ;49
retlw b'00001000' ;50
retlw b'00001100' ;51
retlw b'00001100' ;52
retlw b'00001100' ;53
retlw b'00001100' ;54
retlw b'00001100' ;55
retlw b'00001100' ;56
retlw b'00001100' ;57
retlw b'00001100' ;58
retlw b'00001100' ;59
retlw b'00001100' ;60
;---------------------------------
END

Данная программа при всей своей простоте содержит почти все элементы, присущие и более сложным программам.
Рассмотрим структуру подробнее.

Комментарием считается строка или ее часть начинающаяся с символа «;».

Строка «LIST p=16F84a» представляет собой директиву ассемблера, предназначенную для изменения параметров компиляции и определяет тип используемого микроконтроллера (16F84a).

Директива include «P16F84A.INC», как программисты уже наверное догадались, подключает к исходному файлу файл, определяющий параметры и набор регистров специального назначения для конкретного микроконтроллера.

С помощью директивы:
CBLOCK 0x0C
W_TEMP
STATUS_TEMP
FLAGS
COUNTER
ENDC

мы размещаем в памяти данных несколько констант, начиная с адреса 0x0С, так что обратившись, например, к FLAGS, мы получим доступ к ячейке оперативной памяти с адресом 0x0E. Эти константы понадобятся нам в дальнейшем.

Директива EQU в строке «TF EQU 0x00» определяет константу TF равную числу 0x00.

Директива ORG предназначена для размещения программы по определенным адресам в памяти данных.

Исторически сложилось и закрепилось в архитектуре микроконтроллеров PIC, что по адресу 0x0000 расположен вектор сброса, а по адресу 0x0004 – вектор прерывания (то есть при сбросе, который происходит при включении контроллера с помощью специальной схемы, выполнение программы начнется с адреса 0x0000, а при возникновении прерывания произойдет переход на адрес 0x0004).
Таким образом, по адресу 0x0000 мы располагаем команду безусловного перехода на начало основной программы «goto START», а по адресу 0x0004 у нас будет подпрограмма обработки прерываний (метка INT).
Часть программы, начинающаяся с метки START, предназначена для инициализации начальных параметров, и выполняется только один раз при старте микроконтроллера. Часть программы, начинающаяся с метки MAIN, организует бесконечный цикл выполнения программы с помощью команды безусловного перехода «goto MAIN».
Программа должна заканчиваться директивой END.

Инициализация

Команда «clrf» предназначена для обнуления содержимого регистра. Командами

clrf PORTA
clrf PORTB

мы обнулим содержимое регистров, связанных с портами ввода-вывода PortA и PortB. Это необходимо, поскольку при сбросе микроконтроллера они могут получить случайные значения.
Команда «bsf» предназначена для установки определенного бита в байте регистра. Таким образом при выполнении:

bsf STATUS, RP0

в регистре STATUS бит RP0 примет значение 1. Регистр STATUS кроме того, что содержит флаги результатов арифметических операций (ноль, возникновение переноса), также отвечает за выбор банка памяти при прямой адресации. Микроконтроллер PIC16F84A содержит 2 банка памяти (начинающихся с адресов 0x00 и 0x80), специальные регистры расположены как в первом, так и во втором банке. Установив бит RP0, мы сможем обращаться ко второму банку памяти.

Во втором банке памяти нас интересует регистр TRISB, определяющий, какие выводы порта PortB являются входами, а какие выходами. Установкой с помощью команды «clrf TRISB» всех битов регистра TRISB в 0, определяем все выводы PortB как выходы.

Команда «bcf» сбрасывает определенный бит в регистре, таким образом с помощью команды

bcf STATUS, RP0

мы опять можем обращаться к банку первому банку памяти.

Теперь необходимо изменить значение регистров:

  • OPTION_REG, с помощью которого можно сконфигурировать таймер Timer0
  • INTCON, определяющий, какие прерывания разрешены в системе.

Команда «movlw b’11010111’» загружает в аккумулятор W число, с помощью которого мы устанавливаем источник для тактирования таймера от внутреннего генератора, подключаем предделитель к таймеру а также устанавливаем коэффициент предделителя (подробности смотрите в документации). Командой «movwf OPTION_REG» мы отправляем число из аккумулятора в специальный регистр OPTION_REG.

Команда «clrf TMR0» сбрасывает значение таймера Timer0, далее его значение будет инкрементироваться с частотой равной частоте цикла микропроцессора, деленной на выбранный нами предделитель. При переполнении регистра TMR0 будет происходить соответствующее прерывание.

Для разрешения прерывания от таймера в специальном регистре INTCON необходимо установить бит T0IE, а для глобального разрешения прерываний, необходимо установить бит GIE, что и делают команды:

bsf INTCON, T0IE
bsf INTCON, GIE

Также на этапе инициализации устанавливается счетчик циклов для основной программы:

movlw 0x3D
movwf COUNTER

В результате выполнения этих двух инструкций в ячейку памяти, обозначенную как регистр COUNTER (адрес 0x0F) будет помещено число 0x3D.

На этом инициализация заканчивается и начинается основной цикл программы.

Основной цикл

В основном цикле проверяется состояние флага задания TF (бит 0x00) в регистре FLAGS (по адресу 0x0E). Если флаг установлен (значение 1) выполняется подпрограмма OUTPUT. после выполнения подпрограммы флаг задания сбрасывается (значение 0).

Проверка значения бита в регистре осуществляется с помощью команды «btfss FLAGS, TF». Команда тестирует бит в регистре, если бит установлен в «1», то следующая инструкция не выполняется, а следующие 2 цикла выполняется команда «nop» («нет операции»). Если бит имеет значение «0» то выполняется следующая по порядку инстукция.

Поскольку следующая инструкция является командой безусловного перехода на метку MAIN, то при сброшенном флаге задания TF продолжается бесконечный основной цикл программы. При установленном флаге задания выполняется команда вызова подпрограммы «call OUTPUT», таким образом текущее значение счетчика команд (PC – «Program counter») помещается в стек, и происходит переход на подпрограмму с меткой OUTPUT.

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

Подпрограмма обработки прерываний

При переполнении регистра таймера происходит переход на вектор прерывания по адресу 0x0004 и запрещаются все прерывания (автоматически сбрасывается бит GIE в регистре INTCON). Подпрограмма обработки прерывания прежде всего должна обеспечивать сохранение содержимого аккумулятора W и регистра STATUS при перед началом обработки прерывания, и восстанавливать значения W и STATUS по окончании обработки. Это необходимо для предотвращения их случайной модификации в подпрограмме обработки прерывания.

Содержимое аккумулятора просто помещается в заранее выделенную ячейку памяти командой «movwf W_TEMP».
Регистр STATUS может изменять свое значение при выполнении ряда инструкций, поэтому применяется маленькая хитрость. Содержимое регистра помещается в аккумулятор с перестановкой нибблов (полубайтов) командой «swapf STATUS, W», а оттуда помещается в заранее выделенную ячейку памяти командой «movwf STATUS_TEMP».

Восстановление содержимого W и STATUS в конце подпрограммы происходит в обратном порядке. Содержимое ячейки памяти, хранящей содержимое регистра STATUS помещается в аккумулятор с перестановкой нибблов командой «swapf STATUS_TEMP, W», и из аккумулятора переносится непосредственно в регистр STATUS командой «movwf STATUS». Для предотвращения случайной модификации регистра STATUS при помещении неизвестного заранее значения из временной ячейки памяти в аккумулятор, восстановление аккумулятора осуществляется двумя командами с перестановкой нибблов:

swapf W_TEMP, F
swapf W_TEMP, W

Такое применение команды «swapf» объясняется тем, что она не оказывает влияния на флаги в регистре STATUS.

Сам обработчик прерывания проверяет что вызвало прерывание (т.к. возможны несколько источников прерывания, если они будут разрешены) путем проверки соответствующих битов регистра INTCON. Поскольку у нас разрешено только одно прерывание, можно было бы не делать такой проверки, но тем не менее проверим бит T0IF (устанавливается при возникновении прерывания от таймера):

btfss INTCON, T0IF
goto ENDISR
bcf INTCON, T0IF
bsf FLAGS, TF

Если бит не установлен, то произойдет переход к инструкциям восстановления содержимого W и STATUS на метку ENDISR. Если бит установлен то мы его сбросим вручную командой «bcf INTCON, T0IF» и установим флаг задания командой «bsf FLAGS, TF». Далее выполнятся инструкции восстановления содержимого W и STATUS.
Выход из подпрограммы обработки прерываний происходит при выполнении инструкции «retfie». Содержимое счетчика команд восстанавливается из стека, а прерывания автоматически разрешаются путем установки бита GIE регистра INTCON в «1».

Подпрограмма OUTPUT

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

Состояния выходов в дискретные моменты времени, определяемые установкой флага задания TF, получим табличным методом, для этого в память программ поместим таблицу соответствующих значений. Табличная реализация различных вычислений в микроконтроллере характеризуется максимальным быстродействием, но при этом требует много места в памяти программ. Например, в нашем случае надо задать 60 значений, что требует 60 ячеек памяти.

Подпрограмма содержит инструкции:

OUTPUT decfsz COUNTER, F
goto NOT0
movlw 0x3C
movwf COUNTER
NOT0 movf COUNTER, W
call TAB
movwf PORTB
return

Инструкция «decfsz» предназначена для организации циклов. Она декрементирует содержимое регистра COUNTER, в случае если результат не равен нулю, выполняется следующая по порядку инструкция (переходим на метку NOT0), иначе в течение 2 циклов выполняется пустая инструкция «nop», а затем в регистр COUNTER помещается начальное значение 0x3C (заметьте, т.к. декремент регистра осуществляется до использования значения этого регистра в программе, при инициализации мы задали значение на 1 большее).

Значение регистра COUNTER помещается в аккумулятор W, после чего осуществляется чтение из таблицы путем вызова подпрограммы инструкцией «call TAB». При возврате из таблицы в W содержится необходимое нам значение состояния выходов. Это значение записывается в регистр PORTB, чем осуществляется вывод сигналов из микроконтроллера. Далее происходит возврат из подпрограммы командой «return».

Таблица значений

Таблица содержит несколько сервисных инструкций и, собственно, сами 60 требующихся нам значений:
TAB addwf PCL, F
nop
retlw b'00100001' ;1
retlw b'00000001' ;2
………
retlw b'00001100' ;60

Принцип чтения из таблицы в следующем. При вызове таблицы мы поместили в W значение – номер «ячейки» таблицы. В подпрограмме происходит сложение младшего байта счетчика команд PCL и значения из W инструкцией «addwf PCL, F». Таким образом в памяти программ произойдет переход к инструкции с адресом PCL+W. В диапазоне адресов, которые могут получиться в результате, находятся непосредственно «ячейки» таблицы в виде инструкций «retlw» (например «retlw b’00100001’»), которые вызывают возврат из подпрограммы с занесением своего аргумента в W.

Таким образом, в результате возврата из таблицы, мы имеем в W требуемое значение.

Инструкция «nop» применена для выравнивания значений в таблице, т.к. таблица не вызывается при W=0.
Следует отметить необходимость контроля содержимого аккумулятора W при вызове таблиц, чтобы не произошел переход за границы программы.

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

Программирование pic12f629 с помощью triton. Средства программирования PIC-контроллеров

Микроконтроллер PIC12F629, а так же PIC12F675 снабжены внутренним четырех мегагерцовым генератором, который позволяет проектировать различные радиоустройства, без применения внешнего кварца или RC-генератора. Это освобождает одну или две ножки микроконтроллера, и позволяет уменьшить размеры будущего устройства.

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

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

Восстановление калибровочной константы 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.

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

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

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

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

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

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

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

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

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

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

Модификация прошивки

Некоторые программаторы либо программное обеспечение по причине своей особенности не позволяют показать содержимое EEPROM. И получается, так что калибровка прошла успешно, загорелся зеленый светодиод, но по двум адресам в памяти находится значение 0xFF. В этом случае рекомендуется применить модифицированную прошивку, которая решает данную проблему.

(1,0 Mb, скачано: 2 675)

www.picprojects.org/projects/recal/recal.htm

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

Миниатюрные PIC контроллеры хороши для построения преобразователей интерфейсов последовательной передачи данных, для реализации функций «прием – обработка – передача данных» и несложных регуляторов систем автоматического управления.

Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.

Характеристики миниатюрного PIC контроллера PIC12F629
Интегрированная среда разработки MPLAB IDE
Подключение Matlab/Simulink к MPLAB
Подключение программатора PIC-KIT3

Характеристики миниатюрного PIC-контроллера

Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.

Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания .

Архитектура: RISC
Напряжение питания VDD: от 2,0В до 5,5В ( Потребление:
— — 20 мкА (тип) @ 32 кГц, 2,0В
— [email protected],0В
Рассеиваемая мощность: 0,8Вт
Многофункциональные каналы ввода/вывода: 6/5
Максимальный выходной ток портов GPIO: 125мА
Ток через программируемые внутренние подтягивающие резисторы портов: ≥50 (250) ≤400 мкА @ 5,0В
Разрядность контроллера: 8
Тактовая частота от внешнего генератора: 20 МГц
Длительность машинного цикла: 200 нс
Тактовая частота от внутреннего RC генератора: 4 МГц ±1%
Длительность машинного цикла: 1мкс
FLASH память программ: 1К
Число циклов стирание/запись: ≥1000
ОЗУ память данных: 64
EEPROM память данных: 128
Число циклов стирание/запись: ≥10K (-40оС ≤TA≤ +125 оС)
Аппаратные регистры специального назначения: 16
Список команд: 35 инструкций, все команды выполняются за один машинный цикл,
кроме команд перехода, выполняемых за 2 цикла
Аппаратный стек: 8 уровней
Таймер/счетчик ТМR0: 8-разрядный с предделителем
Таймер/счетчик ТМR1: 16-разрядный с предделителем

Дополнительные особенности:
Сброс по включению питания (POR)
Таймер сброса (PWRTтаймер ожидания запуска генератора (OST
Сброс по снижению напряжения питания (BOD)
Сторожевой таймер WDT
Мультиплексируемый вывод -MCLR
Система прерываний по изменению уровня сигнала на входах
Индивидуально программируемые для каждого входа подтягивающие резисторы
Программируемая защита входа
Режим пониженного энергопотребления SLEEP
Выбор режима работы тактового генератора
Внутрисхемное программирование ICSP с использованием двух выводов
Четыре пользовательские ID ячейки

Предельная рабочая температура для Е исполнения (расширенный диапазон) от -40оС до +125 оС;
Температура хранения от -65оС до +150 оС.

КМОП технология контроллера обеспечивает полностью статический режим работы, при котором остановка тактового генератора не приводит к потере логических состояний внутренних узлов.
Микроконтроллер PIC12F629 имеет 6-разрядный порт ввода/вывода GPIO. Один вывод GP3 порта GPIO работает только на вход, остальные выводы можно сконфигурировать для работы как на вход так и на выход. Каждый вывод GPIO имеет индивидуальный бит разрешения прерываний по изменению уровня сигнала на входах и бит включения внутреннего подтягивающего резистора.

Интегрированная среда разработки MPLAB IDE
MPLAB IDE — бесплатная интегрированная среда разработки ПО для микроконтроллеров PIC включает средства для создания, редактирования, отладки, трансляции и компоновки программ, записи машинного кода в микроконтроллеры через программаторы.

Бесплатные версии MPLAB (включая MPLAB 8.92) хранятся на сайте компании Microchip в разделе «DOWNLOAD ARCHIVE».

Создание проекта

Пример создания проекта программ PIC контроллера в среде MPLAB включает следующие шаги .

1. Вызов менеджера проекта.

2. Выбор типа PIC микроконтроллера.


3. Выбор компилятора, например, Microchip MPASM для ассемблера.


4. Выбор пути к каталогу проекта (клавиша Browse…) и ввод имени проекта.

5. Подключение файлов к проекту в окне Project Wizard → Step Four можно не выполнять. Это можно сделать позднее, внутри активного проекта. Клавиша Next открывает следующее окно.

6. Завершение создания проекта (клавиша Finish).

В результате создания проекта FirstPrMPLAB интерфейс MPLAB принимает вид, показанный на Рис. 1.


Рис. 1 . Интерфейс среды MPLAB v8.92 и шаблон проекта.

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

Создание программы в MPLAB можно выполнить в следующей последовательности.

1. Открыть редактор программ: меню → File → New. Изначально программе присвоено имя Untitled.

2. Набрать или скопировать программу, например, на ассемблере.


Рис. 2 . Пример простейшей программы (на ассемблере) вывода сигналов через порты контроллера GP0, GP1, GP2, GP4, GP5 на максимальной частоте.

Запись ‘1’ в разряде регистра TRISIO переводит соответствующий выходной буфер в 3-е состояние, в этом случае порт GP может работать только на вход. Установка нуля в TRISIO настраивает работу порта GP на выход.

Примечание. По спецификации PIC12F629 порт GP3 микроконтроллера работает только на вход (соответствующий бит регистра TRISIO не сбрасывается – всегда находится в ‘1’).

Регистры TRISIO и GPIO находятся в разных банках области памяти. Переключение банков выполняется 5-м битом регистра STATUS.

Любая программа на ассемблере начинается директивой org и заканчивается директивой end. Переход goto Metka обеспечивает циклическое выполнение программы.

В программе (Рис. 2) используются следующие обозначения.

Директива LIST — назначение типа контроллера
Директива __CONFIG — установка значений битов конфигурации контроллера
Директива equ — присвоение числового значения
Директива org 0 — начало выполнения программы с адреса 0
Команда bsf — устанавливает бит указанного регистра в 1
Команда bсf — сбрасывает бит указанного регистра в 0
Команда movlw — записывает константу в регистр W
Команда movwf — копирует содержимое регистра W в указанный регистр
Команда goto — обеспечивает переход без условия на строку с меткой
Директива end — конец программы

Установка требуемой конфигурации микроконтроллера
Конфигурация микроконтроллера PIC12F629 зависит от настроек слова конфигурации (2007h), которые можно задать в программе через директиву __CONFIG.

Непосредственно или через окно MPLAB: меню → Configure → Configuration Bits:

Где:

Бит 2-0 — FOSC2:FOSC0. Выбор тактового генератора
111 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как CLKOUT
110 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как ввод/вывод
101 — Внутренний RC генератор 4МГц. GP5 работает как ввод/вывод. GP4 — как CLKOUT
100 — Внутренний RC генератор 4МГц. GP5 и GP4 работают как ввод/вывод
011 — EC генератор. GP4 работает как ввод/вывод. GP5 — как CLKIN
010 — HC генератор. Резонатор подключается к GP4 и GP5
001 — XT генератор. Резонатор подключается к GP4 и GP5
000 — LP генератор. Резонатор подключается к GP4 и GP5

Бит 3 — WDTE: настройка сторожевого таймера (Watchdog Timer)
1 — WDTE включен
0 — WDTE выключен

Сторожевой таймер предохраняет микроконтроллер от зависания – перезапускает программу через определенный интервал времени если таймер не был сброшен. Период таймера устанавливается в регистре OPTION_REG. Обнуление сторожевого таймера вызывается командой CLRWDT.

Бит 4 — PWRTE: Разрешение работы таймера включения питания:
1 — PWRT выключен
0 — PWRT включен

Таймер задерживает микроконтроллер в состоянии сброса при подаче питания VDD.

Бит 5 — MCLR: Выбор режима работы вывода GP3/-MCLR
1 — работает как -MCLR
0 — работает как порт ввода-вывода GP3

Бит 6 — BODEN: Разрешение сброса по снижению напряжения питания (как правило 1 — разрешен сброс BOR
0 — запрещен сброс BOR автоматически включается таймер

При разрешении сброса BOR автоматически включается таймер PWRT

Бит 7 — .CP: Бит защиты памяти программ от чтения программатором
1 Защита выключена
0 Защита включена

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

Бит 8 — .CPD: Бит защиты EPROM памяти данных
1 Защита выключена
0 Защита включена

После выключения защиты вся информация будет стерта

Бит 11-9 — Не используются: Читается как ‘1’.

Бит 13-12 — BG1:BG0. Биты калибровки сброса по снижению питания
00 — нижний предел калибровки
11 — верхний предел калибровки


Добавление программы к проекту

Пример добавления программы к проекту показан на (Рис. 3).


Рис. 3 . Добавление программы FirstPrMPLAB.asm к проекту FirstPrMPLAB.mcp

Компиляция

Чтобы создать бинарный файл с расширением hex для прошивки микроконтроллера необходимо откомпилировать проект. Запуск компиляции выполняется командой меню → Project → Build All. Результаты компиляции можно увидеть в окне Output (Рис. 1). Если в программе нет ошибок, то компилятор выдаёт сообщение об успешной компиляции: BUILD SUCCEEDED, загрузочный HEX файл можно найти в рабочем каталоге:

Отладка программы

Отладку программы в среде MPLAB IDE можно выполнить при помощи аппаратного эмулятора MPLAB REAL ICE или программного симулятора MPLAB SIM. Запуск последнего выполняется как показано на Рис. 4.


Рис. 4 . Подключение к симулятору MPLAB SIM для отладки программы.

После запуска отладчика в окне Output (Рис. 1) появляется закладка MPLAB SIM, куда MPLAB выводит текущую информацию отладчика. Команды отладчика (Рис. 5) после запуска становятся активными.


Рис. 5 . Команды отладчика.

Команды отладчика:

Run — Непрерывное выполнение программы до точки останова (Breakpoint) если таковая установлена.
Halt — Остановка программы на текущем шаге выполнения.
Animate — Анимация непрерывного выполнения программы.
Step Into — Выполнение по шагам (вызовы Call выполняются за один шаг).
Step Over — Выполнение по шагам включая команды вызовов Call.
Reset — Начальная установка программы. Переход указателя на первую команду.
Breakpoints — Отображение списка точек останова. Обработка списка.

При выполнении программы по шагам текущий шаг выделяется стрелкой (Рис. 6). Непрерывное выполнение программы останавливается командой Halt или достижением программой точки останова. Точка останова устанавливается/снимается в строке программы двойным щелчком.
Пример программы на ассемблере, которая с максимальной скоростью меняет состояние портов контроллера показан на Рис. 6 (справа). Программа передаёт в регистр портов GPIO данные b’10101010’ и b’01010101’. Поскольку в регистре GPIO передачу данных в порты контроллера выполняют не все разряды, а только 0,1,2,4 и 5, то состояние регистра GPIO (Рис. 6, слева) отличается значениями: b’00100010’ и b’00010101’.


Рис. 6 . Состояние регистров специального назначения контроллера на момент выполнения программы (слева) и выполняемая по шагам программа (справа).

В процессе отладки можно наблюдать за состоянием регистров, переменных, памяти в соответствующих окнах, открываемых в разделе View основного меню. В процессе отладки можно вносить изменения в код программы, содержимое регистров, памяти, изменять значения переменных. После изменения кода необходимо перекомпилировать программу. Изменение содержимого регистров, памяти и значения переменных (окна раздела View: Special Function Register, File Register, EEPROM, Watch) не требует перекомпиляции.

Входные сигналы портов модели микроконтоллера можно задать в разделе Debugger → Stimulus. Устанавливаемые состояния сигналов портов привязываются к времени (тактам) отладки.

Иногда результаты выполнения программы в режиме отладки не соответствуют выполнению этой же программы в реальном контроллере, так, например, отладчик программы (Рис. 6) без инструкций movlw 0x07 и movwf cmcon показывает, что выходы GP0 и GP1 регистра GPIO не изменяются — находятся в нулевом состоянии, содержимое регистра GPIO попеременно равно 0x14 и 0х20. Однако, контроллер, выполняющий программу без указанных инструкций, показывает на осциллографе циклическую работу всех пяти выходов: 0x15 и 0х22, включая GP0 и GP1 (см. Рис. 7).

Осциллограммы контроллера, выполняющего циклы программы Рис. 6 (Metka… goto Metka) показаны на Рис. 7.


Рис. 7 . Осциллограммы выхода GP0 (слева) и GP1 (справа) микроконтроллера PIC12F629, работающего от внутреннего 4МГц RC генератора. Программа (Рис. 6) формирует сигналы максимальной частоты на всех выходах контроллера. За период сигналов 5.3 мкс выполняется 5 команд (6 машинных циклов), амплитуда GP0 сигнала на осциллограмме равна 4.6В, измеренное программатором питание контроллера 4.75В.

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

Для записи программы в микроконтроллер (прошивки контроллера) необходимо микроконтроллер подключить к интегрированной среде MPLAB IDE через программатор. Организация подключения показана ниже в разделе «Подключение программатора PIC-KIT3».

Примечание. В контроллер PIC12F629 записана заводская калибровочная константа настройки частоты внутреннего тактового генератора. При необходимости её можно прочитать и восстановить средствами MPLAB с использованием программатора.

Команды для работы с программатором и изменения его настроек находятся в меню MPLAB Programmer. Тип программатора в MPLAB выбирается в разделе: меню → Programmer → Select Programmer.


Рис. 8 . Выбор программатора для подключения к среде MPLAB.

Прошивка микроконтроллера через программатор запускается командой: меню → Programmer → Program. Сообщение об успешной прошивке показано на Рис. 9.


Рис. 9 . Запуск прошивки микроконтроллера и вид сообщения об успешной прошивке.

Примечание: Во время прошивки микроконтроллера у программатора PIC-KIT3 мигает желтый светодиод.

Подключение MATLAB/SIMULINK к MPLAB

В системе моделирования динамических систем Simulink (приложение к Matlab) на языке графического программирования можно разрабатывать программы для семейства PIC контроллеров имеющих АЦП/ЦАП, счетчики, таймеры, ШИМ, DMA, интерфейсы UART, SPI, CAN, I2C и др.

Пример Simulink программы PIC контроллера показан на Рис. 10.


Рис. 10 . Пример программы на языке графического программирования для PIC контроллера выполненной в среде моделирования динамических систем Simulink.

Взаимодействие средств разработки и компиляции программ для PIC контроллеров в Simulink показано на Рис. 11 .


Рис. 11 . Структура средств построения адекватной модели PIC контроллера на языке графического программирования.

Для построения среды разработки необходимы следующие компоненты Matlab:

Simulink
Real-Time Workshop Embedded Coder
Real-Time Workshop

И Cи компилятор компании Microchip:

C30 для контроллеров PIC24, dsPIC30 и PIC33
или C32 для контроллеров серии PIC32

Установка компонентов Matlab

На сайте имеются Simulink библиотеки (dsPIC Toolbox) для PIC контроллеров и версий Matlab c R2006a по R2012a:

Для скачивания библиотеки необходимо зарегистрироваться. Программы поддерживают работу 100 микроконтроллеров из серий PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Бесплатные версии работают с Simulink моделями PIC контроллеров имеющих до 7 портов ввода-вывода.

Для установки dsPIC Toolbox — библиотеки блоков PIC контроллеров для Matlab/Simulink необходимо :

Скачать dsPIC Toolbox для требуемой версии Matlab.
Распаковать zip файл в папке, в которой будут установлены Simulink блоки.
Запустить Matlab.
Настроить текущий каталог Matlab на папку с распакованным файлом.
Открыть и запустить файл install_dsPIC_R2012a.m, например, кнопкой меню или клавишей клавиатуры.

Библиотеки dsPIC и примеры Simulink моделей устанавливаются в текущую папку Matlab (Рис. 12). Установленные блоки для моделирования PIC контроллеров доступны в разделе Embedded Target for Microchip dsPIC библиотеки Simulink (Рис. 13).


Рис. 12 . Содержимое текущего каталога после выполнения install_dsPIC_R2012a.m.


Рис. 13 . Блоки, установленной библиотеки «Embedded Target for Microchip dsPIC».

Для совместной компиляции Simulink модели средствами Matlab и MPLAB необходимо прописать в переменной окружения path Matlab с высшим приоритетом путь к каталогу MPLAB с файлами MplabOpenModel.m, MplabGetBuildinfo.m и getHardwareConfigs.m:

>>

Установка Си компилятора MPLAB

Компиляторы MPLAB находятся на сайте Microchip (Download Archive → MPLAB C Compiler for PIC24 and dsPIC DSCs). Для установки демонстрационной версии компилятора С30 необходимо его скачать по ссылке PIC24/dsPIC v3.25 (Рис. 14) и запустить принятый файл mplabc30-v3.25-comboUpgrade.exe.


Рис. 14 . Версии Си компилятора (слева) и режимы его установки (справа).

Примечание. Работа выполнена с версией v3.25 компилятора С30 для PIC24/dsPIC. Проверка показала, что следующая версия v3.30 не поддерживает совместную компиляцию моделей Matlab R2012a (dsPIC Toolbox) без ошибок.

Установочный exe файл создаёт в разделе c:\Program Files (x86)\Microchip\ новый каталог mplabc30 с файлами:


Рис. 15 . Каталоги компилятора C30 MPLAB.

Последовательность Simulink программирования для PIC контроллеров

1. Создайте рабочий каталог и скопируйте в него *.mdl примеры из раздела example (см. Рис. 12).
2. Загрузите Matlab. Настройте его на рабочий каталог.
3. Включите в переменную окружения path Matlab с высшим приоритетом путь к MPLAB — каталогу c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:

>> path(«c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\»,path)
Примечание: Использование команды >>path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:

>>rmpath(» c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\»)
4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.

Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.


Рис. 16 . Выбор типа контроллера в блоке Master модели.

5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters . В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.


Рис. 17 . Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation».

6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.


Рис. 18 . Запуск компилятора Simulink модели.

В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).


Рис. 19 . Результаты компиляции модели.

Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:


Управление компиляцией Simulink моделей из среды MPLAB

Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.

1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
2. Запустите MPLAB.
3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.


4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель.

5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
В результате создаётся проект MPLAB:

Со скриптами модели на языке Си.

6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).


Рис. 20 . Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.

Подключение программатора PIC-KIT3

Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).


Рис. 21 . Перечень программаторов для прошивки микроконтроллера.

Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).


Рис. 22 . Информация об установленном драйвере программатора PIC-KIT3.

Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.


Рис. 23 . Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3.

Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К .


Рис. 24 . Выводы PGM PIC контроллеров.

Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:

Желтый — Красный — Состояние программатора
Вкл — Выкл — Подключен к USB линии
Вкл — Вкл — Взаимодействие с MPLAB
Мигает — Включен постоянно — Прошивка микроконтроллера

Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания.

При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.

Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use


Рис. 25 . Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8.92.

Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.


Рис. 26 . Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92.

Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.


Рис. 27 . Сообщение MPLAB об успешном подключении микроконтроллера к программатору.

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


Рис. 28 . Подключение микроконтроллера в составе электронного устройства к программатору.

Заключение

Малоразрядные PIC-контроллеры имеют широкий диапазон питания, низкое потребление и малые габариты. Они программируются на языках низкого уровня. Разработка программ на языке графического программирования Simulink с использованием многочисленных библиотек значительно сокращает время разработки и отладки в сравнении с программированием на уровне ассемблера. Разработанные для PIC-контроллеров Simulink структуры можно использовать и для компьютерного моделирования динамических систем с участием контроллеров. Однако, из-за избыточности кода такой подход применим только для семейств PIC контроллеров с достаточными ресурсами.
Simulink Добавить метки Многие радиолюбители начинающие по началу своего дела боятся начинать работу с микроконтроллером.Связано это со многим,и основной часто страх как правильно программировать и чем программировать.В данной статье приведена схема простого программатора для микроконтроллера PIC .Смотрим,собираем,спрашиваем на официальном форуме и оставляем отзывы если у вас получилось

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

Программатор ExtraCheap

В интернете много различных схем программаторов .Но большинство из них очень сложные,и редко когда можно увидеть фотографии,что бы подтверждало его работоспособность.

Но нужный программатор многим запросам был найден.

Для передачи данных используется COM порт. Схема питается от 5 вольт которые можно взять от портов USB или PS/2.

Еще одна фотография этого устройства:

Для работы с программатором рекомендуется использовать программу IC-Prog

Настройка IC-Prog

Качаем с офф сайта последнюю версию программы IC-Prog Software, NT/2000 driver, Helpfile in Russian language и распаковываем их в одну и туже директорию.

Теперь необходимо установить драйвер программатора, для чего запускаем icprog.exe (если появятся сообщения об ошибках, то просто игнорируем их) и выбираем пункт «Options» в меню «Settings». Открываем вкладку «Programming» и устанавливаем галочку напротив пункта «Verify during programming». Далее в разделе «Misc» нужно активировать опцию «Enable NT/2000/XP Driver», сохранить настройки нажав на кнопку «ОК» и перезапустить программу.

Сменить язык интерфейса можно в разделе «Language». Для того, чтобы указать программе тип нашего программатора, нажимаем F3, в открывшемся окне выбираем «JDM Programmer» и указываем COM порт, к которому подключено устройство.

На этом предварительную настройку программы можно считать законченной.

Прошивка МК

IC-Prog позволяет работать с большим количеством МК, но нам нужен только PIC12F629 — выбираем его в выпадающем списке, расположенным в правом верхнем углу программы.
Для чтения прошивки из МК выполняем команду «Читать микросхему» (значок с зеленой стрелочкой или F8).

По окончанию процесса чтения, в окне программного кода отобразится прошивка МК в шестнадцатеричном виде. Следует обратить внимание на последнюю ячейку памяти по адресу 03F8 — там хранится значение константы OSCCAL , которое устанавливает производитель при калибровке чипа. У каждого МК оно свое, так что неплохо было бы его куда нибудь переписать (я, к примеру, царапаю его иголкой на обратной стороне PIC»а) для облегчения процесса восстановления (хотя это не обязательно), если во время прошивки эта константа была случайно перезаписана.


Для того, чтобы «залить» прошивку из *.hex файла в МК, ее необходимо открыть в программе («Файл»->«Открыть Файл…» или Ctrl+O) и выполнить команду «Программировать микросхему» (значок с желтой молнией или F5). Отвечаем «Yes» на первый вопрос.


А вот на следующий вопрос необходимо ответить «Нет», иначе перезапишется константа OSCCAL, о которой говорилось ранее.


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

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

Микроконтроллеры PIC12F629 и PIC12F675 имеют внутренний генератор 4 МГц, что позволяет работать им без внешнего кварцевого резонатора или RC-цепи. Это освобождает один или два контакта для использования их в качестве ввода/вывода и позволяет устройству иметь в конструкции минимальное количество компонентов.

Внутренний генератор должен быть откалиброван, это достигается путем подбора на заводе значения калибровки и записи его в регистр OSCCAL при инициализации устройства перед запуском рабочей программы. Значение калибровки находится в последнем адресе памяти программ — 0x3FF.

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

Для этого создана эта программа и схема. Загрузите в микроконтроллер код, который находится в архиве и поместите его в устройство описанное ниже, и в течение нескольких секунд Вы получите новое значение калибровки для работы внутреннего генератора частотой 4 МГц и точностью 1%.

Как это работает

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

Частота внутреннего генератора микроконтроллера зависит от изменения температуры и напряжения питания. При увеличении напряжение питания частота немного уменьшается. Когда выключатель S1 разомкнут напряжение 5 Вольт подается через два диода, в итоге около 3,4 Вольт поступает на контроллер. Если S1 замкнут, то контроллер работает от 5 Вольт. Microchip калибрует партии при 3,5 Вольт и температуре 25°C. В этой схеме есть возможность калибровки при напряжении 3,4 Вольт и 5 Вольт, но желательно откалибровать контроллер с разомкнутым S1 (3,4 Вольт).

S1 разомкнут — калибровка происходит при 3,4 Вольт

S1 замкнут — калибровка происходит при 5 Вольт

S1 не является выключателем питания

Два 1N4148 диода обеспечивают падение напряжения, резистор 150R обеспечивает стабильное напряжение на диодах. 100nF фильтрующий конденсатор должен быть размещен как можно ближе к выводам контроллера(1 и 8).

Сигнал опорной частоты подается в контроллер с использованием транзистора BC548, резистора 10K, диода 1N4148 и трансформатора. Можно использовать любой NPN транзистор, характеристики его не являются критическими. Трансформатор также можно использовать любой, но с выходным напряжением в пределах от 6 до 12 Вольт переменного тока.

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

ПРИ РАБОТЕ С ВЫСОКИМ НАПРЯЖЕНИЕМ СОБЛЮДАЙТЕ ТЕХНИКУ БЕЗОПАСНОСТИ!

Код для калибровки

Далее необходимо запрограммировать микроконтроллер кодом, который находится в архиве под именем «recal1.hex» . Код будет работать и с PIC12F629 и 12F675. Загрузите этот код перед началом операции калибровки.

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

Запуск калибровки

1. Установить перемычку J1, если частота электросети в вашем районе равна 60 Гц и снять прермычку если частота 50 Гц. Убедитесь в правильности установки перемычки J1, т.к. это влияет на правильность калибровки.

J1 снята — частота питания сети 50Гц
J1 установлена — частота питания сети 60Гц

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

3. Вставьте микроконтроллер в панельку, разомкнуть переключатель S1 и тем самым подать напряжение 5 Вольт.

4. Когда микроконтроллер запустится светодиоды мигнут один раз.

5. Если сигнал опорной частоты не будет обнаружен на GP2 (вывод 5) загорится красный светодиод «Ошибка» и будет мигать зеленый светодиод «Завершено». (Если это произойдет, выключите питание схемы и убедитесь в правильности подключения)

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

7. Если калибровка завершилась неудачно загорится красный светодиод «Ошибка», и выполнение программы будет остановлено.

8. Если калибровка завершилась успешно загорится зеленый светодиод «Завершено» и на GPIO1 появится тестовый сигнал частотой 5 кHz. Если у вас есть частотомер, то можно проверить правильность калибровки.

9. После завершения калибровки, Вы можете включать/выключать переключатель S1 и следить за тестовым сигналом, чтобы увидеть изменения частоты сигнала по сравнению с напряжением питания.

10. Выключите питание схемы, удалите микроконтроллер из панельки и подключите его к программатору. Далее прочитайте данные микроконтроллера и проверьте содержимое памяти EEPROM

Когда Вы считаете EEPROM там должны быть одно из трех пар значений по адресам 0x00 и 0x01:

Если в EEPROM по адресам 0x00 и 0x01 содержит 0xFF, то программа отработала неправильно.

Если в EEPROM по адресам 0x00 и 0x01 содержит 0x00, то программа не смогла установить калибровочное слово правильно (горел красный светодиод «Ошибка»). Убедитесь, что сигнал опорной частоты имеет правильное значение, J1 установлена правильно и повторите попытку.

Если в EEPROM адрес 0x00 содержит значение 0x34 и адрес 0x01 содержит 0xNN, где NN является новым значением калибровки, то программа завершилась успешно (горел зеленый светодиод «Завершено») и OSCCAL был правильно откалиброван. Используйте значение 0xNN по адресу 0x01 для калибровки памяти.

Измененная версия прошивки

Некоторые программаторы или программное обеспечение повышают сигнал VDD перед включеним VPP. Это позволяет начать работу программе до того когда микроконтроллер войдет в режим программирования предварительно считав EEPROM. Если зеленый светодиод указывает на успешное завершение калибровки, а прочитав EEPROM Вы найдете в нем 0xFF по адресам 0x00 и 0x01, то Ваш программатор работает в таком режиме.

Если у Вас возникла эта проблема, Вы можете скачать модифицированную версию оригинальной программы, которая находится в архиве под именем «recal2.hex». Эта версия не производит инициализацию EEPROM при запуске, так что данные калибровки не очищаютя, когда программатор считывает данные из микроконтроллера. Используйте эту прошивку только тогда когда возникает такая проблема.


Использование нового значения калибровки

ВАЖНО: Эта схема/программа только рассчитывает правильное значение калибровки и не может сохранить его обратно в память контроллера — Вы должны сделать это вручную с помощью программатора.

Если Вы хотите проверить калибровочную константу микроконтроллера, зная заводское значение, востановленное этой схемой значение калибровки может незначительно отличаться от заводского. Это нормально, так как есть различия в напряжении питания и температуре. Вы можете проверить значение тестового сигнала на GP1 с помощью частотомера после завершения калибровки, эта частота должна быть в пределах 1% от 5 кГц.

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

Адрес 0x00 будет содержать значение 0x34, а адрес 0x01 будет содержать значение калибровки. Именно это значение должно быть записано памяти программ по адресу 0x3FF. Некоторые программаторы позволяют считывать значение калибровки и потом записывать его обратно в контроллер. Если программатор не делает этого, то нужно прописать вручную значение 0xNN по адресу 0x3FF, где «NN» является шестнадцатеричное значение калибровки считанное из EEPROM.

“Умная подсветка” на базе микроконтроллера PIC12F629 – Поделки для авто

Для реализации «умной подсветки» в своем автомобиле не представляет особо труда рассмотрим такое устройство на базе микроконтроллера PIC12F629. Устройство обеспечит нам следующие функции освещения в автомобиле:

1. Открытие любой двери автомобиля приводит к включению света в нем;
2. После закрытия всех дверей, освещение в автомобиле продолжает светить в течение 10 секунд с последующем плавным угасанием в течение 2 секунд;
3. При включенном зажигании и закрытии всех дверей свет гасится в течение 2 секунд;

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

Это приводит к тому, что на выводе GP0 начинает генерироваться импульсы с постепенным увеличением длинны импульса (с помощью постоянного включения/выключения транзистора VT1 имитируется плавное включение света) в значении логической 1, в итоге через заданное программой время на выводе GP0 устанавливается постоянная логическая 1, что соответствует постоянному свечению ламп. Закрытие дверей приводит к обратному эффекту размыкание концевиков устанавливает на выводе GP1 постоянную логическую 1, что приводит к генерации последовательности импульсов на выводе GP0 с постепенным уменьшением длинны импульсов до момента пока на выводе GP0 не устанавливается постоянный логически 0, что соответствует отключению света в автомобиле. Но при этом программно задается 10 секундная задержка до начала формирования импульсов на GP0 висит логическая 1.

Это произойдет при условии, если на выводе Gp2 не будет «висеть» логическая 1 от зажигания. Т.е. выполняется требование что при включенном зажигании угасание света будет происходить немедленно, а не с 10 секундной задержкой.

Напряжение питания микроконтроллера составляет 5 В, для питания от бортовой сети задействован стабилизатор напряжения (на схеме DA1) и фильтрующие конденсаторы. Для снижения значения напряжения с зажигания, до уровня логической 1 микроконтроллера, применен делитель на резисторах R2, R4. Диод VD1 выполняет роль защиты от обратных токов и напряжений.

Перечень элементов к схеме:

DD1 – микроконтроллер PIC12F629;
VT1 – транзистор IRF640;
R1 – 510 Ом
R2 – 5,1 кОм;
R3 – 510 Ом;
C1 – 0,1 мФ, 16В;
C2 – 10 мФ, 16В;
C3 – 10 мФ, 16В;
C4, C5 – 20 пФ, 16В;
ZQ1 – кварцевый резонатор на 20 МГц;
DA1 – стабилизатор напряжения LM7805;
VD1 – любой диод с обратным напряжение до 5,1 В.

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

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

Архив к статье…

Таймер на микроконтроллере PIC12F629 / Приборы / МодноНемодно.ру

Из множества таймеров (реле времени), собранных мной за свою трудовую деятельность, принципиальная схема этого таймера (А. Прадиденко. РАДИО № 3, 2006, с. 51) сразу бросилась мне в глаза: я не нашёл на схеме времязадающего электролитического конденсатора.

Из личного опыта знаю, какая это ненадёжная радиодеталь, со временем и во времени изменяющая свою ёмкость. А что же это за таймер — прибор для отсчёта стабильных отрезков времени — если эта «стабильность» нестабильна?

Ещё существенным достоинством исходной схемы является то, что она содержит всего одну микросхему — микроконтроллер PIC12F629, в энергонезависимую память которого записывается программа управления таймером. Ссылка на FTP-сервер, с которого можно скачать эту программу, находится в конце указанной выше статьи.

Как обычно, разработал печатную плату таймера, используя прорамму Layout 4.0 и по методикам, опсанным в моих предыдущих топиках, спаял схему таймера.

Вид со стороны печати:

Вид со стороны деталей:

Устанавливаем и закрепляем плату на лицевой панели прибора:

Схему таймера я дополнил стабилизированным блоком питаниядля питания микроконтроллера и бесконтактной схемой коммутации внешних нагрузок или исполнительных устройств.

Вид спереди:

Слева закреплён тумблер включения «СЕТЬ», по центру вверху зелёный светодиод HL2, внизу — светодиод красного свечения HL3.  Правее его — кнопка SB1.

Внешний вид с противоположной стороны:

На корпусе закреплена розетка для подключения исполнительных устройств и заведён сетевой шнур с вилкой.

Вкратце прибор работает следующим образом.

Если всё собрано правильно, то при включении тумблера «СЕТЬ» начинает мигать светодиод  HL2 с частотой 1 Гц… При первом включении выдержка времени ещё не задана, поэтому неопределённая. Поэтому выключаем прибор и вновь включаем. предварительно нажав и удерживая кнопку SB1 в течение необходимой выдержки времени. При отпускании кнопки начинается отсчёт времени таймера, о чём свидетельствует мигающий светодиод HL2. Пи окончании отсчёта загорается светодиод HL3, а HL2 начинает мигать с частотой 3 Гц. На розетке появляется напряжение 220 В, используемое во внешнх цепях.

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

NEW

% PDF-1.4 % 35036 0 объект > эндобдж xref 35036 251 0000000016 00000 н. 0000005400 00000 н. 0000005639 00000 п. 0000005794 00000 н. 0000005829 00000 н. 0000005886 00000 н. 0000009504 00000 н. 0000017746 00000 п. 0000017987 00000 п. 0000018060 00000 п. 0000018217 00000 п. 0000018319 00000 п. 0000018453 00000 п. 0000018522 00000 п. 0000018641 00000 п. 0000018710 00000 п. 0000018829 00000 п. 0000018898 00000 п. 0000019007 00000 п. 0000019076 00000 п. 0000019236 00000 п. 0000019305 00000 п. 0000019445 00000 п. 0000019586 00000 п. 0000019735 00000 п. 0000019917 00000 п. 0000020125 00000 н. 0000020250 00000 п. 0000020366 00000 п. 0000020555 00000 п. 0000020707 00000 п. 0000020858 00000 п. 0000021066 00000 п. 0000021281 00000 п. 0000021471 00000 п. 0000021666 00000 п. 0000021879 00000 п. 0000022061 00000 н. 0000022240 00000 п. 0000022429 00000 п. 0000022619 00000 п. 0000022810 00000 п. 0000022972 00000 п. 0000023133 00000 п. 0000023303 00000 п. 0000023464 00000 п. 0000023624 00000 п. 0000023805 00000 п. 0000023991 00000 п. 0000024194 00000 п. 0000024382 00000 п. 0000024510 00000 п. 0000024667 00000 п. 0000024838 00000 п. 0000025001 00000 п. 0000025172 00000 п. 0000025335 00000 п. 0000025501 00000 п. 0000025651 00000 п. 0000025819 00000 п. 0000025984 00000 п. 0000026200 00000 н. 0000026367 00000 п. 0000026568 00000 п. 0000026725 00000 п. 0000026869 00000 п. 0000027032 00000 п. 0000027189 00000 п. 0000027393 00000 п. 0000027498 00000 н. 0000027693 00000 п. 0000027856 00000 п. 0000028019 00000 п. 0000028183 00000 п. 0000028346 00000 п. 0000028540 00000 п. 0000028738 00000 п. 0000028936 00000 п. 0000029120 00000 н. 0000029270 00000 н. 0000029402 00000 п. 0000029559 00000 п. 0000029703 00000 п. 0000029860 00000 п. 0000030022 00000 п. 0000030167 00000 п. 0000030321 00000 п. 0000030470 00000 п. 0000030635 00000 п. 0000030789 00000 п. 0000030941 00000 п. 0000031098 00000 п. 0000031245 00000 п. 0000031424 00000 п. 0000031602 00000 п. 0000031747 00000 п. 0000031890 00000 п. 0000032050 00000 п. 0000032187 00000 п. 0000032346 00000 п. 0000032499 00000 н. 0000032630 00000 п. 0000032818 00000 п. 0000032990 00000 н. 0000033113 00000 п. 0000033243 00000 п. 0000033377 00000 п. 0000033531 00000 п. 0000033709 00000 п. 0000033825 00000 п. 0000033990 00000 н. 0000034180 00000 п. 0000034288 00000 п. 0000034415 00000 п. 0000034552 00000 п. 0000034681 00000 п. 0000034866 00000 п. 0000035047 00000 п. 0000035172 00000 п. 0000035318 00000 п. 0000035452 00000 п. 0000035591 00000 п. 0000035761 00000 п. 0000035927 00000 п. 0000036049 00000 п. 0000036183 00000 п. 0000036330 00000 п. 0000036516 00000 п. 0000036674 00000 п. 0000036828 00000 н. 0000037015 00000 п. 0000037200 00000 н. 0000037360 00000 п. 0000037530 00000 п. 0000037703 00000 п. 0000037865 00000 п. 0000038017 00000 п. 0000038159 00000 п. 0000038305 00000 п. 0000038485 00000 п. 0000038611 00000 п. 0000038775 00000 п. 0000038940 00000 п. 0000039132 00000 п. 0000039349 00000 п. 0000039450 00000 п. 0000039634 00000 п. 0000039781 00000 п. 0000039911 00000 н. 0000040037 00000 п. 0000040184 00000 п. 0000040332 00000 п. 0000040473 00000 п. 0000040649 00000 п. 0000040770 00000 п. 0000040928 00000 п. 0000041068 00000 п. 0000041178 00000 п. 0000041365 00000 п. 0000041555 00000 п. 0000041662 00000 н. 0000041803 00000 п. 0000041932 00000 п. 0000042123 00000 п. 0000042285 00000 п. 0000042448 00000 п. 0000042579 00000 п. 0000042710 00000 н. 0000042845 00000 п. 0000042982 00000 п. 0000043161 00000 п. 0000043337 00000 п. 0000043468 00000 н. 0000043665 00000 п. 0000043792 00000 п. 0000043976 00000 п. 0000044082 00000 п. 0000044201 00000 п. 0000044338 00000 п. 0000044459 00000 п. 0000044631 00000 п. 0000044755 00000 п. 0000044928 00000 п. 0000045059 00000 п. 0000045197 00000 п. 0000045357 00000 п. 0000045532 00000 п. 0000045661 00000 п. 0000045772 00000 п. 0000045911 00000 п. 0000046080 00000 п. 0000046193 00000 п. 0000046344 00000 п. 0000046493 00000 п. 0000046613 00000 п. 0000046788 00000 п. 0000046917 00000 п. 0000047096 00000 п. 0000047223 00000 п. 0000047394 00000 п. 0000047531 00000 п. 0000047669 00000 п. 0000047814 00000 п. 0000047958 00000 п. 0000048100 00000 н. 0000048242 00000 п. 0000048385 00000 п. 0000048554 00000 п. 0000048741 00000 п. 0000048914 00000 н. 0000049041 00000 п. 0000049225 00000 п. 0000049350 00000 п. 0000049491 00000 п. 0000049633 00000 п. 0000049772 00000 п. 0000049905 00000 н. 0000050044 00000 п. 0000050198 00000 п. 0000050410 00000 п. 0000051062 00000 п. 0000051385 00000 п. 0000051498 00000 п. 0000052408 00000 п. 0000052669 00000 п. 0000053355 00000 п. 0000053379 00000 п. 0000054290 00000 п. 0000054722 00000 п. 0000055007 00000 п. 0000055416 00000 п. 0000055746 00000 п. 0000055770 00000 п. 0000056642 00000 п. 0000056666 00000 п. 0000057457 00000 п. 0000057481 00000 п. 0000058250 00000 п. 0000058274 00000 п. 0000059021 00000 п. 0000059045 00000 п. 0000059808 00000 п. 0000059832 00000 п. 0000060602 00000 п. 0000060626 00000 п. 0000061321 00000 п. 0000061402 00000 п. 0000065109 00000 п. 0000070141 00000 п. 0000009549 00000 н. 0000017721 00000 п. трейлер ] >> startxref 0 %% EOF 35037 0 объект > эндобдж 35038 0 объект a_

Схема драйвера светодиода

RGB PIC12F629 PWM — Electronics Projects Circuits

Схема драйвера светодиода RGB может управляться с помощью PIC12F629 pic12f675 В качестве альтернативы может использоваться PIC12F683 PIC GP0, GP1, GP2 STP36NF06 в выходных полевых МОП-транзисторах, управляемых методом ШИМ, вместо внутреннего генератора микроконтроллера… Electronics Projects, Схема драйвера светодиода RGB PIC12F629 PWM «Ведомые проекты, проекты микрочипов, проекты микроконтроллеров, схемы pwm», Дата 2019.08.03

Схема драйвера светодиода RGB может управляться с помощью PIC12F629 pic12f675 В качестве альтернативы можно использовать PIC12F683 PIC GP0, GP1, GP2 STP36NF06 в выходных полевых МОП-транзисторах, управляемых методом ШИМ, внутренний генератор микроконтроллера используется вместо внешнего кристалла. Исходное прикладное программное обеспечение RGB Led подготовлено путем сборки шестнадцатеричного кода asm, схем и чертежей печатных плат.

Код перехода между цветами полностью переписан, чтобы использовать переменную скорость изменения, так что все три светодиода достигают своих новых уровней одновременно. Этот код будет работать на 12F629 / 12F675 и 12F683. Выберите нужный процессор в меню «Настроить» — «Выбрать устройство» в MPLAB IDE, затем используйте параметр «Проект — Quickbuild» для создания выходного файла HEX.

Ищите ошибки при сборке. В частности, ошибки в файле SequenceData.inc, которые указывают либо на отсутствие запятой в данных, либо на большее количество данных, чем у выбранного PIC имеется доступная программная память.Будьте осторожны, чтобы правильно ввести данные в файл SequenceData.inc. Программа достаточно умен, чтобы определить, где ваши последовательности начинаются и заканчиваются, если вы введете их в правильном формате. Ошибки в данных могут привести к сбою кода.

Все тайминги основаны на внутреннем генераторе PIC 4 МГц. Значение OSCCAL считывается из памяти программ по адресу 0x3FF и записывается в регистр OSCAL. Это значение должно присутствовать и быть правильным.

Источник: picprojects.Альтернативная ссылка org.uk:

СПИСОК ССЫЛОК ДЛЯ ЗАГРУЗКИ ФАЙЛОВ (в формате TXT): LINKS-16058.zip

ds51292 техническое описание и примечания к приложению

2006 — ДС51292

Аннотация: DS51616A pic18 часы реального времени c код MPLAB PM3 DS51615 DS51281 LINK30 DS51194 ASM30 AHC1G04-SOT5
Текст: Спецификация (DS51292) Буклет, описывающий, как установить и использовать заголовки внутрисхемного эмулятора MPLAB REAL ICE, контактов. Для получения дополнительной информации см. «Спецификацию платы заголовков» (DS51292).Общие ресурсы, «Спецификация платы заголовков» (DS51292). Примечание: в будущем платы заголовков ICD с устройствами ICD


Оригинал
PDF DS51616A DS51616A-страница DS51292 DS51616A pic18 часы реального времени c код MPLAB PM3 DS51615 DS51281 LINK30 DS51194 ASM30 AHC1G04-SOT5
2004 — ДС51292

Аннотация: mplab c 18 pic18f452 DS51281 18f452 ICD2 TS-16949 pic18f452 DS39500A_CN LINK30 PIC18F452 c программирование
Текст: PIC16F630 / 676 MPLAB ICD 2 GP1 / RA1 MPLAB ICD 2 Заголовок DS51292 ICD 2 6.1.16 светодиод


Оригинал
PDF DS51331A I-89-627-144-0 DS51292 mplab c 18 pic18f452 DS51281 18f452 МКБ2 TS-16949 pic18f452 DS39500A_CN LINK30 PIC18F452 c программирование
2004 — ДС51292

Аннотация: Справочное руководство ICD2 PICmicro MPLAB-ICD2 mplab icd2 программатор микрочип ICD2 справочное руководство TUT452 PIC18FXXXX LINK30 DS51331A
Текст: PIC12F629 / 675 PIC16F630 / 676 GP1 / RA1 MPLAB ICD 2 ICD 2 MPLAB ICD 2 (DS51292) 6.1,16


Оригинал
PDF DS51331A DS51292 МКБ2 Справочное руководство PICmicro MPLAB-ICD2 mplab icd2 программатор микрочип ICD2 справочное руководство TUT452 PIC18FXXXX LINK30
2006 — qfn 44 УПАКОВКА занимаемая площадь

Резюме: Схема разъема PLCC 44 TQFP 100-контактный разъем для поверхностного монтажа для погружного адаптера 68-контактный разъем PLCC, вид снизу 16 Soic pcb footprint footprint soic datasheet для погружного корпуса 5407 44-контактный корпус PLCC для монтажа на печатной плате QFP корпус 144 вывод
Текст: Спецификация »(DS51298) ·« Спецификация платы заголовка »(DS51292) Пожалуйста, посетите веб-сайт Microchip


Оригинал
PDF DS51194P so36-4803 DS51194P-страница qfn 44 УПАКОВКА след Схема разъема PLCC 44 100-контактный разъем TQFP поверхностное крепление к погружному переходнику 68-контактный разъем PLCC, вид снизу 16 посадочных мест на печатной плате soic след Soic лист данных на пакет 5407 dip 44-контактный разъем для монтажа на печатной плате plcc QFP Package 144 свинца
2004 — Принципиальная схема только PIC16F676 и документ

Аннотация: 16F676 Схема программатора PIC16F676 кнопочный переключатель 2-контактный SW400-ND PIC16F676 кнопочный переключатель 4-контактный ul-2004 PIC16F676 Data Sheet mcp68
Текст: Информация об установке заголовка ICD 2 (DS51292) для получения дополнительной информации.2. Настройте MPLAB ICD 2.


Оригинал
PDF DS51327B DS51327B-страница Только PIC16F676 принципиальная схема и документ 16F676 Схема программатора PIC16F676 кнопочный переключатель 2 контакта SW400-ND PIC16F676 кнопочный переключатель 4 контакта ul-2004 PIC16F676 Лист данных mcp68
2010 — плата демонстрационная PIC18F45K20

Аннотация: AC164110 PIC18F45k20 примеры pickit 3 DS51764 DS51292 PIC18 примеры кодов spi sram PIC18 пример C18 коды карта mmc PK3Err0056 PIC18F45k20 Бесплатные проекты
Текст: Спецификация »(DS51292).Примечание. В будущем могут использоваться платы заголовков ICD с устройствами ICD (Device-ICD). A, Specification »(DS51292). Спецификация платы заголовка включена на компакт-диск PICkit 3 и доступна


Оригинал
PDF DS51795B engag-3-6578-300 DS51795B-страница Демонстрационная плата PIC18F45K20 AC164110 Примеры PIC18F45k20 пикит 3 DS51764 DS51292 Примеры кодов PIC18 spi sram PIC18 пример кода C18 карта mmc PK3Err0056 PIC18F45k20 Бесплатные проекты
2008 — п24FJ128GA010

Аннотация: p24FJ128 пример кода C pic18f для SD-карты Схема секундомера DS51292 AC244006 Набор инструкций DS51687 для серии PIC18 с использованием компилятора C PIC24FJ128GA PIC32MX
Текст: разные устройства.Спецификация платы заголовков (DS51292) В этом буклете описывается, как установить и использовать


Оригинал
PDF DS51616B DS51616B-страница p24FJ128GA010 p24FJ128 пример кода C pic18f для sd-карты DS51292 принципиальная схема секундомера AC244006 DS51687 набор инструкций для серии PIC18 с использованием компилятора c PIC24FJ128GA PIC32MX
2009 — Схема подключения rj12 к usb

Аннотация: pickit 3 PIC18F45k20 Бесплатные проекты Примеры PIC18F45k20 DS51795A PIC18F45K20 демонстрационная плата DS41296 RJ12 PINOUT usb to rj12 cable pinout ds51556
Текст: «(DS51292).Примечание. В будущем могут использоваться платы заголовков ICD с устройствами ICD (Device-ICD). A, Board Specification »(DS51292). Спецификация платы заголовка находится на компакт-диске PICkit 3, и


Оригинал
PDF DS51795A DS51795A-страница Схема подключения rj12 к usb пикит 3 PIC18F45k20 Бесплатные проекты Примеры PIC18F45k20 DS51795A Демонстрационная плата PIC18F45K20 DS41296 ВЫВОД RJ12 распиновка кабеля usb к rj12 ds51556
2008-ДС51765

Аннотация: PIC18FXXK p24FJ128GA010 DS51292 mplab icd 3 p24FJ128 пример кода C pic18f для SD-карты PIC24 пример кода C30 PORT PIC18 пример кода прерывания USB PIC18F mplab исходный код шины CAN
Текст: и ограничения перечислены для различных устройств.Спецификация платы заголовка (DS51292) Этот буклет, Спецификация платы «(DS51292). Примечание: DS51766A-стр. 22 В будущем платы заголовка ICD с ICD


Оригинал
PDF DS51766A DS51766A-страница DS51765 PIC18FXXK p24FJ128GA010 DS51292 mplab icd 3 p24FJ128 пример кода C pic18f для sd-карты PIC24 пример кода C30 PORT Примеры кодов прерывания USB PIC18 Исходный код шины CAN PIC18F mplab
2009 — ДС51140

Аннотация: PIC32 PICC-18 XLT28QFN4 DS51298
Текст: Спецификация (DS51292) · Спецификация модуля процессора MPLAB® ICE 2000 и адаптера устройства (DS51140) · MPLAB


Оригинал
PDF DS51194R DS51194R-страница DS51140 PIC32 PICC-18 XLT28QFN4 DS51298
2010 — ДС51140

Аннотация: DS51298 PIC32 PICC-18 44-контактный разъем для монтажа на печатной плате PLCC 44L Разъем XLT18SO-1
Текст: адаптеры устройств, см .: · Спецификацию платы заголовков (DS51292) · Процессорный модуль MPLAB® ICE 2000 и


Оригинал
PDF DS51194S DS51194S-страница DS51140 DS51298 PIC32 PICC-18 44-контактный разъем для монтажа на печатной плате plcc Розетка 44L PLCC XLT18SO-1
2014 — PIC16F1825

Аннотация: абстрактный текст недоступен
Текст: эмулятор См. Также Processor Extension Pak и Debug Header Specification (DS51292).1.3


Оригинал
PDF DS50002243A PIC16F1825
2008 — Зона основания QFN-64

Аннотация: абстрактный текст недоступен
Текст: адаптеры, см .: · Спецификация платы заголовка (DS51292) · Процессорный модуль MPLAB® ICE 2000 и адаптер устройства


Оригинал
PDF DS51194Q о-3-572-9526 DS51194Q-страница Площадь основания QFN-64
2007 — 18f452 pic микроконтроллер

Аннотация: код icd2 отладки исполнительного кода PIC18F Примеры кодов CAN pic18f Справочное руководство по семейству MCU DS51123 DS51280 picdem 2 plus с использованием примеров 18f452 Код Verilog LINK30 для секундомера DS51265
Текст: показывает различные способы настройки оборудования MPLAB ICD 2.Спецификация платы заголовков (DS51292) A


Оригинал
PDF DS51331C 18f452 pic микроконтроллер код icd2 отладка исполнительный Примеры кодов PIC18F CAN Справочное руководство по семейству микроконтроллеров pic18f DS51123 DS51280 picdem 2 plus на примере 18f452 LINK30 код Verilog для секундомера DS51265
2005 — ДС51566

Аннотация: DS51292 pic16f819 учебник PIC 16 F 877A c программированием PIC18F mplab CAN bus DS51280 PIC16F628A-ICD PIC12f629 исходный код сна PIC16F627A-ICD 29f16008
Текст: фурнитура.Заголовок MPLAB® ICD 2 (DS51292) Небольшой буклет, описывающий, как установить и использовать MPLAB ICD 2


Оригинал
PDF DS51331B DS51331B-страница DS51566 DS51292 pic16f819 учебник PIC 16 F 877A c программирование CAN-шина mplab PIC18F DS51280 PIC16F628A-ICD Исходный код PIC12f629 в спящем режиме PIC16F627A-ICD 29f16008
2003 — DS51331A

Аннотация: PIC18F452 IN power wizard 1.1 электрическая схема MPLAB SIM 18F452 PIC18f452 timer0 c18 коды PIC18f452 timer0 коды mplab icd 3 mclr конденсатор PIC18F452 Бесплатные проекты mplab icd 3 mclr
Текст: нет текста в файле


Оригинал
PDF DS51331A DS51331A-страница DS51331A PIC18F452 IN мастер мощности 1.1 электрическая схема MPLAB SIM 18F452 PIC18f452 timer0 c18 коды Коды таймера PIC18f452 mplab icd 3 mclr конденсатор PIC18F452 Бесплатные проекты mplab icd 3 мклр
2004 — 12ф629

Аннотация: DS33023A_cn pic12f675a PIC12F675 24L256 12F629I 12f629 tX PIC12F629 DS30000 DS33023A
Текст: нет текста в файле


Оригинал
PDF PIC12F629 / 675 DS41190C 12f629 DS33023A_cn pic12f675a PIC12F675 24L256 12F629I 12f629 tX PIC12F629 DS30000 DS33023A
2004 — Исходный код PIC12f629, спящий режим

Аннотация: 12F629 adc 12f629 PIC12F675 микрочип ADC 801 DS33023A_cn PIC16C7X5 24L256 PIC12F629 DS33023A
Текст: нет текста в файле


Оригинал
PDF PIC12F629 / 675 DS41190C Исходный код PIC12f629 в спящем режиме 12F629 АЦП 12f629 PIC12F675 микросхема ADC 801 DS33023A_cn PIC16C7X5 24L256 PIC12F629 DS33023A
2008 — 51553E

Аннотация: 16f887 PK2Error0027 PIC16F887 Бесплатные проекты DS41296 PK2Error0022 ds51556 PIC 16f887 application note datasheet 16F887 PIC16F690 Светодиодный проект с языком ассемблера
Текст: нет текста в файле


Оригинал
PDF DS51553E DS51553E-страница 51553E 16f887 PK2Error0027 PIC16F887 Бесплатные проекты DS41296 PK2Error0022 ds51556 Примечание по применению PIC 16f887 лист данных 16F887 Светодиодный проект PIC16F690 с языком ассемблера
2003 — 41190c

Аннотация: PIC16F877 Бесплатные проекты пир-датчика Справочное руководство PIC среднего уровня DS33023 Примеры кодов PIC12f675 pic12f675 проекты PIC12f675 Примеры кодов АЦП pir 325 pic12f675 таблицы данных DAC PIC16F877 ПРИМЕЧАНИЕ ПО ПРИМЕНЕНИЮ PIC16F877 Бесплатные проекты светодиодов
Текст: нет текста в файле


Оригинал
PDF PIC12F629 / 675 DS41190C DK-2750 D-85737 DS41190C-страница 41190c PIC16F877 Бесплатные проекты пир датчика Справочное руководство PIC среднего уровня DS33023 Примеры кодов PIC12f675 pic12f675 проекты Примеры кодов АЦП PIC12f675 пир 325 таблицы данных pic12f675 DAC PIC16F877 ПРИМЕЧАНИЕ ПО ПРИМЕНЕНИЮ PIC16F877 Бесплатные проекты светодиодов
2007 — PIC12f675, пример

Аннотация: Справочное руководство PIC среднего уровня DS33023 16 Справочное руководство PIC среднего уровня DS33023 PIC12f675 Примеры кодов АЦП pic12f675 проекты Семейство PIC24
Текст: нет текста в файле


Оригинал
PDF PIC12F629 / 675 DS41190D DS41190D-страница Пример PIC12f675 Справочное руководство PIC среднего уровня DS33023 16 Справочное руководство PIC среднего уровня DS33023 Примеры кодов АЦП PIC12f675 pic12f675 проекты Семья PIC24
2010-PIC16F630 / PWM IC PIN

Аннотация: Руководство по программированию PIC16F630 / PIC16F877
Текст: нет текста в файле


Оригинал
PDF PIC16F630 / 676 14-контактный, DS40039F DS40039F-страница PIC16F630 / PWM IC a PIN-код Руководство по программированию PIC16F630 / PIC16F877
2010 — adc для pic16f676 в руководстве по сборке

Резюме: pic16f675 Справочное руководство PIC среднего уровня DS33023 16 Справочное руководство PIC среднего уровня DS33023 PIC16F630 PIC16F676 Только принципиальная схема и документ PIN PIC16F675 MPLAB IDE PIC 16F630 pic16f630 datasheet PIR CONTROLLER LP 0001
Текст: нет текста в файле


Оригинал
PDF PIC16F630 / 676 14-контактный, DS40039F DS40039F-страница adc для pic16f676 в руководстве по сборке pic16f675 Справочное руководство PIC среднего уровня DS33023 16 Справочное руководство PIC среднего уровня DS33023 PIC16F630 Только PIC16F676 принципиальная схема и документ ПИН PIC16F675 MPLAB IDE PIC 16F630 pic16f630 лист данных ПИР-КОНТРОЛЛЕР LP 0001
2009 — PIC12f675 Примеры кодов adc

Аннотация: 12F629 Справочное руководство PIC среднего уровня DS33023 PIC12f675 Примеры кодов емкостного считывания PIC12f675 ds33023 PIC16F Светодиодная матрица PIC12f675 Пример программы 12F629 PIC12F5XX
Текст: нет текста в файле


Оригинал
PDF PIC12F629 / 675 DS41190F DS41190F-страница Примеры кодов АЦП PIC12f675 12F629 Справочное руководство PIC среднего уровня DS33023 Примеры кодов PIC12f675 емкостное зондирование PIC12f675 ds33023 Светодиодная матрица PIC16F Пример PIC12f675 Программа 12F629 PIC12F5XX
2007 — Справочное руководство PIC среднего уровня DS33023

Аннотация: исходный код PIC12f629 Справочное руководство PIC среднего уровня DS33023 PIR CONTROLLER LP 0001 12F629 DS51292 PIC12f675 Примеры кодов АЦП PIC18 Примеры кодов внешнего прерывания PIC18 pic12f675 представляет собой справочное руководство PIC среднего уровня DS33023 16
Текст: нет текста в файле


Оригинал
PDF PIC12F629 / 675 DS41190E DS41190E-страница Справочное руководство PIC среднего уровня DS33023 Исходный код PIC12f629 Справочное руководство PIC среднего уровня DS33023 ПИР-КОНТРОЛЛЕР LP 0001 12F629 DS51292 Примеры кодов АЦП PIC12f675 Примеры кодов внешнего прерывания PIC18 pic12f675 проекты Справочное руководство PIC среднего уровня DS33023 16

Светодиодный стробоскоп



Описание

Этот проект функционирует как простой строб для управления светодиодами.Использование выхода транзистор позволяет ему подавать импульс на светодиод стробоскопа с током вверх до 100 мА.

Четыре перемычки обеспечивают дополнительные возможности для изменения ширины импульса, интервала повтора строба и одинарного или двойного стробоскопическая вспышка. Код, готовый для программиста, имеет значение по умолчанию тайминги, которые легко настраиваются путем редактирования значений в EEPROM PIC во время программирования.

Это один из тех приложений, где это возможно лучше, чем таймер 555 на основе решение, но на практике вы можете построить его с таймером 555 быстрее, чем вы можете написать код PIC.Однако это только нужно написать код один раз, я сделал это и разработал небольшой Печатная плата тоже, так что вперед.

Нужна высокая мощность Светодиодный стробоскоп?
см. Проект Power LED Strobe здесь


Схема

Скачать схема в PDF

Описание цепи

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

Интервал строба может быть настраивается с помощью 4 перемычек на 1,2,3 или 4 секунды; время включения строба 30 мс или 100 мс и одиночный или двойной стробоскопический импульс.

Поскольку PIC может поставлять только 25 мА от контакта ввода / вывода используется транзистор для увеличения максимальный ток, проходящий через светодиод. Этот транзистор имеет максимальный ток коллектора 100 мА, что достаточно для управляя большинством типов 5-миллиметровых светодиодов. PIC можно использовать для при желании можно управлять переключателем выхода с более высокой мощностью.

Значение тока серии R3 ограничительный резистор для светодиод стробоскопа был выбран из консервативных соображений, а не для обеспечения максимальной яркости. При питании 5 В и светодиодах с прямым напряжением 1,8 В дает ток примерно 47 мА.

Светодиод стробоскопа может быть установлен на плате в положении LED1 или вне платы через разъем CN2. Если используется внешняя опция, не устанавливайте светодиод. в положение LED1 на печатной плате.

LED2 — это индикатор монитора, если Используется внешний стробоскопический светодиод, этот светодиод может быть полезен для контроль работы схемы. Если ты не хочешь в этой опции просто опустите LED2 и R4.

Конденсатор C1 используется для отсоедините шину питания 5 В. Если вы строите схему на макете или стрип-плате, убедитесь, что она расположен рядом с разъемом PIC Vdd (контакт 1).

Входное напряжение не должно превышают 5 вольт.Он может работать от 3 вольт, но вы потребуется изменить значение резистора светодиода стробоскопа. Также осведомлен о прямом напряжении светодиода; некоторые светодиоды высокой яркости и в частности, белые светодиоды и некоторые синие и зеленые светодиоды имеют прямое напряжение, превышающее 3 вольт.

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

Выбор R3 / LED1

Очевидно, нам нужен стробоскоп Светодиод должен быть максимально ярким. Важно, чтобы последовательный резистор R3 подбирается таким образом, чтобы ток светодиода не превышают рейтинг производителей. Поскольку разные светодиоды имеют различные максимальные значения прямого тока и напряжения, которые вы должны выберите этот резистор в соответствии с конкретным светодиодом, который вы используете.

Для других светодиодов можно использовать этот сайт для расчета необходимого резистора http: // led.linear1.org/1led.wiz Когда вы перейдете к этому сайт запрашивает напряжение источника. Это будет 5 вольт, или если вы использовали батарейки для питания строба, общий напряжение батареи. Также обратите внимание, что драйверный транзистор Q1 рассчитан только на 100 мА, поэтому не превышайте это значение, даже если светодиоды б / у может.

Режимы работы стробоскопа

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

Ширина импульса, интервал и Режим стробирования выбирается пользователем с помощью блока перемычек JP1. Есть два режима стробоскопа, одиночный и двойной импульс. В В двойном режиме время простоя между двумя импульсами (по умолчанию) составляет 175 мс. Как показано на диаграмме ниже, интервал измеряется от конец одной группы импульсов до начала следующей группы.


Время по умолчанию

Настройки перемычки

Стробоскоп Режим
JP1 (1-2)

Импульсный Ширина
JP1 (3-4)

Интервал
JP1 (5-6,7-8)

Настройка стробоскопа время

Таймеры длительности импульса, интервал и двойной интервал режима все настраиваются путем редактирования значения в EEPROM PIC перед записью HEX в PIC. Это приятно и легко сделать, не требуя повторной сборки. код или что-нибудь сложное. Просто загрузите файл HEX из раздел загрузки прошивки в ваше приложение-программист. Отредактируйте значения в EEPROM, как показано ниже, а затем запишите код и данные EEPROM в PIC.

Предположим, вам нужна ширина импульса 40 мс (40 x 1 мс) и интервал 1,3 секунды (13 x 100 мс), вы бы установленный данные в адресах с 00 по 28 (40 в десятичной системе счисления == 28 шестнадцатеричный).Для интервала 1,3 секунды измените данные в адресах от 03 до 0D (13 десятичное == шестнадцатеричное 0D).

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

Преобразование десятичных значений в шестнадцатеричный
В зависимости от вашего программиста значения, которые вам нужно ввести, вероятно, будут в шестнадцатеричном формате. Самый простой способ преобразовать десятичные значения в шестнадцатеричные — Google, см. пример ниже.Префикс 0x в результате просто сообщает нам значение в шестнадцатеричной системе счисления (сокращенно шестнадцатеричное).


Схема расположения печатной платы

Скачать печатную плату работа в PDF

Загрузить файлы CAD Eagle 5.30 (ZIP)

Список компонентов

Можно купить все запчасти необходимы для создания этого проекта от большинства мировых поставщиков комплектующих. широкий.В Великобритании вы можете получить все в Rapid Online и Я включил список деталей с их номерами ниже.

Все Экспресс-детали / описания исправлены по состоянию на 30 января 2009 г. Вам следует проверьте правильность номера детали и описания при заказе в случае Я сделал ошибку при переносе их на эту страницу.

Компонент Описание Деталь #
R1 ПК 100 470Р 0.25 Вт CF РЕЗИСТОР (RC) 62-0362
R2 УПАКОВКА 100 1K 0,25 Вт CF РЕЗИСТОР (RC) 62-0370
R3 * УПАКОВКА 100 39R 0,25 Вт CF РЕЗИСТОР (RC) 62-0336
R4 ** ПК 100 330R 0.25W CF РЕЗИСТОР (RC) 62-0358
C1 100N 5MM ПИТЧ КЕРАМИЧЕСКИЙ КОНДЕНСАТОР ДИСКОВЫЙ RC 08-0235
C2 5M MICROMIN 10 мкФ 16 В ЭЛЕКТРОЛИТИЧЕСКИЙ (RC) 11-1506
1 квартал BC548B ТРАНЗИСТОР TO92 30 В NPN (RC) 81-0066
IC1 *** PIC12F675-I / P (RC) 73-3284
Светодиод1 LED 5MM HB БЕЛЫЙ 30000MCD (RC) 55-2484
Светодиод2 ** L-7104GD МИНИАТЮРА 3ММ ЗЕЛЕНЫЙ светодиод (RC) 55-0105
розетка для IC1 8 PIN 0.3IN DIL SKT (RC) 22-0150
JP1 4 + 4-ХОДОВЫЙ ДВОЙНОЙ РЯД ЗАГЛУШКА RC 22-0555
CN1, CN2 2-ХОДОВАЯ 16А КЛЕММНЫЙ БЛОК ПЕЧАТНОЙ ПЛАТЫ (RC) 21-0112
заказ 4 **** ОТКРЫТЫЙ СИНИЙ 2,54ММ ПЕРЕМЫЧКА (RC) 22-3555

Список деталей Примечания

Все резисторы Поставляется в упаковках по 100 шт.

* R3 выбран для использовать с белым светодиодом высокой яркости, используемым для LED1.На на схеме он показан как 68R, но для использовать с этим конкретным светодиодом. Если вы используете другой светодиод, см. примечания здесь

** Опустите R4 / LED2, если светодиод монитора вам не нужен.

*** 12F629 также можно использовать

**** Старые материнские платы ПК, хард приводы и т. д. часто используют этот тип перемычки, чтобы вы могли чтобы спасти некоторые из них, вместо того, чтобы покупать их.


Фотографии строительства:

Строительство очень простой. Поскольку был установлен стробоскопический светодиод на печатной плате разъем для подключения внешнего светодиода не имеет были вписаны в эти фотографии.

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

Блок питания

Схема LED Strobe в идеале нужно 5 вольт поставка.Вы можете использовать 3 щелочные батареи AA по 1,5 В или 4 батареи. Перезаряжаемые никель-металлгидридные аккумуляторы AA 1,2 В для портативности. Как указано в другом месте на этой странице он может работать при напряжении до 3 вольт, но резистор ограничения тока последовательного стробоскопического светодиода будет нужно пересчитать. Также не работают некоторые белые светодиоды. от 3 вольт, если они светятся, вероятно, они не работают на максимальной яркости.

Сам PIC использует только около 2 мА, когда светодиод стробоскопа не горит, потребление основного тока составляет когда светодиод горит, и это будет зависеть от светодиода. и резистор ограничения тока.


Прошивка

Вы можете использовать либо PIC 12F629 или микроконтроллер 12F675 с этой схемой. Одинаковый код прошивки используется с любым устройством. Скачать файлы, необходимые ниже.

Файл HEX готов к программу прямо в ПОС. Файл asm — это исходный код, который вы можете изменить или просто просмотреть, чтобы увидеть, как он работает.

Нет программиста? Купить предварительно запрограммированный PIC из Интернет-магазин

Описание Имя файла Ссылка для скачивания
Источник код для 12F629 / 675 ledstrobe-f.asm скачать
HEX файл готов к программированию в PIC
для использования с 12F629 и 12F675
ledstrobe-f.HEX V1.0.0 01/04/2009 скачать

Если вам нужен PIC Programmer I настоятельно рекомендую Микрочип PICKit 2, это доступно от поставщиков по всему миру или напрямую от Микрочип.Это достаточно дешево и надежно.


Поиск и устранение неисправностей

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

  • Данные EEPROM по адресу 07 и 08 должны быть 0xA9 и 0x56 соответственно. Если это не так исправьте, отобразится код ошибки с 3 миганиями. Вы можете исправьте ошибку, перепрограммировав EEPROM, убедившись, что байты проверки верны.
  • Если слово калибровки OSCCAL Отсутствует код ошибки, мигающий 4 раза. Вы будете необходимо повторно откалибровать PIC с помощью программатора PICkit2, или проект перекалибровки здесь


Морзе Строб SOS

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

Рекомендация МСЭ-R M.1677-1 (10/2009)

2. Интервал и длина сигналов

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

Оборудование точно такое же, как который используется с основным проектом Strobe на этой странице, но требует альтернативная прошивка, представленная ниже.

Настройки перемычки

Джемпер (1-2) не используется и должен быть оставлен открытым


Выход строба сигнал, отобранный с выходного контакта GPIO2 (все перемычки разомкнуты)


Прошивка (версия Morse SOS)

Шестнадцатеричный файл готов к программировать прямо в PIC12F629 или 12F675.Источник C код также можно загрузить, если вы хотите настроить тайминги. Он будет компилироваться с бесплатным Компилятор MikroC

Описание Имя файла Ссылка для скачивания
Источник код для 12F629 / 675 SOS Flasher.c скачать
HEX файл готов к программированию в PIC
для использования с 12F629 и 12F675
SOS_Flasher_675629.шестнадцатеричный
30.10.2012
скачать


Свяжитесь с нами:

% PDF-1.4 % 526 0 объект > эндобдж xref 526 103 0000000016 00000 н. 0000002430 00000 н. 0000002615 00000 н. 0000005494 00000 п. 0000005652 00000 н. 0000005719 00000 н. 0000005843 00000 н. 0000005952 00000 н. 0000006060 00000 н. 0000006182 00000 н. 0000006305 00000 н. 0000006463 00000 н. 0000006616 00000 н. 0000006779 00000 н. 0000006941 00000 н. 0000007102 00000 п. 0000007268 00000 н. 0000007424 00000 н. 0000007567 00000 н. 0000007714 00000 н. 0000007851 00000 п. 0000007986 00000 п. 0000008120 00000 н. 0000008273 00000 н. 0000008405 00000 н. 0000008548 00000 н. 0000008689 00000 н. 0000008822 00000 н. 0000008986 00000 н. 0000009144 00000 п. 0000009288 00000 н. 0000009451 00000 п. 0000009585 00000 п. 0000009708 00000 н. 0000009834 00000 н. 0000009966 00000 н. 0000010105 00000 п. 0000010230 00000 п. 0000010357 00000 п. 0000010483 00000 п. 0000010599 00000 п. 0000010719 00000 п. 0000010873 00000 п. 0000010995 00000 п. 0000011165 00000 п. 0000011325 00000 п. 0000011455 00000 п. 0000011601 00000 п. 0000011742 00000 п. 0000011883 00000 п. 0000012035 00000 п. 0000012188 00000 п. 0000012335 00000 п. 0000012476 00000 п. 0000012620 00000 н. 0000012746 00000 п. 0000012893 00000 п. 0000013040 00000 п. 0000013178 00000 п. 0000013307 00000 п. 0000013435 00000 п. 0000013562 00000 п. 0000013693 00000 п. 0000013818 00000 п. 0000013954 00000 п. 0000014079 00000 п. 0000014220 00000 п. 0000014360 00000 п. 0000014493 00000 п. 0000014636 00000 п. 0000014770 00000 п. 0000014918 00000 п. 0000015067 00000 п. 0000015218 00000 п. 0000015356 00000 п. 0000015493 00000 п. 0000015629 00000 п. 0000015783 00000 п. 0000015914 00000 п. 0000016040 00000 п. 0000016173 00000 п. 0000016298 00000 п. 0000016421 00000 п. 0000016647 00000 п. 0000017328 00000 п. 0000017369 00000 п. 0000018116 00000 п. 0000018659 00000 п. 0000018900 00000 п. 0000019113 00000 п. 0000019195 00000 п. 0000019709 00000 п. 0000019765 00000 п. 0000020383 00000 п. 0000021307 00000 п. 0000021386 00000 п. 0000030159 00000 п. 0000036509 00000 п. 0000040529 00000 п. 0000041454 00000 п. 0000044133 00000 п. 0000002769 00000 н. 0000005471 00000 п. трейлер ] >> startxref 0 %% EOF 527 0 объект > эндобдж 528 0 объект `Dz — # _ m_} g) / U (F; 2 «\ nY˫bD \ (ߒ P) / П -44 / V 1 / Длина 40 >> эндобдж 627 0 объект > транслировать 㣏 N9WЋ.xJDˉ-} f1X4ːQDQu%

IR Light Dimmer v2 (1kB Challenge edition)

Это устройство d подключается к сети электропитания, поэтому требует большого уважения. Если вы не уверены в в том, что делаете, лучше доверьте установку опытному электрику. Несмотря на то, что это устройство работает от 5 В постоянного тока, при подключении к сети оно все равно может убить вас, если вы дотронетесь до любой его части!

Вы можете безопасно собрать его на своем стенде, но как только он будет подключен к электросети, НЕ ПРИКАСАЙТЕСЬ К ЭТОМУ!


Я недавно решил опубликовать этот проект на своей веб-странице, поэтому я решил отправьте его в 1kB Challenge и здесь.Прошивка оптимизирована чтобы соответствовать спецификациям задачи, а исходный код написан на Сборка микросхемы. Вы можете скачать MPLAB из www.microchip.com и соберите версию со своими доработками! В PIC есть много свободного места (целых 1 КБ!).

Как Работает этот девайс довольно круто, питается от сети через нагрузку (обычно это электрическая лампочка, но она также может быть резистивной нагревательный элемент). Он включает нагрузку путем короткого замыкания. собственный блок питания! Вы можете управлять им с помощью собственного телевизионного пульта контроллер — все, что вам нужно, это 4 запасные кнопки (обычно те, которые используются для Телетекст, чтобы они не мешали нормальному использованию телевизора).если ты не пожалеете 4 кнопки, можно научить устройство всего 2 кнопкам, но в в этом случае вы либо теряете функцию затемнения — вы можете только включить свет включится и выключится, или вы потеряете кнопку ВЫКЛ, и вам придется затемнение до уровня 0, чтобы выключить свет. Он распознает два ИК-протоколы: NEC и RC5 (наиболее часто используются в мире).


Бестрансформаторный источник питания

Питание устройства осуществляется от сети с использованием емкостного источника питания.Вы должны прочитать все об этом по этой ссылке: http://www.designercircuits.com/DesignNote1a.pdf, а также по этой ссылке: http://ww1.microchip.com/downloads/en/AppNotes/00954A.pdf

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


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

В этом состоянии симистор не срабатывает и ничего особенного не происходит.

Включено (горит или не горит)

Если нажат настенный выключатель или соответствующий ИК-сигнал получен от пульт дистанционного управления, лампочка загорится.Включение лампочки — это достигается путем срабатывания симистора, когда сетевое напряжение пересекает нулевое значение. точка. Это обнаруживается детектором перехода через нуль, образованным R3. и C6. Если мы активируем симистор сразу после обнаружения «нуля» он включит свет на полную мощность. Если мы задержим симистор через некоторое время мы можем эффективно выполнять диммирование, поскольку напряжение появляющееся на выходе меньше напряжения питания. Вы можете прочтите заметку о приложении от ST здесь: http: // www.mouser.com/catalog/specsheets/stevalill004v1.pdf (последовательный диммер, такой как этот, можно найти, начиная со страницы 16). Это примечание к приложению также содержит расчеты для бестрансформаторного источника питания — так что проверьте это тоже!

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

Подробнее »

Электронные кости (Часть 2) — Neuronlight

В части 1 мы реализовали простые электронные игральные кости с использованием Arduino (R3). Часть 2 реализует те же (слегка улучшенные) кости с использованием микроконтроллера PIC 12F629.

Итак, зачем использовать автономный микроконтроллер, а не Arduino? Некоторые причины; PIC 12F629 намного дешевле, чем Arduino (он даже дешевле, чем чип AVR, на котором основана Arduino), его 8-контактный корпус DIL делает его намного меньше, чем Arduino, и, наконец, он потребляет намного меньше энергии чем Arduino.

Вот схема новой схемы игры в кости:

Схема PICMicro Dice

Светодиоды и соответствующие им резисторы подключены к выводам GPIO, сконфигурированным как выходы, почти так же, как и раньше. Следует обратить внимание на то, что, хотя Arduino может потреблять / передавать до 40 мА на вывод, PIC может управлять только 25 мА. Здесь это не проблема, поскольку 25 мА более чем достаточно для управления парами 3-миллиметровых светодиодов со встроенными резисторами.

Кнопочный переключатель подключается между землей и выводом GPIO, сконфигурированным как вход, который подтягивается к высокому уровню с помощью внешнего резистора 10 кОм.Да, PIC имеют встроенные подтягивания, но я не использовал их здесь (прочтите, чтобы узнать, почему!).

Вывод сброса также подтягивается к высокому уровню с помощью внешнего резистора 10 кОм. Этот вывод может быть настроен как GPIO с высоким уровнем сброса с помощью внутреннего резистора 10 кОм, но есть странная проблема с 12F629, которая означает, что лучше всего использовать внешнее подтягивание при сбросе, если вы это делаете; а) планирование использования внутреннего генератора и б) программирование PIC с помощью программатора PICkit 3.

0.Конденсатор емкостью 1 мкФ на контактах питания предназначен для фильтрации любых шумов в источнике питания (вероятно, в этом случае нет необходимости, поскольку я питаю все это от батареи).

Схема кристалла PIC12F629 на макетной плате

Объяснение того, как писать код на ассемблере, выходит далеко за рамки этого поста, но если вы в процессе обучения, то код будет прокомментирован, так что может помочь:

; *********************************************** *********************
; Электронные кости
; *********************************************** *********************
; Имя файла: игральные кости.как м
; Дата: 11 августа 2015 г.
; Автор: Саймон Баквелл
; *********************************************** *********************
; Необходимые файлы: P12F629.INC
; *********************************************** *********************

 список p = 12f629; директива list для определения процессора
 #include & amp; lt; p12F629.inc & amp; gt; ; определения переменных, специфичных для процессора

 errorlevel -302; подавить сообщение 302 из файла списка

 __CONFIG _FOSC_INTRCIO & amp; amp; _WDTE_OFF & amp; amp; _PWRTE_ON & amp; amp; _MCLRE_ON & amp; amp; _BOREN_OFF & amp; amp; _CPD_OFF & amp; amp; _CP_OFF

; Директива '__CONFIG' используется для встраивания слова конфигурации внутрь.asm файл.
; Таблицы, следующие за директивой, находятся в соответствующем файле .inc.
; См. Лист данных для получения дополнительной информации о настройках слова конфигурации.

; ***** ПОРТ
; выход
led_1and7 equ 0x04
led_2and6 equ 0x00
led_3and5 equ 0x05
led_4 equ 0x01
кнопка equ 0x02

; счетчики
d0 экв 0x20
d1 equ 0x21
d2 equ 0x22

; *********************************************** *********************
         org 0x000; вектор сброса процессора

; инициализировать устройство
в этом
                ; gpio выводит все цифровые
                movlw 0x07
                movwf CMCON

                ; переключиться на банк 1
                СТАТУС bsf, RP0
                ; установить gpio2 как вход
                movlw 0x0C
                movwf TRISIO
                ; включить пробуждение на gpio2 (задний фронт)
                bsf INTCON, INTE
                bcf OPTION_REG, INTEDG
                ; перейти в банк 0
                СТАТУС bcf, RP0

рестарт
               ; выключить светодиоды
                bcf GPIO, led_1and7
                bcf GPIO, светодиод_2и6
                bcf GPIO, led_3and5
                bcf GPIO, светодиод_4

выключить      ; перейти в режим пониженного энергопотребления и дождаться пробуждения на INTE
                спать
                нет

                ; кнопка должна быть нажата - верните в режим выключения питания, если нет
                btfsc GPIO, кнопка
                goto power_down

                ; кнопка противодействия (короткая задержка)
                clrf d0
db_loop decfsz d0, f
                goto db_loop
                ; вращать значения кубиков
dice_1; битовая комбинация для '1'
                movlw b'00000010 '
                btfss GPIO, кнопка
                goto dice_2
                перейти к отображению
dice_2; битовая комбинация для '2'
                movlw b'00000001 '
                btfss GPIO, кнопка
                goto dice_3
                перейти к отображению
dice_3; битовый шаблон для '3'
                movlw b'00000011 '
                btfss GPIO, кнопка
                goto dice_4
                перейти к отображению
dice_4; битовая комбинация для '4'
                movlw b'00010001 '
                btfss GPIO, кнопка
                goto dice_5
                перейти к отображению
dice_5; битовая комбинация для '5'
                movlw b'00010011 '
                btfss GPIO, кнопка
                goto dice_6
                перейти к отображению
dice_6; битовая комбинация для '6'
                movlw b'00110001 '
                btfss GPIO, кнопка
                goto dice_1

; отобразить результат
отображать
                iorwf GPIO, f

; 3-секундная задержка
                movlw 0x1a
                movwf d0
                movlw 0x8b
                movwf d1
                movlw 0x07
                movwf d2
delay_loop decfsz d0, f
                goto delay_hop0
                decfsz d1, f
delay_hop0 перейти к delay_hop1
                decfsz d2, f
delay_hop1 перейти к delay_loop

; вернуться к re_start
                goto re_start

; конец
конец
 

В конструкции используется функция низкого энергопотребления 12F629, которая позволяет постоянно подключать его к батарее, не разряжая ее быстро.Я попытался измерить потребляемый ток в выключенном состоянии, но мой цифровой измеритель просто не опускается так низко (мы говорим о наноамперах!).

(если вы новичок в PICMicro, будьте уверены, что режим пониженного энергопотребления и прерывания — довольно сложные темы, поэтому не беспокойтесь, если следующее не имеет смысла)

Раньше я никогда не использовал режим пониженного энергопотребления, поэтому попался на пару ошибок:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *