Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Урок 16. Работа с энкодером в BASCOM-AVR

В этом уроке мы узнаем что такое энкодер, для чего он и как с ним работать в BASCOM-AVR. И так, что же такое энкодер? С виду энкодер очень похож на переменный резистор, но работает он по другому. Дело в том что энкодер можно вращать бесконечно, получая на выходе импульсы разной длинны, по которым можно определить в какую сторону его вращают. Это позволяет очень точно определить угол поворота энкодера, именно поэтому энкодеры нашли своё применение в серводвигателях. Также вы могли заметить энкодеры в бытовой технике, там где надо быстро и точно изменять какой либо параметр, например регулировка громкости в музыкальном центре. Как же работает энкодер? У энкодера есть три вывода A, B и общий, в принципе изнутри его можно представить как две кнопки которые последовательно подключены. При повороте энкодера в одну сторону, сначала возникает импульс на выводе A, потом с опозданием на выводе B и так далее. При повороте в другую сторону происходит всё на оборот. В общем, вот так:

Работа энкодера

Теперь разберёмся как работать с энкодером в BASCOM-AVR. В баскоме есть одна хорошая команда которая организует работу с энкодером, называется эта команда Encoder. Для её работы нужно указать промежуточную переменную в формате byte, пины микроконтроллера к которым подключён энкодер (в режиме входа), метки и задержку работы энкодера. Вот так:

Промежуточная переменная = Encoder(пин энкодера A или B,  пин энкодера A или B, метка к которой перейти при повороте энкодера , метка к которой перейти при повороте энкодера  , задержка)

Пример написания:

A = Encoder(pina.0 , Pina.1 , P , L , 1)  

Приведём практический пример, поставим перед собой задачу: нам нужно узнать в какую сторону вращают энкодер и выводить данные на ЖКИ. Соберём простую схему:

Схема с применением энкодера

Схему рисовал в протеусе (прилагается проект), но там не было энкодера поэтому я его представил в виде двух кнопок подключённых к PA.0 и PA.1 соответственно. Для демонстрации я собрал схему на макетной плате с механическими контактами, вот что получилось:

mc195-3.jpg

Теперь напишем программу для микроконтроллера в BASCOM-AVR, она будет выглядеть вот так:

$regfile = "m32def.dat"
$crystal = 1000000

Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 4

Dim A As Byte

Initlcd
Cls

Porta.0 = 1
Porta.1 = 1

Do
A = Encoder(pina.0 , Pina.1 , P , L , 1)
Waitms 10
Loop

End

L:
Cls
Lcd "BpaжeЅёe і»eіo"
Return

P:
Cls
Lcd "BpaжeЅёe іѕpaіo"
Return

Ну тут всё просто. Сначало конфигурируем пины к которым подключён ЖК индикатор, потом заводим переменную A, включаем подтягивающие резисторы на PA.0 и PA.1,инициализируем ЖКИ и очещаем его. Дальше уходим в бесконечный цикл где через каждые 10 миллисекунд проверяем положение энкодера, если в это время энкодер поворачевают в лево то переходим на метку L, если в право то на метку P. И уже перейдя на метку L или P выводим на ЖКИ сторону в которую вращаем. 

Компилируем, прошиваем микроконтроллер и прошиваем следующие фьюз биты (для программы SinaProg):

Фьюзы

Прикрепленные файлы:

Теги:

Опубликована: 0 1
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (6) | Я собрал (0) | Подписаться

-1
Абрам Хренович #
Логически неверно! Энкодер стоит на месте когда пишет ВРАЩЕНИЕ. Нет вращения - пиши ОСТАНОВКА!
Как реализован русский язык на мониторе?
Ответить
+1

[Автор]
#
Это учебно-примерная программа! На ЖКИ выводится текст только тогда когда энкодер крутят, потом этот текст остаётся в памяти ЖКИ и соответственно отображается. Можно конечно усложнить программу и по остановки энкодера выводить соответствующий текст, но перед мной стояла задача сделать наглядный учебный пример работы с энкодером. На ЖКИ я выводил русский текст предварительно декодировав его в программе Rus-LCD 20*2.
Ответить
-1
Саня #
Ерунда какая то. Код не пригоден для работы в других проектах. У меня он работает, но вся остальная программа стоит колом. Это не дело. Как пример для начинающих 5+ а как пример для проекта 1-.....
Ответить
+1

[Автор]
#
Опрос энкодера происходит по команде которая в примере зацикле в операторных скобках Do Loop. Что мешает вам добавить команду опроса в свой цикл или в прерывание от таймера? Сначала разберитесь со своим кодом а потом уже говорите
Ответить
0
Александр #
Попробуйте поставить два светодиода и зажигать при вращении вправо один, при вращении влево другой.
Увидите, что команда баскома Encoder работает криво. Дисплей более инертен, вы не видите ошибки.
Ответить
0
Fedorini #
Кто подскажет, отличаются ли энкодеры EC12 от PEC12? Не могу найти ни одной модели PEC12 в продаже
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Сатфайндер Конструктор для сборки: предусилитель на лампе 6N3
вверх