Hoi,

ik zou 9 7segmenten moeten aansturen maar ik zou die graag multiplexen via een een µC

mijn vraag is hoe schrijf je in een programma een MUX zodanig dat die getallen gemultiplext uit de µC komt
(ps ik werk in MikroBasic)
mvg

Brecht

Met 9 displays krijg je een dusdanig lage duty cycle dat de lichtopbrengst niet heel erg hoog zal zijn.

Je kan het best proberen. Dot-matrixen worden ook met duty-cycle 1/8 gemultiplext.
Hoe je dat moet programmeren? Je moet gewoon het principe van multiplexen uitwerken..

Zet het juiste bitpatroon horende bij het eerste display op je poort. Maak dan de anode/cathode (bij c+/c- displays) hoog/laag van het eerste display. Effe wachten (*). Dan anode/cathode weer laag/hoog maken. Bitpatroon voor display 2 op je poort zetten en anode/cathode van display 2 hoog/laag maken. Weer wachte, enz...

(*) De negen displays samen moet je zeker aan 100 Hz scannen. 1 display is dus maximum 1,1 sec actief, dan is het aan de volgende.

Mijn scanfrequentie was eerst 100Hz (elke display 10ms aan, 50ms uit) en ik had 6 displays. Dit knipperde als een stroboscoop! Nu heb ik een scanfrequentie van 1kHz, dus elke display is 1ms aan en 5ms uit. Dit werkt vrij netjes, helaas is de dutycycle maar 1/6, dus vrij zwak. In een verdonkerde kamer is het perfect leesbaar, maar als er licht in schijnt wordt het moeilijk. Ik ga het nog iets proberen te verbeteren door 20 à 25mA erdoor te jagen (heb nu een 10-15mA).

@TS:
Wat je eventueel zou kunnen doen is twee latchen gebruiken en je displays opdelen in twee groepen van vijf. Je scant dan beide groepen gelijktijdig zodat je dutycycle maar 1/5 wordt. Negen displays is een behoorlijk aantal hoor!

Elk display 10ms aan en 6 displays => 17Hz ≠ 100Hz. Dat kan wel effe flikkeren natuurlijk :)

Op 30 augustus 2009 20:22:42 schreef High-Voltage:
Mijn scanfrequentie was eerst 100Hz (elke display 10ms aan, 50ms uit) en ik had 6 displays. Dit knipperde als een stroboscoop! Nu heb ik een scanfrequentie van 1kHz, dus elke display is 1ms aan en 5ms uit. Dit werkt vrij netjes, helaas is de dutycycle maar 1/6, dus vrij zwak. In een verdonkerde kamer is het perfect leesbaar, maar als er licht in schijnt wordt het moeilijk. Ik ga het nog iets proberen te verbeteren door 20 à 25mA erdoor te jagen (heb nu een 10-15mA).

@TS:
Wat je eventueel zou kunnen doen is twee latchen gebruiken en je displays opdelen in twee groepen van vijf. Je scant dan beide groepen gelijktijdig zodat je dutycycle maar 1/5 wordt. Negen displays is een behoorlijk aantal hoor!

1ms met dutycycle van 1/5 kan makkelijk zonder weerstand! :)

Toch liever niet rechtstreeks uit de PIC... Ga nu een drivertje voorzien en dan eventueel weerstandje van 50-100 ohm.

[Bericht gewijzigd door Henry S. op (41%)]

Op 30 augustus 2009 21:06:52 schreef Neen:
1ms met dutycycle van 1/5 kan makkelijk zonder weerstand! :)

Dat mag absoluut niet! Kijk daarvoor als voorbeeld even naar de karakteristiek van de pn-junctie.
Bij 5V gaat er een aardige stroom vloeien (als je µC dit aan kan -> dag led, kan die het niet aan -> dag µC).

Rechtstreeks uit je µC voeden is geen goed idee, maar met een drivertje is het perfect te doen. In je common zit toch een tor die de stroom beperkt. Veronderstel een hfe van 100 en een basisstroom van 1mA (4k7 basisweerstandje), dan is de collectorstroom nog maar 100mA oftewel een 15mA per segment in het beste geval ofwel 100mA in het slechtste geval.

[Bericht gewijzigd door Henry S. op (31%)]

Bedankt voor de reacties

jullie spreken van frequenties

zou dit zo iets zijn in een programma met een freq van 1kHz?

-1ste seg
-delay van 1 ms
-2de seg
-delay van 1ms
-enz...

@ plantrekker
tenzij dat je µC uitgangen heeft voor led drive zoals de 16F84A => 25mA per pin :p

mvg

Brecht

"Neen" spreekt 'in geval van lage duty cycle'. Hij spreekt dus niet over torren of drivers er tussen (ookal zit die in de µC verwerkt) want dan zou het met hoge duty-cycle ook werken...

In de situatie die hij beschrijft staat er dan ook 5v over de junctie, dit is niet het geval bij jullie voorbeelden en daar heb ik het dus ook niet over.

[edit]
Bijna op je eigenlijke vraag vergeten antwoorden :)

High-Voltage was verkeerd, hij gaf aan dat 100Hz zeer sterk flikkert. Zijn frequentie was dan ook geen 100 maar 17 Hz. Zijn nieuwe frequentie (waar hij denkt dat het 1kHz is) is 170Hz.

Dus in je voorbeeld hierboven. Zul je een refresh frequentie van: 1/(1ms x 9) = 111Hz hebben. En dus niet 1kHz zoals je nu denkt.

111Hz is voor iedereen (op enkele uitzonderingen na) flikker-vrij. Zolang je maar (bij negen displays) onder de 1,1ms/display blijft is het ok.

Op 31 augustus 2009 11:43:11 schreef brecht92:
tenzij dat je µC uitgangen heeft voor led drive zoals de 16F84A => 25mA per pin :p

En de som van de stromen hoe groot mag die dan zijn?

dit staat in de datasheet:
High current sink/source for direct LED drive
- 25 mA sink max. per pin
- 25 mA source max. per pin

Ik heb het over de som. Hoofdstuk 9 van de datasheet.

Maximum current out of VSS pin ...........................................................................................................................150 mA
Maximum current into VDD pin ..............................................................................................................................100 mA
Input clamp current, IIK (VI < 0 or VI > VDD)..................................................................................................................... ± 20 mA
Output clamp current, IOK (VO < 0 or VO > VDD) ............................................................................................................. ± 20 mA
Maximum output current sunk by any I/O pin..........................................................................................................25 mA
Maximum output current sourced by any I/O pin ....................................................................................................25 mA
Maximum current sunk by PORTA..........................................................................................................................80 mA
Maximum current sourced by PORTA.....................................................................................................................50 mA
Maximum current sunk by PORTB........................................................................................................................150 mA
Maximum current sourced by PORTB ..................................................................................................................100 mA

[edit]
la la lampje was me al voor :)

btw "High current sink/source for direct LED drive" wil niet zeggen dat je de leds er direct mag aanhangen. Het zegt enkel dat je er geen extra sink/source-drivers tussen te plaatsten (op voorwaarde dat de maxima niet overschreden worden natuurlijk). De stroom moet je nog steeds beperken, het zijn geen stoombronnen.

Op 31 augustus 2009 11:49:48 schreef plantrekker:
High-Voltage was verkeerd, hij gaf aan dat 100Hz zeer sterk flikkert. Zijn frequentie was dan ook geen 100 maar 17 Hz. Zijn nieuwe frequentie (waar hij denkt dat het 1kHz is) is 170Hz.

Nou, dit is niet een kwestie van verkeerd zijn, maar gewoon een kwestie van niet gelijklopende definities. Ik definieer(de) de scanfrequentie als zijnde de frequentie waarop geschakeld wordt tussen twee displays. Jij definieert(de) de scanfrequentie zijnde de frequentie waarover het gehele display doorlopen is. Het "voordeel" van jouw definitie is dat je uitspraken kan doen ongeacht de lengte van het display. Immers 50 à 100Hz over de totale display is altijd geldig. Als je nu 1, 2, 5 of 10 displays hebt. Als ik zeg 1kHz dan gaat dat verschil maken voor het aantal displays natuurlijk... Mijn 100Hz was net genoeg geweest voor twee displays, maar voor de zes displays die ik gebruik is dat dan weer ruim onvoldoende... Jouw definitie zegt dan weer niets over interruptsnelheid, zodat het moeilijk wordt een idee te vormen hoe snel je PIC moet zijn voor een gegeven aantal displays.

Zo zie je maar weer dat heel de elekronica staat of valt met de afgesproken conventies ;)

Check ook deze post. In je laatste regel zit je er een factor duizend naast. Je bedoelt waarschijnlijk milisec, ipv sec :p