Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

IC/schakeling voor binair getal => pin nr. gezocht

Pagina: 1
Acties:
  • 175 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Sorry voor de onduidelijke titel, maar dat komt omdat ik moeilijk uit kan leggen waar ik naar zoek. Ik zoek naar een IC dat, doordat het een bepaald binair getal ontvangt van de paralelle poort, een bepaalde pin hoog maakt. Ik heb dit nodig om met de acht beschikbare pinnen van de paralelle poort meer dan acht leds aan te sturen. Hieronder een plaatje ter verduidelijking.

Afbeeldingslocatie: http://zooi.r1c0.nl/jpg/gezocht-ic.JPG

Zoals je ziet zijn er rechts 10 pinnen, 1 t/m 10, en links 1, 2, 4 en 8. de bedoeling is dus dat als ik links bijvoorbeeld 1, 2 en 4 hoog maak, rechts pin 7 (1+2+4=7) hoog wordt. Het mooiste zou dan nog zijn dat als 1 pin eenmaal hoog gemaakt is hij hoog blijft totdat er een speciaal getal (bijvoorbeeld 15, 1+2+4+8) gestuurd wordt, zodat er meerdere leds tegelijk kunnen branden.

Weet iemand hier een oplossing voor, of kent iemand een ic/schakeling die dit kan? Als mijn verhaal niet duidelijk is zal ik proberen het nog beter uit te leggen. Ik begrijp dat je dit ook softwarematig op kan lossen met een microcontroller, maar aangezien ik niet echt een programmeerheld ben wil ik het graag hardwarematig oplossen. :) Als hier een mooie oplossing voor gevonden kan worden denk ik dat veel mensen hier wat aan hebben, aangezien je dan dus veel meer dan acht pinnen aan kan sturen met een parallele poort, zonder microcontroller.

  • Nvidiot
  • Registratie: Mei 2003
  • Laatst online: 03-06 16:38

Nvidiot

notepad!

Is dat geen demultiplexer?

What a caterpillar calls the end, the rest of the world calls a butterfly. (Lao-Tze)


  • oshiro
  • Registratie: Maart 2005
  • Laatst online: 18-11 14:06

oshiro

Chill, dude.

Das een 4514 of 4515N :)

Description: 74HC/HCT4515; 4-to-16 Line Decoder/demultiplexer With Input Latches; Inverting;; Package: SOT101-1 (DIP24), SOT137 (SO24)

Als je meerdere leds hoog wilt maken zou je iets moeten verzinnen dat hij getallen bij elkaar gaat optellen oid. Deze zet het binaire getal op 4 pins om in een decimaal getal op 16 pins.

Ik ben niet zo'n grote held in elektronica :)

[ Voor 44% gewijzigd door oshiro op 24-01-2006 17:36 ]

“Life is tough, but it's tougher when you're stupid.” - John Wayne | Last.fm


  • DRAFTER86
  • Registratie: April 2002
  • Laatst online: 06:24
Verwijderd schreef op dinsdag 24 januari 2006 @ 17:23:
Sorry voor de onduidelijke titel, maar dat komt omdat ik moeilijk uit kan leggen waar ik naar zoek. Ik zoek naar een IC dat, doordat het een bepaald binair getal ontvangt van de paralelle poort, een bepaalde pin hoog maakt. Ik heb dit nodig om met de acht beschikbare pinnen van de paralelle poort meer dan acht leds aan te sturen. Hieronder een plaatje ter verduidelijking.

[afbeelding]

Zoals je ziet zijn er rechts 10 pinnen, 1 t/m 10, en links 1, 2, 4 en 8. de bedoeling is dus dat als ik links bijvoorbeeld 1, 2 en 4 hoog maak, rechts pin 7 (1+2+4=7) hoog wordt. Het mooiste zou dan nog zijn dat als 1 pin eenmaal hoog gemaakt is hij hoog blijft totdat er een speciaal getal (bijvoorbeeld 15, 1+2+4+8) gestuurd wordt, zodat er meerdere leds tegelijk kunnen branden.

Weet iemand hier een oplossing voor, of kent iemand een ic/schakeling die dit kan? Als mijn verhaal niet duidelijk is zal ik proberen het nog beter uit te leggen. Ik begrijp dat je dit ook softwarematig op kan lossen met een microcontroller, maar aangezien ik niet echt een programmeerheld ben wil ik het graag hardwarematig oplossen. :) Als hier een mooie oplossing voor gevonden kan worden denk ik dat veel mensen hier wat aan hebben, aangezien je dan dus veel meer dan acht pinnen aan kan sturen met een parallele poort, zonder microcontroller.
Ik snap niet waarom dit een zo veel gebruikte oplossing is. Neem een aantal simpele schuifregisters en je hebt met 3 data lijnen (Data,Clock, Strobe) een oneindig aantal outputs waarbij het wel gewoon mogelijk is om meerdere outputs tegelijk hoog te maken. Lijkt me toch best handig met Led's.
Voor de snelheid hoef je het echt niet te laten, tenzij je je led's met tig khz wil laten knipperen. (wat je overigens sowieso niet gaat lukken, mocht je met je PC je led's via PWM aan willen sturen)

[ Voor 3% gewijzigd door DRAFTER86 op 24-01-2006 18:12 ]


Verwijderd

Topicstarter
DRAFTER86 (of iemand anders), zou je dat uit kunnen leggen, eventueel met een tekeningetje erbij ofzo? Zo snap ik het namelijk niet, maar ik sta open voor goede ideeën :)

[ Voor 6% gewijzigd door Verwijderd op 24-01-2006 18:29 ]


  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Demux idd en je 2de deel kan je maken met een flipflop gewoon een ff achter elke uitgang (behalve die van het 'speciale' getal) en de laatste pen (het speciale getal dus, op je figuur bv pen10) leg je op de reset van de flipflop's. Moet je wel geen flipflop met synchrone clock nemen, een latch nemen dus. Dan word de latch geset en blijft die geset totdat je de 15 (of iets anders) doorstuurd naar de reset van de latches.

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 22-11 19:33
Een schuifregister is erg eenvoudig, die veranderd een serieel signaal in een parallel. Je hebt een data en een klok ingang, je stuurt 8 bits (1 of 0) in op de data ingang, tijdens elke bit maak je de klok ingang even hoog. Dan staan op de parallele uitgangen (0-7) de bits die je erin geschoven hebt. Datasheets kunnen soms verhelderend werken, op internet is genoeg te vinden over schuifregisters.

Er bestaan ook schuifregisters die een latch ingang hebben, dat zorgt ervoor dat de uitgangen constant blijven, tot je een pulsje op de latch ingang geeft (dan zal ie de bits van het schuifregister op de uitgangen zetten). Trek je daar nog niets van aan zolang je "schuifregister" nog niet snapt.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Verwijderd

Topicstarter
In dat geval lijkt mij een demuxer simpeler dan een schuifregister, qua schakeling en programma. Ik heb toch de hele paralelle poort tot mijn beschikking, dus ik zou dan 2^8-2=254 ledjes aan kunnen sturen, en als ik zo'n flip-flop gebruik ook nog eens tegelijk. Weet er iemand zo een typenummer van een flip-flop , of een ic waar een boel flip-flops inzitten? Dan ga ik me even verdiepen in de datasheets.

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 22-11 19:33
D-flipflops: http://www.semiconductors...ad/datasheets/74F74_2.pdf (1 minuut werk met onze goeie vriend.

(het voordeel van een schuifregister is dat die meestal al voorzien zijn, de latch functie heet dit, met 1 schuifregister heb je dan meteen 8 uitgangen die netjes statisch blijven, tot jij ff latcht. Dus waarom toch geen schuifregister?)

[ Voor 68% gewijzigd door naftebakje op 24-01-2006 19:44 ]

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Verwijderd

Topicstarter
naftebakje schreef op dinsdag 24 januari 2006 @ 19:40:(het voordeel van een schuifregister is dat die meestal al voorzien zijn, de latch functie heet dit, met 1 schuifregister heb je dan meteen 8 uitgangen die netjes statisch blijven, tot jij ff latcht. Dus waarom toch geen schuifregister?)
Dat had ik er niet van begrepen, maar ik ga even datasheets doorlezen :) Wat ik uit jullie verhalen opmaak is dit: Ik heb drie lijnen, een data, een clock, en een eventuele reset voor de latch. Ik stop tegelijk acht 1'en in de clock, en acht bits in de datalijn. Daardoor worden de acht output-pinnen van mijn schuifregister hoog of laag, afhangende van wat ik dus over de datalijn gestuurd heb. Stuur ik nu echter een 1 naar de reset van de latch, worden alle outputpinnen weer laag. Dan mis ik even het nut van de strobe-lijn waar DRAFTER86 het over had.

Edit: Als ik trouwens softwarematig acht bits achter elkaar uit een paralelle (of seriële) poort stuur, hoe snel gaat dat dan eigenlijk? Ik verwacht namelijk dat dat heel snel is, dan zal ik wel softwarematig een soort timeout moeten inbouwen, of niet? Aansturing geschiedt middels C, bash shellscript en misschien php onder linux.

Edit2: Heeft er iemand toevallig typenummers van goed verkrijgbare goede schuifregister-ic's?

[ Voor 21% gewijzigd door Verwijderd op 24-01-2006 20:18 ]


  • brinkdinges
  • Registratie: November 2003
  • Laatst online: 14-10 11:03
Een vrij bekende is de 74hc595. Ik was er laatst naar op zoek, maar conrad had ze niet. www.voti.nl heeft ze wel.

Casemod: Cubeleon


  • Electronical
  • Registratie: Juli 2004
  • Laatst online: 18-11-2020
brinkdinges schreef op dinsdag 24 januari 2006 @ 21:02:
Een vrij bekende is de 74hc595. Ik was er laatst naar op zoek, maar conrad had ze niet. www.voti.nl heeft ze wel.
En als je ze goedkoper wil kun je ook bij Elektronica-Onderdelen.nl kijken. Heb hiermee zeer goede ervaringen, het wordt meteen opgestuurd (indien < 10 EUR) en de verzendkosten zijn ook nog zeer laag. Maar dat terzijde. Het nadeel is dus wel dat je geen parallele input hebt.

Een multiplexer met wat flip-flopjes levert je wel een werkende oplossing op, maar dan moet je al snel meerdere ic's gebruiken omdat er meestal maar 2 tot 4 flip-flops op de standaard flip-flop ic's zitten. Als je dan 8 outputs wil latchen, moet je dus al 2 flip-flop ic's hebben en daarbij nog de randelektronica.

Als je echt per sé een oplossing wil waarbij de input parallel en de output parallel is (zoals in de tekening in de startpost) zou je kunnen denken om bijv. 74HC42 te gebruiken met aan de outputs nog wat inverters om de correcte output te krijgen.

[ Voor 62% gewijzigd door Electronical op 24-01-2006 21:56 . Reden: Foutje in url ]

I do not fear computers, I fear the lack of them - Isaac Asimov
"With enough eyeballs, all bugs are shallow" - Eric Raymond


  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 22-11 19:33
Verwijderd schreef op dinsdag 24 januari 2006 @ 19:54:
[...]
Dat had ik er niet van begrepen, maar ik ga even datasheets doorlezen :) Wat ik uit jullie verhalen opmaak is dit: Ik heb drie lijnen, een data, een clock, en een eventuele reset voor de latch. Ik stop tegelijk acht 1'en in de clock, en acht bits in de datalijn. Daardoor worden de acht output-pinnen van mijn schuifregister hoog of laag, afhangende van wat ik dus over de datalijn gestuurd heb. Stuur ik nu echter een 1 naar de reset van de latch, worden alle outputpinnen weer laag. Dan mis ik even het nut van de strobe-lijn waar DRAFTER86 het over had.
Bijna, je hebt die latch (wordt ook wel strobe genoemd) nog niet helemaal mee. Je kan (in schuifregisters die kunnen latchen) blijven bits inschuiven, ze komen niet op de uitgangen. Pas als je een pulsje geeft op de latch(=strobe) ingang, worden de bits op de uitgang gezet. Zoals je zegt dus, maar je uitgangen worden maar aangepast als je latcht.
Edit: Als ik trouwens softwarematig acht bits achter elkaar uit een paralelle (of seriële) poort stuur, hoe snel gaat dat dan eigenlijk? Ik verwacht namelijk dat dat heel snel is, dan zal ik wel softwarematig een soort timeout moeten inbouwen, of niet? Aansturing geschiedt middels C, bash shellscript en misschien php onder linux.
Onder windows: geen id. In visual basic onder windows kan je niet weten hoe snel of traag de data verzonden wordt, door de manier waarop windows werkt. Ik ken niet genoeg van programmeren om uitspraken te doen over snelheid, maar in een goeie programmeertaal met een goed programma moet je wel aan 9600 baud (bits per seconde, dus 1200 bytes per seconde) geraken denk ik (das trouwens veel sneller dan nodig, ledjes op 100Hz is snel genoeg). Het mooiste zou het zijn als je via de seriele poort de klok zou kunnen meezenden, maar ik weet niet of dat mogelijk is.
Edit2: Heeft er iemand toevallig typenummers van goed verkrijgbare goede schuifregister-ic's?
Zie mijn vorige post, meteen een linkje naar de datasheet. Ik heb ervaring met de 4094, die bestaat al erg lang en is zeker te krijgen, maar ik heb die al raar weten doen als ie niet erg snel aangestuurd wordt (crappy programma in VB6, gewoon de seriele poort breaken om bits te zenden, en doevents als vertraging), de uitgangen flikkeren soms als de data ingeschoven wordt.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Verwijderd

Topicstarter
Ik zat ff te kijken naar de datasheet van de 74hc595 en ben aan de hand daarvan een schemaatje aan het tekenen waarin 2 van die ic's in serie hangen. Dat kan, nadat alle acht bits vol zitten wordt de rest van de seriele data doorgegeven aan SQH (zie hieronder) en daarmee kan weer de seriele ingang van een volgend ic aangestuurd worden.

Uit de datasheet:
INPUTS
A (Pin 14)
Serial Data Input. The data on this pin is shifted into the
8–bit serial shift register.
CONTROL INPUTS
Shift Clock (Pin 11)
Shift Register Clock Input. A low– to–high transition on
this input causes the data at the Serial Input pin to be shifted
into the 8–bit shift register.
Reset (Pin 10)
Active–low, Asynchronous, Shift Register Reset Input. A
low on this pin resets the shift register portion of this device
only. The 8–bit latch is not affected.
Latch Clock (Pin 12)
Storage Latch Clock Input. A low–to–high transition on
this input latches the shift register data.
Output Enable (Pin 13)
Active–low Output Enable. A low on this input allows the
data from the latches to be presented at the outputs. A high
on this input forces the outputs (QA–QH) into the
high–impedance state. The serial output is not affected by
this control unit.
OUTPUTS
QA – QH (Pins 15, 1, 2, 3, 4, 5, 6, 7)
Noninverted, 3–state, latch outputs.
SQH (Pin 9)
Noninverted, Serial Data Output. This is the output of the
eighth stage of the 8–bit shift register. This output does not
have three–state capability.
Zo ziet hij er dus uit:

Afbeeldingslocatie: http://zooi.r1c0.nl/jpg/74hc595.JPG

Dan heb ik toch vier pinnen van de pcpoort nodig? Een voor de data, eentje voor de clock, eentje voor de strobe en eentje voor reset.

Edit: Die Output Enable pin kan ik gewoon aan de massa leggen, toch?

[ Voor 27% gewijzigd door Verwijderd op 25-01-2006 11:49 ]


  • DRAFTER86
  • Registratie: April 2002
  • Laatst online: 06:24
Verwijderd schreef op woensdag 25 januari 2006 @ 00:50:
Ik zat ff te kijken naar de datasheet van de 74hc595 en ben aan de hand daarvan een schemaatje aan het tekenen waarin 2 van die ic's in serie hangen. Dat kan, nadat alle acht bits vol zitten wordt de rest van de seriele data doorgegeven aan SQH (zie hieronder) en daarmee kan weer de seriele ingang van een volgend ic aangestuurd worden.

Uit de datasheet:

[...]


Zo ziet hij er dus uit:

[afbeelding]

Dan heb ik toch vier pinnen van de pcpoort nodig? Een voor de data, eentje voor de clock, eentje voor de strobe en eentje voor reset.

Edit: Die Output Enable pin kan ik gewoon aan de massa leggen, toch?
OE kan inderdaad aan de ground, die reset kun je gebruiken om je hele buffer leeg te maken, die heb je niet echt nodig, je kunt er ook gewoon 8 nullen in klokken.

Verwijderd

Topicstarter
Ik heb even het timing diagram uit de datasheet bestudeerd, maar ik snap ff niet hoe die latch nu precies werkt. Hieronder het plaatje uit de datasheet, die grijze lijnen heb ik erin getekend, en die nummers erboven geven aan wanneer (ik denk dat) er een bit in het register gezet wordt. Zelf dacht ik dat de latch even hoog gemaakt moest worden als er acht bits in het register zitten, zodat die acht bits worden doorgegeven aan de acht outputs, maar het schema doet anders vermoeden.
Afbeeldingslocatie: http://zooi.r1c0.nl/jpg/timingdiagram.JPG

Ook vraag ik me af hoe ik die reset pin constant hoog kan maken, want ik neem aan dat ik daar niet zomaar vijf volt op aan kan sluiten.

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 22-11 19:33
In het begin zie je een reset (gaat naar 0 om te resetten), terwijl Qa,Qe,Qf nog hoog waren. Die reset komt niet op de uitgangen, tot er gelatcht wordt (latch klok hoog). Die doorkruiste blokjes, komen maar voor als de output enable hoog is (dan liggen de uitgangen af), niets van aantrekken dus.
Na die doorkruiste blokjes komt er weet een latch, dan wordt de data uit het schuifregister op de uitganen gezet. Wat zit daar nu in? Er is een reset geweest, waarbij alles '0' werd (dit is waar jij je 1 hebt gezet). Pas na het beeindigen van de reset, wordt er bij een hoge klok data ingeschoven, dus pas bij 2 komt het eerste bitje erbij (een '1'). Er werd dus maar 7 keer geschoven, Qh is '0' door de reset, niet omdat dat erin geschoven werd.

Je kan met 3 of 4 draden werken, die reset is hetzelfde als 8 '0'len inschuiven. Wil je toch die reset gebruiken, dan kan je best een weerstandje (een paar kiloohms) van de resetpin naar de +5V hangen. Als je dan niets aansluit, blijft de reset hoog. Om dan te resetten moet je de reset pin naar de massa trekken, dat moet "sterker" zijn dan die weerstand (je moet dus voldoende stroom trekken, nodige stroom = U/R, bij R=10K moet je 0.5mA kunnen leveren). Gewoon aan 5V hangen kan je doen als je de reset niet zal gebruiken, maar gewoon 8 nullen zal inschuiven.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Verwijderd

Topicstarter
Dankjewel voor de uitleg :)

Het schema wordt dan dus heel makkelijk, ik heb alleen het ic, de ledjes en weerstanden voor de ledjes nodig.

Softwarematig moet ik dus een functie schrijven die het volgende over mijn paralelle poort stuurt.
Afbeeldingslocatie: http://zooi.r1c0.nl/jpg/bitvolgorde.jpg
En dan moet ik nog gaan experimenteren met de tijd die een bitje minimaal hoog of laag moet zijn, maar uit de datasheet heb ik begrepen dat dit in het nanoseconde-gebied ligt, en ik me daar dus niet druk over hoef te maken. Ook hoef ik me niet druk te maken over het feit dat linux multitasking is en daardoor mijn proces een tijdje stil kan zetten, omdat de klok dan even snel verandert als de datalijn. In theorie zou dit dus vlekkeloos moeten werken :)

Ik heb gisterenmiddag alvast een doosje gefabriceerd met acht ledjes erin, met wat weerstanden direct op de acht uitgangen van de paralelle poort om te kijken of het programmeren een beetje ging enzo, maar die geven nu netjes mijn bandbreedteverbruik aan :)
Pagina: 1