Клавиатура для ног - Электроника
emblem MIDI Pedalboard
English

Электроника

Принципиальня схема Электронная часть состоит из двух блоков: управляющая плата и блоки фотопрерывателей. В основе управляющей платы микроконтроллер PIC18F4550 фирмы Microchip со встроенным USB интерфейсом. Кварц X1, конденсаторы C1-C5 и резистор   R23 образуют стандартную обвязку микроконтроллера. Переключатель SW1 устанавливает канал MIDI-сообщений. Резисторы после PORTD ограничивают ток заряда ёмкостей затворов MOSFET-транзисторов, резисторная сборка RX2 подтягивает их затворы к земле.

К оставшимся выводам микроконтроллера подсоединены штыревые разъёмы ("наколки") для подключения дополнительных компонентов (например, переменного резистора, волкодера, ЖКИ и т.п.). Разъём J7 нужен для подачи питания на них.

Фотопрерыватели Напротив каждой клавиши расположен фотопрерыватель. В отпущенном состоянии шторка, прикреплённая к клавише, перекрывает его. Фотопрерыватели расположены на четырёх платах по восемь штук. На каждой плате имеется разъём питания, а также разъём для считывания состояний прерывателей. Цепь "+5В" напрямую соединена с цепью VCC основной платы, а вот "земля" каждой восьмёрки доходит до основной "земли" через MOSFET-транзистор. Это позволяет подключать платы по очереди.

На риснке слева – схема подключения трёх прерывателей одной группы.

Сами фототранзисторы эмитерами подключены к земле соответствующей платы, а коллекторами – к выходному разъёму. Эти разъёмы всех четырёх плат при помощи шлейфа пдключены к PORTB микроконтроллера. Т.о., если на одну из плат подано питание (т.е. открыт MOSFET-транзистор, к которому она подключена), и нажата клавиша, т.е. шторки нет, то фототранзистор "притягивает" соответствующую ногу PORTB к земле. Если же клавиша отпущена, и шторка перекрывает поток света, то транзистор закрыт и на ноге PORTB единица.

Сканирование клавиш У фотопрерывателей есть важная особенность: если шторки нет, то при подаче питания на светодод транзистор открывается не сразу, а с задержкой порядка 0,5мс. Поэтому, если считывать состояние PORTB сразу после включения очередной восьмёрки прерывателей, есть опасность "не увидить" нажатия некоторых клавиш (фототранзистор будет ещё закрыт и на ноге PORTB будет 1, как будто клавиша отпущена). Чтобы этого не происходило, нужно считывать PORTB через 1мс после подключения очередной платы. Попутно заметим, что 1мс для микроконтроллера на 20МГц - это 20 000 000 / 4 / 1000 = 5000 операций, поэтому можно использовать это время для обработки состояния PORTB и отправки данных.

Алгоритм работы

При включении PORTB настроен на вход, PORTD на выход, свободные биты PORTC на вход. 0-й бит PORTD устанавливается в 1, после чего выдерживается пауза 1мс. Далее считывается состояние PORTB, а 1 в PORTD перебрасывается в следующий бит, причем по кольцу, т.е. после 3-го бита она перейдёт в 0-й. После этого сбрасываем таймер. Теперь происходит анализ содержимого PORTB (которое было считано ранее, до изменения PORTD). Если i-й бит PORTB изменил своё состояние (относительно предыдущего опроса этой восьмёрки перывателей) с 1 на 0, значит клавишу нажали, если с 0 на 1 – отпустили. В этом случае пробуем послать данные по USB. Если данные ушли, то запоминаем это. Если после проверки всех восьми битов остались непосланные данные, то "уходим на второй круг" и пробуем послать сообщения для клавиш, чьи данные не были отправлены. Если же все клавиши обработаны, то ждём, пока дотикает 1мс с момента подключения следующей восьмёрки, считываем PORTB, перебрасываем единицу в следующий бит PORTD и так далее в бесконечном цикле.

Нужно пояснить, что значит "ждём 1 мс". Все пользовательские действия находятся в процедуре ServiceRequests, которую периодически вызывает главная программа контроллера. Эта программа занимается также обработкой самого протокола USB, так что сильно задерживаться в процедуре ServiceRequests нельзя. Поэтому в процессе "ожидания" при каждом входе в ServiceRequests мы проверяем, прошла ли 1мс с нужного момента, и выходим, если это не так.

Конструкция

Основная плата собрана на куске одностороннего стеклотекстолита 84х74мм. Платы с фотопрерывателями выпиливаются из одного куска размером 282х162мм. Для соединения фотопрерывателей с основной платой используется два 16-жильных шлейфа. На первый надеваются пять колодок IDC-16F, четыре из которых присоединяются к платам прерывателей, а пятая - к разъёму J1 основной платы.

Обработка плоского кабеля Второй шлейф разделяется на полоски по два провода. Каждая пара проводов заделывается в разъём BLS-2, который присоединяется к питанию плат прерывателей. Обратите внимание, что все "пары" проводов разной длины. Важно не перепутать, с какой стороны делать длинный, а с какой - которкий (я перепутал – пришлось переворачивать шлейф).

Файлы

progr.zip - проект MPLAB.

pcb.zip - проект PROTEUS.

main.pdf - основная плата, файл для ЛУТ

phints.pdf - платы прерывателей, файл для ЛУТ.

parts.pdf - карта монтажа

15.02.14
Фотографии совсем новых пружин

20.05.10
Фотографии новых пружин

20.05.10
Фотографии педали crescendo

18.05.10
Добавил гостевую книгу