Knappsats
Knappsats
Jag ska bygga en kodströmbrytare, väldigt enkel en.
Den ska driva en liten solenoid fram och tillbaka
hade tänkt att den ska fungera så att man trycker sin kod och sedan "hänglås öppet" likadant för att låsa
(datablad på solenoiden http://www.magnet-schultz.de/Uk/downloa ... 29&dlid=66
Den ska driva en liten solenoid fram och tillbaka
hade tänkt att den ska fungera så att man trycker sin kod och sedan "hänglås öppet" likadant för att låsa
(datablad på solenoiden http://www.magnet-schultz.de/Uk/downloa ... 29&dlid=66
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
ejohsjo
Det vore kul att höra lite mer om det här projektet. Det är ju postat i Projekt-delen...
Hur ska du fixa delen som kollar om man slagit in rätt kod? Thyristorer eller någon microkontroller (typ PIC/AVR) ?
Thyristorer har den trevliga egenskapen att de fortsätter släppa igenom ström när de fått en gate-signal. Sätter man några sådana i en kedja så är själva kod-kontroll-delen klar. En väldigt enkel variant, men ändå.
Det vore kul att höra lite mer om det här projektet. Det är ju postat i Projekt-delen...

Hur ska du fixa delen som kollar om man slagit in rätt kod? Thyristorer eller någon microkontroller (typ PIC/AVR) ?
Thyristorer har den trevliga egenskapen att de fortsätter släppa igenom ström när de fått en gate-signal. Sätter man några sådana i en kedja så är själva kod-kontroll-delen klar. En väldigt enkel variant, men ändå.

En knappsats från en gammal telefon kan användas, har själv inte kommit
så långt i mina experiment mer än att rita upp knappmatrisen långt kvar till
att fixa en PIC styrning men det blir väll..
I alla fall så var alla de knappsatser jag provade enkla knappmatriser dvs
signal in på rad ett,två,tre eller fyra och sedan detektera om man fick ut
signal i kolumn ett, två eller tre.
Nu är ju dom där gamla knappsatserna inte så snygga men du kan ju bygga
en egen knappmatris av några snygga knappar om du har lust. Själva
teorin bakom detta kanske du kan själv men lite enkelt skissat blir det
ungefär såhär.
. 1 2 3
1# # #
2# # #
3# # #
4# # #
Knapp ett (högst upp till vänster) kopplas alltså till rad ett och kolumn ett,
knapp två till rad ett kolumn två, på så sätt kan du läsa av tolv knappar
fast du bara använder 7 pinnar på din uC
Ska bli kul att följa ditt projekt och se hur du väljer att lösa detta.
Mvh
Nole.
så långt i mina experiment mer än att rita upp knappmatrisen långt kvar till
att fixa en PIC styrning men det blir väll..
I alla fall så var alla de knappsatser jag provade enkla knappmatriser dvs
signal in på rad ett,två,tre eller fyra och sedan detektera om man fick ut
signal i kolumn ett, två eller tre.
Nu är ju dom där gamla knappsatserna inte så snygga men du kan ju bygga
en egen knappmatris av några snygga knappar om du har lust. Själva
teorin bakom detta kanske du kan själv men lite enkelt skissat blir det
ungefär såhär.
. 1 2 3
1# # #
2# # #
3# # #
4# # #
Knapp ett (högst upp till vänster) kopplas alltså till rad ett och kolumn ett,
knapp två till rad ett kolumn två, på så sätt kan du läsa av tolv knappar
fast du bara använder 7 pinnar på din uC
Ska bli kul att följa ditt projekt och se hur du väljer att lösa detta.
Mvh
Nole.
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
"på så sätt kan du läsa av tolv knappar fast du bara använder 7 pinnar på din uC"
Eller så kan man koppla 18 knappar till *en* pinne på µC'n genom att göra såhär:

Det schemat visar bara 6st knappar, men det är bara att fylla på med fler motstånd och knappar. Jag har förresten motståndsvärdena om någon är intresserad.
edit: Här finns tråden.
edit 2: Stavfel... "Knappar" istället för "knapar"
Eller så kan man koppla 18 knappar till *en* pinne på µC'n genom att göra såhär:

Det schemat visar bara 6st knappar, men det är bara att fylla på med fler motstånd och knappar. Jag har förresten motståndsvärdena om någon är intresserad.
edit: Här finns tråden.
edit 2: Stavfel... "Knappar" istället för "knapar"
-
- Inlägg: 3663
- Blev medlem: 11 september 2004, 09:30:42
- Ort: gbg
- Kontakt:
Är det inte krångligt att räkna ut vilka motståndsvärden man ska ha med det parallella schemat (man måste ju använda 1/R1 + 1/R2 + 1/Rn = 1/Rtot)
Är inte detta bättre:

Då behöver man i PICen bara läsa av ohmvärdet, sedan avrunda till jämna kohm, sedan konvertera det till X antal bitar, där X är antal motstånd, och sedan invertera detta, så vet man vilka knappar man tryckt ner (och det går ju att trycka ner flera samtidigt och den vet fortfarande vilka knappar som är nedtryckta)
Är inte detta bättre:
Då behöver man i PICen bara läsa av ohmvärdet, sedan avrunda till jämna kohm, sedan konvertera det till X antal bitar, där X är antal motstånd, och sedan invertera detta, så vet man vilka knappar man tryckt ner (och det går ju att trycka ner flera samtidigt och den vet fortfarande vilka knappar som är nedtryckta)
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Men man kan inte läsa av ohm-värdet i PICen. AD-omvandlaren kan bara läsa av spänningar.
Oavsett om man väljer din eller min lösning så behöver man varken läsa av eller räkna ut ohm-värdet.
* Välj motstånd som ligger tillräckligt långt ifrån varandra, minst ca 300ohm's skillnad är ganska lagom om man inte ska ha alldeles för många knappar.
* Plocka man fram en multimeter och mät hur mycket spänning som kommer ut vid varje knapptryckning.
* För att sedan få reda på värdet som AD'n kommer lämna så räknar man:
1023 * (spänning från knappen / matningspänning till PIC och knappar) = Värdet från ADC'n.
Denna uträkning görs alltså inte i PIC'en!
Så det enda man behöver göra i PIC'en är att läsa av ADC'n och kolla vilken knapp som trycktes ner.
Ett exempel:
För-arbetet:
Låt säga att Knapp nr 3 ger 2,5V och att knappar och PIC matas med 5V. Då räknar vi:
1023 * (2,5 / 5) = 511,5
1023 gäller alltså om man har 10bitars AD.
I PIC-koden:
PIC-koden läser av ADC'n.
Om värdet blev mellan 509 och 513 (det är bra med lite marginal) så trycktes Knapp nr 3 in.
Klart!
edit: Om man inte gillar att räkna så kan man göra som jag gjorde:
Välj ut motstånd som har ett värde som ligger lagom långt ifrån varandra. (Gärna så långt ifrån som möjligt.)
Löd ihop och koppla in till en analog ingång på PIC'en.
Läs av ADC'n och visa resultatet på en display eller via RS232 till datorskärmen.
Knappa in koden för att kolla vilken knapp som trycktes ner. T.ex IF value >=509 AND value <=513 THEN knapp = "nr3".

Oavsett om man väljer din eller min lösning så behöver man varken läsa av eller räkna ut ohm-värdet.
* Välj motstånd som ligger tillräckligt långt ifrån varandra, minst ca 300ohm's skillnad är ganska lagom om man inte ska ha alldeles för många knappar.
* Plocka man fram en multimeter och mät hur mycket spänning som kommer ut vid varje knapptryckning.
* För att sedan få reda på värdet som AD'n kommer lämna så räknar man:
1023 * (spänning från knappen / matningspänning till PIC och knappar) = Värdet från ADC'n.
Denna uträkning görs alltså inte i PIC'en!
Så det enda man behöver göra i PIC'en är att läsa av ADC'n och kolla vilken knapp som trycktes ner.
Ett exempel:
För-arbetet:
Låt säga att Knapp nr 3 ger 2,5V och att knappar och PIC matas med 5V. Då räknar vi:
1023 * (2,5 / 5) = 511,5
1023 gäller alltså om man har 10bitars AD.
I PIC-koden:
PIC-koden läser av ADC'n.
Om värdet blev mellan 509 och 513 (det är bra med lite marginal) så trycktes Knapp nr 3 in.
Klart!

edit: Om man inte gillar att räkna så kan man göra som jag gjorde:
Välj ut motstånd som har ett värde som ligger lagom långt ifrån varandra. (Gärna så långt ifrån som möjligt.)
Löd ihop och koppla in till en analog ingång på PIC'en.
Läs av ADC'n och visa resultatet på en display eller via RS232 till datorskärmen.
Knappa in koden för att kolla vilken knapp som trycktes ner. T.ex IF value >=509 AND value <=513 THEN knapp = "nr3".