Привет, Хабр! Помните олдскульные механические мышки, в которых обрезиненный стальной шарик катался по поверхности стола или специального коврика? Внутри корпуса шарик соприкасался с двумя перпендикулярными пластиковыми валиками, на которые периодически наматывалась всякая грязь. Приходилось вынимать шарик, чистить валики, доставать шарик оттуда, куда он закатился, и устанавливать его на место.

В таких мышках, а также струйных принтерах, использовались относительные оптические энкодеры. Пластиковый диск с прорезями или лента из прозрачной плёнки с непрозрачными полосками устанавливались на пути света от светодиода до фототранзистора.

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

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



Модель стиральной машины из предыдущей статьи укомплектована точно таким же моторчиком, и даже с настоящей планшайбой от CD-привода. Там он символизирует стиральный барабан, причём вертикальный, судя по алгоритмам работы. Такая стиральная машина допускает работу без водопровода с ручным заливом воды, что в сельской местности просто незаменимо.



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

▍ Не перегреется ли резистор?


Электродвигатель подключён к разъёму питания через резистор R9 сопротивлением 100 Ом. При питающем напряжении 4.91 В разность потенциалов между проводами моторчика составляет 2.75 В.



Получается падение напряжения на резисторе 2.16 В, что соответствует силе тока 21.6 мА и мощности тепловыделения 47 мВт. Это составляет 37% от допустимой мощности для металлоплёночного резистора типоразмера 0805, которая равняется 125 милливаттам.

▍ U-оптрон


Прорези обтюратора перекрывают инфракрасный луч в двух фотодатчиках U1 и U2. Датчик с маркировкой GK152 производится компанией EVERCOLORS и представляет собой транзисторную оптопару в подковообразном корпусе из чёрного пластика, прозрачного для инфракрасного излучения. Такие приборы называются U-оптронами, потому что в латинском алфавите нет буквы «П», зато есть «U».

Светодиоды фотодатчиков питаются через резисторы R1 и R3 сопротивлением по 2 килоома. Типичное прямое падение напряжения на инфракрасном светодиоде составляет 1.2 вольта. Таким образом, резистору остаётся 5 — 1.2 = 3.8 В, что соответствует току 1.9 мА. Длина волны испускаемого светодиодом излучения равняется 940 нанометрам.



Эмиттеры фототранзисторов соединены с землёй схемы, а коллекторы подтянуты к плюсу питания резисторами R2 и R4 по 10 кОм. Когда транзистор засвечен, на его коллекторе присутствует логический ноль, тогда как на коллекторе затемнённого фототранзистора наблюдается логическая единица.

▍ Продвинутый одновибратор


Сигнал PULSE1 с фотодатчика U1 поступает на входы TR- двух половинок микросхемы CD4528, обозначенной на схеме как U3.

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



Зелёным и оранжевым обведены почти одинаковые конструкции, каждая из которых содержит пару логических элементов И-НЕ.

Как мы с вами хорошо знаем, это не что иное, как самые обычные RS-триггеры с инвертирующими входами.



Логическое уравнение для входа сброса «зелёного» триггера выглядит следующим образом:

¬R1 = ¬(A|¬B);
R1 = A|¬B.

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



Вход сброса «оранжевого» триггера подключён к той же комбинации элементов НЕ и ИЛИ-НЕ в левом нижнем углу схемы, но через логический инвертор. Получается такое уравнение состояния этого входа:

¬R2 = ¬¬(A|¬B);
R2 = ¬(A|¬B) = ¬A&B.

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

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

Установка «зелёного» триггера в высокий уровень на выходе происходит при установке в логическую единицу «оранжевого» триггера через элемент «НЕ» снизу посередине схемы.

«Оранжевый» триггер отличается от «зелёного» тем, что его левый по схеме логический элемент И-НЕ является не двухвходовым, а трёхвходовым. Это означает, что у данного триггера не один, а два независимых друг от друга инвертирующих входа установки.

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

Один из упомянутых входов подключён к входу С через два логических инвертора. То есть, оба «цветных» триггера установятся в логическую единицу нулём на входе С.

Также логический ноль на входе С откроет P-канальный полевой транзистор с изолированным затвором (MOSFET) в верхней центральной части схемы. На его истоке, и соответственно, на выходе Т2, предназначенном для подключения времязадающих конденсатора и резистора, появится логическая единица.

Конденсатор мгновенно зарядится до напряжения питания. Также он зарядится до высокого логического уровня через времязадающий резистор во время простоя схемы, и разрядится только через N-канальный МОП-транзистор.

Последний откроется высоким уровнем на затворе только в случае, когда сброшены оба триггера. В противном случае, на выходе логического элемента ИЛИ-НЕ в центральной части схемы будет логический ноль.

Булевы уравнения для неинвертирующего и инвертирующего выходов одновибратора будут иметь следующий вид:

¬Q = ¬¬(Q1&T2) = Q1&T2;
Q = ¬¬¬(Q1&T2) = ¬(Q1&T2) = ¬Q1 | ¬T2.

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

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



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

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



Переход сигнала ¬R1 в низкий уровень сбросит «зелёный» триггер, а переход ¬R1 в высокий уровень сбросит «оранжевый» триггер. Логический ноль на обоих входах элемента ИЛИ-НЕ посередине схемы приведёт к высокому уровню на его выходе и открытию N-канального транзистора.

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

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

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

▍ Возвращаемся к схеме


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



Сигналы с неинвертирующего и инвертирующего выходов U3A поступают на входы данных микросхемы SN74LS173 (К555ИР15), являющейся четырёхразрядным регистром-защёлкой D-типа с тремя состояниями на выходе. Сегодня мы используем только два разряда из четырёх.

В действующем процессоре на 13 микросхемах стандартной логики мы также пользовались 4-разрядными регистрами-защёлками, но там в их качестве применены продвинутые двоичные счётчики SN74HC161N (1564ИЕ10).

По сути, регистр SN74LS173 представляет собой счетверённый синхронный D-триггер с асинхронным сбросом, к которому добавлены электронные ключи, дающие возможность переводить выходы в состояние высокого сопротивления. Иными словами, отключать их.



Логическая единица на входе асинхронного сброса ¬CR устанавливает все разряды в ноль. Сегодня мы не используем эту функцию, поэтому соответствующая ножка микросхемы просто соединена с общим проводом.



Также соединены с землёй схемы оба входа разрешения записи в регистр ¬STA и ¬STB. Таким образом, при каждом положительном фронте импульса на тактирующем входе СР содержимое, хранящееся в триггерах, будет обновляться с их входов.

Чтобы преобразовать негативный фронт синхроимпульса с фотодатчика U2 в позитивный, используется U4A — один из шести логических инверторов микросхемы HEF4069 (К1561ЛН4).

Остальные пять инверторов не используются. С таким же успехом можно было бы применить вместо целой 14-выводной микросхемы один NPN-транзистор с одним резистором в коллекторной цепи, построив классический каскад по схеме с общим эмиттером. Резистор для ограничения тока базы у нас уже есть: это R4.

А можно обойтись и без дополнительного транзисторного инвертора. Напишите в комментариях, каким образом.

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



Получаются следующие эпюры напряжений в контрольных точках платы.



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

В триггер 1D записывается логическая единица, а в 2D — логический ноль. Соответственно, включается светодиод LED2, расположенный на плате слева, а правый светодиод LED1 отключён, так как их аноды подключены к плюсу питания через 2-килоомные резисторы R7 и R8. То есть, светодиод зажигается низким уровнем напряжения на катоде.

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



Синхроимпульс приходится на время паузы между импульсами одновибратора U3A. В 1D запишется ноль, а в 2D — единица. Соответственно, загорится светодиод LED1, расположенный на плате справа, а левый LED2 не будет светить.

Ждущий мультивибратор U3B нужен затем, чтобы гасить оба светодиода, когда планшайба на валу электродвигателя не вращается. Соответственно, импульсов с фотодатчика U1 не поступает.

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

▍ Подводные камни


Авторы пособия не забыли и про две традиционные ошибки на плате. Первая из них — это отсутствующая дорожка между седьмой ножкой микросхемы CD4528 и тринадцатой ножкой 74LS173. Эту ошибку можно устранить обрезком вывода резистора, впаянным в монтажное отверстие TP5.



Вторая ошибка спрятана несколько хитрее. При подключении питания электродвигателя он не вращается, и может показаться, что он неисправен.



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

▍ Результаты и выводы


Работу налаженного устройства и процесс монтажа его компонентов на печатную плату можно наблюдать на видео.


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

А продолжительность зажигающего светодиоды импульса одновибратора имеет смысл установить на максимум, повернув шпиндель RP2 по часовой стрелке до упора. Этот ждущий мультивибратор не участвует в определении направлении вращения, а лишь управляет включением и отключением выходов регистра-защёлки 74LS173 в зависимости от того, вращается ли планшайба.

Telegram-канал со скидками, розыгрышами призов и новостями IT ?

Комментарии (21)


  1. Javian
    23.05.2024 09:24
    +1

    Флюгеры на таком принципе есть?


    1. Astroscope
      23.05.2024 09:24
      +1

      Для флюгера просится абсолютный энкодер в датчике направления ветра. А еще бы стрелочный индикатор с круговой шкалой любого в принципе устройства, стрелка которого допускает безупорное вращение по шкале или, как минимум, перекрывает полный оборот с небольшим запасом. Ладно, стрелочный индикатор еще можно попытаться эмулировать электронным, от линейки светодиодов по кругу до изображения на матричном дисплее. А вот с энкодером как быть?


    1. YMA
      23.05.2024 09:24
      +3

      Может для флюгера проще магнит + da5883? :)


      1. Astroscope
        23.05.2024 09:24
        +4

        da5883

        А его одного самого по себе недостаточно?

        магнит

        ... над веером герконов. Или оптопара из одного светодиода и веера фотодиодов. Высокое разрешение, до градуса, скажем, ведь для флюгера и близко не требуется. Достаточно куда как более грубой оценки и сектор в, скажем, 15° - а это потребует вполне разумного количества датчиков в размере аж 24шт, часто практически более чем достаточен. Немного громоздко, зато посильно для DIY и не требует никаких контроллеров - только лампочки по кругу, только хардкор.


        1. Moog_Prodigy
          23.05.2024 09:24
          +2

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


          1. R0bur
            23.05.2024 09:24
            +1

            Вот хоть убей не помню как она называлась.

            Черненко Г. Т. Простая автоматика — Л.: Детская литература, 1989.


            1. Moog_Prodigy
              23.05.2024 09:24
              +1

              Да. Это она. А я напутал) В этой книжке всего 4 положения, и энкодер щеточный еще. Значит 8 герконов скорее всего я запомнил из МРБ или Радио. Возможно даже что-то связанное с антеннами.


        1. MaFrance351
          23.05.2024 09:24
          +5

          над веером герконов

          Давным-давно, будучи в шестом классе, делал подобное. Работоспособно.

          Или оптопара из одного светодиода и веера фотодиодов.

          Или несколько оптопар и кодирующий диск с прорезями.


        1. Kudesnick33
          23.05.2024 09:24
          +1

          Две - три аналоговых оптопары и пазы переменного сечения. Сразу можно получить аналоговый сигнал для стрелочника. Или вращающийся трансформатор.


        1. YMA
          23.05.2024 09:24
          +2

          Веер герконов или фотодиоды будут банально дороже, и к ним нужна еще будет обвязка для дальнейшей передачи этих данных. А тут 1 микросхема, которая сразу по i2c отдает данные. :-Р


          1. Astroscope
            23.05.2024 09:24
            +1

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


    1. VT100
      23.05.2024 09:24
      +1

      Стр. 78, "Магнитоимпульсный анеморумбометр".


  1. snuk182
    23.05.2024 09:24
    +6

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


    1. NeoNN
      23.05.2024 09:24
      +3

      Да ладно, открыть удерживающее кольцо и ролики ногтем поскрести - это частый тщательный уход?


      1. MaFrance351
        23.05.2024 09:24
        +3

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


      1. snuk182
        23.05.2024 09:24
        +1

        Никогда настолько просто не чистилось. Обычно там волосы, сопли какие-то, пыли ведро.


  1. voldemar_d
    23.05.2024 09:24
    +2

    Почему-то вспомнился прайс сисадмина:

    Исправление вашей "сломанной" мышки с помощью коврика $25.00

    Исправление вашей "сломанной" оптической мышки путем поворота коврика на 90 градусов $35.00

    Исправление "сломанной" мышки промывкой колесиков $50.00


    1. vesper-bot
      23.05.2024 09:24
      +3

      Не хватает (редкость была) "Исправления вашей "сломанной" беспроводной мыши перемещением приемника сигнала". Но пока был эникеем, однажды так вызвали, мышь оказалась IR а приемник сигнала спрятался за клавиатурой. Подвинул клаву, мышь забегала, юзер устыдился.


      1. YMA
        23.05.2024 09:24
        +2

        Анекдот №242381

        Со слов юзера:
        - Комп не работал. Пришел админ, воздел руки к небу, пробормотал какие-то заклинания, прокрутил мой стул 3 раза вокруг своей оси, пнул компьютер - и случилось чудо - он заработал!!!

        Со слов админа:

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


  1. SmirnoffA
    23.05.2024 09:24

    Заголовок кликбэйтный. Думал, щас наконец пойму как работает энкодер. Ни чуть не бывало!


    1. vesper-bot
      23.05.2024 09:24
      +2

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