Sida 1 av 2

6st knappar till en ingång...

Postat: 23 november 2005, 02:15:22
av JimmyAndersson
Tänkte bara tipsa om en smidig grejj som jag nyss gjort:

Jag hade 6st tangentbordsknappar som skulle kopplas till en PIC-krets.
För att spara sladdar och ingångar så byggde jag en modifierad form av D/A-omvandlare med motstånd, (sådana brukar kallas "R2R-stege".)
Knapparna ger varsin egen spänning till "UT" och denna kopplas till en analog ingång på PIC-kretsen som läser av vilken knapp som trycktes ner.

Med den här principen kan man även trycka på flera knappar samtidigt om man vill, men då skulle jag nog ha valt antingen andra motstånd för att få bättre ut-värden. Motstånden valdes förresten för att få så stor skillnad som möjligt mellan varje ut-spänning. (Skulle vilja ha haft lite större skillnad, men jag äger inte alla motståndsvärden i världen...)


Bild

R1 - 180ohm
R2 - 470ohm
R3 - 1kohm
R4 - 1.8kohm
R5 - 3.9kohm
R6 - 1kohm
R7 - 1kohm

Knapparna ger följande spänningar ut, aningen avrundade: 1v, 1.8v, 2.5v, 3.4v, 4.3v. (räknat från knappen vid R5, till den längst till höger.)


Kan förresten tillägga att det fungerar. :)

Postat: 23 november 2005, 07:25:45
av Icecap
"Standart" är i övrigt att sätta motstånderna över var sin brytare och sedan sätta brytar/motstånd i serie, mata ena ändan från + och ha en pull-down i andra ändan där man tar ut den analoga spänningen.

På detta vis kan man, med "klurig nog" mjukvara, ta ut alla knapper även om man tryckar på alla samtidig.

Det finns en PIC application note som behandlar just detta.

Postat: 23 november 2005, 12:34:09
av Greve Hamilton
Jo, visst är det bra att göra på detta sätt. Speciellt om man har ont om ingångar på mikrokontrollern.
Jag brukar dock göra så som Icecap säger.

Postat: 23 november 2005, 15:16:07
av JimmyAndersson
Icecap: "Din" lösning var mycket bättre. 'Tänkte inte på det', som det brukar heta. :)
Med min variant får man ju en parallellkoppling av "brytarmotstånden" om man trycker ner fler knappar samtidigt (förutom när knappen utan motstånd trycks ner).

Min koppling är bara en snabblösning som jag ska använda för att testa olika spegelpositioner till mitt laserprojekt. Knapparna kommer från den numeriska delen av ett gammalt tangentbord. Lo-tech på hög nivå... :)

Postat: 23 november 2005, 16:46:09
av Icecap
En primitiv lösning på ett problem är fortfarande en lösning!

Att man kan göra det på många andra sätt är en annan sak, jag tycker att du har tänkt till och det är bra! :bravo:

Postat: 23 november 2005, 17:37:11
av JimmyAndersson
Tack! :)

Postat: 14 januari 2006, 14:07:21
av pheer
Länk eller nr?
Det finns en PIC application note som behandlar just detta.

Postat: 14 januari 2006, 16:52:44
av baron3d
Hej
Har provat med en koppling som har en kondensator över R6.
Detta för att få en bra avstudsning. Programmet scannade porten kontinuerligt, så fort som det blev samma värde två ggr i rad accepterade jag knapptryckningen.

Postat: 14 januari 2006, 17:08:36
av MadModder
Men att ha exempelvis 16 knappar och sen kunna läsa av att allihop är nedtryckta kan ju bli lite svårt om man inte har en ADC med massor av bitar...

Postat: 14 januari 2006, 17:19:04
av Malm
Finns det inte någon trevlig liten IC som kan ta in knapparna som en parellell signal och sedan skicka in den seriellt till PIC:en? Kräver väl dock 2 pinnar på processorn...

Postat: 14 januari 2006, 17:22:51
av Tekko
Denna variant används ofta på tex cd-spelare och andra hemelektronik saker.

Postat: 14 januari 2006, 17:26:15
av Icecap
MadModder: där har du faktisk fel! Använder man rätt värden på motstånden räcker det med en AD på 5 bit för 16 knappar.

Postat: 14 januari 2006, 17:36:16
av MadModder
Jaså? Med 16 knappar kan man trycka ner dem i 65535 olika kombinationer. Hur är det möjligt att läsa av alla dessa kombinationer med 5 bitar?

[edit]
Kan det vara det här dokumentet?
Tips och tricks
Med den knappavläsarmetoden de visar där går det inte att läsa av ifall fler knappar är nedtryckta. Man får alltid det värde som knappen nedtryckt närmast PICen ger.

Däremot visar de en bra knappmatrisavläsning med liknande metod. :)

Postat: 14 januari 2006, 19:31:02
av Icecap
Javisst...får skylla på väckarklockan som ringde helvetes tidigt fastän den borde ha haft vett att vara tyst...dagen började liksom .... fel ("#¤&&/"%&#"% typ)

Inte den AN jag tänkte på och då MicroChip är nere för planerat maintenance får jag hänvisa senare.

Postat: 16 januari 2006, 18:03:07
av pheer
Hittat appnoten?