trust already work Аналоговое управление в микроконтроллерном устройстве. » Портал инженера

Аналоговое управление в микроконтроллерном устройстве.

А. ДОЛГИЙ, г. Москва
При конструировании микроконтроллерного устройства нередко возникает необходимость плавно изменять какой-либо параметр, например, частоту вращения двигателя, температуру, поддерживаемую термостабилизатором, порог срабатывания охранного устройства и многое другое. Способов сделать это цифровыми методами известно довольно много. Однако все они довольно сложны как в аппаратном (для ввода цифрового значения требуются кнопки, клавиатура, валкодер и другие подобные средства), так и в программном отношении. Чтобы сохранить установленное значение при выключенном питании, приходится прибегать к его записи в энергонезависимую память.
С точки зрения удобства пользования предпочтительно использовать для регулировки обыкновенный подстроечный или переменный резистор, преобразовав снимаемое с него напряжение в код. Однако усложнять ради этого разрабатываемое устройство, вводя в него АЦП, вряд ли целесообразно. Другое дело, если микроконтроллер (например, PIC12F675) имеет встроенный преобразователь. Тогда, как говорится, нет проблем.
К сожалению, АЦП есть далеко не во всех микроконтроллерах. Но и для них простое решение поставленной задачи существует — достаточно подключить переменный резистор по схеме, показанной на рисунке, к одной из двунаправленных линий порта ввода/вывода. В приведенной в таблице программе для микроконтроллеров серии PIC16 предполагается, что использован младший разряд порта В (RB0). Номиналы элементов, указанные на схеме, оптимальны при частоте тактового генератора микроконтроллера 4 МГц.

Первый после начала работы программы вызов процедуры ONESHOT — холостой. Он нужен лишь для установки высокого логического уровня на линии RB0. Благодаря этому к следующему вызову той же процедуры конденсатор C1 зарядится почти до напряжения питания.

С началом работы процедуры линия RB0 переключается на ввод и конденсатор C1 разряжается через переменный резистор R2. В цикле, начинающемся меткой TSX, программа периодически контролирует логический уровень на входе RB0, одновременно подсчитывая в регистре N число проверок. Как только конденсатор разрядится до такой степени, что будет зафиксирован логический ноль, произойдет переход на метку READY проверки прекратятся, а подпрограмма завершится переключением линии RB0 в режим выхода и установкой на ней высокого уровня.

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

где f0 — частота тактового генератора микроконтроллера. Число в знаменателе дроби может немного отличаться от указанного. Оно зависит от порога переключения использованного вывода конкретного экземпляра микросхемы. Если постоянная времени R2C1 больше допустимой, число N принимает значение 255.
Резистор R1 ограничивает зарядный ток конденсатора С1. Чтобы конденсатор успевал зарядиться полностью, интервал времени между вызовами процедуры ONESHOT должен в три-четыре раза превышать постоянную времени R1C1. Обычно это не вызывает затруднений — достаточно выполнять между вызовами несколько машинных команд.
Если вместо переменного резистора R2 применить термо- или фоторезистор, результат работы процедуры ONESHOT — число N — станет зависимым соответственно от температуры или освещенности чувствительного элемента. Ничто не мешает заменить резистор R2 и преобразователем любой другой физической величины в сопротивление или ток.
Иногда необходимо включить переменный резистор R2 или заменяющий его элемент не так, как показано на рисунке, а между выводом порта микроконтроллера и плюсом источника питания. В этом случае достаточно немного модифицировать процедуру ONESHOT, заменив в ней команду btfss PORTB,0 на btfsc PORTB,0, a bsf PORTB,0 на bcf PORTB,0.
Описанный способ аналогового управления применим и к микроконтроллерам других семейств. А например, в [1] переменный резистор был подключен к выводу порта адаптера параллельного интерфейса КР580ВВ55 для управления "перехватчиком" в одноименной игре для компьютера "Радио-86РК". Аналогичный способ преобразования "сопротивление—код" применен в адаптере игрового порта компьютера IBM PC [2] для получения информации о положении рукоятки джойстика.

ЛИТЕРАТУРА
1. Долгий А. Компьютерные игры. Перехватчик. — Радио, 1987, № 2, с. 23, 24.
2. Кармызов А. Интерфейсы IBM PC. — Радио, 1996, № 11, с. 24—26.



Обсудить на форуме

Комментарии

Добавить комментарий
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent

    Программа логического анализатора сигналов на входах COM-порта

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

    Микроконтроллерный дешифратор команд компьютера

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

    Как отформатировать Андроид

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

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

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

    Регулируемый стабилизатор тока (16В 7А)

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

    Управление шаговым двигателем

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