Buonasera!
Vorrei porvi delle domande per la realizzazione di un circuito, sul quale ho qualche dubbio.
Avevo già chiesto tempo fa un aiuto, ma mi è stato di "farmi una cultura" e così ho cercato di fare, perlomeno per quanto ho potuto!
In pratica, devo comandare 3 display a 7-segmenti, ed ho quindi pensato di usare un MAX7221 o un MAX7219, comandato da un PIC.
Ho cercato in giro, ma non ho ben capito se è necessario un PIC con porte di I/O specifiche, oppure se, tramite software , è possibile usarne uno qualunque!
Considerando che, esclusi i 3 output per il MAX, ho 2 input, e un altro output, mi arrangio con 6 I/O, quindi non penso sia necessario chissà quale PIC!
Il circuito che devo realizzare è piuttosto semplice: una resistenza in entrata, oppure una differenza di potenziale.
Di questa, il PIC conosce il valore massimo e quello minimo, e in base al valore in entrata, mostri sui display, un numero ricavato da un operazione matematica.
Vi ringrazio in anticipo per l'aiuto.
Saluti!
MAX7221 e PIC
Moderatore:
Paolino
11 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
Rollerking84 ha scritto:Di questa, il PIC conosce il valore massimo e quello minimo, e in base al valore in entrata, mostri sui display, un numero ricavato da un operazione matematica.
Ti serve un microcontrollore che abbia l'interfaccia SPI (per comandare il MAX, anche se io non lo userei) e un ADC, interpretando quello che ho citato come un misuratore analogico di livello di qualcosa...
Non userei il MAX perché 3 display a 7 segmenti li piloterei in multiplexing, senza usare la SPI, con 7 pin, 3 per gli anodi/catodi comuni e 4 per la "parola" a 4 bit da inviare ad un decoder seven-seg tipo 4511. Ma quest'ultima è una mia opinione, si puo' fare naturalmente anche come dici te.
Puoi scegliere il tuo PIC qui, selezionando ad esempio alcuni termini di ricerca che vuoi avere (numero di canali minimi ADC, SPI interface... ecc..)
http://www.microchip.com/ParamChartSear ... &pageId=74
-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
0
voti
Ti ringrazio per la risposta!
Si, il PIC dovrebbe rilevare la quantità di benzina all'interno di un serbatoio, dettata ovviamente da una resistenza che varia in base alla quantità di liquido.
Sicuramente è più acculturato di me sull'argomento, quindi seguo i suoi consigli; il 4511 riceve il numero in BCD, ma comanda un solo display, quindi suppongo che me ne servono 3 giusto?
Dal PIC dovrei quindi far uscire, su 12 output, le 3 cifre da visualizzare, ma come faccio a dargli un output in BCD al PIC?
Grazie ancora per l'aiuto
Si, il PIC dovrebbe rilevare la quantità di benzina all'interno di un serbatoio, dettata ovviamente da una resistenza che varia in base alla quantità di liquido.
Sicuramente è più acculturato di me sull'argomento, quindi seguo i suoi consigli; il 4511 riceve il numero in BCD, ma comanda un solo display, quindi suppongo che me ne servono 3 giusto?
Dal PIC dovrei quindi far uscire, su 12 output, le 3 cifre da visualizzare, ma come faccio a dargli un output in BCD al PIC?
Grazie ancora per l'aiuto
-

Rollerking84
0 3 - Messaggi: 13
- Iscritto il: 6 lug 2012, 22:47
1
voti
Ti serve un solo 4511, e questo decodifichera' la parola, semplicemente inviando il valore in binario alla porta.
Ad esempio, inviando al 4511 0000, apparira' lo 0, inviando 0101 apparira' il 5, ecc... quindi dal PIC usciranno semplicemente le cifre in binario. I tre display andranno collegati con tutti i segmenti in parallelo, ovvero tutte le "a", "b", .. "d", "e", "f" assieme, e i tre anodi o catodi comuni (dipende da quali display comprerai o quelli che hai a disposizione) andranno pilotati tramite 3 BJT in multiplexing. Sai come funziona il multiplexing?
Provo se ho tempo a farti uno schema di massima, ma mi dobbiamo ancora decidere quale PIC usare.
________________________________________________
Per iniziare a capirci, una cosa del genere (l'ADC è solo un pin del PIC, non l'ho segnato)
Ad esempio, inviando al 4511 0000, apparira' lo 0, inviando 0101 apparira' il 5, ecc... quindi dal PIC usciranno semplicemente le cifre in binario. I tre display andranno collegati con tutti i segmenti in parallelo, ovvero tutte le "a", "b", .. "d", "e", "f" assieme, e i tre anodi o catodi comuni (dipende da quali display comprerai o quelli che hai a disposizione) andranno pilotati tramite 3 BJT in multiplexing. Sai come funziona il multiplexing?
Provo se ho tempo a farti uno schema di massima, ma mi dobbiamo ancora decidere quale PIC usare.
________________________________________________
Per iniziare a capirci, una cosa del genere (l'ADC è solo un pin del PIC, non l'ho segnato)
-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
0
voti
Grazie per lo schema, mi ha schiarito molto le idee!
I transistor sui catodi comuni devono essere di un tipo particolare? Io attualmente ho i BC547 e i BC557, che sono rispettivamente NPN e PNP se non sbaglio... così magari mi posso arrangiare con quello che ho già?
Per quanto riguarda le lettere dalla a alla f per mostrare il numero, ho capito, ma per quanto riguarda i segnali da mandare ai BJT, dovrei tenerli allo stato logico basso o alto in base a cosa?
Ho letto in giro sul multiplexing, ma non ho ben capito il tutto...
Per quanto riguarda il PIC, probabilmente in futuro aggiungerò altre "funzioni" per così dire, quindi direi che per quanto riguarda le I/O è meglio stare larghi, seguendo lo schema mi hai gentilmente postato, ho bisogno di 7 porte, quindi visto che ho fra le mani un 16F628A inutilizzato, direi che 16 I/O bastano e avanzano.
Però, per quanto concerne la trasformazione da decimale in binario, si può fare su qualsiasi PIC, tramite software, o è necessario un PIC specifico?
Per quanto riguarda i Display, anche se penso sia irrilevante, è preferibile acquistarli di tipo a catodo o ad anodo comune?
Grazie ancora!
I transistor sui catodi comuni devono essere di un tipo particolare? Io attualmente ho i BC547 e i BC557, che sono rispettivamente NPN e PNP se non sbaglio... così magari mi posso arrangiare con quello che ho già?
Per quanto riguarda le lettere dalla a alla f per mostrare il numero, ho capito, ma per quanto riguarda i segnali da mandare ai BJT, dovrei tenerli allo stato logico basso o alto in base a cosa?
Ho letto in giro sul multiplexing, ma non ho ben capito il tutto...
Per quanto riguarda il PIC, probabilmente in futuro aggiungerò altre "funzioni" per così dire, quindi direi che per quanto riguarda le I/O è meglio stare larghi, seguendo lo schema mi hai gentilmente postato, ho bisogno di 7 porte, quindi visto che ho fra le mani un 16F628A inutilizzato, direi che 16 I/O bastano e avanzano.
Però, per quanto concerne la trasformazione da decimale in binario, si può fare su qualsiasi PIC, tramite software, o è necessario un PIC specifico?
Per quanto riguarda i Display, anche se penso sia irrilevante, è preferibile acquistarli di tipo a catodo o ad anodo comune?
Grazie ancora!
-

Rollerking84
0 3 - Messaggi: 13
- Iscritto il: 6 lug 2012, 22:47
0
voti
Rollerking84 ha scritto:Grazie per lo schema, mi ha schiarito molto le idee!
I transistor sui catodi comuni devono essere di un tipo particolare? Io attualmente ho i BC547 e i BC557, che sono rispettivamente NPN e PNP se non sbaglio... così magari mi posso arrangiare con quello che ho già?
Si' vanno benissimo, se comprerai display a catodo comune serviranno 3 NPN, se invece comprerai ad anodo comune serviranno 3 PNP (la scelta è indifferente, io sceglierei catodo comune e NPN per non avere la logica negata, ma è indifferente ai fini del progetto).
Rollerking84 ha scritto:Per quanto riguarda le lettere dalla a alla f per mostrare il numero, ho capito, ma per quanto riguarda i segnali da mandare ai BJT, dovrei tenerli allo stato logico basso o alto in base a cosa?
Ho letto in giro sul multiplexing, ma non ho ben capito il tutto...
Il multiplexing si basa sulla persistenza delle immagini sulla retina, un po' come funzionano gli schermi TV in generale. Con una frequenza di refresh abbastanza elevata (diciamo 200-500 Hz) si visualizzano le cifre sui display, a rotazione, molto velocemente, talmente velocemente che l'occhio li vede sempre tutti accesi.
Facciamo un esempio di catodo comune, quindi CifraX è attiva a livello logico alto.
Ad esempio vuoi visualizzare il numero 352? Mandi un segnale alto alla Cifra2, uno basso alla Cifra1 e Cifra0 (quindi 100) e contemporaneamente mandi al 4511 la parola "3", ovvero 0011, si illuminera' il 3 sulla Cifra2 e Cifra1,Cifra0 resteranno spenti. Dopo 2 ms manderai il segnale alto alla Cifra1, spegnendo Cifra2,Cifra0, ovvero 010, e contemporaneamente la parola "5" al 4511, dopo altri 2 ms manderai il segnale alto alla Cifra0, spegnendo Cifra2,Cifra1, ovvero 001, e contemporaneamente la parola "2" al 4511, si illuminera' "2" su Cifra0 e Cifra2,Cifra1 resteranno spenti. Questo ciclo si ripete all'infinito, finche' le parole che compongono la cifra non cambiano, visualizzando sempre "3" "5" "2", una ad una, ma talmente velocemente che sembrano accese sempre tutte assieme a visualizzare 352. Spero si sia capito qualcosa di quello che ho detto
Rollerking84 ha scritto:Per quanto riguarda il PIC, probabilmente in futuro aggiungerò altre "funzioni" per così dire, quindi direi che per quanto riguarda le I/O è meglio stare larghi, seguendo lo schema mi hai gentilmente postato, ho bisogno di 7 porte, quindi visto che ho fra le mani un 16F628A inutilizzato, direi che 16 I/O bastano e avanzano.
Però, per quanto concerne la trasformazione da decimale in binario, si può fare su qualsiasi PIC, tramite software, o è necessario un PIC specifico?
La trasformazione da decimale in binario è una mera questione di codice, puoi far tutto quello che vuoi e inviare qualsiasi combinazione di segnali alle porte, per farti un esempio semplice:
- Codice: Seleziona tutto
PORTB = 5; //5 in decimale
la Porta B del PIC assumera' i seguenti stati binari: 0000 0101
senza "trasformismi" strani, ci pensa il compilatore
Il 16F628A sarebbe perfetto ma non ha un modulo ADC, devi cercarne uno con un modulo ADC (io in casa ho un 16F877, che ha una marea di porte e molte interfacce interessanti).
Rollerking84 ha scritto:Per quanto riguarda i Display, anche se penso sia irrilevante, è preferibile acquistarli di tipo a catodo o ad anodo comune?
E' irrilevante, per avere logica non negata (ovvero livello basso sulla CifraX per accendere, invece che livello alto per accendere) servono i catodi comuni e BJT NPN, ma è indifferente perché via software puoi fare qualsiasi cosa (o quasi) ti venga in mente.
-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
0
voti
Ti ringrazio ancora moltissimo per il tempo che stai perdendo aiutandomi!
Ok, quindi per i display vada per il catodo comune, tanto li devo acquistare!
La logica del multiplexing l'ho capita.. ho ancora qualche piccola nozione di elettronica in testa per fortuna!
Quindi, se il mio PIC riceve un certo segnale di resistenza dal sensore del serbatoio, io quando lo programmo inserisco che quel valore corrisponde ad esempio al valore massimo Es. 2 Ohm = Serbatoio Pieno e 60 Ohm = serbatoio vuoto, e gli dico anche che un litro nel serbatoio equivale ad un certo valore di R Es. 1 L = 3 Ohm e 1 L = 20 km , lui calcola che con il pieno ci faccio 200 km.
Anche con un aggiornamento non troppo frequente, con che funzione o formula faccio venir fuori i km di autonomia che mi restano, in base alla resistenza che lui rileva? con un incertezza di 1 km sarebbe quasi stupendo!
Una volta ricavato il numero, con il multiplexing lo mando ai display (per come programmarlo cerco su internet, sennò ti faccio diventare scemo a spiegarmi tutto!
)
Ok, quindi per i display vada per il catodo comune, tanto li devo acquistare!
La logica del multiplexing l'ho capita.. ho ancora qualche piccola nozione di elettronica in testa per fortuna!
Quindi, se il mio PIC riceve un certo segnale di resistenza dal sensore del serbatoio, io quando lo programmo inserisco che quel valore corrisponde ad esempio al valore massimo Es. 2 Ohm = Serbatoio Pieno e 60 Ohm = serbatoio vuoto, e gli dico anche che un litro nel serbatoio equivale ad un certo valore di R Es. 1 L = 3 Ohm e 1 L = 20 km , lui calcola che con il pieno ci faccio 200 km.
Anche con un aggiornamento non troppo frequente, con che funzione o formula faccio venir fuori i km di autonomia che mi restano, in base alla resistenza che lui rileva? con un incertezza di 1 km sarebbe quasi stupendo!
Una volta ricavato il numero, con il multiplexing lo mando ai display (per come programmarlo cerco su internet, sennò ti faccio diventare scemo a spiegarmi tutto!
-

Rollerking84
0 3 - Messaggi: 13
- Iscritto il: 6 lug 2012, 22:47
0
voti
Rollerking84 ha scritto:Anche con un aggiornamento non troppo frequente, con che funzione o formula faccio venir fuori i km di autonomia che mi restano, in base alla resistenza che lui rileva? con un incertezza di 1 km sarebbe quasi stupendo!
La resistenza di cui parli penso che sia un potenziometro collegato ad una sorta di galleggiante che oscilla... se ho ben capito, puoi rilevare (tarandolo ovviamente) che ad esempio con 3
il serbatoio ha 10 litri, con 100
ha 50 litri (sto' sparando numeri) quindi hai l'info di quanti litri hai a disposizione istante per istante (anche minuto per minuto o secondo per secondo se vuoi). Conoscendo i litri, quanti km puoi ancora fare? Questa domanda purtroppo esula dall'elettronica, dipende dal consumo, e il consumo dipende da una quantita' di variabili tra le quali la velocita' media... dunque dovresti, per avere una stima piu' precisa, perlomeno avere anche questa info da dare in pasto al micro. Se ti accontenti e dici che la tua auto fa' 18 km a litro, il calcolo è semplice, una bazzecola per il tuo circuito 
-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
0
voti
Capisco cosa mi stai dicendo...
Beh, ipotizziamo che faccia 15 km con un litro, ma se fosse possibile l'operatore potrebbe inserire il valore da solo quando vuole (se non è troppo lunga la cosa).
Per adesso mi fermo qui, poi sono sempre in tempo a togliere il PIC e riprogrammarlo
Eh, tu la fai facile! ma io della programmazione in C mi ricordo poco... Ora sto cercando un po' di programmare questo benedetto circuito...
Poi, una cosa che non ho chiesto, ma penso di essere in grado di farla da solo... Quando l'autonomia è a 20 km, un led che lampeggia per una volta, e quando è a 10 km, lo stesso led che lampeggia 3 o 4 volte ... magari a 10 km anche un avviso con un buzzer... ma lasciamo perdere per adesso
Beh, ipotizziamo che faccia 15 km con un litro, ma se fosse possibile l'operatore potrebbe inserire il valore da solo quando vuole (se non è troppo lunga la cosa).
Per adesso mi fermo qui, poi sono sempre in tempo a togliere il PIC e riprogrammarlo
Eh, tu la fai facile! ma io della programmazione in C mi ricordo poco... Ora sto cercando un po' di programmare questo benedetto circuito...
Poi, una cosa che non ho chiesto, ma penso di essere in grado di farla da solo... Quando l'autonomia è a 20 km, un led che lampeggia per una volta, e quando è a 10 km, lo stesso led che lampeggia 3 o 4 volte ... magari a 10 km anche un avviso con un buzzer... ma lasciamo perdere per adesso
-

Rollerking84
0 3 - Messaggi: 13
- Iscritto il: 6 lug 2012, 22:47
0
voti
[10] Re: MAX7221 e PIC
Rollerking84 ha scritto:Capisco cosa mi stai dicendo...
Beh, ipotizziamo che faccia 15 km con un litro, ma se fosse possibile l'operatore potrebbe inserire il valore da solo quando vuole (se non è troppo lunga la cosa).
Certo si puo' fare senza problemi, con due tasti "up" "down" ad esempio per settare manualmente la costante "consumo".
Rollerking84 ha scritto:Poi, una cosa che non ho chiesto, ma penso di essere in grado di farla da solo... Quando l'autonomia è a 20 km, un led che lampeggia per una volta, e quando è a 10 km, lo stesso led che lampeggia 3 o 4 volte ... magari a 10 km anche un avviso con un buzzer... ma lasciamo perdere per adesso
Nessun problema anche qui, tutte robette banali, non preoccuparti della programmazione, ti daremo una mano anche perché nel complesso non è un progetto particolarmente complicato

-

rusty
4.075 2 9 11 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 1578
- Iscritto il: 25 gen 2009, 13:10
11 messaggi
• Pagina 1 di 2 • 1, 2
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)