Salve!
Il mio progetto consiste nella realizzazione di un decoder (4511) per display a 7 segmenti! Una specifica del progetto è che con un solo integrato devo riuscire a pilotare 2 display diversi; quindi ho usato due transistor (BC337) per abilitare o meno il display tramite due transistor a massa!
-Vcc integrato : 5v
-Vbase: 3,3v
-I base= ?
-I collettore: 20mA
-Vemettitore= 0v(a massa)
Mi aiutate a dimensionare le resistenze R1 e R3 in modo da far funzionare il circuito?
Dimensionare BJT e resistenze
Moderatori: g.schgor, BrunoValente, carloc, IsidoroKZ
0
voti
- Allegati
-
- Contatore.jpg (25.91 KiB) Osservato 12395 volte
-
- Schema elettrico
- aa.JPG (13.03 KiB) Osservato 12399 volte
Ultima modifica di brendolaccia il 4 dic 2009, 15:21, modificato 1 volta in totale.
-
brendolaccia
189 1 3 8 - Sostenitore
- Messaggi: 592
- Iscritto il: 22 feb 2009, 21:06
0
voti
PS: Il collettore del transistor è collegato al catodo del display a 7 segmenti, mentre l'alimentazione che arriva al display è di 4,1volt.
Ci vuole anche un resistenza di protezione per il display dato che gli arrivano 4v?
Ci vuole anche un resistenza di protezione per il display dato che gli arrivano 4v?
-
brendolaccia
189 1 3 8 - Sostenitore
- Messaggi: 592
- Iscritto il: 22 feb 2009, 21:06
0
voti
Ciao brendolaccia !
Dunque ho letto quanto hai scritto ma non ho compreso bene il secondo schema.
Dovresti spiegarci se quello che vuoi ottenere dal circuito è la visualizzazione dei due display contemporaneamente oppure la visione di un display alla volta da attivare tramite pulsante.
Nel primo caso bisogna multipexare le uscite del 4511 attraverso l' on-off veloce dei transistor e inviare poi a tale integrato i bit relativi ad una cifra e quelli relativi all' altra in modo sincronizzato (non è semplicissimo ma ci sono integrati apposta) mentre nel secondo caso la soluzione al problema è più immediata e non dovrebbe comportare particolari difficoltà.
Altra domanda, chi invia i bit in ingresso al 4511?
Facci sapere!
Dunque ho letto quanto hai scritto ma non ho compreso bene il secondo schema.
Dovresti spiegarci se quello che vuoi ottenere dal circuito è la visualizzazione dei due display contemporaneamente oppure la visione di un display alla volta da attivare tramite pulsante.
Nel primo caso bisogna multipexare le uscite del 4511 attraverso l' on-off veloce dei transistor e inviare poi a tale integrato i bit relativi ad una cifra e quelli relativi all' altra in modo sincronizzato (non è semplicissimo ma ci sono integrati apposta) mentre nel secondo caso la soluzione al problema è più immediata e non dovrebbe comportare particolari difficoltà.
Altra domanda, chi invia i bit in ingresso al 4511?
Facci sapere!
0
voti
Allora, come entrata 3-2-1-0 del decoder gli do delle uscite el microcontrollore Z8 che da in uscita 3,3volt mentre l'alimentazione gli do 5 volt a parte da un alimentatore. Quindi queste uscite devono essere convertite in numero e inviate ad un display attivato da un transistor (i due display sono collegati in parallelo). Voglio attivare un display e poi l'altro ad una velocità maggiore della persistenza sulla retina cosicchè sembra un numero fisso! CApito? Spero di essere stato chiaro, l'italiano nn è proiprio il mio forte
grazie
grazie
-
brendolaccia
189 1 3 8 - Sostenitore
- Messaggi: 592
- Iscritto il: 22 feb 2009, 21:06
0
voti
Serve la sigla esatta del 4511.
I transistor che portano la corrente per i display li vuoi pilotare direttamente da due porte d' uscita del microcontrollore ?
Con il programma sei già a posto ?
I transistor che portano la corrente per i display li vuoi pilotare direttamente da due porte d' uscita del microcontrollore ?
Con il programma sei già a posto ?
0
voti
int r;
PCADDR=1;
PCCTL=0x01;
PCOUT=0;
if(h==1){
while(1){
PBOUT=0; /*Spengo le altre porte*/
PDOUT=0; /*Spengo le altre porte*/
PCOUT=0x14;
for(r=0; r<3500; r++);
PCOUT=0x08;
for(r=0; r<3500; r++);
if(h==2){
while(1){
PBOUT=0; /*Spengo le altre porte*/
PDOUT=0; /*Spengo le altre porte*/
PCOUT=0x24;
for(r=0; r<3500; r++);
PCOUT=0x08;
for(r=0; r<3500; r++);
if(h==3){
while(1){
PBOUT=0; /*Spengo le altre porte*/
PDOUT=0; /*Spengo le altre porte*/
PCOUT=0x14;
for(r=0; r<3500; r++);
PCOUT=0x08;
for(r=0; r<3500; r++);
}}
questa è una coia iper ristretta del programma dove nella porta C partendo dal pin 7 allo 0 si trova: Out3-0ut2-0ut1-0ut0 (uscite che andranno al convertitore per display), T1,T2(con cui controllo i transistor)
La sigla è CD4511BE. io mando dal mio microcontrollore i 4 numeri binari da convertire al convertitore per diplay, questo manda il risultato sui 2 display ma solo uno sarà attivo perché uno sarà disattivato dal transistor (controllato da un'altra uscita dello Z8). Faccio questa operazione 30 volte al secondo e mi sembra di leggere il numero
Come ti sembra?
Grazie per tutto il tempo che ci perdi!
PCADDR=1;
PCCTL=0x01;
PCOUT=0;
if(h==1){
while(1){
PBOUT=0; /*Spengo le altre porte*/
PDOUT=0; /*Spengo le altre porte*/
PCOUT=0x14;
for(r=0; r<3500; r++);
PCOUT=0x08;
for(r=0; r<3500; r++);
if(h==2){
while(1){
PBOUT=0; /*Spengo le altre porte*/
PDOUT=0; /*Spengo le altre porte*/
PCOUT=0x24;
for(r=0; r<3500; r++);
PCOUT=0x08;
for(r=0; r<3500; r++);
if(h==3){
while(1){
PBOUT=0; /*Spengo le altre porte*/
PDOUT=0; /*Spengo le altre porte*/
PCOUT=0x14;
for(r=0; r<3500; r++);
PCOUT=0x08;
for(r=0; r<3500; r++);
}}
questa è una coia iper ristretta del programma dove nella porta C partendo dal pin 7 allo 0 si trova: Out3-0ut2-0ut1-0ut0 (uscite che andranno al convertitore per display), T1,T2(con cui controllo i transistor)
La sigla è CD4511BE. io mando dal mio microcontrollore i 4 numeri binari da convertire al convertitore per diplay, questo manda il risultato sui 2 display ma solo uno sarà attivo perché uno sarà disattivato dal transistor (controllato da un'altra uscita dello Z8). Faccio questa operazione 30 volte al secondo e mi sembra di leggere il numero
Come ti sembra?
Grazie per tutto il tempo che ci perdi!
-
brendolaccia
189 1 3 8 - Sostenitore
- Messaggi: 592
- Iscritto il: 22 feb 2009, 21:06
0
voti
h è la variabile dove dentro ce un numero da 1 a 16
PB e PD sono le porte dove ci sono gli 8 led + 8 led
PB e PD sono le porte dove ci sono gli 8 led + 8 led
-
brendolaccia
189 1 3 8 - Sostenitore
- Messaggi: 592
- Iscritto il: 22 feb 2009, 21:06
0
voti
Allora brendolaccia facciamo un' attimo il punto della situazione:
tu hai un microcontrollore alimentato a 3,3V e tramite le sue uscite vuoi gestire direttamente i quattro bit d' ingresso del 4511. Con altre due uscite invece vuoi pilotare le basi dei transistor che si occuperanno dell' accensione-spegnimento dei display a sette segmenti.
La prima cosa che io verificherei è che il segnale in uscita dal micro sia di ampiezza sufficiente per poter pilotare il CD4511. Se guardi il datasheet del 4511 si nota che:
per una tensione di alimentazione di 5V (alla temperatura di 25°C) il valore della tensione sui pin di ingresso deve essere minimo 3,5V perché il segnale possa essere riconosciuto come livello logico alto. Tu invece hai a disposizione soltanto 3,3V e quindi stai facendo lavorare il componente in quella zona di indeterminazione che sarebbe meglio evitare indipendentemente dal fatto che i display funzionino ugualmente. Per ovviare potresti ridurre la tensione di alimentazione del CD4511 portandola alla stessa alimentazione del microcontrollore, anche se poi scendere troppo con Vdd potrebbe comportare altri problemi.
Per quanto riguarda invece il pilotaggio dei BC337 bisogna dimensionare correttamente la resistenza di base per garantire la saturazione del transistor quando siano accesi il maggior numero di segmenti possibili. Tenendo in considerazione questo schema dobbiamo prima di tutto calcolare le resistenze in serie ai led del display:
Come saprai la formula per calcolare R può essere scritta come :
Dove:
= tensione d' uscita CD4511 = per comodità ipotizziamo che sia 5V
= caduta di tensione su segmento led (dipende dal colore) = diciamo 1,8V
= corrente per ogni segmento led = io non supererei i 10mA
Quindi risulterà:
Avremo quindi che la corrente circolante per ogni segmento è di 10mA, nel caso in cui il display visualizzi il numero 8 avremo il massimo numero di segmenti accesi e quindi la massima corrente che percorrerà il collettore. Ovviamente se sono 10mA per segmento e i segmenti accesi sono sette avremo una corrente di collettore di 70mA .
A questo punto conosciamo:
non ci resta che calcolare (facendo ben attenzione ai dati riportati nel datasheet del BC337) la resistenza di base.
Prova tu che vediamo dove ti blocchi ....
tu hai un microcontrollore alimentato a 3,3V e tramite le sue uscite vuoi gestire direttamente i quattro bit d' ingresso del 4511. Con altre due uscite invece vuoi pilotare le basi dei transistor che si occuperanno dell' accensione-spegnimento dei display a sette segmenti.
La prima cosa che io verificherei è che il segnale in uscita dal micro sia di ampiezza sufficiente per poter pilotare il CD4511. Se guardi il datasheet del 4511 si nota che:
per una tensione di alimentazione di 5V (alla temperatura di 25°C) il valore della tensione sui pin di ingresso deve essere minimo 3,5V perché il segnale possa essere riconosciuto come livello logico alto. Tu invece hai a disposizione soltanto 3,3V e quindi stai facendo lavorare il componente in quella zona di indeterminazione che sarebbe meglio evitare indipendentemente dal fatto che i display funzionino ugualmente. Per ovviare potresti ridurre la tensione di alimentazione del CD4511 portandola alla stessa alimentazione del microcontrollore, anche se poi scendere troppo con Vdd potrebbe comportare altri problemi.
Per quanto riguarda invece il pilotaggio dei BC337 bisogna dimensionare correttamente la resistenza di base per garantire la saturazione del transistor quando siano accesi il maggior numero di segmenti possibili. Tenendo in considerazione questo schema dobbiamo prima di tutto calcolare le resistenze in serie ai led del display:
Come saprai la formula per calcolare R può essere scritta come :
Dove:
= tensione d' uscita CD4511 = per comodità ipotizziamo che sia 5V
= caduta di tensione su segmento led (dipende dal colore) = diciamo 1,8V
= corrente per ogni segmento led = io non supererei i 10mA
Quindi risulterà:
Avremo quindi che la corrente circolante per ogni segmento è di 10mA, nel caso in cui il display visualizzi il numero 8 avremo il massimo numero di segmenti accesi e quindi la massima corrente che percorrerà il collettore. Ovviamente se sono 10mA per segmento e i segmenti accesi sono sette avremo una corrente di collettore di 70mA .
A questo punto conosciamo:
non ci resta che calcolare (facendo ben attenzione ai dati riportati nel datasheet del BC337) la resistenza di base.
Prova tu che vediamo dove ti blocchi ....
0
voti
Ti giuro sono felicissimo! Grazie 1000... Adesso fuggo via che vado a fare un giretto nel lungomare ma domani appena svegli mi metto all opera! Ho studiato i transistor e so calcolare tensioni e correnti, il problema però è che se guardi in quei datasheet ce una prima voce nella tabella delle caratteristiche che riporta 20microA e l ultima che ne riporta 0,2microA...Quale delle due devo prendere? Poi se io so che il mio micro da fuori 3,3v come faccio a dimensionare la resistenza in modo tale che arrivi una certa corrente x alla base? questo perché io so che il micro da fuori 3,3 ma non so che tensione minima ci deve essere tra base e collettore affinche funzioni. Se io faccio R=3,3/20micro o 0,2 trovo una valore di resistenza su cui mi cade tutto il potenziale, invece a me serve una resistenza che mi limiti la corrente... Spero di essere stato chiaro!
Grazie grazie grazie
Grazie grazie grazie
-
brendolaccia
189 1 3 8 - Sostenitore
- Messaggi: 592
- Iscritto il: 22 feb 2009, 21:06
0
voti
se alimento l'integrato ad una tensione x, la tensione in uscita sarà x - 0,9 volt.
-
brendolaccia
189 1 3 8 - Sostenitore
- Messaggi: 592
- Iscritto il: 22 feb 2009, 21:06
Chi c’è in linea
Visitano il forum: Google Adsense [Bot] e 53 ospiti