Sida 1 av 1

Bästa 5-18-dekodern?

Postat: 10 september 2013, 12:09:37
av bpiphany
Bakgrunden till frågan är att jag hackar mig in i ett tangentbord som logiskt sett består av en massa strömbrytare med varsin diod, typ såhär
matrix.png
Trassligt nog har de designat 18 rader och 8 kolumner. Med ursprungskontrollern är det inget problem eftersom den har nog med IO-pinnar. Jag ska använda någon AVR-processor, helst så liten som möjligt. En AT90USB1286 (som på Teensy++) har pinnar nog, men är på tok för stor och onödigt kraftfull. Varken ATmega32u4 (Teensy) eller ATmega32u2 har tillräckligt med pinnar men de är mindre. Lika bra att använda den minsta, 32u2.

Så på något sätt behöver jag expandera antalet utgångar. Hittills har jag gjort det på två olika sätt. Först genom en 3-8-dekoder (HC238) som driver en kolumn hög i taget. Då var jag tvungen att använda externa pull-downmotstånd på alla 18 rader, det var jobbigt att löda.. Så jag kom på att jag kunde använda två stycken 4-10-dekodrar (HC42) istället. Då kan jag driva matrisen ät "rätt" håll och använda de inbyggda pull-upmotstånden, mycket smidigare.
decoder1010.png
table1010.png
Nu vill jag kunna miniatyrisera mera och tänkte använda olika QFN-paket. Det verkar inte finnas några 4-10-dekodrar som QFN. Så jag sitter och funderar på andra lösningar. Det finns 4-16-dekodrar, och jag skulle kunna driva 2 av raderna direkt från mikrokontrollern, men då går det plötsligt åt 7 pinnar (4 för att välja utgång på dekodern, 1 för att aktivera dekodern och 2 för de extra raderna). Med tre stycken 3-8-dekodrar klarar jag att driva 24 utgångar med bara 5 pinnar. Tre komponenter istället för två (eller en) är inte hela världen med det vore intressant att veta om det gick att göra "smartare".
decoder888.png
table888.png
Med ett par shift-register kan jag såklart minska antalet kontrollerpinnar till ett minimum, men jag tycker om enkelheten och den absoluta kontrollen med dekodrar.

Så vad jag egentligen vill fråga om är det smartaste sättet ni kommer på att driva 18 parvis uteslutande signaler (aktiv låg).

Re: Bästa 5-18-dekodern?

Postat: 10 september 2013, 12:33:13
av Icecap
Ska vi se om jag förstår det hela rätt:
Det är viktigare att ha många kretsar med en massa strul i programmeringen än att ha en enda krets "som är onödig kraftfull"?

Ta en 40-pinnars PIC och klocka den med 32kHz, det borde vara pinnar nog och bara nödvändigt kraftfullt!

Re: Bästa 5-18-dekodern?

Postat: 10 september 2013, 12:45:20
av bpiphany
bpiphany skrev:är på tok för stor och onödigt kraftfull
(och dessutom onödigt dyr)

AT90USB1286 är 10×10mm 9×9mm i QFN, ATmega32u2 är 5×5mm. Dessutom hjälper det ju inte om IO-expanderaren är stor den heller. 4-10-dekodrar finns i TSSOP, men det är lite för stort fortfarande. Och helst vill jag ha något "korkat" som inte behöver programmeras, eller kommuniceras seriellt med.

Re: Bästa 5-18-dekodern?

Postat: 10 september 2013, 15:11:32
av 4kTRB
Mest raka jag kommer på är 9st 74LS260 5-input NAND och 5st inverterande grindar typ 1st 74LS04
Ytmonterat och det borde inte ta så stor plats.

Re: Bästa 5-18-dekodern?

Postat: 10 september 2013, 16:03:03
av bpiphany
10 st av vad som helst låter inte särskilt utrymmeseffektivt.. Känner att jag kanske borde förtydliga frågan. Det är inte förbjudet att få ut fler än 18 signaler =) En 5-18+-dekoder vill jag ha, teoretiskt är det ju möjligt med 5-32 då.

Re: Bästa 5-18-dekodern?

Postat: 10 september 2013, 16:18:11
av 4kTRB
Ett ERPROM borde väl fungera?

Re: Bästa 5-18-dekodern?

Postat: 10 september 2013, 16:28:50
av Icecap
Jag är inte helt säker på vad som egentligen ska göras.
* Behövs det bara lika många utgångar som det finns knappar?
* Är det ett behov av att kunde dekoda knapptryckningar?
* Eller simulera dom?

Re: Bästa 5-18-dekodern?

Postat: 10 september 2013, 17:17:05
av Nerre
Det som behövs är väl att kunna "scanna" 18 linjer med så få bitar (från uCn) som möjligt. Med 5 bitar kan man ju scanna 32 linjer, 4 bitar räcker bara till 16.

D.v.s. det finns 18 tåtar och de ska en i taget kunna göras hög (eller låg?).

Men en sak som slog mig nu, måste linjerna kunna adresseras i vilken ordning som helst? Med en "reset" och en "klocka" kan man ju utnyttja en räknare? (Dekadräknare heter de väl?). Då går det bara åt 2 tåtar från uCn (men om det finns 5 lediga så är det kanske en overkill-lösning).

Re: Bästa 5-18-dekodern?

Postat: 10 september 2013, 18:15:04
av bpiphany
Ja, det är en matris av knappar, potentiellt 8×18=144 stycken. En av de arton raderna i taget ska dras låg, alla andra hållas höga (eller flytande).

Det är mest att det är skönt att kunna adressera absolut. Det förenklar programmeringen lite grann. Sätter jag alla IO-pinnar jag behöver i samma register är det bara en vektor av 18 bitmönster som ska laddas. Att kedjekoppla shiftregister eller räknare är absolut inte omöjligt. Då behövs det två (eller tre pinnar, signal, klocka och ev reset).

Det behövs minst tre (eventuellt fler för skojs skull) IO-pinnar till indikator-LEDar. Sen kanske man får en plötslig lust att dessutom prata seriellt med en blåtandsmodul eller nåt. Så det gör ju inget om det finns pinnar lediga.

Vill man vara på det humöret kan man ju multiplexa läsningen av de 8 kolumnerna också...

Det gör egentligen inget om det skulle sluta med 24 outputs, ett vanligt tangentbord är typ 22 tangenter brett. Då blir det väldigt enkelt att återanvända samma idé om man bygger ett helt eget tangentbord. Potentiellt skulle själva manicken kunna vara användbar till andra saker, men det är inget jag tänkt på..

Edit: Resultat går att finna här.