Страница 1 из 10

COM-порт: клавиатура и другие "антикризисные" решения.

Добавлено: 09 янв 2015, 10:44
Сергей Саныч
Иногда появляется необходимость в небольшой клавиатуре или просто в наборе кнопок для управления станком в среде LinuxCNC.
Предлагаю простой вариант реализации такого устройства, подключающегося к COM-порту компьютера, практически не требующий материальных затрат.
Клавиатура имеет до 12 кнопок, которые могут быть подключены при помощи hal-файлов конфигурации к любым сигналам в LCNC.
comclav.PNG (14196 просмотров) <a class='original' href='./download/file.php?id=40063&mode=view' target=_blank>Загрузить оригинал (11.89 КБ)</a>
Схема клавиатуры содержит 12 нормально разомкнутых кнопок, включенных в матрицу 3х4, 5-6 маломощных диодов (например КД521 или 1N4148) и 4 резистора на 3-6 кОм. Подключается семипроводным кабелем или шлейфом.
Для пробы спаял макет.
макет клавиатурки.jpg (14196 просмотров) <a class='original' href='./download/file.php?id=40062&mode=view' target=_blank>Загрузить оригинал (275.43 КБ)</a>
Вот тестовый hal-файл.

Код: Выделить всё

loadrt threads  name1=base-thread period1=30000 fp1=0 name2=servo-thread period2=1000000

loadrt serport io=0x3f8
addf serport.0.read base-thread
addf serport.0.write base-thread

loadrt matrix_kb config=3x4s 
addf matrix_kb.0 servo-thread
setp matrix_kb.0.negative-logic 0

net col0 serport.0.pin-9-in  => matrix_kb.0.col-00-in
net col1 serport.0.pin-8-in  => matrix_kb.0.col-01-in
net col2 serport.0.pin-6-in  => matrix_kb.0.col-02-in
net col3 serport.0.pin-1-in  => matrix_kb.0.col-03-in
net row0 matrix_kb.0.row-00-out => serport.0.pin-4-out
net row1 matrix_kb.0.row-01-out => serport.0.pin-3-out
net row2 matrix_kb.0.row-02-out => serport.0.pin-7-out

start
Используются компоненты serport и matrix_kb
К сожалению, драйвер serport содержит ошибки, пришлось его слегка подправить.
serport.tar.bz2
(46.32 КБ) 834 скачивания
Здесь исправленный исходник и скомпилированный драйвер. Его можно просто скопировать вместо имеющегося в папку rtlib.
С драйвером, который идет в системе, работа тоже возможна, но потребуются некоторые "костыли" в hal-файле .

Компонент matrix_kb выполняет сканирование клавиатуры и выдает состояние кнопок на 12 (в данном случае) выходов matrix_kb.0.key.r0c0 - matrix_kb.0.key.r2c3 (битовые), а также номер нажатой клавиши в matrix_kb.0.keycode (целое число).
Плюсы такой клавиатуры не только в простоте устройства, но и в достаточно хорошей помехоустойчивости из-за высоких уровней сигналов, используемых в COM-порте (размах от -10 до +10 вольт)

PS: Поскольку тема вызвала некоторый интерес, буду здесь выкладывать и разные другие "бюджетные" устройства с нестандартным использованием COM-порта.
В планах:
- подключение простого свитч-энкодера (сделал)
- работа с твердотельными (есть) и обычными реле.
- ручной энкодер с выходом TTL (штурвал, маховичок) (готово).
- реализация аналоговых входов (есть).
- увеличенная клавиатура (есть).

Re: Простенькая клавиатура для пульта

Добавлено: 09 янв 2015, 11:27
nkp
Сергей Саныч писал(а):драйвер serport содержит ошибки, пришлось его слегка подправить.
может стоит сюда подправленый выложить , чтоб т.с. всё в одном месте было...
(а то потом будет трудно найти)

Re: Простенькая клавиатура для пульта

Добавлено: 09 янв 2015, 11:57
aftaev
и тему переименовать в Простенькая клавиатура для пульта по СОМ, LPT

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 09 янв 2015, 12:05
nERV
А может и медальку за это дело надо?

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 09 янв 2015, 12:52
Сергей Саныч
nkp писал(а):может стоит сюда подправленый выложить
выложил (в первое сообщение темы).

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 09 янв 2015, 14:21
jo_key
И на ВИКИ закинуть

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 11 янв 2015, 18:10
Сергей Саныч
jo_key писал(а):И на ВИКИ закинуть
Это можно :)
Продолжу. Итак, без особых затрат, с использованием реликтового COM-порта (а надо сказать, что подойдет только стандартный порт, с переходниками USB-COM работать, к сожалению, не будет) получена вполне рабочая клавиатура (или же набор разрозненных кнопок - кому как надо).
http://youtu.be/nwmI-BsS4pA
Надо, однако, сказать, что простая матричная организация не позволяет однозначно определять более двух одновременно нажатых произвольно выбранных кнопок. Чтобы не ограничивать себя в этом, можно последовательно с каждой кнопкой поставить по диоду.
COMKBD1.PNG (14085 просмотров) <a class='original' href='./download/file.php?id=40190&mode=view' target=_blank>Загрузить оригинал (15.23 КБ)</a>
Это дает еще одну приятную возможность. "Пожертвовав" частью кнопок, можно поставить какие-нибудь переключатели, состояние которых будет считываться и передаваться в LCNC. Либо контактные датчики. Или же выходные транзисторы оптопар, а уже к ним прицепить любые датчики.

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 11 янв 2015, 18:21
РЕКЛАМА
А энкодер от автомагитолы к такому можно привинтить?

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 11 янв 2015, 19:00
Ворон226
Однозначно в Вики и медальку! Спасибо! Нужная штука.

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 11 янв 2015, 19:39
Сергей Саныч
РЕКЛАМА писал(а):А энкодер от автомагитолы к такому можно привинтить?
В смысле, чтобы что-нибудь регулировать? Вроде такого?
энкодер.jpeg
энкодер.jpeg (6.06 КБ) 14060 просмотров
Так думаю, да. Надо только сориентироваться с необходимой частотой опроса. Обычно они имеют 10 - 30 импульсов на оборот, то есть 40 - 120 состояний. Частота опроса при сервоцикле 1 мс для этой схемы будет 333 Гц. В общем, если не сильно резко крутить, наверно пойдет. Будет время, завтра попробую. Идея хорошая :)

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 11 янв 2015, 19:50
nkp
Сергей Саныч писал(а):В общем, если не сильно резко крутить, наверно пойдет.
имхо пропуски то тут не страшны - мы же просто задаем некоторую величину ,которую визуально и контролируем..
ставил такие (не к ком порту конечно))

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 11 янв 2015, 21:08
Сергей Саныч
Непосредственно подключить к COM-порту проблем никаких нет, его можно прямо от base-thread синхронизировать. Тут вообще быстродействие будет не хуже, чем у LPT.
Электрически только надо правильную подтяжку организовать.

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 11 янв 2015, 23:35
nERV
Сергей Саныч писал(а): а уже к ним прицепить любые датчики.
Тогда получается, что этим же методом можно расширить количество подключаемых датчиков к компьютеру без использования дорогих контроллеров?

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 12 янв 2015, 05:06
Сергей Саныч
nERV писал(а):Тогда получается, что этим же методом можно расширить количество подключаемых датчиков к компьютеру без использования дорогих контроллеров?
Да.
Конечно, если для управления станком используются аппаратные контроллеры (Mesa и т.п.), где есть куча дополнительных входов/выходов, то смысла особого "колхозить" что-то с COM-портом нет. Но если нас в принципе устраивает управление по LPT, но хочется немного расширить возможности по управлению станком, то вариант с COM-портами может оказаться оптимальным.

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 12 янв 2015, 05:20
S500
есть у меня очень важный вопрос...
у меня на компьютере стоит 2 COM-порта.
K одному хочу подключить modbus RTU (типа PLC + частотник +++).
K другому порту если подключить эту плату.
Сергей Саныч писал(а):К сожалению, драйвер serport содержит ошибки, пришлось его слегка подправить.
если изменить этот драйвер,
тогда будет ли работать 1 порт там где находится modbus RTU (типа PLC + частотник) :thinking: .
не отразится ли на этом :thinking: .
спасибо :good: .

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 12 янв 2015, 05:32
Сергей Саныч
S500 писал(а):будет ли работать 1 порт там где находится modbus RTU (типа PLC + частотник)
Будет. К стандартному драйверу последовательного порта Linux (/dev/ttySx) претензий нет.
Изменения внесены в драйвер serport LinuxCNC. На том порте, где он будет использоваться, стандартный драйвер нужно отключить.

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 12 янв 2015, 10:09
Nick
+медалька :good:!

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 16 янв 2015, 15:28
solanto
А можно релюшки прикашачить и ими рулить или нельзя? И что на счёт энкодера? Можно подключить или нет?

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 16 янв 2015, 15:33
Сергей Саныч
Можно. И очень просто. Но об этом - чуть позже.

Re: COM-порт и простенькая клавиатура для пульта

Добавлено: 16 янв 2015, 15:35
solanto
Тогда сажусь на скамейку ждать. :eat: :beer_blow: