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

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

Добавлено: 16 фев 2015, 11:22
Сергей Саныч
solo писал(а):о так это наверное можно термисторы прилепить к такой штучке , чтобы читать и регулировать температуру для 3д принтера , на базе LCNC
Можно. Хотя бы так http://www.electrik.org/modules/Static_ ... l-t-f.html

Можно даже проще, поскольку линеаризацию характеристики термистора можно сделать и программно.
PS: Хотя там, наверно не термистор, а термопара или металлический термометр сопротивления. Схема будет посложнее, но не очень.

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

Добавлено: 18 фев 2015, 12:40
Сергей Саныч
Еще одна клавиатура. Аж до 32 кнопок.
comkbd32.PNG (5347 просмотров) <a class='original' href='./download/file.php?id=43380&mode=view' target=_blank>Загрузить оригинал (26.5 КБ)</a>
Кнопки организованы в матрицу 8 на 4. Чтобы всё это хозяйство сканировать, нужно 8 выходов, а у COM-порта их только три. Поэтому поступим так. Средствами hal свернем сканирующий код в двоичный, а потом раскодируем его обратно аппаратным дешифратором.
В качестве дешифратора возьмем мультиплексор CD4051 (наш аналог - КР1561КП2). Эта микросхема удобна следующим:
- во-первых, коммутируемые сигналы проходят непосредственно со входа на выход и обратно через аналоговые КМОП-ключи. Это позволяет использовать микросхему не только как цифровой и аналоговый мультиплексор 8 сигналов на один выход, но и как дешифратор 3-битного двоичного кода в код "один из восьми".
- во-вторых, напряжение питания этой серии и амплитуда входных/выходных может достигать 20 вольт, что позволяет непосредственно работать с уровнями сигналов RS232 (-10..+10В).
- в третьих, ток потребления очень мал, что дает возможность организовать питание от сигналов порта. Цепь питания организована состоит из диодов D1..D6, конденсаторов С1 и C2, а также стабилитронов D7 и D8, ограничивающих напряжение до 18В. Токоограничивающих резисторов нет, поскольку они полагаются передатчикам порта по стандарту RS232.

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

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

loadusr -Wn comkbd32 pyvcp -c comkbd32 comkbd32.xml

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

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

loadrt logic count=3 personality=0x204,0x204,0x204
addf logic.0 base-thread
addf logic.1 base-thread
addf logic.2 base-thread

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
net row1 matrix_kb.0.row-01-out => logic.0.in-00
net row2 matrix_kb.0.row-02-out =>               logic.1.in-00
net row3 matrix_kb.0.row-03-out => logic.0.in-01 logic.1.in-01
net row4 matrix_kb.0.row-04-out =>                             logic.2.in-00
net row5 matrix_kb.0.row-05-out => logic.0.in-02               logic.2.in-01
net row6 matrix_kb.0.row-06-out =>               logic.1.in-02 logic.2.in-02
net row7 matrix_kb.0.row-07-out => logic.0.in-03 logic.1.in-03 logic.2.in-03

net code-row1 logic.0.or => serport.0.pin-4-out
net code-row2 logic.1.or => serport.0.pin-3-out
net code-row4 logic.2.or => serport.0.pin-7-out

net led0  matrix_kb.0.key.r0c0 => comkbd32.led0
net led1  matrix_kb.0.key.r1c0 => comkbd32.led1
net led2  matrix_kb.0.key.r2c0 => comkbd32.led2
net led3  matrix_kb.0.key.r3c0 => comkbd32.led3
net led4  matrix_kb.0.key.r4c0 => comkbd32.led4
net led5  matrix_kb.0.key.r5c0 => comkbd32.led5
net led6  matrix_kb.0.key.r6c0 => comkbd32.led6
net led7  matrix_kb.0.key.r7c0 => comkbd32.led7
net led8  matrix_kb.0.key.r0c1 => comkbd32.led8
net led9  matrix_kb.0.key.r1c1 => comkbd32.led9
net led10 matrix_kb.0.key.r2c1 => comkbd32.led10
net led11 matrix_kb.0.key.r3c1 => comkbd32.led11
net led12 matrix_kb.0.key.r4c1 => comkbd32.led12
net led13 matrix_kb.0.key.r5c1 => comkbd32.led13
net led14 matrix_kb.0.key.r6c1 => comkbd32.led14
net led15 matrix_kb.0.key.r7c1 => comkbd32.led15
net led16 matrix_kb.0.key.r0c2 => comkbd32.led16
net led17 matrix_kb.0.key.r1c2 => comkbd32.led17
net led18 matrix_kb.0.key.r2c2 => comkbd32.led18
net led19 matrix_kb.0.key.r3c2 => comkbd32.led19
net led20 matrix_kb.0.key.r4c2 => comkbd32.led20
net led21 matrix_kb.0.key.r5c2 => comkbd32.led21
net led22 matrix_kb.0.key.r6c2 => comkbd32.led22
net led23 matrix_kb.0.key.r7c2 => comkbd32.led23
net led24 matrix_kb.0.key.r0c3 => comkbd32.led24
net led25 matrix_kb.0.key.r1c3 => comkbd32.led25
net led26 matrix_kb.0.key.r2c3 => comkbd32.led26
net led27 matrix_kb.0.key.r3c3 => comkbd32.led27
net led28 matrix_kb.0.key.r4c3 => comkbd32.led28
net led29 matrix_kb.0.key.r5c3 => comkbd32.led29
net led30 matrix_kb.0.key.r6c3 => comkbd32.led30
net led31 matrix_kb.0.key.r7c3 => comkbd32.led31

start
Шифратор "8-в-3" организован на трех 4-входовых элементах ИЛИ. В качестве таковых используются универсальные компоненты logic http://www.linuxcnc.org/docs/html/man/man9/logic.9.html
в режиме OR.
Чтобы убедиться в работоспособности, собрал на макетке.
P1012722_cr.jpg (5347 просмотров) <a class='original' href='./download/file.php?id=43387&mode=view' target=_blank>Загрузить оригинал (321.57 КБ)</a>

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

<!-- Test panel for the serial port simple keyboard -->
<pyvcp>
  <hbox>
    <relief>RIDGE</relief>
    <bd>2</bd>
    <label>
      <text>" 0"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led0"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>" 1"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led1"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>" 2"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led2"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>" 3"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led3"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>" 4"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led4"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>" 5"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led5"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>" 6"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led6"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>" 7"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led7"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
  </hbox>

  <hbox>
    <relief>RIDGE</relief>
    <bd>2</bd>
    <label>
      <text>" 8"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led8"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>" 9"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led9"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"10"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led10"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"11"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led11"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"12"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led12"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"13"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led13"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"14"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led14"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"15"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led15"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
  </hbox>

  <hbox>
    <relief>RIDGE</relief>
    <bd>2</bd>
    <label>
      <text>"16"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led16"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"17"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led17"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"18"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led18"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"19"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led19"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"20"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led20"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"21"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led21"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"22"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led22"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"23"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led23"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
  </hbox>

  <hbox>
    <relief>RIDGE</relief>
    <bd>2</bd>
    <label>
      <text>"24"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led24"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"25"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led25"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"26"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led26"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"27"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led27"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"28"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led28"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"29"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led29"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"30"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led30"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
    <label>
      <text>"31"</text>
      <font>("Courier",20)</font>
    </label>
    <led>
      <halpin>"led31"</halpin>
      <size>25</size>
      <on_color>"red"</on_color>
      <off_color>"black"</off_color>
    </led>
  </hbox>

</pyvcp>
P1012724_cr.png (5347 просмотров) <a class='original' href='./download/file.php?id=43386&mode=view' target=_blank>Загрузить оригинал (865.18 КБ)</a>
Если нужно использовать какие-то входы или выходы порта для других целей, количество кнопок придется сократить. Так, для пульта со штурвалом два входа порта "монопольно" отводим под энкодер, и количество кнопок сократится до 8 * 2 = 16. Что, в общем-то, тоже неплохо :)
Ну и напомню, чтобы допустимое количество одновременно замкнутых контактов было больше двух, придется последовательно с каждым из них включить по диоду, как на предыдущих схемах.

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

Добавлено: 18 фев 2015, 12:53
solanto
Схемку с энкодером (штурвалом) и 16 кнопками не нарисуете?

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

Добавлено: 18 фев 2015, 13:29
Сергей Саныч
solanto писал(а):Схемку с энкодером (штурвалом) и 16 кнопками не нарисуете?
А что там рисовать? Выкидываем два нижних ряда кнопок, на освободившиеся входы порта цепляем штурвал через схему согласования уровней, как
вот здесь и практически всё.

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

Добавлено: 18 фев 2015, 13:36
solanto
На микросхему или сразу на разъем?

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

Добавлено: 18 фев 2015, 13:38
solanto
А понял. Начинаю разводку пульта под эту схемку.
Сергей Саныч писал(а):и практически всё.
А от сюда поподробнее.

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

Добавлено: 18 фев 2015, 13:47
Сергей Саныч
solanto писал(а):А от сюда поподробнее.
А что конкретно интересует?
Еще надо hal подкорректировать, питание на схему согласования подать...
В общем нарисуй, а там подправим, а то непонятно, что не понятно :) :thinking:

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

Добавлено: 18 фев 2015, 13:55
solanto
Сергей Саныч писал(а):В общем нарисуй, а там подправим, а то непонятно, что не понятно
Вечерком нарисую. А то мы так и будем играть в непанятки. :)

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

Добавлено: 18 фев 2015, 19:04
solanto
Вопрос. Вы применили в предыдущей схеме отдельный БП. Может стоит в этой схеме выкинуть диоды и стабилитроны, и использовать схему питания из той схемы из Вашей ссылки?

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

Добавлено: 18 фев 2015, 19:42
solanto
Вот набросал схемку пульта который буду делать.
пульт.jpg (5300 просмотров) <a class='original' href='./download/file.php?id=43409&mode=view' target=_blank>Загрузить оригинал (340.5 КБ)</a>

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

Добавлено: 18 фев 2015, 20:52
solanto
Сергей Саныч писал(а):я пошел по второму пути, поскольку под рукой не было гибкого кабеля на 11 проводов, зато была платка для одного устройства, где имелась разводка под необходимую схему

Питание пульта.PNG (9.03 Кб) Просмотров: 393
Выход у этой схемы 5В, GND, +9В и -9В?

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

Добавлено: 18 фев 2015, 21:48
Сергей Саныч
solanto писал(а):Выход у этой схемы 5В, GND, +9В и -9В?
Да.

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

Добавлено: 18 фев 2015, 22:28
solanto
Тогда я думаю в последней схеме, что Вы привадили можно убрать диодный мост и стабилитроны и запитать всю схемку от отдельного преобразователя.

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

Добавлено: 19 фев 2015, 05:43
Сергей Саныч
solanto писал(а):можно убрать диодный мост и стабилитроны и запитать всю схемку от отдельного преобразователя.
В принципе, можно, но есть нюанс - напряжения на входах 4051 не должны выходить за пределы напряжений питания больше, чем на 0,5В. Поэтому, если совсем уж "по честному" делать, диоды надо брать Шоттки, у них падение меньше. Либо ставить на входы делители.
Можно, наоборот, запитать преобразователь уровней от того же моста, но надо какую-нибудь другую схему вместо CD1488 - она довольно-таки прожорливая, порт может ее не потянуть.
Кстати, я не понял, зачем на схеме выходы незадействованных элементов CD1488 соединены со входами? У нее входы можно оставлять в обрыве, либо на общий (GND) посадить.

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

Добавлено: 19 фев 2015, 07:41
solanto
Сергей Саныч писал(а):Кстати, я не понял, зачем на схеме выходы незадействованных элементов CD1488 соединены со входами?
Я хотел таким образом минимизировать шумы в СD1488 из-за наводок на эти самые свободные входы/выходы. но если можно кинуть все свободные входы-выходы на землю, то я так и сделаю.
Сергей Саныч писал(а):она довольно-таки прожорливая, порт может ее не потянуть.
Я наоборот хочу запитать не от порта а от другого источника. Ведь для шатла итак надо отдельное питание тянуть, так почему же не запитать заодно от отдельного источника и бое эти МС?

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

Добавлено: 22 фев 2015, 15:01
sergey27rus
А если переключатель режимов сделать на датчиках Холла, это будит лучше чем галетный?

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

Добавлено: 22 фев 2015, 15:03
Serg
sergey27rus писал(а):А если переключатель режимов сделать на датчиках Холла, это будит лучше чем галетный?
В смысле антикризисности?.. :)

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

Добавлено: 22 фев 2015, 15:05
sergey27rus
UAVpilot писал(а):В смысле антикризисности?..
Надежности и работоспособности.

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

Добавлено: 22 фев 2015, 15:15
Serg
Для надёжности и работоспособности можно применить не только датчики Холла, но и например простенькую ардуинку - это позволит сделать практически любое количество кнопок, штурвалов и переключателей. Но боюсь, что эта тема уже будет не для этой темы... :)

P.S. А почему считаешь контакты галетника менее надёжными? Потому что не подвержены влиянию каких-либо внешних магнитных полей?.. :)

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

Добавлено: 22 фев 2015, 20:48
solanto
По мне так галетник с посеребрёнными контактами очень надёжен.