Выберите язык

Валкодер - устройство, меняющее какую-то величину в зависимости от поворота оси. Такая штука водится, например, в роликовой мыши или в музыкальном центре. Собственно, сам по себе валкодер довольно прост, но мы усложним задачу тем, что не будем использовать микроконтроллер, как это практикуется во всех промышленных образцах. Валкодер интересен тем, что в нем переплетаются очень многие приемы, применяемые в цифровой и аналоговой электронике. Итак ТЗ: разработать устройство, изменяющее выходное напряжение в диапазоне 0 - 3В, в линейной зависимости от угла поворота оси. Изменение напряжение должно быть реверсивным, с количеством градаций не менее 80. Выходной сигнал ложен быть изолирован он рабочих напряжений устройства (гальваническая развязка). Полное нарастание/спад напряжения происходит при изменении угла поворота оси от 0 до 1440 градусов (4 оборота). Устройство должно сохранять работоспособность в диапазоне питающего напряжения от 8 до 15В. Предусмотреть цифровую индикацию напряжения.

1. С чего начать?

Определим чего от нас хотят:

А. Во-первых "голова" устройства будет цифровой, т.к. будет считать импульсы, создаваемые вращающейся ручкой.
Б. Счет импульсов должен быть реверсивным, т.к. результирующая величина уменьшается и увеличивается в зависимости от направления вращения ручки.
В. Не менее 80 градаций выходного напряжения. Значит для установки напряжения нам потребуется не менее 8 бит двоичного кода (80[10] = 1010000 [2]). 80 градаций за 4 оборота, значит за оборот, ручка должна выдавать 20 импульсов. По одному импульсу через каждые 18 градусов.
Г. Для гальванической отвязки выходного напряжения, в преобразовательном каскаде (цифровой --> аналоговый) нужно будет использовать оптроны.
Д. При заявленном напряжении питания работают микросхемы серий К561 и 564.
Е. Цифровая индикация - простой узел, но потребуется еще 2 дешифратора в 7-и сегментный код.

2. Теперь попробуем описать алгоритм работы

  • При включении на выходе 0.
  • ЕСЛИ на выходе 0 И есть импульс с датчика И ручка поворачивается по часовой стрелке - добавить 1 в выходной код.
  • ЕСЛИ на выходе 0 И есть импульс с датчика И ручка поворачивается против часовой стрелки- не выполнять никаких действий
  • ЕСЛИ на выходе 1010000 И есть импульс с датчика И ручка поворачивается по часовой стрелке- не выполнять никаких действий
  • ЕСЛИ на выходе 1010000 И есть импульс с датчика И ручка поворачивается против часовой стрелки- вычесть 1 из выходного кода
  • ЕСЛИ на выходе число отличное от 0 и 1010000 И есть импульс с датчика И ручка поворачивается по часовой стрелке - добавить 1 в выходной код
  • ЕСЛИ на выходе число отличное от 0 и 1010000 И есть импульс с датчика И ручка поворачивается против часовой стрелки - вычесть 1 из выходного кода.
  • ЕСЛИ нет импульса с датчика - не выполнять никаких действий.

3. Составим блок-схему устройства

Очевидно, что механическая часть должна сообщать как о самом вращении, так и о его направлении. Значит датчик должен выдавать 2 сигнала. В результате получается, что устройство должно состоять из реверсивного счетчика, блока согласования-развязки и цифро-аналогового преобразователя.

Валкодер

Согласователь должен выводить сигнал о переполнении и запрещать счетчику складывать (если получен максимум) или вычитать (если получен минимум).

4. Конструируем датчик

Воды вылито достаточно, теперь можно говорить более предметно. Механика зависит от электроники, а электроника от механики, поэтому рассмотрим датчик как единое целое. Вполне понятно, что использовать оптический датчик гораздо удобнее, нежели контактный, значит мы пришли к перфорированному колесу. Получить импульсы проще простого, осталось определить направление вращения. Есть два пути: использовать две оптопары (излучатель + приемник) расположив их таким образом, что освещается сначала один приемник, а затем второй. Либо использовать заслонку, скользящую на той же оси, что и колесо (момент, создаваемый осью, должен превышать массу заслонки и она не должна поворачиваться под собственной тяжестью).

Эта заслонка поворачивается синхронно с колесом на определенный угол (не более 4,5 градусов в обе стороны) и открывает/заслоняет дополнительный (стробирующий) фотоприемник. Этот вариант сильно усложняет механику, хотя весьма прост в схемотехнической реализации (логическая схема "И"), поэтому вернемся к первому варианту. Теперь прикинем временные эпюры сигналов, создаваемых датчиком.

Валкодер

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

Валкодер 

Предположим, колесо (3) вращается по часовой стрелке вокруг оси (2). Когда отверстие (1) подходит к оптопарам, Сначала освещается правый приемник (5), затем оба, затем только левый (4). И это повторяется 20 раз за один оборот. Из приведенных эпюр видно, что на заднем фронте импульса с правого приемника формируется некий стробирующий сигнал. На нем мы и будем строить результирующий сигнал датчика: во-первых, он генерируется в единственном экземпляре при освещении приемников, во-вторых, он прекрасно характеризует направление вращения.

Совпадая с импульсом левого датчика при вращении по часовой стрелке, он дает возможность выделить положительный импульс при помощи логического элемента "И". Для получения этого чудо-импульса нам понадобится одновибратор для получения нужной длительности. Исходный фронт отрицательный, поэтому его нужно инвертировать. Попробуем набросать схему: петля ООС одновибратора рассчитывается исходя из максимальной частоты вращения колеса - длительность стробирующего импульса не должна превышать 1/4 периода "правого" сигнала. Цепочка С1R4 рассчитывается исходя из того, что формируемый ею импульс должен составлять 0,1Тстр.

Валкодер

5. Построим самый простой блок в устройстве - счетчик

Хотел нарисовать схему на триггерах, но это показалось мне совсем уж чудовищным глумлением над электроникой. Если интересно, схему реверсивного счетчика на триггерах можно найти в любом справочнике по цифровым микросхемам. Поэтому наша задача сводится к выбору стандартного счетчика из традиционных серий КМОП. Итак, определим требования к счетчику:

  • Напряжение питания 8-15В
  • Реверс

Таким условиям удовлетворяет К561ИЕ14

Валкодер

Как видно на картинке, у счетчика есть входы предустановки. При помощи этих входов мы можем быстро выставлять на выходе необходимое напряжение, вызывая из внешнего ОЗУ соответствующий код. Разумеется в ОЗУ должен быть создан некий банк сохраненных уровней. В ТЗ не оговорена такая возможность, поэтому используем входы предустановки для сброса. Так же есть вход запрещения счета (РО). Но использовать его для защиты валкодера от переполнения не получится. Дело в том, что этот вход вовсе блокирует считчик и не дает ему считать даже в свободном направлении, а нам нужно, чтобы при достижении критического уровня в одном направлении, свободное направление оставалось свободным. Поэтому сигнал переполнения мы выделим после дешифратора. Этим сигналом мы будем стробировать вход "С".

Валкодер

6. Теперь можно заняться сравнительно простыми, но громоздкими узлами - дешифратором и цифро-аналоговым преобразователем (ЦАП)

Вот таким, например, у меня получился дешифратор. Ничего хитрого: массовые дешифраторы и транзисторные ключи для управления оптронами и полупроводниковыми индикаторами СИД-ОА. Дешифраторы вполне традиционные: К561ИД1 - преобразователь двоичного кода в десятичный и К561ИД4 - преобразователь двоичного кода в семисегментный.

Валкодер

ЦАП будет построен подобным образом. Единственный тонкий момент - определение диапазонов. Сопоставление границ регулировки десяткам и единицам. У нас 7 десятков и 10 единиц. Разделим полное выходное напряжение на 80 градаций: получается 0,04. Умножим на 10 - получается 0,4. Значит, единичный разряд регулирует напряжение в пределах 400мВ. Следовательно, оставшиеся 2,6В управляются десятками. Теперь осталось только подобрать резисторы, переключаемые оптронными ключами и, с их помощью, выстроить нужную шкалу регулировки.

Валкодер

Вот такое получилось.

Автор: Павел А. Улитин (Soundoverlord); Публикация: www.cxem.net