Войти Регистрация

Войдите в свой аккаунт

Логин *
Пароль *
Запомнить меня
 

В данном демонстрационном проекте мы рассмотрим задачу сопряжения элемента управления под названием энкодер с микроконтроллером PIC.

Для реализации демонстрационного проекта нам понадобятся:

  • 24-позиционный энкодер;
  • 16 светодиодов (3 мм);
  • драйвер светодиодов A6276;
  • микроконтроллер PIC18F2550.

Энкодер – современный и оригинальный элемент управления цифровыми устройствами, и по внешнему виду похож на переменный резистор (см. рисунок ниже). Другое название этого элемента управления – датчик угла, датчик поворота. Вращение вала сопровождается щелчками, например 24 щелчка на один оборот. Энкодер имеет 3 вывода – A, B, C и применяется для быстрого ввода данных в цифровые устройства. Некоторые модели имеют встроенную кнопку, которая срабатывает по нажатию на вал энкодера (добавляется еще один вывод). 

Энкодер

Энкодер

Принцип работы энкодера

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

Принципиальная схема (нажмите на рисунок, чтобы увеличить его)

Схема энкодера

Выводы энкодера A и B подключаются к портам микроконтроллера RB4 и RB5, вывод С энкодера подключается к «земле». Стоит заметить, что на сигнальные линии выводов A и B должны быть подключены подтягивающие резисторы. Энкодер не случайно подключен к указанным линиям ввода/вывода микроконтроллера: во-первых, порт B имеет встроенные подтягивающие резисторы и нам не придется подключать внешние, во-вторых, порт B микроконтроллера имеет очень полезную функцию – «interrupt-on-change» – прерывание по изменению уровня, что позволит нам отслеживать состояние энкодера.

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

Микросхема A6276 представляет собой драйвер светодиодов с 16-битным последовательным вводом информации. Драйвер содержит 16-битный КМОП сдвиговый регистр, соответствующие защелки и драйверы для управления светодиодами и может управлять большим количеством светодиодов, чем это позволяет микроконтроллер. Кроме того, драйвером можно управлять по интерфейсу SPI, что дополнительно сокращает количество используемых линий ввода/вывода и делает проект масштабируемым. 

Подключение энкодера

Программное обеспечение микроконтроллера для решения нашей задачи относительно простое. Реализуется 3 режима работы (ввод информации) и обратная связь:

  • Режим позиционирования на 360° – в этом режиме светодиоды указывают текущую «позицию» энкодера, пользователь может поворачивать вал энкодера влево и вправо на любой угол;
  • Режим «Громкость/Уровень» – в этом режиме светодиоды указывают текущее значение между минимальным и максимальным уровнями диапазона ввода (как уровень громкости в аудиоустройствах);
  • Режим 3-позиционного ротационного тумблера – в этом режиме имеется только три выбираемых позиции, которые пользователь выбирает, поворачивая вал энкодера влево/вправо.

В архиве по этой ссылке находятся проект в среде MPLAB и исходным кодом на Hitech C, а также, принципиальная схема и топология печатной платы

Опубликовано в Разное

Автор: Садовой А.В.

Материал взят с журнала РАДИО 2007, №10

Ну вот и настало то время, когда и мне пришлось взяться за изучение МК. К этому подвинула статья Автоматическое ЗУ на Atmega16A Тут и без всякого раздумья стало понятно, что нужно срочно собирать программатор. Листая журнал РАДИО, нашел приемлемую схему для себя. Ниже приводится описание с журнала.

   Предлагаемый программатор работает под управлением программы PonyProg [1], распространяемой бесплатно. Если ограничиться программированием МК PIC и микросхем памяти, можно воспользоваться также программами IC-Prog и WinPic800, распространяемыми на тех же условиях.
   Программирование 18-выводных МК PIC и 20-выводных AVR производится без каких-либо коммутаций. Достаточно установить МК в предназначенную для него панель и выбрать его тип в меню используемой программы. От установки панелей для всех МК этих семейств автор сознательно отказался, так как в любительской практике они используются редко. При необходимости нужные панели можно установить дополнительно или подключать требующиеся для программирования выводы МК к предусмотренному в программаторе разъему. Этот же разъем используется при внутрисхемном программировании.
   Кроме МК, устройство позволяет программировать микросхемы памяти с последовательным интерфейсом, имеющиеся в меню используемых программ. Для подобных программ с интерфейсом I2C в программаторе предусмотрена панель.
   До начала процесса программирования и по его завершении напряжение питания программируемой микросхемы отключено, что дает возможность безопасно установить микросхему в панель, а затем извлечь ее.
   Прежде чем рассматривать работу программатора подробно, вспомним некоторые особенности программирования МК семейств PIC и AVR. Номера упоминаемых далее выводов МК различных можно найти в технической документации.
   Чтобы перевести в режим программирования МК семейств PIC, требуется подать на его вывод MCLR напряжение +12…14 В. Обмен информацией с устройством, управляющим программированием, происходит через двунаправленный вывод DATA. Синхронизирующие импульсы обмен импульсы поступают на вывод CLOCK.
   МК семейства AVR повышенного напряжения не требуют. Они переходят в режим программирования при низком логическом уровне на выводе RESET. При этом необходимо, чтобы к соответствующим выводам МК был подключен кварцевый резонатор. Информация принимается через вывод MOSI, а передается через вывод MISO. Вход синхронизирующих импульсов – вывод SCK.
   Схема программатора изображена на рис. 1. Ее наиболее существенное отличие от прототипа [1] заключается в использовании для связи с COM-портом компьютера микросхемы МАХ232СРЕ (DA2) – специализированного преобразователя уровней RS232 – ТТЛ. Это позволило выполнить все требования по уровням передаваемых сигналов и нагрузочной способности линий порта и значительно улучшило надежность работы устройства.

shema1

   Чтобы излишне не нагружать COM-порт, предусмотрено питание программатора и программируемой микросхемы только от внешнего источника. Его постоянное напряжение (15 В) или переменное (10…12 В) напряжение поступает в программатор через диодный мост VD1, служащий выпрямителем переменного напряжения или приводящий постоянное к правильной полярности.
   Интегральный стабилизатор DA1 питает напряжением 5 В преобразователь уровней DA2. Светодиод HL1 сигнализирует о включении питания. Стабилизатор DA3 на 12 В – управляемый. Он включен при высоком логическом уровне напряжения на управляющем входе 4 и выключен при низком уровне. Это свойство использовано для управления напряжением, переводящим МК семейства PIC в режим программирования, и напряжением питания программируемой микросхемы, которое получают из 12 В с помощью интегрального стабилизатора DA4. О включенном питании программируемой микросхемы сигнализирует светодиод HL2.
   Очень важен правильный выбор емкости конденсатора С7 на выходе стабилизатора DA3. При слишком большом значении напряжение, переводящее МК семейства PIC в режим программирования, после включения стабилизатора будет нарастать недостаточно быстро, что приведет к сбою. Устанавливать конденсатор С7 слишком маленькой емкости или вовсе отказаться от него нельзя – это приведет к самовозбуждению стабилизатора и сделает программирование невозможным.
   Диод VD2 ограничивает до безопасного значения отрицательное напряжение, которое может поступить на управляющий вход стабилизатора DA3 с контакта 3 разъема XS1 (линии TXD COM-порта). Узел на транзисторе VT2 формирует сигнала RESET для МК семейства AVR.
   Узел на транзисторах VT1 и VT3 разделяет имеющуюся в МК семейства PIC двунаправленную линию DATA на две однонаправленных для компьютера. Под названиями MOSI и MISO эти же однонаправленные линии используются при программировании МК семейства AVR.
   Для аналогичного преобразования в [1] был применен логический инвертор на одном транзисторе. Однако его практическое использование выявило довольно большое число сбоев, причина которых, по мнению автора, - недостаточная задержка информационного сигнала на линии DATA относительно синхронизирующего на линии CLOCK. Добавление второго инвертора увеличило задержку и устранило сбои, однако «лишнюю» инверсию приходится компенсировать соответствующей настройкой управляющей программы, о чем будет сказано далее.
   Используя для управления программированием программу PonyProg, следует выбрать в соответствующем ее окне программатор «SI Prog I/O» и задать инверсию сигналов в соответствии с табл. 1. Программа WinPic при работе в ОС windows XP позволяет программировать только МК семейства PIC и микросхем памяти. Однако в ОС Windows 98 МК этой программой не программируются. С программой IC-Prog ситуация обратная. При настройке обеих программ должен быть выбран программатор “JDM Programmer”. Инверсию сигналов задают в соответствии с табл. 2. (для WinPic) и табл. 3. (для IC-Prog).

tabl

tabl1

   Наличие нескольких во многом равноценных управляющих программ дает возможность пользоваться программатором даже при возникновении проблем в работе с одной из них. Например, МК, отсутствующий в списке доступных одной программе, может быть найден в списке другой.
   Так случилось при попытке запрограммировать МК PIC16F628A. В списке программы PonyProg имеется лишь PIC16F628 на экране монитора появляется сообщение «Неизвестный тип микроконтроллера». Даже если проигнорировать это сообщение, попытки не только запрограммировать, но и просто прочитать содержимое памяти МК положительного результата не дают. Однако в списках программ WinPic800 и IC-Prog нужный МК есть, его программирование с помощью этих программ выполняется без замечаний.

ЛИТЕРАТУРА

1. Lanconelly C. PonyProg – serial device programmer 
2. Gijzen B. IC-Prog Prototype Programmer 
3. Font S. Software for PIC programming Windows 95/98/NT/2000/ME/XP compatible 

Все ясно и понятно как "божий день", остается за малым, а может быть не малым, воплотить все дела паяльником. Далее привожу фото-обзор как я создавал программатор:

1

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

2

3

При сборке предыдущей статьи Светодинамическое устройство "LED-подарок девушке" как то подумал "а что если покрасить плату в черный цвет?" смотрится креативненько))) плату покрасил и в этот раз.

4

 

5

Вот и собрал. В отличии от оргинала, не стал впаивать панельки под МК, а впаял разъем в виде "штырьков" без понятия как они называются правильно))) Разъем для подключения адаптера с переменкой 15 В использовал от модема TP-Link и выключатель питания от него же. Диодный мост взял КЦ407.

6

 

7

8

Подписал разъем

11

 

Настало время проверить. Установил прогу PonyProg, запустил ее, появилось окно в котором требуется "...произвести калибровку". Жмем "Yes" 

12

 

"Калибровка завершена"

13

 

"Настройка платы программатора" находится в верхнем меню "Установка". Жмем "Проверка" если все нормально, то появится окошко "Тест Ок"

Теперь можно записывать или считывать прошивку с МК или микросхем памяти. Как раз на работу принесли усилок фирмы BBK вот понадобилось проверить микруху памяти 24С02. Подключил микруху к соответствующим выводам на разъеме, подключил программатор к COM-порту компа, включил питание, считал/записал прошивку вот и все. Так же проверил микруху 24С04 все работает. МК PIC и AVR еще не проверял, но т.к. нужно потихоньку собирать ЗУ на Atmega16A скоро будем "шить" )))

Опубликовано в Устройства на AVR PIC
Пятница, 09 сентября 2011 11:26

Программатор для AVR, PIC, I2CEPROM

Работает с любым COM-портом, не перегружая по току COM-порт компьютера, так как MAX232 не представляет опасности для COM-порта.

  • Поддерживается распространёнными программами IC-PROG, Pony Prog и другими, как программатор JDM.
  • Программатор подключается к COM-порту компьютера, через стандартный кабель-удлинитель COM-порта (DB9M - DB9F) или непосредственно к конвертору USB – COM.
  • Для питания программатора должен использоваться стабилизированный источник питания напряжением от +16v до +24,0v.
  • На плате программатора имеются светодиоды, указывающие режим работы программатора (POWER, VPP, RXD и TXD).
  • Разъёмы для шлейфов ICSP.
  • Правильно собранный программатор не нуждается в настройке и начинает работать сразу.

progAVR PIC image001

progAVR PIC image002

Для корректной установки программы IC-PROG, на компьютер под управлением Windows XP, ознакомьтесь с файлом ic-prog.pdf.

 

Опубликовано в Устройства на AVR PIC
Суббота, 08 января 2011 18:36

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

PIC - это programmable integrated circuit, "программируемая интегральная схема" - так фирма Microchip преподносит свои микроконтроллеры.


Фирма микрочип на данный момент выпускает несколько семейств КМОП микроконтроллеров с внутренним ПЗУ, ОЗУ, таймерами, АЦП, ШИМ и другими периферийными модулями. Самые маленькие это PIC10 -3–6 вывода, PIC12 - 8 выводов, PIC16- 14-68 выводов, PIC17- 40-84 вывода, PIC18- 28-84 вывода, dsPIC30-28-64 вывода, rfPIC12- 18-20 выводов, со встроенным радиоканалом. Каждое семейство имеет свое назначение и область применения.

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

Идентифицируют тип микроконтроллера согласно коду, следующему за семейством. То есть в обозначении идут буквы указывающие на тип памяти программ : EPROM- обозначается индексом “С”, ROM- обозначается индексом “CR”, FLASH- обозначается индексом «F». Если перед этими буквами стоит индекс “L” то это означает что данный микроконтроллер работает в расширенном диапазоне питания .

Например, PIC16LF

Далее идет порядковый номер разработки, 2-4 цифры.
Например, 84 - вроде как модель.
Буква A после номера - модификация (улучшенный вариант)

Следующие 2 цифры после номера через дефис обозначают максимальную частоту кварцевого генератора в мГц.
Например, 04 - максимальная паспортная тактовая частота (4MHz)

Последующая буква за тактовой частотой - означает рабочую температуру кристалла
I=-40°C...+85°C,
E=-40°C...+125°C,
при отсутствии буквы = 0°C...+70°C.
И, наконец, последние буквы через косую черту - обозначают тип корпуса табл1.
Например, PIC16F873-20/P - означает микроконтроллер фирмы микрочип среднего семейства, с FLASH памятью программ (многократное перепрограммирование порядка 1000 циклов), максимальная частота кварца 20мГц, рабочий диапазон температур 0°C...+70°C, корпус пластиковый типа DIP.

L PLCC (пластиковый выводной кристаллоноситель)
P пластиковый DIP
S кристалл в ячеистой упаковке
W кристалл в форме пластины
MR микромодуль на ленте, 8 контактный, 35 мм
MT микромодуль на подносе, 8 контактный
OT SOT-23, 5 контактный
SL SO 150 mil, 14 выводный
SM SO 207 mil, 8 выводный
SN SO 150 mil, 8 выводный
SO SOIC 300 mil
SS пластиковый узкий SSOP
ST тонкий узкий SO (4.4 мм)
TO пластиковый транзисторный, 3 выводный
TS тонкий SO (8x20 мм)
TT маленький пластиковый транзисторный, 3 выводный
VS очень маленький SO (8x12 мм)
WF нарезанная пластина
CL CERQUAD с окошком
JW CERDIP с окошком для УФ стирания
PQ PQFP (пластиковый, квадратный, плоский)
PT TQFP (тонкий, пластиковый, квадратный, плоский)
SP пластиковый DIP
SB COB (кристалл на плате)



СИСТЕМА КОМАНД PIC МИКРОКОНТРОЛЛЕРОВ

- содержит 35 инструкций, полный список приведен в табл.2. Команды разделены на три группы: байт ориентированные, бит ориентированные, команды управления и операций с константами.


Табл.2

Мнемоника команды Описание Циклов Изм. флаги
Байт ориентированные команды
ADDWF f,d Сложение W и f 1 C,DC,Z
ANDWF f,d Побитное 'И' W и f 1 z
CLRF f Очистить f 1 z
CLRW> Очистить W 1 z
COMF f,d Инвертировать f 1 z
DECF f,d Вычесть 1 из f 1 z
DECFSZ f,d Вычесть 1 из f и пропустить если 0 1(2)  
INCF f,d Прибавить 1 Kf 1 z
INCFSZ f,d Прибавить 1 к f и пропустить если 0 1(2)  
IORWF f,d Побитное 'ИЛИ' W и f 1 z
MOVF f,d Переслать f 1 z
MOVWF f Переслать W в f 1  
NOP Нет операции 1  
RLF f,d Циклический сдвиг f влево через перенос 1 с
RRF f,d Циклический сдвиг f вправо через перенос 1 с
SUBWF f,d Вычесть W из f 1 C.DC.Z
SWAPF f,d Поменять местами полубайты в регистре f 1  
XORWF f,d Побитное исключающее ИЛИ1 W и f 1 z
Бит ориентированные команды
BCF f,b Очистить бит b в регистре f 1  
BSF f,b Установить бит b в регистре f 1  
BTFSC f,b Проверить бит b в регистре f, пропустить если 0 1(2)  
BTFSS f,b Проверить бит b в регистре f, пропустить если 1 1(2)  
Команды управления и операций с константами
ADDLW k Сложить константу с W 1 C,DC,Z
ANDLW k Побитное 'И' константы и W 1 Z
CALL k Вызов подпрограммы 2  
CLRWDT Очистить WDT 1 -TO,-PD
GOTO k Безусловный переход 2
IORLW k Побитное 'ИЛИ' константы и W 1 Z
MOVLW k Переслать константу в W 1  
RETFIE Возврат из подпрограммы с разрешением прерываний 2  
RETLW k Возврат из подпрограммы с загрузкой константы в W 2  
RETURN Возврат из подпрограммы 2  
SLEEP Перейти в режим SLEEP 1 -TO.-PD
SUBLW k Вычесть W из константы 1 C,DC,Z
XORLW k Побитное 'исключающее ИЛИ' константы и W 1 Z




В таблице:
w -означает рабочий регистр, в некоторых микроконтроллерах данный регистр называют аккумулятором. Например при выполнении команды над регистром w и константой результат будет помещен в w (аккумулятор).
f – означает адрес регистра.
d –указатель адресата результата операции, при d=0 –результат сохраняется в регистре w, при d=1 –результат сохраняется в регистре f. В кодах программы вместо d иногда напрямую указывают регистр f или w.
b – номер бита в 8 –разрядном регистре.
k – константа, под которой понимается метка или 8 –разрядные данные.
C – флаг признака переноса.
DC- флаг признака вспомогательного переноса из младшего полубайта в старший.
Z – флаг признака нулевого результата, выполненной арифметической или логической операции.
–TO=1 – флаг выполнения команды clrwdt, sleep или включено питание,
–TO=0 – сработал wdt .
–PD=1 - флаг выполнения команды clrwdt или включено питание,
–PD=0 – выполнена команда sleep .

Опубликовано в Устройства на AVR PIC
 

Топ

ТЕЛЕФОННАЯ…

Приставка-спикерфон предназначена для громкоговорящей телефонной связи. Занятие линии АТС…

Управление…

Автор разработал программу и устройство для управления различными электро и…

Импульсный…

Импульсный преобразователь сетевого напряжения Применение импульсного преобразователя…

Вольтамперметр на…

Pахотел повторить, но буржуй просил за прошитый МК 14 евро, было принято решения догнать…

Программатор PicKit2

PICkit 2 это простой USB программатор для микроконтроллеров PIC, микросхем памяти и…

Импульсный блок…

Импульсный блок питания 180Вт Мощность блока питания — около 180 Вт, выходное напряжение…

Эмулятор ключей…

Назначение. Устройство предназначено для считывания, хранения и эмуляции ключей домофонов…

Ремонт импульсного…

Вскрытие корпуса БП:Начинаем проверку, особо обращая внимание на поврежденные, изменившие…

ЛЕГЕНДАРНАЯ «СДУ С…

В 1984 году журнал РАДИО опубликовал схему СДУ, в которой использовался принцип цифрового…

ИНДИКАТОР УРОВНЯ…

Принципиальная схема индикатора показана на рисунке. Эта схема использовалась для…

Голосовой монитор…

Голосовой монитор (далее – монитор) предназначен для контроля телефонной линии или…

ТАЙМЕР, УПРАВЛЯЮЩИЙ…

В теме представлено таймерное устройство, управляющее освещением багажника ВАЗ-2114, но…