Heb even een klein vraagje...
Als ik op een PIC een raster van 12 druksckaelaars in een matrix wil plaatsen, hoe zit dat dan eigenlijk met pull-up (of pull-down) weerstanden???
Moeten deze er dan ook opzitten???
Er zijn verschillende wegen die naar Rome leiden.
In welke taal ga je proggen?
Het mooiste is als je de interne pull-ups kunt gebruiken voor de rijen (of voor de kolommen). Dan heb je geen externe weerstandjes nodig.
Ik ga voornamelijk de 16F887 (of eventueel de wat oudere 16F877A) PIC gebruiken.
Programmeertaal is PIC Basic.
(Heb nog geen ervaring met het werken met matrixen in PICBasic dus vandaar dit idee...)
Ik wil een klein experimenteerbordje zelf maken (kopen kan ook maar zelf maken is leuker en leerzamer) en daarbij gebruik maken van een matrix van LEDjes en drukschakelaartjes. De ledjes komen dan met de kathode aan de PIC te hangen.
Doel is voornamelijk om wat meer te kunnen experimenteren met het aansturen van zo'n matrix, en te experimenteren met shift register die ik er ook een stuk of twee op zal zetten.
Daarnaast zal er dan ook mog een lcd schermpje (2x16) op aangesloten worden.
Ik ben nog bezig met het tekenen van het schema, maar zodra deze klaar is zal ik hem hier wel posten, voor commentaar...

Denk bij het tekenen van het schema gelijk na over de software.
Het is handig als je twee verschillende poorten neemt voor de rijen en de kolommen. 1 van de 2 poorten met interne pullups.
En bij beide poorten met bit0 beginnen met aansluiten 
Ik heb dit wel eens gemaakt in ASM.
Staat er geen voorbeeld op picbasic.nl ?
Op PicBasic staat een hele hoop, moet nog wel wat van die site in de praktijk brengen, maar ik geloof niet dat ik er iets over multiplexen / matrix heb zien staan.
Mischien dat dat soort dingen niet echt bij een 'beginnerscursus' horen, dat kan natuurlijk ook!
Ik zal er in ieder geval met het tekenen rekening mee proberen te houden met de aansluitingen van de poorten.
Bedankt voor de tip!
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Als je zoekt op 'matrix keyboard picbasic' is er toch genoeg te vinden...
Deze kun je zelfs compleet bestellen, of zelf maken; het schema staat erbij. Evenals de sourcecode in MikroBasic. (Dat moet niet al te moeilijk zijn om om te zetten...)
Zo'n zelfde schema had ik dus zelf ook in gedachte, ik vroeg me nu alleen af of hier dan ook pull-up weerstanden bij moesten. Maar zoals ik in dit schema zie niet.
(Alleen kan ik hier dus niet zien of de poort deze wel heeft en of deze dan geactiveerd zijn...)
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Port b heeft pull-up weerstanden. Bij andere poorten moet je die extern toevoegen. Die weerstanden zijn natuurlijk altijd nodig; je kunt de ingangen niet laten zweven...
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
PortB heeft interne pull-ups die je al dan niet kan inschakelen (als de respectievelijke I/O pin als ingang is ingesteld), daarnaast kan je op de experimenteerboards waar die matrix van MikroBasic in gaat nog eens zelf pull-ups of downs inschakelen.
Het uitlezen van een matrix is simpel: je hebt kolommen en rijen, een van beide gebruik je om te selecteren, en op de andere ga je uitlezen. Op de uitlees-draden hang je de ingangen van de PIC, als geen knop ingedrukt is dan zweven die (dat mag niet, dus moet je hier een pull-up of down hangen). De select-draden ga je dan een na een aan de +5V of aan de massa hangen (mag je kiezen, maar de keuze van pull-down of up op de uitlees-draden hangt hier van af).
Teken het schema eens uit met balpen of druk het af, en ga met potlood na hoe alles verloopt (knop ingedrukt of niet ingedrukt, hoe weet je welke knop,...).
Op 29 november 2008 13:56:47 schreef Arco:
Port b heeft pull-up weerstanden...
Ach ja, ik had het kunnen weten he?!... zucht... 
RTFD!!!
Soms zit ik met een ideetje in mijn hoofd en dan vergeet ik daar gewoon naar te kijken... Anders had ik gewoon kunnen lezen op P5 dat op poortB de pull-up weerstanden zitten.
@videomodulator:
Het theoretische gedeelte van het uitlezen van een matrix begrijp ik wel. Heb zoiets al eens gedaan met LEDjes. Gewoon de betreffende ingangen een "1" of "0" geven en de LEDjes laten branden die je wil. Alleen het praktische gedeelte (= programma) in PicBasic moet ik nog even mee stoeien denk ik. Maar dit zal ongetwijfeld wel bijna hetzelfde zijn als de LEDjes laten branden...
Heb het eerste opzetje van het schema grotendeels klaar.
Ik weet nu wat ik erop wil hebben, zoals:
* een motor-sturing
* LCD schermpje
* 3 7-segment display's
* twee schuifregisters met LED's
* toetsenboard & led Matrix
Wilde eventueel ook nog de EUSART-poort gebruiken op de PIC maar hou het voorlopig bij deze opzet denk ik.
(Wat er nog wel bij getekend moet worden is een ICSP connector voor de WISP programmer...)
Aangezien het schema nogal groot is uitgevallen, hier de link naar het betreffende schema:
Schema PIC Experimenteer Board
Ik hoor graag eventueel commentaar 
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Sorry maar ik kan alleen een .jpg uploaden en die wordt, zie ik, inderdaad vrij wazig......
Heb twee ontkoppelcondensators erbij getekend (IC1 en IC5), volgens mij hoeven de schuifregisters toch geen ontkoppelcondensator???
Voor de rest is het schema alles behalve af... Weerstandswaarden zijn ook nog lang niet allemaal goed, en nog een paar kleine dingen...
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Na de onderstaande tip van ARCO hierbij het LEESBARE schema:
http://www.uploadarchief.net/files/download/schemapeb.pdf
[Bericht gewijzigd door stef_r op (76%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Mischien dat dit een oplossing is???
Nee, geen toegang toe. Waarom niet gewoon uploadarchief gebruiken?
Ik zou er nog heel wat pincups bij zetten. Bij elke pin van de pic een en bij je 595's en 165. Dan kan je er nog is wat anders op aansluiten dan knopjes en schakelaars.
Ik zou ook iets maken zodat je de Vref van de adc kan gebruiken. Met een jumpertje om te kiezen.
Van de USART maak je ook geen gebruik, ik zou er een max232 bij zetten, te activeren via jumpers.
Bij de 2e voedings aansluiting van de pic zou ik ook een 100nF zetten, voor de zekerheid. Ik zou gewoon een smd pakken, die past onder het voetje.
Potje voor het lcd moet 10K zijn.
En een andere trafo pakken. Gewoon opzoek naar een 9V 1A dingetje. Maar ik neem aan dat je dat al van plan was.
Kristal zou ik ook in pincups zetten, dan kan je makkelijk van xtal verwisselen mocht dat nodig zijn.
Je motor sturing klopt volgens mij niet helemaal.
IN1 IN2 OUT1 OUT2
1 0 1 0
0 1 0 1
Dus in1 hoog in 2 laag, motor links om.
In1 laag, in2 hoog motor rechtsom.
Op de manier die je nu gebruikt heb je altij 1 ingang zwevend en moet je eerst de jumper verwisselen voordat je de motor om kan draaien. Maar dan moet je de motor ook anders aansluiten. Tussen out1&out 2 ipv out en massa.
Of gebruik je het ergens anders voor?