Nästa tangentbordsprojekt...
Nästa tangentbordsprojekt...
Efterfrågan på vansinniga tangentbordsprojekt tycks inte avta i kretsen av frälsta geekhackers. Nästa steg verkar vara att designa ett kretskort som tillåter en liten LED i varje tryckknapp. Ballast är det ju såklart då om det skulle gå att få till individuell styrning av alla LEDar.
Med lite olika alternativ för layout så blir det ganska trångt på sina håll.. Jag behöver lite hjälp att tänka igenom hur jag ska koppla själva kontroll-kretsen till det hela. Planen är att använda ett ATmega32u4-chip. Kommer det att fungera att göra såhär?
•SWROW?? är kopplade till ingångar med pull-upmotsrtånd.
•LEDROW?? är kopplade till utgångar som styr vilka rader av LEDs som ska tändas
•COL?? är kopplade via BCD-decimal decoders till utgångar som styr vilken kolumn av LEDs som ska tändas.
Större delen av tiden kommer LED-matrisen att cyklas igenom för att "hålla igång" valda LEDs. Med jämna mellanrum släcks sedan alla LEDROW, och controllern mäter mäter för varje kolumn vilka knappar som är nedtryckta genom att dra en kolumn i taget låg, och mäta på varje SWROW vilka som är neddragna.
Tänker jag åt rätt håll? Går det alls att göra såhär? Hur borde jag göra? Finns det något smartare sätt? =) Det måste såklart till strömbegränsning för LEDarna och lite andra smågrejer.
Med lite olika alternativ för layout så blir det ganska trångt på sina håll.. Jag behöver lite hjälp att tänka igenom hur jag ska koppla själva kontroll-kretsen till det hela. Planen är att använda ett ATmega32u4-chip. Kommer det att fungera att göra såhär?
•SWROW?? är kopplade till ingångar med pull-upmotsrtånd.
•LEDROW?? är kopplade till utgångar som styr vilka rader av LEDs som ska tändas
•COL?? är kopplade via BCD-decimal decoders till utgångar som styr vilken kolumn av LEDs som ska tändas.
Större delen av tiden kommer LED-matrisen att cyklas igenom för att "hålla igång" valda LEDs. Med jämna mellanrum släcks sedan alla LEDROW, och controllern mäter mäter för varje kolumn vilka knappar som är nedtryckta genom att dra en kolumn i taget låg, och mäta på varje SWROW vilka som är neddragna.
Tänker jag åt rätt håll? Går det alls att göra såhär? Hur borde jag göra? Finns det något smartare sätt? =) Det måste såklart till strömbegränsning för LEDarna och lite andra smågrejer.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Nästa tangentbordsprojekt...
Det borde funka fint att driva LEDROW samtidigt som du läser av SWROW, förutsatt att du inte får problem med kapacitivt läck mellan ledningarna eller liknande.
Däremot kan du inte mata på 5V via två (bottnade) transistorer direkt på lysdioderna. De behöver lämpligt seriemotstånd som ger en lämplig genomsnittlig ström.
Observera att ett motstånd som ger rätt genomsnittström vid muxning av flera kolumner samtidigt också kan ge tillräckligt med ström för att bränna sönder lysdioderna.
Watchdog som omedelbart klipper matningen till LED'arna ifall processorn stannar rekomenderas starkt i den slutgiltliga versionen.
Under tiden du labbar med kopplingen så ser jag två lösningar som skydd mot att bränna lysdioderna vid mikrokontrollerfel.
Den ena är att köra med så klenare seriemotstånd så att du inte får mer än t.ex. 20mA toppström så att lysdioderna överlever om processorn stannar, men då kommer dioderna lysa rätt svagt så du kan behöva köra mörkläggning för att se dioderna.
Den andra är att ersätta seriemotståndet med två motstånd i serie och en lämplig liten kondensator paralellt över ena motståndet. I normalfallet kommer switchfrekvensen göra att kondensatorn knappt laddas upp alls då det går ström genom kopplingen och den hinner laddas ur då det inte går ström genom kopplingen, varpå det motstånd som inte har kondensator parallellt över sig står för nästan hela strömgränsen. Om mikrokontrollern "fastnar" i läget att kretsen drivs konstant kommer kondensatorn att ladda upp sig innan dioderna hinner skadas och då är det (det högohmigare) motståndet paralellt över kondensatorn som står för strömgränsen.
Om du t.ex. har 10 kolumner så skulle du kunna ha ett 330ohm-motstånd paralellt med en kondensator och detta i serie med ett 18/22ohm-motstånd. Toppströmmen blir då ca 200mA, delat på 10 kolumner ger ett snitt på 20mA. Den kontinuerliga strömmen vid felaktig drivning blir däremot bara drygt 10mA. Kondensatorvärdet beror på vilken frekvens du mux'ar med.
En variant som kanske kan vara intressant även för "produktion" är att låta 5V-matningen till lysdioddrivarna vara variabel. Då blir ljusstyrkan varierbar. En variant där är att låta nån slags ljussensor (t.ex. fototransistor) påverka spänningen. Då kommer tangentbordet lysa starkare i ett ljust rum än i ett mörkt rum.
P.S. den ultimata grejen vore att ha tre LED-drivningar per tangent och RGB-lysdioder
Lycka till!
Däremot kan du inte mata på 5V via två (bottnade) transistorer direkt på lysdioderna. De behöver lämpligt seriemotstånd som ger en lämplig genomsnittlig ström.
Observera att ett motstånd som ger rätt genomsnittström vid muxning av flera kolumner samtidigt också kan ge tillräckligt med ström för att bränna sönder lysdioderna.
Watchdog som omedelbart klipper matningen till LED'arna ifall processorn stannar rekomenderas starkt i den slutgiltliga versionen.
Under tiden du labbar med kopplingen så ser jag två lösningar som skydd mot att bränna lysdioderna vid mikrokontrollerfel.
Den ena är att köra med så klenare seriemotstånd så att du inte får mer än t.ex. 20mA toppström så att lysdioderna överlever om processorn stannar, men då kommer dioderna lysa rätt svagt så du kan behöva köra mörkläggning för att se dioderna.
Den andra är att ersätta seriemotståndet med två motstånd i serie och en lämplig liten kondensator paralellt över ena motståndet. I normalfallet kommer switchfrekvensen göra att kondensatorn knappt laddas upp alls då det går ström genom kopplingen och den hinner laddas ur då det inte går ström genom kopplingen, varpå det motstånd som inte har kondensator parallellt över sig står för nästan hela strömgränsen. Om mikrokontrollern "fastnar" i läget att kretsen drivs konstant kommer kondensatorn att ladda upp sig innan dioderna hinner skadas och då är det (det högohmigare) motståndet paralellt över kondensatorn som står för strömgränsen.
Om du t.ex. har 10 kolumner så skulle du kunna ha ett 330ohm-motstånd paralellt med en kondensator och detta i serie med ett 18/22ohm-motstånd. Toppströmmen blir då ca 200mA, delat på 10 kolumner ger ett snitt på 20mA. Den kontinuerliga strömmen vid felaktig drivning blir däremot bara drygt 10mA. Kondensatorvärdet beror på vilken frekvens du mux'ar med.
En variant som kanske kan vara intressant även för "produktion" är att låta 5V-matningen till lysdioddrivarna vara variabel. Då blir ljusstyrkan varierbar. En variant där är att låta nån slags ljussensor (t.ex. fototransistor) påverka spänningen. Då kommer tangentbordet lysa starkare i ett ljust rum än i ett mörkt rum.
P.S. den ultimata grejen vore att ha tre LED-drivningar per tangent och RGB-lysdioder


Lycka till!
- tecno
- Inlägg: 27248
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: Nästa tangentbordsprojekt...
Vad är det för switchar du ska använda dig av?
//edit, missade länken.
Finns ju en tysk switch med två led's
RAFI 35-671-02 är en bland många. Använder den i mina MPG handtag
//edit, missade länken.
Finns ju en tysk switch med två led's
RAFI 35-671-02 är en bland många. Använder den i mina MPG handtag
Re: Nästa tangentbordsprojekt...
Jo, en av sakerna att lägga till är strömbegränsning. Och du kom med, för mig, helt nya tricks =)MiaM skrev:Det borde funka fint att driva LEDROW samtidigt som du läser av SWROW, förutsatt att du inte får problem med kapacitivt läck mellan ledningarna eller liknande.
Däremot kan du inte mata på 5V via två (bottnade) transistorer direkt på lysdioderna. De behöver lämpligt seriemotstånd som ger en lämplig genomsnittlig ström.
Observera att ett motstånd som ger rätt genomsnittström vid muxning av flera kolumner samtidigt också kan ge tillräckligt med ström för att bränna sönder lysdioderna.
Watchdog som omedelbart klipper matningen till LED'arna ifall processorn stannar rekomenderas starkt i den slutgiltliga versionen.
Under tiden du labbar med kopplingen så ser jag två lösningar som skydd mot att bränna lysdioderna vid mikrokontrollerfel.
Den ena är att köra med så klenare seriemotstånd så att du inte får mer än t.ex. 20mA toppström så att lysdioderna överlever om processorn stannar, men då kommer dioderna lysa rätt svagt så du kan behöva köra mörkläggning för att se dioderna.
Den andra är att ersätta seriemotståndet med två motstånd i serie och en lämplig liten kondensator paralellt över ena motståndet. I normalfallet kommer switchfrekvensen göra att kondensatorn knappt laddas upp alls då det går ström genom kopplingen och den hinner laddas ur då det inte går ström genom kopplingen, varpå det motstånd som inte har kondensator parallellt över sig står för nästan hela strömgränsen. Om mikrokontrollern "fastnar" i läget att kretsen drivs konstant kommer kondensatorn att ladda upp sig innan dioderna hinner skadas och då är det (det högohmigare) motståndet paralellt över kondensatorn som står för strömgränsen.
Om du t.ex. har 10 kolumner så skulle du kunna ha ett 330ohm-motstånd paralellt med en kondensator och detta i serie med ett 18/22ohm-motstånd. Toppströmmen blir då ca 200mA, delat på 10 kolumner ger ett snitt på 20mA. Den kontinuerliga strömmen vid felaktig drivning blir däremot bara drygt 10mA. Kondensatorvärdet beror på vilken frekvens du mux'ar med.
En variant som kanske kan vara intressant även för "produktion" är att låta 5V-matningen till lysdioddrivarna vara variabel. Då blir ljusstyrkan varierbar. En variant där är att låta nån slags ljussensor (t.ex. fototransistor) påverka spänningen. Då kommer tangentbordet lysa starkare i ett ljust rum än i ett mörkt rum.
P.S. den ultimata grejen vore att ha tre LED-drivningar per tangent och RGB-lysdioder :wink: :tumupp:
Lycka till!
Det kommer att bli 21 kolumner och 6 rader på kretskortet för ett fullstorlekstangentbord. Tanken är att det ska gå att kapa ner det till andra storlekar utan att viktiga komponenter för styrningen följer med (tex att ta bort det numeriska tangentbordet och/eller raden med funktionsknappar). ATmegan har 25 I/O-portar vilket räcker med lite extra komponenter.
Helst hade jag velat få till en multiplexing över raderna istället för kolumnerna för att få en högre uppdateringsfrekvens. Men det räcker nog inte pinnarna till.. Finns det BCD-decimal-omvandlare med inverterade utgångar? Annars kommer jag väl att behöva inverterare till alla kolumner också? Eller går det lika bra med NPN-transistorer på kolumnpinnarna? Dras spänningen ner på samma sätt i det fallet?
Med tre stycken BCD-decimalomvandlare går det åt 3×3=9 I/O-pinnar till kolumnerna, och 6+6 pinnar till raderna. Sen vore det bra om det finns tre dedikerade pinnar till CapsLock ScrollLock och NumLock. Det ger totalt 24 pinnar, på en ATmega32U4 finns det då två pinnar kvar. En skulle kunna användas till att PWMa strömtillförseln till alla LEDar och på så sätt styra ljusstyrkan på hela maskineriet.
Finns det några BCD-hex-decodrar? Ett programmerbart chip skulle fixa det antar jag, men om det blir ett gruppköp av det här med ytmonterade komponenter kommer det antagligen ordnas med komponentmontering direkt från fabrik. Det borde ju även gå att sköta cyklandet av kolumner med hjälp av ett par räknare (eller kanske snarare shiftregister) och fria upp en hel hög med I/O-pinnar, men då blir det, kanske i onödan, lite pilligare med programmeringen.
Eller genom ett extremt simpelt omtänk med 12 rader och 11 kolumner. 4 I/O-pinnar multiplexar raderna, 4 st multiplexar vilka kolumner som tänds och 11 st sköter avläsning av knapptryckningar. Hmm...
Själva Cherryswitcharna har genomgående hål som är avsedda för att stoppa en T1-LED genom, så just på det viset går det inte att använda RGB-LEDar. Annars vore det ju såklart häftigt =) Switcharna är tänkta att monteras direkt på ett kretskort eller i en extra monteringsplåt. I det första fallet skulle LEDarna synas även om de satt bredvid switchmodulerna. Med en monteringsplåt skulle det behövas extra hål i sådana fall.
Tack, tips uppskattas alltid, men nu pratar vi om tangentbordnörderi. Och då är det Cherryswitchar som gäller, eller mer esoteriska varianter som antingen inte tillverkas längre eller inte går att få tag i på den öppna marknaden =P Tangentbord med Cherryswitchar rekommenderar jag för övrigt starkt om man är intresserad av att lyxa till sin datorvardag lite grann. Eller ännu hellre ett med Topreswitchar, tangentbordens Rolls Royce =)tecno skrev:Vad är det för switchar du ska använda dig av?
//edit, missade länken.
Finns ju en tysk switch med två led's
RAFI 35-671-02 är en bland många. Använder den i mina MPG handtag
Re: Nästa tangentbordsprojekt...
Nä, några RGB-LEDar finns det inte plats för. Det är nog tur det, annars skulle gamerkidsen göra på sig själva av upphetsning... Själv har jag svårt att förstå grejen med "backlighting" över huvud taget. Tanken från början var nog bara att man skulle kunna ha indikator-LEDarna monterade under knapparna så att de lyser genom ett litet fönster i plasten.
Finns det några multiplexers som klarar lite ström? När jag kollar på TI's 4051 till exempel så pallar de bara ungefär 1uA om jag förstår det hela rätt.. Räcker det ens för att driva en BJT-transistor? Räcker det om man har en darlingtonkopplad? Eller kommer det att behövas FET-transistorer? Finns det några smidiga sådana med flera stycken i samma paket? Darlingtontransistorer finns ju i paket om 7 eller 8 tex. Men de är väl BJT rakt igenom? Jag har ju ingen aning om sånt här, hur kommer det sig att det är jag som sitter och designar elektronik? =D
Jag la förresten upp senaste tangentbordskretskortet i den avsedda tråden..
Finns det några multiplexers som klarar lite ström? När jag kollar på TI's 4051 till exempel så pallar de bara ungefär 1uA om jag förstår det hela rätt.. Räcker det ens för att driva en BJT-transistor? Räcker det om man har en darlingtonkopplad? Eller kommer det att behövas FET-transistorer? Finns det några smidiga sådana med flera stycken i samma paket? Darlingtontransistorer finns ju i paket om 7 eller 8 tex. Men de är väl BJT rakt igenom? Jag har ju ingen aning om sånt här, hur kommer det sig att det är jag som sitter och designar elektronik? =D
Jag la förresten upp senaste tangentbordskretskortet i den avsedda tråden..
Re: Nästa tangentbordsprojekt...
Jag vet inte om det finns 4-till-16-dekoders, däremot fanns det förr i rätt stor kapsel, typ en 74-logikkrets i en 24-pinnars DIL-kapsel av den breda modellen (som används för DIL-kapslar med än fler poler, alltså stor som t.ex. 2716/2732 eprom) men jag skulle tro att den slutat tillverkas.
Däremot har t.ex. den klassiska 3-till-8-dekodern 74xx138 (klicka->datablad) tre enableingångar varav två är inverterade. Utan ytterligare extra kretsar så kan man koppla dessa enableingångar så att man avkoda ytterligare två bitar till tre 74xx138-dekodrar, d.v.s. 5-till-24-avkodning. Med en inverterare och fyra 74xx138 kan man få 5-till-32-avkodning, och med fler inverterare och åtta 74xx138 kan man få 6-till-64-avkodning. Om du inte har nån krets med en inverterare "över" så kan du bygga en inverterare med transistor + motstånd om det tar mindre plats. Jag är inte helt säker men tror för övrigt att det finns inverterare att köpa "styckvis" som ytmonterade komponenter. Med en inverterare 5-till-32, utan inverterare 5-till-24 eller t.ex. 6-till-32 så sparar du några pinnar jämfört med decimaldekodrarna. Å andra sidan kanske decimaldekodrarna du tittat på också har enableingångar som går att använda på samma sätt? För övrigt går det också bra att seriekoppla 138:or så att utgångarna från en 138:a matar enableingångarna på ytterligare åtta 138:or för att få 6-till-64 och ha enableingångarna kvar.
Om du använder mos-varianter av grindarna så bör utgångarna kunna driva både npn-steg och pnp-steg. 74xx138 har inverterade utgångar så den lämpar sig att driva PNP-steg. OBS att om du vill att kopplingen ska vara "TTL-säker", d.v.s. fungera även om någon ersätter en 74HC138 med en 74LS138, så räcker det inte med bara seriemotstånd till basen in på PNP-transistorerna utan du behöver också ha ett motstånd mellan bas och emitter med värdena valda så att transistorn inte kan börja leda om utgången från 74xx138'an ligger på 2,4V eller högre. (OBS: 2,4V tog jag ur huvudet, jag tror det är specen för lägsta nivå en godkänd etta får ha i TTL-logik, men kan minnas fel). Det är kanske inte särskilt viktigt att klara LS-kretsar, däremot kan motståndet mellan emitter och bas göra kretsen mindre störkänslig. Utan det motståndet börjar transistorn leda så fort utgången från 138'an ligger under ca 4,4V medan med motståndet kan klart lägre spänning krävas. Med 200mA switchat med relativt hög frekvens kan det nog uppstå en del spikar som ett sådant motstånd kan tänkas hjälpa till att klara.
OBS rent allmänt att du bör ha rätt bra avkoppling med både "stor+liten" kondensator i matningen till muxkretsen, och kretskortsbanor med lågt spänningsfall mellan avkopplingskondensatorerna och drivtransistorernas emittrar.
Du kan PWM'a på två sätt, det ena är att köra kortare pulser och lägre pauser i muxningen för tangentbordet, det andra är som jag föreslog först, d.v.s. att variera 5V-matningen.
Om du vill spara I/O-pinnar för den sida som inte kan använda dekodrar så skulle du kunna använda skiftregister, både för lysdioddrivningen och avläsningen. Ett sånthär skiftregister skulle kunna användas för att driva lysdioderna är troligtvis 74HC595. Samtidigt som befintlig data i skiftregistrets latchar skickas till utgångarna så skiftas ny data in i skiftregistret redo att latchas samtidigt som du växlar signalerna till dekodrarna. På samma sätt kan du läsa av tangenternas signaler med lämpligt skiftregister. Latcha in tangentbordsdata i t.ex. 74xx165 och läs ur. Latcha avläsningen strax före du slår om signalen till dekodrarna, så har kretsen fått maximal tid på sig att stabilisera sig sedan föra dekoderomslagningen.
Pseudokod:
start:
nollställ räknare för utdata till dekodrar
ytttre_loop:
Skicka utdata till dekodrar och skicka latchpuls till lysdioddrivskiftregister
nollställ inre loopräknare
läs lysdioddata från tabell indexerad av räknaren för utdata till dekodrar
inre_loop:
sätt utdata till lysdiodskiftregister från bit noll på tempvariabel för lysdioddata
skifta tempvariabel för lysdioddata ett steg åt höger
kort paus
läs indata från tangetbordsskiftregister
slå om klockpuls till båda skiftregistren
kortare paus
slå om klockpuls till båda skiftregistren
räkna upp inre loopräknare, hoppa till inre_loop ifall räknaren inte nått tillräckligt högt
skriv avläst tangentbordsdata i tabell indexerad av räknaren för utdata till dekodrar
räkna upp räknare för utdata till dekodrar, hoppa till yttre_loop om räknaren inte nått tillräckligt högt
hoppa till start:
Det kan kanske vara bra om all denna kod körs på nån slags timerintterupt och kommunikationen med omvärlden inte körs på interrupt. Annars kommer ljusstyrkan på lysdioderna att flimmra beroende på hur mycket tid annan kod / interruptkod tar.
OBS att jag är nästan helt säker på att jag är "off-by-one" för tangentbordsavläsning och/eller lysdiodskiftregisterdrivningen. Om jag fattat rätt så är det en 32-bitars mikrokontroller du använder, då är det enklast att bara skifta utdatat lagom mycket efter att det lästs från tabellen före inre loopen börjar snurra, och på motsvarande sätt skifta indatat rätt innan det skrivs i tabellen efter att inre loppen snurrat klart.
Det du behöver hålla reda på är på vilken flank skiftregistren stegar, så att du läser av 74xx165-skiftregistret och skickar data till 74xx595-skiftregistret i samband med den klockpulsflank som inte skiftar datat. Det här gäller också latchpulsen till 74xx595 som inte bör ha aktiv flank samtidigt som klockpulsen har aktiv flank.
Praktiska studier visar att det blir dåligt om man gör fel på klockflanken och latchflanken till skiftregistren. För 20+ år sen byggde jag en serieöverföring till en discoljusanläggning och beroende på om man gör fel på klockpulsen och/eller latchpulsen så blev effekten att tända lampor "smittade av sig" på efterföljande kanal, med viss felkoppling tonande upp-ned sakta efter interferenser mellan frekvenserna i serieöverföringen och nätfrekvensen, med annan felkoppling mer on/off-mässigt tändes/släcktes också styrt efter interferenser mellan serieöverföring och nätfrekvens.
Däremot har t.ex. den klassiska 3-till-8-dekodern 74xx138 (klicka->datablad) tre enableingångar varav två är inverterade. Utan ytterligare extra kretsar så kan man koppla dessa enableingångar så att man avkoda ytterligare två bitar till tre 74xx138-dekodrar, d.v.s. 5-till-24-avkodning. Med en inverterare och fyra 74xx138 kan man få 5-till-32-avkodning, och med fler inverterare och åtta 74xx138 kan man få 6-till-64-avkodning. Om du inte har nån krets med en inverterare "över" så kan du bygga en inverterare med transistor + motstånd om det tar mindre plats. Jag är inte helt säker men tror för övrigt att det finns inverterare att köpa "styckvis" som ytmonterade komponenter. Med en inverterare 5-till-32, utan inverterare 5-till-24 eller t.ex. 6-till-32 så sparar du några pinnar jämfört med decimaldekodrarna. Å andra sidan kanske decimaldekodrarna du tittat på också har enableingångar som går att använda på samma sätt? För övrigt går det också bra att seriekoppla 138:or så att utgångarna från en 138:a matar enableingångarna på ytterligare åtta 138:or för att få 6-till-64 och ha enableingångarna kvar.
Om du använder mos-varianter av grindarna så bör utgångarna kunna driva både npn-steg och pnp-steg. 74xx138 har inverterade utgångar så den lämpar sig att driva PNP-steg. OBS att om du vill att kopplingen ska vara "TTL-säker", d.v.s. fungera även om någon ersätter en 74HC138 med en 74LS138, så räcker det inte med bara seriemotstånd till basen in på PNP-transistorerna utan du behöver också ha ett motstånd mellan bas och emitter med värdena valda så att transistorn inte kan börja leda om utgången från 74xx138'an ligger på 2,4V eller högre. (OBS: 2,4V tog jag ur huvudet, jag tror det är specen för lägsta nivå en godkänd etta får ha i TTL-logik, men kan minnas fel). Det är kanske inte särskilt viktigt att klara LS-kretsar, däremot kan motståndet mellan emitter och bas göra kretsen mindre störkänslig. Utan det motståndet börjar transistorn leda så fort utgången från 138'an ligger under ca 4,4V medan med motståndet kan klart lägre spänning krävas. Med 200mA switchat med relativt hög frekvens kan det nog uppstå en del spikar som ett sådant motstånd kan tänkas hjälpa till att klara.
OBS rent allmänt att du bör ha rätt bra avkoppling med både "stor+liten" kondensator i matningen till muxkretsen, och kretskortsbanor med lågt spänningsfall mellan avkopplingskondensatorerna och drivtransistorernas emittrar.
Du kan PWM'a på två sätt, det ena är att köra kortare pulser och lägre pauser i muxningen för tangentbordet, det andra är som jag föreslog först, d.v.s. att variera 5V-matningen.
Om du vill spara I/O-pinnar för den sida som inte kan använda dekodrar så skulle du kunna använda skiftregister, både för lysdioddrivningen och avläsningen. Ett sånthär skiftregister skulle kunna användas för att driva lysdioderna är troligtvis 74HC595. Samtidigt som befintlig data i skiftregistrets latchar skickas till utgångarna så skiftas ny data in i skiftregistret redo att latchas samtidigt som du växlar signalerna till dekodrarna. På samma sätt kan du läsa av tangenternas signaler med lämpligt skiftregister. Latcha in tangentbordsdata i t.ex. 74xx165 och läs ur. Latcha avläsningen strax före du slår om signalen till dekodrarna, så har kretsen fått maximal tid på sig att stabilisera sig sedan föra dekoderomslagningen.
Pseudokod:
start:
nollställ räknare för utdata till dekodrar
ytttre_loop:
Skicka utdata till dekodrar och skicka latchpuls till lysdioddrivskiftregister
nollställ inre loopräknare
läs lysdioddata från tabell indexerad av räknaren för utdata till dekodrar
inre_loop:
sätt utdata till lysdiodskiftregister från bit noll på tempvariabel för lysdioddata
skifta tempvariabel för lysdioddata ett steg åt höger
kort paus
läs indata från tangetbordsskiftregister
slå om klockpuls till båda skiftregistren
kortare paus
slå om klockpuls till båda skiftregistren
räkna upp inre loopräknare, hoppa till inre_loop ifall räknaren inte nått tillräckligt högt
skriv avläst tangentbordsdata i tabell indexerad av räknaren för utdata till dekodrar
räkna upp räknare för utdata till dekodrar, hoppa till yttre_loop om räknaren inte nått tillräckligt högt
hoppa till start:
Det kan kanske vara bra om all denna kod körs på nån slags timerintterupt och kommunikationen med omvärlden inte körs på interrupt. Annars kommer ljusstyrkan på lysdioderna att flimmra beroende på hur mycket tid annan kod / interruptkod tar.
OBS att jag är nästan helt säker på att jag är "off-by-one" för tangentbordsavläsning och/eller lysdiodskiftregisterdrivningen. Om jag fattat rätt så är det en 32-bitars mikrokontroller du använder, då är det enklast att bara skifta utdatat lagom mycket efter att det lästs från tabellen före inre loopen börjar snurra, och på motsvarande sätt skifta indatat rätt innan det skrivs i tabellen efter att inre loppen snurrat klart.
Det du behöver hålla reda på är på vilken flank skiftregistren stegar, så att du läser av 74xx165-skiftregistret och skickar data till 74xx595-skiftregistret i samband med den klockpulsflank som inte skiftar datat. Det här gäller också latchpulsen till 74xx595 som inte bör ha aktiv flank samtidigt som klockpulsen har aktiv flank.
Praktiska studier visar att det blir dåligt om man gör fel på klockflanken och latchflanken till skiftregistren. För 20+ år sen byggde jag en serieöverföring till en discoljusanläggning och beroende på om man gör fel på klockpulsen och/eller latchpulsen så blev effekten att tända lampor "smittade av sig" på efterföljande kanal, med viss felkoppling tonande upp-ned sakta efter interferenser mellan frekvenserna i serieöverföringen och nätfrekvensen, med annan felkoppling mer on/off-mässigt tändes/släcktes också styrt efter interferenser mellan serieöverföring och nätfrekvens.
- Electricguy
- Inlägg: 12481
- Blev medlem: 15 augusti 2007, 16:52:14
- Ort: Kälmä' typ..
Re: Nästa tangentbordsprojekt...
Hehehe coolt!
Det där med bakgrunsbelysning är trevligt. Jag har ett Tt eSports challenger Ultimate bord med 256 fullt ställbara bakgrundsfärger om man räknar med släckt!
Kör mest med grönt dock. Trevlig färg.


Re: Nästa tangentbordsprojekt...
haha, jag blir alltid lika glad när jag upptäcker en internettekniksubkultur som är ny för mig, massa nya fackuttryck att lära och nya saker att förbluffas över! Lycka till med ditt bygge och glöm inte publicera bilder och filmer under arbetet!
Re: Nästa tangentbordsprojekt...
Det där inlägget kommer jag behöva läsa igenom fler gånger =) Min bakgrund är mer åt datalogi/matematik/fysik-hållet. Den digitala abstraktionsnivån har jag ganska enkelt att ta till mig hur allt fungerar på. Designmönster elektronik och analoga kretsar lösningar har jag nästan ingen koll på alls. Jag har bara börjat sätta mig in i 4000-logikens värld. Det verkade som ett lagom omfattande område. Off by one däremot är jag bekant med =DMiaM skrev:[jättemycket intressant]
Jag tänkte förstås bort mig lite igen när jag sa att det skulle vara smidigt att multiplexa båda sidor av LED-matrisen. Så fungerar det ju inte =P Eller det skulle iaf betyda att bara en LED tänds åt gången. Shiftregister skulle ju absolut vara en intressant lösning, även om det innebär lite programmerande. Det finns ett antal olika ATmega-chip som är förberedda att användas som USB-enheter. De är 16MHz och 8-bitars AVR-processorer allihop. Lite olika mängd minne och I/O-pinnar med lite olika funktioner så som analoga ingångar och PWM osv. De finns i både TQFP och VQFN, helst vill jag använda en så liten som möjligt. Även om det totalt sett finns väldigt mycket plats på kretskortet så är det i småbitar utspritt över hela =P VQFN sparar ju väldigt mycket yta, men å andra sidan typ omöjligt för mig (och alla andra) att löda själv. Då återstår att välja så få pinnar som möjligt. TQFP32 skulle vara en trevlig storlek att komma ner till men då är det 22 I/O-pinnar som gäller. Och hur jag än vrider och vänder på saken är det någon I/O-pinne för lite eller så blir det 2^k+1 rader eller kolumner i matrisen =)
Alla intressanta chip har 8-bitars PWM, och med 16MHz innebär det en blinkfrekvens på ~60KHz om diodnätet dimmas på det sättet. Jag tror att det iaf är ett måste att det går att ställa in ljusstyrkan via mjukvaran. Det finns kanske iofs bra sätt att styra spänningen över nätet live också. Sen har jag ingen aning om hur lämpligt det är att PWMa ett par hundra mA i några KHz... (Det går att skala ner PWM-frekvensen ganska långt också.) Det är nog iaf ingen större fara att multiplexingen av raderna skulle hinna med att interferera på ett dåligt sätt med såpass hög frekvens. Switcharna har en specad bounce time på mindre än 5ms, så så värst mycket fortare än så finns det egentligen ingen anledning att snurra runt det hela. Det finns någon tangentbordstillverkare som skryter med att de pollar i 1KHz.
Anledningen till att jag använder ATmega-chip är helt och hållet att det finns en färdig tangentbords-firmware för USB hos pjrc. Jag har inte satt mig in i deras kod för kommunikationen med datorn, men jag är ganska säker på att det hela är interruptstyrt i den änden. Min idé till lösning är att LED-matrisen uppdateras med någon sorts timerinterrupt. Sen får jag pilla lite så LEDarna släcks under tiden chippet är upptaget med att prata med datorn. Jag kanske måste experimentera lite i förväg för att se om det kommer att bli flimrigt. En annan lösning skulle ju annars kunna vara att ha en hel extra AVR för att bara styra LEDarna.
Är det ett Cherrytangentbord? Jag vet att Thermaltake har sådana och det där låter ju som någon sorts flådig modell. Själv brukar jag ha rätt bra upplyst där jag sitter och jobbar. Jag skulle nog mest bli störd av att tangentbordet lyser, men så är jag ju ingen gamer heller =) ATmegan har 8-bits PWM, det blir också 256 valfria "nyanser", så länge de är samma färg allihop...Electricguy skrev:Hehehe coolt! :D Det där med bakgrunsbelysning är trevligt. Jag har ett Tt eSports challenger Ultimate bord med 256 fullt ställbara bakgrundsfärger om man räknar med släckt! :D Kör mest med grönt dock. Trevlig färg.
Ja, alltså, egentligen är jag ju inte så tangentbordsnördig =P Det började med att mitt gamla Keytronic började ge upp på vissa knappar. Keytronic anses ofta vara de bland de bättre tillverkarna av vanliga "rubber dome"-tangentbord (en gummifilt med kupoler över två lager plast med ledande banor, som nästan alla dagens tangentbord). Jag tycker verkligen illa om de flesta av tangentborden som följer med alla Dell och HP-datorer osv... Så jag kollade runt på nätet efter något bättre, det var ju tvunget att finnas där ute någonstans =) Sen hittade jag till geekhack, och sen spårade det ur =Ddar303 skrev:haha, jag blir alltid lika glad när jag upptäcker en internettekniksubkultur som är ny för mig, massa nya fackuttryck att lära och nya saker att förbluffas över! Lycka till med ditt bygge och glöm inte publicera bilder och filmer under arbetet!
Det slutade med att jag tänkte: "Varför inte bygga själv när jag ändå är igång. Den där gamla qwerty-layouten är ju trots allt bara en gammal kompromiss från tiden med mekaniska skrivmaskiner". Jag har som princip att bygga allt själv =) Mest fortsätter jag nog för att ha en bra ursäkt att få sitta och pilla med KiCAD och elektronik. Istället för att skriva diverse uppsatser jag borde göra egentligen... Routa kretskort är en ganska meditativ göra =)
Jag har länkat till dem i någon tidigare tråd men här är en guide jag gjorde efter mitt första tangentbordsprojekt. Och här är själva resultatet. Själv varierar jag mellan två lite lite olika modeller av det till vardags.
Men jag kan väl lova att bjuda på fler bilder om det blir något av det hela =)
- Electricguy
- Inlägg: 12481
- Blev medlem: 15 augusti 2007, 16:52:14
- Ort: Kälmä' typ..
Re: Nästa tangentbordsprojekt...
Ingen aning om det är ett cherrytangentbord. Men det har lite plattare tangenter, åt laptophållet. Rätt trevligt.
Re: Nästa tangentbordsprojekt...
Om USB-koden går på interrupt med högre prioritet så kanske muxningen av tangentbordet kan timerstyras så att varje muxsteg får lika lång tid för att slippa få flimmer. Det kanske inte spelar så stor roll heller.
Om du vill så kan du ju kombinera PWM med muxningen, så att du stegar till nästa muxnivå synkroniserat med PWM-frekvensen. Annars kanske (eller kanske inte) det blir ett svagt flimmer? Vid 60kHz så börjar nog kapacitans bli märkbar, bli inte förvånad om du inte märker skillnad på de sista stegen närmast max ljusstyrka.
En variant som nog är bra är att låta PWM-utgången passera ett lågpassfilter så att det blir en analog spänning och låta den via lämplig buffer utgöra matning till lysdiodstegen. Lämpligt kan vara att forma PWM-signalen så att du kompenserar för t.ex. spänningsfall i bas-emittersträckor o.s.v., det är ju onödigt att kunna reglera inom områden som ändå inte ger någon synlig effekt. Poängen med lågpassfilter är att tangentbordet borde stråla åtminstone lite mindre radiostörningar om det "bara" är muxningen och inte också PWM som strålar. Jag vet inte hur EMC-kraven ser ut men jag antar att komersiella tangentbord med en gummimatta inte bara har en metallbas för att få stabilitet utan också av radiostörningsskäl. Om du vill jobba på att minska EMC-strålning så skulle du kunna lågpassfiltrera styrsignalerna så att du avsiktligt får sämre flanker på muxningen. I praktiken är det säkert inget problem om du inte tänkt använda tangentbordet i närheten av radioamatörer som sysslar med kortvåg eller liknande. Nån annan som har bättre koll får gärna yttra sig här.
En bonusfråga: Har du något tips på att få egen text på tangenttopparna på ett befintligt tangentbord?
Jag skulle gärna vilja ha specialtecknen som finns i finnish multilingual synliga direkt på tangentbordet.
(Jag rekomenderar för övrigt alla som idag använder svensk tangentbordslayout att överväga finnish multilingual eftersom man då dels får exakt alla befintliga funktioner som svensk layout har och dessutom får man finesser såsom danska æøÆØ direkt med altgr+äö, man kan skriva ungerska őŐ med altgr+å och därefter oO, man kan skriva isländska tecken såsom þÞðÐ o.s.v.. För Windows XP finns en layoutdriver nedladdningsbar från Microsoft, övriga aktuella OS verkar ha layouten inbyggd och jag tror till och med den är default i vissa Linuxvarianter).
Om du vill så kan du ju kombinera PWM med muxningen, så att du stegar till nästa muxnivå synkroniserat med PWM-frekvensen. Annars kanske (eller kanske inte) det blir ett svagt flimmer? Vid 60kHz så börjar nog kapacitans bli märkbar, bli inte förvånad om du inte märker skillnad på de sista stegen närmast max ljusstyrka.
En variant som nog är bra är att låta PWM-utgången passera ett lågpassfilter så att det blir en analog spänning och låta den via lämplig buffer utgöra matning till lysdiodstegen. Lämpligt kan vara att forma PWM-signalen så att du kompenserar för t.ex. spänningsfall i bas-emittersträckor o.s.v., det är ju onödigt att kunna reglera inom områden som ändå inte ger någon synlig effekt. Poängen med lågpassfilter är att tangentbordet borde stråla åtminstone lite mindre radiostörningar om det "bara" är muxningen och inte också PWM som strålar. Jag vet inte hur EMC-kraven ser ut men jag antar att komersiella tangentbord med en gummimatta inte bara har en metallbas för att få stabilitet utan också av radiostörningsskäl. Om du vill jobba på att minska EMC-strålning så skulle du kunna lågpassfiltrera styrsignalerna så att du avsiktligt får sämre flanker på muxningen. I praktiken är det säkert inget problem om du inte tänkt använda tangentbordet i närheten av radioamatörer som sysslar med kortvåg eller liknande. Nån annan som har bättre koll får gärna yttra sig här.
En bonusfråga: Har du något tips på att få egen text på tangenttopparna på ett befintligt tangentbord?
Jag skulle gärna vilja ha specialtecknen som finns i finnish multilingual synliga direkt på tangentbordet.
(Jag rekomenderar för övrigt alla som idag använder svensk tangentbordslayout att överväga finnish multilingual eftersom man då dels får exakt alla befintliga funktioner som svensk layout har och dessutom får man finesser såsom danska æøÆØ direkt med altgr+äö, man kan skriva ungerska őŐ med altgr+å och därefter oO, man kan skriva isländska tecken såsom þÞðÐ o.s.v.. För Windows XP finns en layoutdriver nedladdningsbar från Microsoft, övriga aktuella OS verkar ha layouten inbyggd och jag tror till och med den är default i vissa Linuxvarianter).
- zekkexavior
- Inlägg: 571
- Blev medlem: 16 oktober 2011, 00:50:42
- Skype: zekkexavior
- Ort: Östergötland
Re: Nästa tangentbordsprojekt...
Ang. tangentbordslayouten, gör rent tangenterna, grunda dem, sandpappra lätt, på med gnuggisar, klarlacka 

Re: Nästa tangentbordsprojekt...
Det enklaste först kanske. WASD keyboards är ett ganska nytt företag som har lagt sig i den här nischen. Jag är inte så insatt i deras sida men det ska gå att skapa helt egna layouter på knapparna, text eller svg-filer. Det går att få bara knapparna eller hela tangentbord. Knapparna passar då Cherry MX-switcharna, tangentborden är såklart baserade på sådana också =)MiaM skrev:En bonusfråga: Har du något tips på att få egen text på tangenttopparna på ett befintligt tangentbord?
Jag skulle gärna vilja ha specialtecknen som finns i finnish multilingual synliga direkt på tangentbordet.
(Jag rekomenderar för övrigt alla som idag använder svensk tangentbordslayout att överväga finnish multilingual eftersom man då dels får exakt alla befintliga funktioner som svensk layout har och dessutom får man finesser såsom danska æøÆØ direkt med altgr+äö, man kan skriva ungerska őŐ med altgr+å och därefter oO, man kan skriva isländska tecken såsom þÞðÐ o.s.v.. För Windows XP finns en layoutdriver nedladdningsbar från Microsoft, övriga aktuella OS verkar ha layouten inbyggd och jag tror till och med den är default i vissa Linuxvarianter).
Det går kanske att hitta någon med tillgång till en lasergraverare som kan tänka sig att fritidsexperimentera lite också.
Finnish multilingual är utvecklat av lingvistik på CSC, KTH om jag inte kommer ihåg fel. Vet inte riktigt varför det inte blev svensk standard också. Det finns kanske lite drama begravt där om man letar lite... Själv använder jag i stort sett aldrig utav några av de tecknen den layouten erbjuder. Jag ser hellre lite grekiska och andra tecken som används i matematiskt vetenskapliga texter.
Jag tror att jag börjar få koll på hur jag vill koppla ihop det här. Det blir nog två separata matriser ändå. 6 grupper med 3 shiftregister i varje, så en bit för varje LED. Då kommer det gå fort att ladda en "bild" i "grafikbuffern" =) Det blir 8 portar med 6 bitar plus 2 klocksignaler.MiaM skrev:Om USB-koden går på interrupt med högre prioritet så kanske muxningen av tangentbordet kan timerstyras så att varje muxsteg får lika lång tid för att slippa få flimmer. Det kanske inte spelar så stor roll heller.
Om du vill så kan du ju kombinera PWM med muxningen, så att du stegar till nästa muxnivå synkroniserat med PWM-frekvensen. Annars kanske (eller kanske inte) det blir ett svagt flimmer? Vid 60kHz så börjar nog kapacitans bli märkbar, bli inte förvånad om du inte märker skillnad på de sista stegen närmast max ljusstyrka.
En variant som nog är bra är att låta PWM-utgången passera ett lågpassfilter så att det blir en analog spänning och låta den via lämplig buffer utgöra matning till lysdiodstegen. Lämpligt kan vara att forma PWM-signalen så att du kompenserar för t.ex. spänningsfall i bas-emittersträckor o.s.v., det är ju onödigt att kunna reglera inom områden som ändå inte ger någon synlig effekt. Poängen med lågpassfilter är att tangentbordet borde stråla åtminstone lite mindre radiostörningar om det "bara" är muxningen och inte också PWM som strålar. Jag vet inte hur EMC-kraven ser ut men jag antar att komersiella tangentbord med en gummimatta inte bara har en metallbas för att få stabilitet utan också av radiostörningsskäl. Om du vill jobba på att minska EMC-strålning så skulle du kunna lågpassfiltrera styrsignalerna så att du avsiktligt får sämre flanker på muxningen. I praktiken är det säkert inget problem om du inte tänkt använda tangentbordet i närheten av radioamatörer som sysslar med kortvåg eller liknande. Nån annan som har bättre koll får gärna yttra sig här.
Raderna får cyklas kontinuerligt från en dekadräknare. Klockan till den är kör PWM, frekvensen klockar dekadräknaren och duty-cykeln styr intensiteten. Med 21 LEDar per rad och 20mA per LED är nästan de 500mA USB ger upptagna. Så inga LEDar kommer att drivas hårdare än vad de klarar kontinuerligt. Det underlättar lite också. Det går att skala ner frekvensen på PWMn i hårdvaran. Jag vet inte om just 512Hz går men det skulle nog vara lagom. Då blinkar LEDarna i 85Hz.
Knappavläsningen gör jag nog med tre stycken 8 bitars-buffrar. 7 portar för att läsa av värdena, 3 för att välja buffer och 5 för att dra en rad i taget låg.
Då kommer det att bli en ATmega32u4 i slutänden ändå. Jag har rätt dålig koll på programmeringen av den, så det kan nog dessutom vara bra att välja en processor jag har kod som faktiskt fungerar till...
Jag ska rita kopplingsschema så snart jag har tid, inte nu på jobbet iaf =)
Re: Nästa tangentbordsprojekt...
zekkexavior:
Finns gnuggisar att köpa över huvud taget nu för tiden, och var får man tag på gnuggisar med de ovanliga symbolerna som ingår i finnish multilingual? (Isländsk webbshop?)
Jag minns inte varför men jag letade efter gnuggbokstäver och frågade på t.ex. Panduro (hobbybutik i Göteborg) och några bokhandlar men de hade inte.
Det kan ha varit så att de haft "blanka" gnuggark för skrivare men att jag glömt det eftersom jag då bara hade laserskrivare och sådant antagligen bara är gjort för bläckstråle. (För länge sen har jag fått rensa upp efter klantskallar som kört ickevärmetåligt OH-papper i kopiator, skrynkel... korkat nog hände det ofta eftersom nån snåljåp tyckte det var en bra idé att både köpa värmetåligt och ej värmetåligt OH-papper på grund av prisskillnaden).
PrinsValium:
Ja, det är säkert nån slags drama som gjort att finnish multilingual inte blev standard i Sverige, eftersom det inte finns någon för mig känd anledning att inte köra finnish multilingual istället för vanlig svensk standard. Visserligen är det sällan jag behöver några av specialtecknen men ibland skriver jag danska/norska ortnamn och det var smidigt att kunna skriva ő i samband med semestern i Budapest. Visst går det bra att skriva med "fel" tecken och göra texten begriplig, men det ser snyggare ut att använda rätt tecken
Intressant med WASD Keyboards, tack för tipset!
Vad gäller USB och 500mA så kan det också vara värt att tänka på att en USB-port bara orkar 100mA (om jag inte minns fel) innan datorn pratat med enheten på rätt sätt, så det kan alltså vara bra att vara extra noga med att LED'arna inte drivs förrän processorn kommit igång.
Ett bra trick är att se till att spännignsdelare för basströmmen väljs så att transistorerna inte börjar leda förrän matningsspänningen är så hög att logikkretsarna är specade att fungera korrekt (74HCxx är en bra logikserie eftersom den är specad att fungera vid 2V, då har man god marginal mellan att kräva minst 2V för att driva transistorerna och att man faktiskt har nära 5V när kretsen är vaken) och driva en resetingång eller styra output enable via en förlängd resetsignal (kan byggas analogt med motstånd, kondensator och dioder som skyddar kretarna mot backmatning från kondensatorn då spänningen bryts, även om man i teorin inte ska mata in en analog rampspänning på digitala ingångar).
För övrigt är tricket med 74HC-logik och att bygga transistorkopplingar så att över 2V krävs även bra för t.ex. kopplingar där triac'ar styr 230V. Jag har varit med om att bygga styrkort för 230V-lampor där vi faktiskt tänkte på detta och det var nog enda hembygget jag varit med om där man inte "känner" en startströmspik om man slår på strömmen genom att slå på vanliga din-skenemonterade automatsäkringar. Med de flesta andra hembyggen blir det ofta en strömspik vid påslag och den brukar kännas rent mekaniskt i fingrarna som en ryckning i vipporna på automatsäkringarna.
Finns gnuggisar att köpa över huvud taget nu för tiden, och var får man tag på gnuggisar med de ovanliga symbolerna som ingår i finnish multilingual? (Isländsk webbshop?)
Jag minns inte varför men jag letade efter gnuggbokstäver och frågade på t.ex. Panduro (hobbybutik i Göteborg) och några bokhandlar men de hade inte.
Det kan ha varit så att de haft "blanka" gnuggark för skrivare men att jag glömt det eftersom jag då bara hade laserskrivare och sådant antagligen bara är gjort för bläckstråle. (För länge sen har jag fått rensa upp efter klantskallar som kört ickevärmetåligt OH-papper i kopiator, skrynkel... korkat nog hände det ofta eftersom nån snåljåp tyckte det var en bra idé att både köpa värmetåligt och ej värmetåligt OH-papper på grund av prisskillnaden).
PrinsValium:
Ja, det är säkert nån slags drama som gjort att finnish multilingual inte blev standard i Sverige, eftersom det inte finns någon för mig känd anledning att inte köra finnish multilingual istället för vanlig svensk standard. Visserligen är det sällan jag behöver några av specialtecknen men ibland skriver jag danska/norska ortnamn och det var smidigt att kunna skriva ő i samband med semestern i Budapest. Visst går det bra att skriva med "fel" tecken och göra texten begriplig, men det ser snyggare ut att använda rätt tecken

Intressant med WASD Keyboards, tack för tipset!
Vad gäller USB och 500mA så kan det också vara värt att tänka på att en USB-port bara orkar 100mA (om jag inte minns fel) innan datorn pratat med enheten på rätt sätt, så det kan alltså vara bra att vara extra noga med att LED'arna inte drivs förrän processorn kommit igång.
Ett bra trick är att se till att spännignsdelare för basströmmen väljs så att transistorerna inte börjar leda förrän matningsspänningen är så hög att logikkretsarna är specade att fungera korrekt (74HCxx är en bra logikserie eftersom den är specad att fungera vid 2V, då har man god marginal mellan att kräva minst 2V för att driva transistorerna och att man faktiskt har nära 5V när kretsen är vaken) och driva en resetingång eller styra output enable via en förlängd resetsignal (kan byggas analogt med motstånd, kondensator och dioder som skyddar kretarna mot backmatning från kondensatorn då spänningen bryts, även om man i teorin inte ska mata in en analog rampspänning på digitala ingångar).
För övrigt är tricket med 74HC-logik och att bygga transistorkopplingar så att över 2V krävs även bra för t.ex. kopplingar där triac'ar styr 230V. Jag har varit med om att bygga styrkort för 230V-lampor där vi faktiskt tänkte på detta och det var nog enda hembygget jag varit med om där man inte "känner" en startströmspik om man slår på strömmen genom att slå på vanliga din-skenemonterade automatsäkringar. Med de flesta andra hembyggen blir det ofta en strömspik vid påslag och den brukar kännas rent mekaniskt i fingrarna som en ryckning i vipporna på automatsäkringarna.