Matrix schakelaar in IC

Een oud idee in mijn hoofd weer eens opgepakt...
Ooit werd er verwezen naar de MT8808 / MT8816, maar dat is uiteindelijk geen echte "losse schakelaar".

Wat ik eigenlijk zoek is een IC dat echt, als een verzameling van relais, een kleine last kan schakelen, bedient door een aantal adreslijnen. Bestaat dit ook?

Het equivalent als ik het zelf zou bouwen zou een transistor + relais zijn, het relais kan (binnen grenzen) alles schakelen wat ik wil. Maar dan een in IC en bijv. een matrix van X x Y dus.

In een IC matrix is het bij mijn weten altijd een CMOS schakelaar, het vereist inderdaad wat aandacht om het gewenste signaal daar succesvol aan aan te passen. Je zag deze voeger wel in telefooncentrales.
Het zou nu met de relatief nieuwe FET optocouplers wel mogelijk zijn solid state dichter bij relais te komen dan eerder met CMOS. Maar een matrix optocouplers is niet handig in een ic te bouwen, het zou mij verbazen als het bestond.

Voor een last zoals een luidspreker of een led gebruikt men gewoonlijk een driver, en schakelt het stuursignaal. Wat voor toepassing gaat het hier om?

Een CD4066 of SGM3005 maar of dat exact is wat je zoekt?

[Bericht gewijzigd door Dominic op vrijdag 17 december 2021 12:32:26 (44%)

Op 17 december 2021 12:29:47 schreef Aart:
In een IC is het bij mijn weten altijd een CMOS schakelaar, het vereist inderdaad wat aandacht om het gewenste signaal daar succesvol aan aan te passen. Je zag deze voeger wel in telefooncentrales.

Het zou nu met de relatief nieuwe FET optocouplers wel mogelijk zijn solid state dichter bij relais te komen dan eerder met CMOS. Maar een matrix optocouplers is niet handig in een ic te bouwen, het zou mij verbazen als het bestond.

Voor een last zoals een luidspreker of een led gebruikt men gewoonlijk een driver, en schakelt het stuursignaal. Wat voor toepassing gaat het hier om?

Het gaat eigenlijk om de vervanging van een 8x5 matrix keyboard in een totaal andere stroomkring. Het moeten dus schakelaars in een IC zijn die volledig los staan van dat IC, zoals een relais dat kan. Een optocoupler zou dat ook kunnen, maar dan 40 x in 1 IC ;-)

Leuke toepassing, daar had ik niet aan gedacht.

Vaak zullen dat vrij normale logische niveau's zijn, met 5V of 3,3V als referentie. Als het op een of andere manier mogelijk is de gnd aan te sluiten zou dat met een gewone cmos matrix prima moeten gaan.

Op 17 december 2021 12:30:51 schreef Dominic:
Een CD4066 of SGM3005 maar of dat exact is wat je zoekt?

Die CD4066 heeft geen echte scheiding tussen de beide stroomkringen, de vergelijking met een relais of optocoupler komt denk ik nog het meest in de buurt. Maar dan 40X in één (of enkele) IC's.

Op 17 december 2021 12:35:54 schreef Aart:Vaak zullen dat vrij normale logische niveau's zijn, met 5V of 3,3V als referentie. Als het op een of andere manier mogelijk is de gnd aan te sluiten zou dat met een gewone cmos matrix prima moeten gaan.

Dat zou kunnen, maar dat hoeft niet altijd zo te zijn. De vraag is dn eigenlijk meer algemeen of zoiets bestaat. Ik heb het niet gevonden.

Als de gnd ontbreekt maar de spanningen en stromen zijn wel beschaafd (lager dan b.v. 18V voor gewone cmos) kan men op alle matrix lijnen clamping diodes plaatsen en zo zorgen dat de signalen binnen de voedingsspanning blijven.
Als er snel gescand wordt voelt dit wel een beetje spannend i.v.m. de capaciteit op de lijnen, maar naar verwachting werkt het.

Het is in zo een toepassing tenzij de sturing goed zweeft dan wel belangrijk om in de (I2C) aansturing van de matrix een isolator (iso1415 oid) te plaatsen, en de matrix goed zwevend te voeden met b.v. een dc/dc convertertje. Maar daar zijn gekende oplossingen voor.

Ik weet niet of toetsenbord matrices met veel hogere spanningen of stromen oorkomen. Het voelt niet zo waarschijnlijk, het moet ook nog aanraakveilig zijn. Maar allicht bij antieke telefonie of telexen e.d.

Op 17 december 2021 12:51:34 schreef Aart:
Als de gnd ontbreekt maar de spanningen en stromen zijn wel beschaafd (lager dan b.v. 18V voor gewone cmos) kan men op alle matrix lijnen clamping diodes plaatsen en zo zorgen dat de signalen binnen de voedingsspanning blijven.
Als er snel gescand wordt voelt dit wel een beetje spannend i.v.m. de capaciteit op de lijnen, maar naar verwachting werkt het.

Het is in zo een toepassing tenzij de sturing goed zweeft dan wel belangrijk om in de (I2C) aansturing van de matrix een isolator (iso1415 oid) te plaatsen, en de matrix goed zwevend te voeden met b.v. een dc/dc convertertje. Maar daar zijn gekende oplossingen voor.

Ik weet niet of toetsenbord matrices met veel hogere spanningen of stromen oorkomen. Het voelt niet zo waarschijnlijk, het moet ook nog aanraakveilig zijn. Maar allicht bij antieke telefonie of telexen e.d.

Ik ga even uit van kleine spanningen en kleine stromen, een en ander is fysiek goed te scheiden, dus ik verwacht op dat vlak weinig risico.

Al gezocht op "optocoupler array" en "optocoupler matrix", maar waar ik toch wel een IC verwachtte met een 1 x 8 matrix, waar ik opzoek ben idealiter naar 8 x 5, komt ik niet verder dan 1 x 4, een array van 4 stuks dus. Bij 8 x 5 zou ik dan 10 stuks van die IC's nodig hebben, dat wordt wel erg groot ;-)

Ik heb net wat optocouplers gekocht. Dat zit in een SO8 behuizing.... maar dan wat hoger/dikker. Kennlijk lukt het niet om het binnenwerk van een optocoupler zo plat te maken als een 32Mbit flash chip.

Ik kan ook 2 optocouplers in diezelfde behuizing kopen, maar "veel"... nee, ik denk het niet.

Ik zou even meten welke draden de aangestuurde kant zijn. Stel dat dit de vijf rijen zijn, an stuur je die met 5x weerstandje-optocoupler naar "de andere kant". Als er in de huidige rij een toets ingedrukt moet zijn, dan maak je snel de bijbehorende kolom-opto actief.

De output van de 8 kolomdrivers trekken dan dus de kolom-draden omhoog of omlaag zoals het apparaat het wil zien.

Klein issue is: Hoe snel moet dat en hoe snel krijg je het voor mekaar. Dat zal nog even meten/proberen zijn. Worst case moet je een kleine FPGA o.i.d. gebruiken om het snel genoeg te krijgen. Ik zou denken dat het te stimuleren apparaat oud is en dat je moderne technologie kan gebruiken aan de sturende kant. Dan is het heel wel te doen om binnen 1 microseconde de interrupt te krijgen en af te handelen om de juiste kolom actief te maken...

Kwa optocouplers: Ik heb net HCPL0600 gekocht, die zouden tot 10Mbaud moeten kunnen, dus ik verwacht een reactietijd van minder dan 100ns. een oud apparaat zal wel een 6502-tijdperk CPU in zitten die op z'n vroegst na 1 mircoseconde gaat kijken wat er aan de hand is.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Als het gescheiden moet, zit je al gauw aan optocouplers.
(een grote optisch geisoleerde matrix switch heb ik nog nooit gezien, ik zou ook zo gauw geen doel ervoor kunnen bedenken.)
Zou ook veel te groot worden.

Enkele optoswitches als de AQY212 zijn er wel. Niet geisoleerde ook, bijv de 74LVC1G3157.

De Mitel MT88xx zijn trouwens al lang obsolete (net als de kleinere CD22100 van Harris)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Kan ook met een micro'tje.
8 datalijnen inlezen, 5 datalijnen aansturen (of net andersom?)

En dan eventueel aansturen via een opto-coupler of een IR-remote AB of zo.

Je hebt er natuurlijk geen 40 opto-MOS schakelaars nodig ,maar slechts 13 (8 voor de rijen en 5 voor de kolommen) alle signalen gaan dan door 2 schakelaars. Alles gaat dan naar een gezamelijk knooppunt.
Je kan dat nog redelijk compact maken met 7 stuks TLP206.
De overgangsweerstand is maximaal 70 Ohm;

Op 17 december 2021 15:20:02 schreef deKees:
8 datalijnen inlezen, 5 datalijnen aansturen (of net andersom?)

En dan eventueel aansturen via een opto-coupler of een IR-remote AB of zo.

Gamma! (= "dat zeg ik")

[Bericht gewijzigd door rew op zaterdag 18 december 2021 11:36:43 (42%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Nou, ik bedoel eigenlijk om de matrix direct te koppelen aan de processor en dan de processor aansturen via een enkele optocoupler.

Wel als je de keyboard matrix als een blackbox wilt benaderen en stellen dat het enige dat je ervan weet is dat het 8x5 is ,maakt dat je de kant van (solid state) relais op gaat.
Als je meer van de blackbox te weten komt , kun je de oplossig versimpelen. Je weet bijv niet of het 8 uitgangen zijn en 5 ingangen of andersom, je weet ook niet de logische niveaus waarmee gewerkt wordt.

Op 17 december 2021 18:05:09 schreef deKees:
Nou, ik bedoel eigenlijk om de matrix direct te koppelen aan de processor en dan de processor aansturen via een enkele optocoupler.

Ah, Op die fiets. Ja dat kan ook: Dat bespaart waarschijnlijk fors in het aantal optocouplers. Had ik ook aan gedacht, maar ik had het niet uitgeschreven omdat de TS hint naar dat het niet toegestaan is om "dingen" (anders dan de optocouplers/matrix/schakelaars) aan de keymatrix kant te hangen. Maar het is een rare beperking die waarschijnlijk alleen uit de fantasie van de TS voortkomt: Hij ziet een oplossing voor zich met en handig chipje wat precies doet wat hij denkt te willen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
fatbeard

Honourable Member

De juiste zoekterm is "crosspoint switch".
Die bestaan tot walgelijk groot, meestal 'vierkant'.
En meestal met een voedingsspanning ≤ 3.3V, waarbij de te schakelen signalen maximaal 0.6V boven of onder de voedingsspanning mogen liggen. Om het over stromen maar even niet te hebben...
Last but not least: de datasheet is bij sommige fabrikanten alleen te krijgen onder NDA...

RCA heeft indertijd een 4x4 chip in CMOS gemaakt, de CD22100. AbsMax 20V en 10mA, Ron @ Vdd=15V max.95Ω. Wordt op ebay nog wel aangeboden (voor soms belachelijke prijzen).

Misschien kan je met een MT8808AP1 (8x8, 13.2V) nog uit de voeten...

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.

Op 17 december 2021 12:33:18 schreef gdb:
[...]Het gaat eigenlijk om de vervanging van een 8x5 matrix keyboard in een totaal andere stroomkring. Het moeten dus schakelaars in een IC zijn die volledig los staan van dat IC, zoals een relais dat kan. Een optocoupler zou dat ook kunnen, maar dan 40 x in 1 IC ;-)

Even terug naar het oorspronkelijke probleem, je wilt een toetsenbord matrix dus van buiten bedienen?
Wie zegt dat dit geisoleerd moet zijn? Waarschijnlijk is het relatief simpel op te lossen als je van de originele schakeling even reverse engineerd hoe die matrix in elkaar zit.

Ik heb zo ook eens voor een modelbouw schakeling die 2x64 reed-contacten in een matrix scande een nieuwe oplossing gemaakt met HALL sensoren, waar natuurlijk alleen +5/0 V uit komt. Door een taktische aansluiting en slechts 1 P-Fet per HALL sensor heb ik toen de hele oplossing gemaakt en dit werkte perfect.

Het kwam er op neer dat de originele scan-matrix een 5V voeding gebruikte. Dus de colum driver (schakelde naar +5V) komt dan aan de S van de P-FET de D aan de row input en de G aan de hal sensor.

Als je besturing wel geisoleerd moet zijn kun je ook iets van een 74xx594 shifter gebruiken om alle matrix bitjes te bedienen (op de voeding van je target aansluiten) en dan de input van de shifters van opto's voorzien. Dan hoef je alleen een D / CLK / LATCH signaal te isoleren. Dat scheelt aanzienlijk in de hoeveelheid componenten.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
Arco

Special Member

Ericsson maakte vroeger 'echte' crosspoint matrix switches...:
(deze is 10x10...)

:)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

https://spectrumforeveryone.com/wp-content/uploads/2017/08/ZXSpectrumI…

De matrix is de kruising van de 5 lijnen links boven en de 8 lijnen midden onder: m.a.w., dat is het keyboard.

Dat kan makkelijk met een arduino of andere MCU op 5V. Knoop de 8 adreslijntjes aan 8 inputs, en de 5 KB lijntjes aan outputs.

Trek dan afhankelijk van je te simuleren toets en welk van de 8 lijntjes laag is de juiste van de 5 andere lijntjes laag.

Voed het geheel uit de 5V van de Spectrum, en klaar.
Als je isolatie wil, isoleer dan de interface naar de arduino. Of hang een USB toetsenbord aan de arduino, (ik geloof dat sommige nieuwere dat kunnen), dan heb je een fatsoenlijk toetsenbord voor je Spectrum :-)

EricP

mét CE

Met een controller zie ik nog wel ff 'een dingetje', afhankelijk van hoe rap die spectrum leest na het zetten van het addres.
Ik kan me zomaar voorstellen dat een ULA dat doet en dat er wel een hele clock cyclus tussen zit (maar ik weet het niet...). Als die op 1MHz loopt, dan moet je best rap met je controller zijn - een AVR op 20MHz zou het als je het slim schrijft kunnen redden in de zin van:Pin change interrupt, lees address, look-up table in RAM die de waarde van de output bevat, zet die op de output. Met wat interrupt-overhead zou dat binnen 20 cycles kunnen (maar waarschijnlijk moet je wel ff terug naar assembly). Hoe je dan met de buitenwereld communiceert... UART op polling basis ofzo (als die ook interrupt-driven wordt, dan krijg je iets met interruptable interrups. Dat kan, maar het vereist wel wat hogere programmeerkunsten en kost wat meer instructies, waardoor timing wel eens een dingetje zou kunnen worden).
Oorspronkelijk was het natuurlijk hardware - en was de toets al ingedrukt.

Eens een hele andere insteek: een EPROM. Als we even aan mogen nemen dat je slechts 1 toets tegelijk indrukt (dat gaat fout bij shift, maar even voor het idee), dan heb je 40 mogelijkheden. Dat past in 6 bits. Als je 5 bits voor de 'scanning' gebruikt worden, dan heb je aan de 'input' dus 11 bits nodig. Dat is 2kB. Doe alles inclusief 'shift' en evt. ook nog een keer incl. 'CTRL' (was die er al?) en dan zit je op 8kB - lijkt me goed te doen. De 'extra' adres lijnen mogen 'traag' zijn en kunnen serieel met een opto-coupler gescheiden UART gedaan worden.

Overigens - als ik het schema zo zie - moeten er nog een stapel dioden in het keyboard zitten. Als je de schakelaars rechtstreeks op dit geheel aansluit, dan zou je met het indrukken van 2 toetsen sluiting tussen 2 datalijnen kunnen maken. Dat impliceert dat niet alleen de data maar ook de opcodes eh... 'aangepast' worden, wat met een redelijke zekerheid in onvoorspelbaar gedrag eindigt.

Op 4 juni 2022 10:49:42 schreef EricP:Eens een hele andere insteek: een EPROM. Als we even aan mogen nemen dat je slechts 1 toets tegelijk indrukt (dat gaat fout bij shift, maar even voor het idee), dan heb je 40 mogelijkheden. Dat past in 6 bits. Als je 5 bits voor de 'scanning' gebruikt worden, dan heb je aan de 'input' dus 11 bits nodig. Dat is 2kB. Doe alles inclusief 'shift' en evt. ook nog een keer incl. 'CTRL' (was die er al?) en dan zit je op 8kB - lijkt me goed te doen. De 'extra' adres lijnen mogen 'traag' zijn en kunnen serieel met een opto-coupler gescheiden UART gedaan worden.

Voor de logica is die EPROM een prima oplossing, maar hoe ga je het elektronisch oplossen? Het toetsenbord is geen 0V / 5V-logica, maar een verbinding tussen wat vage logica van de ULA en de rest. Daarom zou een soort van "matrix schakelaar chip" een oplossing kunnen zijn... maar die lijkt niet te bestaan ;-)

Overigens - als ik het schema zo zie - moeten er nog een stapel dioden in het keyboard zitten. Als je de schakelaars rechtstreeks op dit geheel aansluit, dan zou je met het indrukken van 2 toetsen sluiting tussen 2 datalijnen kunnen maken. Dat impliceert dat niet alleen de data maar ook de opcodes eh... 'aangepast' worden, wat met een redelijke zekerheid in onvoorspelbaar gedrag eindigt.

Nee, het keyboard zijn twee lagen folie met opgedampt metaal, op de kruispunten maken de 2 lagen contact (membraanfolie): https://microhobby.speccy.cz/240704/ord/imagen/MEMBRANA.jpg. Er zitten geen diodes in het keyboard. Je moet een shift-toets en een andere toets in kunnen drukken.

Details van het keyboard:
https://www.1000bit.it/support/manuali/sinclair/zxspectrum/sm/topmem.g…

EricP

mét CE

Voor de logica is die EPROM een prima oplossing, maar hoe ga je het elektronisch oplossen?

Eh... ik snap de vraag niet zo. Je hebt wat input lijnen (scan) en wat outputlijnen (data). Ingewikkelder is het niet...

Het toetsenbord is geen 0V / 5V-logica, maar een verbinding tussen wat vage logica van de ULA en de rest.

Eh... Dat draait toch gewoon op 5V? Of heb ik ergens vreselijk overheen gelezen?? (wat op zich prima zou kunnen hoor). Vergeet de diode constructie niet.

Daarom zou een soort van "matrix schakelaar chip" een oplossing kunnen zijn... maar die lijkt niet te bestaan ;-)

Dat heeft vast een reden, denk je ook niet?

Details van het keyboard:
https://www.1000bit.it/support/manuali/sinclair/zxspectrum/sm/topmem.g…

Waar dus keurig de vermoede dioden in staan :+

OK, ze doen 8 'input' lijntjes en 5 outputlijntjes. Iets grotere EPROM :).