Pagina's

vrijdag 10 april 2020

Keypad

Een keypad is een klein toetsenbordje dat kan worden ingezet om keuzes te maken in menugestuurde processen, en om data in te voeren.

Als alternatieven zijn oa. joystick, drukknopjes en encoders beschikbaar, ik ik vind een keypad de meest bedieningsvriendelijke.

Nu heb ik al eens meer met keypads gewerkt. Er zijn legio typen in omloop.

Waar ik ervaring mee heb, is een keypad met 4x3 toetsen, dus zonder de letters. De toetsen hadden normale schakelcontacten, dus zeer laag-ohmig contact. Bovendien stonden alle contacten in serie, waardoor ik 13 aansluitingen ter beschikking had. Dit heeft het voordeel dat je met een simpele weerstandenbrug op één analoge ingang het keypad kon detekteren.

Dit keypad wijkt daar behoorlijk van af.
De contactweerstand is om en nabij 1000ꭥ, en bovendien niet stabiel. De contacten staan in een raster, of matrix, geschakeld. Det vereist een heel andere aanpak. Er zijn hierdoor 8 aansluitingen beschikbaar.

Allereerst ben ik bezig geweest om door middel van diverse weerstanden een weerstand op de aansluitingen te creëeren, afhankelijk van de toets die wordt ingedrukt. Daardoor zou ik dan weer op één analoge ingang het keypad kunnen uitlezen.
Maar dat viel erg tegen. De weerstand voor de analoge ingang was zó instabiel, dat ik er eigenlijk niks mee kon doen. Óf ik moest de weestanden zó hoog maken, waardoor de contactweerstand in het niet zou vallen, maar dat heb ik nieteens uitgeprobeerd. De storingsgevoeligheid zou erg toenemen met de weerstand.

Uiteindelijk heb ik een matrix-uitlezing bedacht. Daarvoor gebruik je 8 poorten van de processor, 4 ingangen, 4 uitgangen.
En dat werkt als een tierelier. Alleen, je bent gelijk 8 poorten kwijt.

Nu bestaan er ic's die van een seriele poort I2C digitale poorten kunt maken. Nou, dat leek me wel wat, zeker voor dit keypad.
Ik gebruik daarvoor een I2C naar 8 poorten ic. Ideaal leek me.

Nou, niet dus.
Op de eerste plaats lí'jken die poorten niet op die van de processor kwa eigenschappen. Uitgangen werken maar één kant op, terwijl arduino 2 kanten opwerken; poort kan dus zowel leveren als opnemen.
De ingangen hebben een heel onvoorspelbaar gedrag.
Nu heb ik natuurlijk weer het een en ander onderzocht. Nu kan je de buffer in één keer uitlezen. Daarmee reset je gelijk die buffer(!!!). Maar het lijkt wel alsof hij dat ook doet met incidentele uitlezing, ik kreeg er maar geen vat op.
Ook omdat ik voor de uitgangen een transistor-netwerkje moest bouwen, begon ik erg te twijfelen aan bijvoorbeeld die netwerkjes. Het heeft me veel tijd gekost, maar die heb ik toch genoeg......😏

Uiteindelijk heb ik toch maar gekozen voor rechtstreekse aansluiting op de processor.


Geen opmerkingen:

Een reactie posten