Contakm-giri elettronico per alfa 146

« Older   Newer »
  Share  
gyppe
view post Posted on 21/5/2008, 17:12




Stavolta vi ho risparmiato i rompimenti durante la progettazione, meriterei un premio :P
Visto che oggi sono in vena di caricare foto vi faccio vedere pure questo progettino :)

Si tratta di un semplice contagiri/km elettronico integrato perfettamente sul cruscotto originale di un'alfa 146 di un'amico.
Rileva gli rpm e i km/h direttamente dai sensori originali, visualizza i dati in formato digitale e attraverso barre analogiche, spia e buzzer di segnalazione cambio marcia, e vari messaggi che si attivano quando il ragazzo stira troppo le marce o corre troppo (questo l'ha chiesto personalmente il "comittente", è una tamarrata però è carino :D ).
Il montaggio è ancora provvisorio, per ora ho montato un piccolo display 2*16, con il 4*20 (quello maledetto l'ho buttato in un cassetto :D ) o magari un display grafico il risultato dovrebbe essere davvero carino.

IL progetto è semplice ma per me è stato molto didattico, mi sono particolarmente divertito a studiare i fogli tecnici dell'impianto dell'auto, è completamente elettronica, se il tipo mi avesse finanziato di più e/o avessi più tempo si sarebbe potuto fare davvero un bel lavoro, è possibile controllare praticamente tutta l'auto direttamente dalla plancia strumenti.

Comunque ecco le foto, tiè:

image

image



 
Top
nightghost
view post Posted on 21/5/2008, 20:16




oh finalmente lo vedo :D ero curiosissimo!! ancora una volta gyppe ce la fa...
grandioso ^_^
 
Top
gyppe
view post Posted on 21/5/2008, 20:47




Grazie :)

Funziona bene si, però dai, così com'è è davvero brutto :D , e poi in 2 righe non ci sta nulla. Avrei voluto un display grafico, ma il tipo mi ha dato 50 euro, di più non sono proprio riuscito a comprare, credono che un hobbista possa costruire come un cinese :D eh eh
 
Top
robo67
view post Posted on 21/5/2008, 21:40




Hai fatto un bel lavoro, non tanto dal punto di vista estetico, quanto per lo studio legato ai sensori e al funzionamento del circuito.
Che micro hai usato? Sì, lo so, un PIC, ma quale?
Tu parli di usare un display grafico. Il problema, oltre al fatto dei famosi "50€ tutto compreso, bevande incluse" decisamente poco per fare qualcosa di decente, é che occorre usare un micro che abbia una quantità di memoria discreta, sempre che tu non decida di usare un display 3x2 pixel :lol:
Un consiglio: se lo trovi ti conviene usare un display negativo (normalmente blu retroilluminato in bianco), decisamente più visibile del classico giallo/verde.
Se poi vuoi il massimo della visibilità e dei caratteri grandi potresti tralasciare l'lcd ed andare verso i display a led led con matrice 5x7

CITAZIONE
e poi in 2 righe non ci sta nulla

Cosa ci vuoi scrivere, un poema? :lol: :lol:
Innanzi tutto con caratteri alti 3-5mm c'é poco da stare allegri, a meno che il conducente non usi un binocolo. Poi anche se il tutto fosse leggibile é controproducente dare troppe informazioni, perché ci si distrae leggendole tutte.
Secondo me sarebbe meglio gestire il tutto al pagine, comandate da un pulsante per decidere il parametro da visualizzare.
Potresti anche mettere un microswitch su paraurti che attiva il messaggio "A leggermi hai tamponato quello davanti.Ti consiglio di staccarmi il fusibile per non avere problemi in futuro".
 
Top
Chris Steelhard
view post Posted on 21/5/2008, 22:00




Comunque bravo Gyppettino nostro.Secondo me con quello che ti ha dato il tipo hai fatto anche troppo............
 
Top
gyppe
view post Posted on 21/5/2008, 22:33




E si robo hai colto nel segno sui problemi. Il primo era proprio quella della visibilità, io volevo metterci dei display led, ma sai non sono abbastanza scenici, così ha voluto prendere quelli.

Microcontrollore ci ho messo un 16f84, e in effetti ho toppato. Inizialmente doveva visualizzare solo due numeri, e bastava, ma poi ho cominciato con le barre, con i messaggi, con varie rivelazioni e così l'ho riempito fino all'orlo :D

Comunque grazie, mi fa piacere ricevere commenti positivi, a me a dire la verità non piace proprio l'estetica, però a metterci soldi di tasca mia non ci penso proprio, se lo tiene così :P
 
Top
nightghost
view post Posted on 22/5/2008, 08:10




CITAZIONE
Un consiglio: se lo trovi ti conviene usare un display negativo (normalmente blu retroilluminato in bianco), decisamente più visibile del classico giallo/verde.

già un display grafico costa ho visto su distrelec tipo 40 euro giallo/verde 128x64...
poi, se lo si vuole blu/bianco, sparano anche 150€ <_<

CITAZIONE
é che occorre usare un micro che abbia una quantità di memoria discreta, sempre che tu non decida di usare un display 3x2 pixel

non ho ancora capito il motivo di queste affermazioni che sento in giro. cioè intanto molti non hanno la matrice caratteri salvata, quindi bisogna salvarla sul pic, e qui va bene, si occupa un po di memoria (mettiamo un 16f876 che ha 8kb)
poi per il resto, ad esempio se disegno una riga sul display,non mi occupa memoria perchè la disegno punto per punto no?
la memoria di cui parli è forse quella per salvare eventuali immagini nel pic? :unsure:
o forse prima di disegnare bisogna memorizzare tutti i punti del display sul pic e poi spedirli?

(e qui sorge il problema che il pic non riesce a scrivere nella program memory, e bisogna passare tipo ad un 8051 o al 18F)
 
Top
maxwell2
view post Posted on 22/5/2008, 10:00




Hai fatto un buon lavoro gyppe! ;)
Si , magari un bella mascherina per nascondere il nudo e crudo del PIC e del dislpay sarebbe il top....
Cmq , per la dedizione , la pazienza e il risultato funzionante ottenuto, ti sei meritato il premio come miglior genius del mese! :lol:
 
Top
nightghost
view post Posted on 22/5/2008, 10:10




concordo pienamente ^_^
 
Top
Hike
view post Posted on 22/5/2008, 12:16




Si bravo Gyppe !! :)
Però ...... quel volante un pò ridicolo, lo schermo video da 9", il tweeter troppo grande per la sua sede ..... il tuo amico è proprio un alfista, eh !! :lol:
 
Top
robo67
view post Posted on 22/5/2008, 12:50




CITAZIONE
non ho ancora capito il motivo di queste affermazioni che sento in giro. cioè intanto molti non hanno la matrice caratteri salvata, quindi bisogna salvarla sul pic, e qui va bene, si occupa un po di memoria (mettiamo un 16f876 che ha 8kb)
poi per il resto, ad esempio se disegno una riga sul display,non mi occupa memoria perchè la disegno punto per punto no?
la memoria di cui parli è forse quella per salvare eventuali immagini nel pic?
o forse prima di disegnare bisogna memorizzare tutti i punti del display sul pic e poi spedirli?

(e qui sorge il problema che il pic non riesce a scrivere nella program memory, e bisogna passare tipo ad un 8051 o al 18F)

I problemi sono più di uno. Innanzi tutto il primo problema é quello di dove memorizzare le immagini per richiamarle quando servono.
Considerando un display 128x64 pixel. In totale sono 8192 bit, corrispondenti a 1Kbyte.
Questa immagine deve essere memorizzata nella memoria programma del micro o, in alternativa, in una EEPROM esterna al micro.
Di EEPROM ce ne sono di vari tipi con 3 tipi di bus: I2C, SPI e microwire.
Il primo é il più lento, ma é quello che tendenzialmente offre tagli di memoria maggiori, mentre SPI e microwire,entrambi veloci, hanno memorie più ridotte e richiedono inoltre un numero di pin maggiore per essere gestite.
Risolto il problema di dove immagazzinare le immagini resta quello di visualizzarle.
I metodi sono 2: il primo consiste nel leggere dalla memoria eeprom (o interna al micro) l'immagine e inviarla direttamente al display. La seconda invece prende i dati dall'eprom e li memorizza sulla ram (buffer display). Il micro poi, ciclicamente, prende i dati dal buffer e li invia al display.
Considerando il caso di un utilizzo di eeprom con bus I2C operante a 400KHz si avrebbe che la lettura dei dati relativi ad ogni immagine 128x64 richiederebbe circa 1/40-1/50 secondo.A questo tempo deve essere aggiunto quello necessario all'invio dei dati dal display.
Se si utilizza la tecnica di lettura dati->invio al display per non complicarsi la vita oltre l'impossibile conviene effettuare direttamente la lettura dell'eeprom e inviare i dati al display. Questo sistema rischia però di appesantire il tutto dato che ad ogni invio dell'immagine, la cui durata alla fine può essere anche dell'ordine di 1/20 secondo, il programma sarebbe impegnato a fare solo quello.
L'aggiornamento del display con questo sistema é conveniente solo in caso di immagini statiche memorizzate su eeprom.
Se devi invece visualizzare immagini dinamiche, dove all'immagine vera e propria é sovrapposto qualcosa che cambia come cursori, numeri di contatori, orologi ecc., dovresti, ad ogni piccola variazione dell'immagine, rileggere i dati su eeprom, elaborarli "al volo" per sovrapporre le modifiche e inviarle al display. Fino a quando si tratta di scrivere una riga in orizzontale o in verticale il discorso é fattibile, ma se all'immagine devi sovrapporre un testo come il valore di un contatore l'impresa diventa al limite del proibitivo.
In questi casi é più conveniente usare il secondo sistema, dove l'immagine viene caricata solo una volta e le animazioni vengono effettuate modificando i dati sul buffer. Ciclicamente il display viene "rinfrescato" prendendo i dati dal buffer display e inviandoglieli.
La fase di rinfresco può essere anche realizzata a scansione, ovvero spendendo al display solo una parte dei dati ad ogni ciclo di programma (ad esempio una riga alla volta), cosicché la scrittura risulti diluita e non provochi grossi rallentamenti in occasione dell'aggiornamento del display.
La cosa migliore in assoluto sarebbe avere a disposizione una parte di ram doppia rispetto a quella necessaria al buffer display; si avrebbe in questo modo un doppio buffer: uno visualizzato e l'altro nascosto. Quando devi aggiornare l'immagine metti tutti i nuovi dati nel buffer nascosto e solo ad aggiornamento avvenuto rendi visibile il buffer nascosto e, parallelamente, nascondi quello visibile che sarà ora aggiornabile con i nuovi dati.
In questo modo avrai l'immagine che varia di colpo senza notare quelle imperfezioni causate dal trasferimento dei dati da memoria a display.

Queste sono le tecniche che uso io, poi magari ne esistono di migliori o di più efficienti.
Certo é che qui stavamo parlando di un display 128x64, non proprio il massimo dell'alta risoluzione. Se se ne prende uno ad esempio 256x128 la memoria da usare quadruplica e anche i tempi di aggiornamento, complicando ulteriormente il discorso. Se poi si ha a che fare con i display TFT..........beh il casino é esponenziale, dato che sono in pratica dei monitor RGB con segnali di sincronismo e i segnali colore da generare col micro.

Spero di averti chiarito qualche dubbio.
 
Top
nightghost
view post Posted on 22/5/2008, 14:38




CITAZIONE
La cosa migliore in assoluto sarebbe avere a disposizione una parte di ram doppia rispetto a quella necessaria al buffer display; si avrebbe in questo modo un doppio buffer

questo è come le pagine della svga, per non far vedere sfarfallio durante l'aggiornamento dello schermo...

mi hai chiarito qualche dubbio nel fatto di visualizzare immagini. però, penso che non ho bisogno di qualcosa del genere, vorrei solo caricare testo (che può essere dunque elaborato al volo...?) e disegnare delle curve che seguono un grafico.
praticamente l'unico motivo per il quale non uso un alfanumerico è che devo disegnare le curve.. per il resto non ne ho bisogno. al massimo a progetto finito, potrei mettere una memoria (tipo quelle che si usavano con il 16f84 nel decoder, me ne sono avanzate un casino) che visualizza un'immagine come un logo all'avvio.... :blink:

cioè voglio dire, arrivando al sodo: io posso aggiornare sul display ogni singolo punto separatamente no?
quindi non c'è problema alla gestione di aree separate, come "campi di testo" e zona del grafico.. cancello il punto da una parte e lo metto dall'altra... :huh:

CITAZIONE
il tuo amico è proprio un alfista, eh !!

cos'hai contro gli alfisti :shifty:
 
Top
maxwell2
view post Posted on 22/5/2008, 15:55




Pero' , Robo, sei meglio di un' enciclopedia sui microcontrollori e loro memorie.... :woot:
 
Top
gyppe
view post Posted on 22/5/2008, 16:55




Caspita grazie mille, non mi aspettavo vi piacesse così tanto :woot:

Marò pure il premio? Non avrei mai pensato di potermi fregiare di un titolo tanto importante, grazie :P

Hike, macchè alfista il tipo compra quello che vede e ce lo appiccica alla rinfusa :D


Mmmm, robo, io ho un dubbio proprio sull'aggiornamento selettivo di questi display. Nel mio caso vorrei usarne uno con controller ks6168(o come si chiami) il controller della samsung insomma, molto famoso.
Ho visto che si può inviare sia una stringa di caratteri in una certa posizione, modo che corrisponde grosso modo, al modo testo del qbasic o altri interpreti o compilatori del genere. E poi si può anche inviare una serie di bit che compongono una schermata grafica, molti compilatori per pic hanno una funzione apposita per salvare i dati in una matrice, che occupa appunto 1024 byte (davvero tanti per me).

Il mio dubbio è se dopo disegnata una schermata grafica, posso poi inviare una stringa di caratteri in modo testo, o magari disegnare primitive grafiche, senza che il resto si cancelli. Qualcosa tipo il view port grafico e testuale del qbasic, penso a quello perchè mi pare di essere tornato a quei tempi, uso un compilatore basic, e con i tanti print, line, circle, è praticamente come lavorare con qbasic, davvero uno spasso :D



Comunque per ora ho ordinato qualche bel pic 18f e un pò di eprom 12c512 che dovrebbe essere più che sufficiente per memorizzare qualche bella schermata e anche piccole animazioni. Per ora non ho un progetto specifico, ma voglio imparare un pochino ad usarli.





CITAZIONE
modo che corrisponde grosso modo, al modo testo

ahahahhahah :D Se leggesse la mia vecchia prof di italiano! :D
 
Top
nightghost
view post Posted on 22/5/2008, 17:02




CITAZIONE
Il mio dubbio è se dopo disegnata una schermata grafica, posso poi inviare una stringa di caratteri in modo testo, o magari disegnare primitive grafiche, senza che il resto si cancelli.

lo stesso che stavo chiedendo io :D

io usavo la SVGA in qbasic, (c'erano delle routine apposta in assembler) ma il concetto è molto simile infatti, per quello non mi suona niente nuovo.
 
Top
31 replies since 21/5/2008, 17:12   398 views
  Share