Виберіть свою мову

Валкодер - пристрій, що змінює якусь величину в залежно від повороту осі. Така штука водиться, наприклад, в роликовій миші чи музичному центрі. Власне, сам по собі валкодер досить простий, але ми ускладнимо завдання тим, що не будемо використовувати мікроконтроллер, як це практикується у всіх промислових зразках. Валкодер цікавий тим, що в ньому переплітаються дуже багато прийомів, що застосовуються в цифровий і аналогової електроніці. Отже ТЗ: розробити пристрій, що змінює вихідну напругу в діапазоні 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