probleem met keypad

Hoi,
Ik heb op een microcontroller ene keypad aangesloten.
Dit ging op het breadboard altijd goed.

Nu heb ik gisteren de printplaat geetst en vandaag gesoldeerd. Nu kan ik de getallen 1,4,7 niet meer gebruiken.
Maar het rare is dat het sterretje wel gewoon werkt.
Dus het ligt niet echt aan de rij, maar ook niet echt aan de kolom.
Wat zou het probleem kunnen zijn?

Groeten,
Thijs

edit:
Als ik op de printplaat zelf de poorten met een draadje doorverbind krijg ik heel soms een 4 te zien.

edit2:
probleem is opgelost!
Ik heb alle weerstanden vervangen door 22 ohm weerstanden.

De print uitmeten op slechte solderingen/ verbindingen.

If electronics aint your life, what r u doing here?
Arco

Special Member

Het zal wel, moeilijk om iets zinnigs over te zeggen zonder schema... ;)
Maar dat een keypad alleen werkt met 22 Ohm lijkt me niet gezond.
(Alleen al om de hoge stroom die dan door de contactjes loopt)

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

er loopt toch helemaal geen stroom?
De microcontroller zet toch gewoon een poort hoog, en kijkt dan welke hoog wordt?

marcob

Golden Member

Heb je programmer nog aangesloten? Dat gooit ook roet in het eten.

People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years

nee, er zit geen programmer meer aan.
Er zit wel een 2 meter lange bandkabel tussen waar ook de signalen voor het display overheen lopen.

Arco

Special Member

...er loopt toch helemaal geen stroom?

Er loopt altijd stroom als je een toets indrukt, anders gebeurt er niets... ;)
Als het alleen met 22 Ohm werkt moet er toch een flink stroompje lopen....
(Of er is iets anders vreemds aan je schakeling)

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

tussen de aansluitpads van de bandkabel en de microcontroller zit alleen een stukje koper van 0,32mm breed en ongeveer 1 centimeter lang.
En bij de helft zit er dus op die plaats van het koper een weerstand.

Misschien heeft mijn bandkabel een hoge weerstand?

Er is toch wel iets meer aan de hand.
Hij herkent nu een nul ook vaak(niet altijd) als een sterretje.

Weten jullie nog een oplossing?
Bij deze het schema en board layout
http://tysie.x90x.net/boot/Naamloos.jpg
http://tysie.x90x.net/boot/Naamloos2.jpg

Op pad 1 tm 8 zit de bandkabel voor het keyboard

Arco

Special Member

Wat zit er aan pad 10,11,12? Waar zijn de 180 Ohm weerstanden voor?

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

Die weerstanden heb ik nu dus vervangen voor 22 ohm weerstanden.
Volgens de beschrijving van proton moeten er namelijk weerstanden tussen.
Of moet ik deze weglaten?
Ik zal zo wel ff in de manual kijken of ze ook vertellen waar deze voor dienen.

Die andere 3 pads zijn om de programmer eventueel op aan te sluiten.
In deze pads zit op dit moment dus niks gesoldeerd

Edit: in de uitleg staat niet waarom die weerstanden daar zitten.

Waarom hebben ze er hier geen weerstanden tussen? Is het niet verplicht dan?
http://www.viddata.com/images/keypad.gif

[Bericht gewijzigd door tysie op maandag 26 maart 2012 12:28:49 (13%)

Arco

Special Member

Het hoeft niet, nee. (Ik zelf gebruik ze nooit)
Ze zijn bedoeld om de poorten te beschermen als door een of andere oorzaak de hele poort als output komt te staan, en twee pinnen met tegengestelde polariteit aan elkaar komen.
In principe is de poort daar al prima tegen beschermd doordat de stroom intern begrensd is.
Zit er geen fout in je code?

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

Ik wil de code wel posten.
Maar dit gaat om 400 regels.
En hij werkte altijd goed op mn breadboard.

Ik zal de weerstanden wel ff overbruggen met een draadje om het te testen.

edit: Dit werkt dus ook niet.
Hij blijft de nul voor een sterretje aanzien.
Ik heb de knoppen ABCD ook als waarde 0, en daarmee kan ik wel gewoon een getal 0 intypen.

[Bericht gewijzigd door tysie op maandag 26 maart 2012 13:03:25 (32%)

Op 26 maart 2012 12:43:41 schreef Arco:
Het hoeft niet, nee. (Ik zelf gebruik ze nooit)
Ze zijn bedoeld om de poorten te beschermen als door een of andere oorzaak de hele poort als output komt te staan, en twee pinnen met tegengestelde polariteit aan elkaar komen.
In principe is de poort daar al prima tegen beschermd doordat de stroom intern begrensd is.
Zit er geen fout in je code?

Dit is dacht ik ook om te voorkomen dat je sluiting krijgt door 2 knoppen tegelijk in te drukken.

Leren kan je alleen maar door te Doen

Ik heb er nu een nieuwe pic in gezet.
Maar het werkt nog steeds niet.

Hier gaat het dus vooral fout:
De controller denkt dat er 70 wordt ingevoerd.

pic basic code:


WHILE 1=1
  toets = INKEY      ' Scan the keypad 
  IF toets != 16 THEN 
  toets = LOOKUP toets, [70,0,80,0,7,8,9,0,4,5,6,0,1,2,3,0]
  IF toets = 70 THEN GOTO radio
  IF toets = 80 THEN GOTO radiouit
  Frequentie = Frequentie * 10 + toets
  IF Frequentie > 1080 THEN Frequentie = 1080
  IF Frequentie/1000 >= 1 THEN GOTO radio
  PRINT AT 2,1, DEC Frequentie / 10,".",DEC1 Frequentie // 10," mhz"
  DELAYMS 200
  ENDIF
    
  teller = teller + 1
  IF teller = 200 THEN   
  teller = 0
  ENDIF
  
  GOSUB accustatus
  GOSUB licht
  GOSUB kloklezen
  
  DELAYMS 100
WEND

[Bericht gewijzigd door tysie op maandag 26 maart 2012 13:14:00 (83%)

Ik heb net even de bandkabel losgegooid.
Als ik dan met een draadje ga doorverbinden op de printplaat werkt de 0 wel gewoon.
Maar zo gauw de bandkabel er weer aan hangt werkt de nul weer als sterretje. Ook als ik dan met een draadje over de printplaat ga.

Als declaratie is dit toch voldoende?

pic basic code:


OPTION_REG.7 = 0

Hoi,

Dat INKEY zal ongeveer zo werken: elke uitgang wordt een voor een actief gemaakt, waarna steeds de vier ingangen ingelezen worden.
Als je er twee meter flatkabel tussen hebt zitten, kan ik me voorstellen dat er even gewacht moet worden tussen de schrijf actie en het lezen van de ingangen. Als je te vroeg leest zijn de ingangen nog niet op de goede waarde.
Ik ken dat INKEY commando niet. Is er nog iets instelbaar?

42

Bij de declares in de info staat alleen dat je hem evt op een andere poort aan zou kunnen sluiten.
Kan ik niet nog iets met extra pull-ups doen ofzo?

Ik heb ook gelezen dat bij 20 mhz de interne pull-ups misschien te hoog zijn.
Kan dit kloppen? Ik kan de waarde niet vinden in de datasheet

[Bericht gewijzigd door tysie op dinsdag 27 maart 2012 14:34:23 (32%)

Arco

Special Member

Voor een keyboard (zeker een met lange kabel), voldoen de interne pull-ups niet.
Beste een paar externe pull-ups van 4k7...10k nemen.

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

Oke dan probeer ik het met 4k7 wel even.
Moet ik die op alle rijen en alle kollommen zetten?

En zal ik deze op de printplaat zetten, Of bij het keypad(2 meter verderop)

maakt volgens mij niet zo heel veel uit.
edit;
zoals hieronder staat: wel op de inputs

[Bericht gewijzigd door jeroenk50 op dinsdag 27 maart 2012 15:27:21 (38%)

Arco

Special Member

Op de vier inputs, en waar maakt niet zoveel uit...

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

Maar wat zijn de inputs?
De kolommen of de rijen?

Arco

Special Member

Dan moet je in de PicBasic manual kijken. (Zal toch wel bij die INKEY functie beschreven staan?)
(Waarschijnlijk 5,6,7, en 8 inputs, want tussen de andere 4 zat de 180 Ohm weerstand)

[Bericht gewijzigd door Arco op dinsdag 27 maart 2012 15:49:19 (31%)

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

Nee stond er niet bij.
Maar kwam erachter dat dit de poorten waren die niet zon weerstand hadden.

Nu werkt hij helemaal perfect!
Bedankt voor alle hulp!

Ik kreeg alleen problemen dat hij de 1 niet herkende. Maar dit was ook snel opgelost door die weerstand gewoon te overbruggen met een draadje. Die kolom heeft nu dus geen beveiliging.

Nu alleen mn hele print nog wat opknappen en hij kan gebruikt worden.

Bedankt!