Bygga stor 7-segmentdisplay

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
gunne
Inlägg: 2088
Blev medlem: 17 juni 2004, 15:00:31
Ort: sthlm
Kontakt:

Inlägg av gunne »

Jaja, man e ju inte mer än rookie.
Bild

Så här då? Men det skulle inte funka ändå för att det går för långsamt eller? Bara ett segment kommer ju lysa åt gången. Det är väl inget problem att stega igenom 40 segment på 1/100 sekund?
danei
EF Sponsor
Inlägg: 27405
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Du kan inte ha en gemensam serie resistor.
FS
Inlägg: 245
Blev medlem: 14 januari 2005, 23:35:45

Inlägg av FS »

Varför? Endast ett segement är tänt åt gången. Iof kanske man behöver ett extra på decimalpunkts-dioden så att den inte får lika mycket som 6 segmentsdioder vill ha tillsammans...
Användarvisningsbild
Tony
Inlägg: 1038
Blev medlem: 9 november 2003, 16:08:47

Inlägg av Tony »

Ser ut som att du har missförstått det här med multiplexade displayer.

Normalt sett tänder man en display (dvs 7 segment) i taget under t.ex. 1/10s.

Då har man PNP-transistorer mellan plus och GE (Gemensam Anod) En transistor per display alltså.

Alla Katoder med samma bokstav kopplas ihop & går via ett motstånd till uC (dvs. 7 motstånd oavsett antal displayer).

Har man mer än 4-siffror i displayen använder man en BCD till Decimal dekoder t.ex 74LS42 för att välja mellan 10 siffror med 4 bitar.

Alltså 4+7 (4+8 om man vill ha decimalpunkt) bitar för en display med 4-10 siffror (16 med Bin->Decimal dekoder).



Om man istället använder shiftregister så seriekopplar man dem för att få serie till parallell-omvandling.

Dvs. 2 eller 3 bitar (Clock, Data & ev. Output Enable) styr samtliga segment oavsett antal displayer.

Man klockar då ut alla bitar och sedan sätter man output enable.


Eftersom du skall ha 2 displayenheter och en styrbox är detta att föredra.


Kabeln från styrenheten har då 5 trådar: Clock, Data , Output Enable, GND och Power.

Kabeln går till första displayenheten och därifrån vidare till den andra.


I ditt schema:
Ta bort R1 och sätt ett motstånd mellan varje segment och dess transistor.
Skippa Q9 och koppla direkt till jord.

Sätt motstånd mellan shiftregister och bas på transistorerna.

Högsta ut biten (QH) går till data-in (A eller B) på nästa shiftreg.

Alla Clk kopplas ihop, samma för Output enable (saknas på 164:an).

Reset behövs inte, skifta ut nollor om du vill släcka allt.

De chip jag nämde i tidigare postning är inget annat än 32-bit shiftreg (eller hur många bitar det nu var..).
Någon hade även strömgenerator (ett motstånd för att välja ström till samtliga segment) men den funkade inte med 12V.

Tips: sätt 8bit till varje display (7 segment + decimalpunkt, Dp är högsta biten) så blir mjukvaran lite enklare.

Gör så även om det bara finns en Dp ansluten
(5siffror à 7 seg. + en Dp = 36 bit. 2st 74xx164 = 32bit, 3st 74xx164 = 48bit och eftersom 8*5 = 40 så blev det inte fler chip bara enklare att programmera).
danei
EF Sponsor
Inlägg: 27405
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

FS skrev:Varför? Endast ett segement är tänt åt gången. Iof kanske man behöver ett extra på decimalpunkts-dioden så att den inte får lika mycket som 6 segmentsdioder vill ha tillsammans...
Så kan man ju göra. Men man brukar göra som Tony beskrev.
Användarvisningsbild
gunne
Inlägg: 2088
Blev medlem: 17 juni 2004, 15:00:31
Ort: sthlm
Kontakt:

Inlägg av gunne »

Jag är med på vad du menar... Men nu måste jag duna så det blir till att slänga ihop ett nytt schema imorn istället.

Edit: Eller jag e inte alls med. Om man inte har nån transistor till jord så kommer ju segmenten blinka när man shiftar ut bitarna? T.ex. om bara det sista segmentet på det sista tecknet ska lysa så kommer ju den biten passera alla andra segment på vägen ut och göra så att alla lyser?
Användarvisningsbild
Tony
Inlägg: 1038
Blev medlem: 9 november 2003, 16:08:47

Inlägg av Tony »

Antingen skiftar du så snabbt att de andra inte hinner tändas (man hinner iaf inte se det) eller så får du ha ett shiftregister med Output Enable.

När OE aktiveras kopplas data till utgångarna, annnars är utgångarna låga.

Dvs först skiftrar man ut alla bitar sen aktiverar man OE.

Med tanke på kabellängderna i det här projektet är nog det senare att föredra.
Användarvisningsbild
gunne
Inlägg: 2088
Blev medlem: 17 juni 2004, 15:00:31
Ort: sthlm
Kontakt:

Inlägg av gunne »

Mjo precis. Om det e OE så är jag med på hur det funkar.

Typ nån av de här?
http://www.elfa.se/elfa-bin/dyndok.pl?d ... 016958.htm
http://www.elfa.se/elfa-bin/dyndok.pl?d ... 016958.htm
http://www.elfa.se/elfa-bin/dyndok.pl?d ... e/1391.htm

Ett litet problem kan dock va att 6*7*5*15mA = 630mA per display och jag ska ha två stycken. Det e ju ett problem man kan lösa med större trafo iof...

Edit: Men varför funkar inte varianten förra schemat? Om man sätter en resistor per segment. Fördelen är att bara ett tecken åt gången lyser och det drar mindre kräm. Låt oss säga att jag vill ha siffran 3 på tecken 3. då shiftar jag bara ut 01101011 till "segmentregistret" och 00000100 till "teckenregistret" och sen sätter jag OE. Då lyser segment 1,2,4,6 och 7 på tecken 3.
Användarvisningsbild
Tony
Inlägg: 1038
Blev medlem: 9 november 2003, 16:08:47

Inlägg av Tony »

Var det inte 5 siffror i varje displayenhet ?
7*5*15mA = 525mA

Aja..

Nackdelen med multiplex är att du måste driva lysdioderna med högre ström för att få samma ljusstyrka.

Tex. 50ma under 1/10s motsvarar 5mA kontinuerligt.
(Här är det viktigt att kolla vad lysdioden tål max och under hur lång tid.)

Sen måste processorn hela tiden jobba mot displayerna.

Med kaskadkopplade shiftregister behöver du bara skicka data när någon siffra skall ändras.

Du kan jorda alla segment i segmentregistret sen har du ett register för att välja vilket tecken som får ström.

(Använd ett shiftregister med öppen kollektor ihop med pnp transistorer)


Så som ditt schema ser ut nu skulle du behöva 7 + 1 transistorer & motstånd till varje siffra, blir rätt klumpigt....

Men visst skulle det funka.

De kretsarna funkar, här är en till:

UCN5810 elfa: 73-581-95
sebastiannielsen
Inlägg: 3663
Blev medlem: 11 september 2004, 09:30:42
Ort: gbg
Kontakt:

Inlägg av sebastiannielsen »

Tony:

6 (dioder) * 7 (segment) * 5 (antal siffor) * 15 mA (antal millampere per diod) = 3150 mA per display * 2 = 6300 mA
Användarvisningsbild
Schnegelwerfer
Inlägg: 1863
Blev medlem: 8 november 2004, 13:46:56

Inlägg av Schnegelwerfer »

Sebastian:
Lysdioderna är seriekopplade, så att samma 15mA flyter genom de 6 dioderna i varje segment. Tonys uträkning stämmer.
Användarvisningsbild
gunne
Inlägg: 2088
Blev medlem: 17 juni 2004, 15:00:31
Ort: sthlm
Kontakt:

Inlägg av gunne »

sebastiannielsen skrev:Tony:
Lysdioderna är seriekopplade, så att samma 15mA flyter genom de 6 dioderna i varje segment. Tonys uträkning stämmer.
det e ju fan sant... Kul att man inte är den enda som gör så enkla misstag! Det lär ju ha hängt kvar i huvet sen början då jag tänkte parallellkoppla skiten. Jag lär ju köra på din variant Tony. Med 2 displayer blir det ca. 1 A och det e ju lugnt.
Användarvisningsbild
Tony
Inlägg: 1038
Blev medlem: 9 november 2003, 16:08:47

Inlägg av Tony »

Låter Bra :tumupp:
Användarvisningsbild
gunne
Inlägg: 2088
Blev medlem: 17 juni 2004, 15:00:31
Ort: sthlm
Kontakt:

Inlägg av gunne »

Tony skrev: Så som ditt schema ser ut nu skulle du behöva 7 + 1 transistorer & motstånd till varje siffra, blir rätt klumpigt....
Är det inte tvärt om? Om man ska koppla alla segment till kaskadkopplade shiftregister behöver man ju en transistor till varjesegment = 5*8 = 40 transistorer. Om man kopplar som i schemat längst upp behövs 8+5=13 transistorer. Alla segment är parallelkopplade. Eller tänker jag knasigt nu igen?

Edit: Ja, jag tänkte knasigt... man måste ha en transistor per segment. För att det ska bli 8+5 måste man ha transistorerna på olika sidor om segmenten.

Eftersom klockan ska rulla kommer displayen uppdateras hela tiden ändå, så det är inte en så jättestor fördel att man bara behöver styra när nåt ska ändras.

Om man kopplar som jag tänkt gör man ju bara en function som sköter multiplexen, typ:

Kod: Markera allt

function update_display(no)
{
   for (i=0;i<5;i++;)
   {
        shifta ut bitar för första siffran;
        shifta ut bit till rätt siffra (i);
        output enable;
   }
}
Förldelar
Lägre total strömförbrukning
Endast 2 shiftregister
Enklare ledningsdragning

Nackdelar
Högre ström till dioderna

Som jag ser det är fördelarna fler än nackdelarna så det verkar smartare att multiplexa. Schemat överst skulle ändras så att varje segment får ett eget motstånd.
Senast redigerad av gunne 14 mars 2005, 18:11:23, redigerad totalt 2 gånger.
FS
Inlägg: 245
Blev medlem: 14 januari 2005, 23:35:45

Inlägg av FS »

Om man ska köra multiplexing hur löser man det då med att välja siffra? På gunnes bild ovan är det uppritat med en siffra. Hur blir det när man kopplar in nästa? Hur får man de 8 "segment-transistorerna" att arbeta med nästa siffra? Får inte ihop det iom att transistorerna sitter på katodsidan av segmenten...
Skriv svar