Gestire un display alfanumerico con un modulo SlimLine

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Controllori SlimLine e Netsyst (LogicLab) Gestire un display alfanumerico con un modulo SlimLine

Stai visualizzando 15 post - dal 1 a 15 (di 31 totali)
  • Autore
    Post
  • #35379
    Massimo
    Partecipante

    Mi chiedevo se sui sistemi SlimLine anche quello più economico si può collegare e gestire via software sul bus di espansione I2C un display, ad esempio un 2 righe x 16 caratteri, per visualizzare dei dati.

    #37680
    Sergio Bertana
    Amministratore del forum

    Si certo a tutti i modelli di CPU SlimLine anche i modelli Compact (Le versioni espandibili) può essere connesso un display LCD con interfaccia I2C. Cercando tra i vari distributori di materiale elettronico ho trovato ad esempio il modello BTHQ 21605V della BATRON (Codice RS-Components 743-6134), oppure il modello MCCOG21605C6W (Vedi datasheet) della MIDAS (Codice Farnell 2063203).

    Per la gestione abbiamo realizzato una specifica funzione SysI2CWrRd che permette di gestire l’accesso in lettura e scrittura di un qualsiasi dispositivo I2C connesso al bus. Utilizzando questa funzione è possibile fare coesistere senza problemi il display con i nostri moduli di estensione. Naturalmente dovrai scriverti un apposito FB che utilizzando la funzione inizializza il display e gestisce la scrittura dei testi, magari prevedendo come ingresso della FB una stringa da 32 caratteri che saranno trasferiti sulle due righe da 16 caratteri del display.

    Dato il basso consumo del display potrai attingere l’alimentazione dello stesso direttamente dal connettore di estensione del modulo SlimLine. Per ulteriori informazioni sulla connessione del display al connettore di espansione del modulo CPU consulta il Manuale riferimenti Hardware.

    #37750
    Mirco
    Partecipante

    Sono interessato pure io alla realizzazione del progetto con display I2C. Vi chiedo se siete andati avanti nel progetto della realizzazione della FB. Ciao buon lavoro…

    #37751
    Sergio Bertana
    Amministratore del forum

    Stimolato dalle richieste eccomi con una FB che gestisce la scrittura su di un display MC21605GL6W-SPI della Midas acquistato da Farnell (Codice 221-8947) di cui allego il datasheet. Ho collegato il display al bus di estensione di un modulo CPU compact ARM7 (Vedi foto), utilizzando il seguente schema elettrico.

    Come si vede dal programma (Stampa e Download), il blocco funzione MC21605LCDMng gestisce il display connesso al bus, occorre indicare l’indirizzo I2C del display, e l’indirizzo della stringa da visualizzare. I primi 16 caratteri della stringa saranno visualizzati sulla riga superiore del display mentre i secondi 16 sulla riga inferiore. Attivando la variabile Write viene eseguito il trasferimento della stringa sul display.

    Il FB viene eseguito da programma ladder ed il comando di Write è attivato sul fronte positivo di SysClock1000, quindi il display viene aggiornato ad ogni secondo. Il comando Write deve essere utilizzato per sincronizzare l’aggiornamento del display quando si varia la stringa da visualizzare, siccome l’aggiornamento del dispaly avviene ciclicamente un carattere a loop di programma se vario la stringa mentre il display si aggiorna corro il rischio di visualizzare un messaggio composto da un pezzo del vecchio dato e da un pezzo del nuovo dato.

    Il programma potrà essere modificato per gestire display diversi da quello da me scelto magari con maggior numero di righe e colonne.

    #37753
    Mirco
    Partecipante

    Ottimo lavoro… non rimane che provare…

    #37792
    Mirco
    Partecipante

    Ciao Bertaser, finalmente mi è arrivato il Display Midas per la prova dello SlimLine con LCD 2×16. Ho realizzato il circuito come descritto nel tuo messaggio, scaricato il programma, ma alla prima accensione vedo solo tutti i quadretti che formano i caratteri, cambiando il contrasto cambia la luminosità dei riquadri.

    Nel tuo schema riporti ai pin 7 e 8 del display SA0, SA1  Address Setting, ho messo un dip-sw per facilitare l’inserimento. nel programma come indirizzo I2C hai messo 16#3C, ti chiedo dove trovo la tabellina che mi specifica gli indirizzi, sul data sheet non la trovo.

    Io penso sia un problema di indirizzi, perchè il resto dovrebbe andare bene, il display è un  MIDAS  MC21605GL6W-SPTYI  sullo SlimLine non mi pare che ci siano settaggi hardware da fare per abilitare I2C. Io ho lo SlimLine versione scheda OEM con I2C.

    Ti ringrazio in anticipo, attendo una tua risposta intanto procedo con i tentativi…

    #37793
    Mirco
    Partecipante

    Problema LCD risolto, si trattava di un contatto non buono nel cavo piatto di collegamento fra display e SlimLine, uno dei connettori risultava difettoso. Ora rimane da vedere come visualizzare le variabili come ad esempio il valore del”analogica o lo stato dei timer.

    Sistemo meglio i cablaggi poi eventualmente posto una foto.

    #37794
    Sergio Bertana
    Amministratore del forum

    Sono contento che il display funzioni, per la visualizzazione delle variabili puoi utilizzare la funzione SysVarsnprintf, variable print to string, ti componi una stringa con il testo ed il valore delle variabili e poi la trasferisci sul display. In merito all’indirizzamento del display sul bus I2C, ho fatto riferimento al datasheet dove è riportato.

    Four 7-bit slave addresses (0111100, 0111101, 0111110 and 0111111) are reserved for the Controller. The least significant bit of the slave address is set by connecting the input SA0 (DB0) and SA1 (DB1) to either logic 0 (VSS) or logic 1 (VDD).

    Nel mio circuito entrambi i segnali SA0 e SA1 sono connessi a VSS, quindi l’indirizzo è 16#3C.

    #37797
    Mirco
    Partecipante

    Per quanto riguarda la funzione SysVarsnprintf dovrei visualizzare sul display, il valore degli ingressi analogici in volt, uso 2 variabili REAL Volt_1 e Volt_2 provenienti da SysGetAnInp. Hai qualche esempio di utilizzo della SysVarsnprintf per convertire e valori REAL della analogica in stringa da mandare al display ?  

    Ho fatto alcuni tentativi leggendo messaggi del forum e nel manuale ma con “scarsi risultati”, poi.. mettiamo il programma disponibile per essere scaricato. Grazie e lascio la scheda collegata per provare…

    #37798
    Sergio Bertana
    Amministratore del forum

    Tra i vari posts del forum c’è sicuramente qualche esempio di utilizzo della funzione SysVarsnprintf, in ogni caso ecco di seguito come visualizzare due variabili REAL sul display. La variabile LCDMessage di tipo STRING viene poi visualizzata sul display.

    (* Real 1:xxx.xxx *)
    (* Real 2:xx.x     *)

    i:=SysVarsnprintf(ADR(LCDMessage), 16+1, ‘Real 1:%7.3f ‘, REAL_TYPE, ADR(RVar[0]));
    i:=SysVarsnprintf(ADR(LCDMessage)+16, 16+1, ‘Real 2:%4.1f ‘, REAL_TYPE, ADR(RVar[1]));

    Come vedi la prima chiamata alla funzione scrive il testo seguito dal valore della variabile RVar[0] su 3 cifre intere e 3 cifre decimali. La seconda chiamata alla funzione scrive il testo seguito dal valore della variabile RVar[1] su 2 cifre intere e 1 cifra decimale. Sfrutto comunque la domanda per postare un programma (Stampa, Download sorgente), che visualizza ciclicamente (Ogni 2 secondi) 3 diversi messaggi:

    Un messaggio di solo testo.
    Un messaggio con le 2 variabili REAL.
    Un messaggio con il valore di data ed ora.

    #37801
    Mirco
    Partecipante

    Ti ringrazio e procedo con le “prove” direi che il display I2C è una soluzione valida ed economica per visualizzare variabili di processo e testi. Alle prossime…

    #37825
    Andrea
    Partecipante

    Ho acquistato per errore questo display Codice Farnell 2063203 invece di questo Codice Farnell 2218947, adesso però ho un problema con lo schema elettrico, non ho ne CSB ne SA0 ed SA1… C’è qualche soluzione per poter utilizzare questo o devo acquistare quello corretto…

    #37826
    Sergio Bertana
    Amministratore del forum

    Ho visto il datasheet del display che hai acquistato ed a livello di connessioni elettriche non ci sono problemi, colleghi solo i due segnali SCL ed SDA, tieni il pin di RESET del display a +5VDC.

    Non ho visto se tutti i comandi I2C sono esattamente uguali al display da me utilizzato per le prove, ma solitamente le sequenze software per la gestione sono le stesse per tutti i display. Le sequenze da me utilizzate sono le stesse che utilizzo in altre apparecchiature dove è montato un display con interfaccia parallela.

    Attenzione all’indirizzo del display da dare al blocco funzione, come vedi sul datasheet del display è riportato Slaver address could only set to 0111110, no other slaver address could be set. Quindi l’indirizzo da utilizzare è 16#37. Naturalmente a differenza dell’altro display che aveva la possibilità di definire l’indirizzo e quindi più display (Fino a 4) potevano condividere il bus I2C, con questo display ne puoi collegare uno solo.

    #37827
    Andrea
    Partecipante

    Grazie mille, siete sempre fulminei e precisi nelle risposte… Provo a collegarlo e vi faccio sapere…

    #37828
    Sergio Bertana
    Amministratore del forum

    Se c’è un moderatore libero cerchiamo di rispondere con celerità, molte volte siamo impegnati in lavori fuori sede e/o assistenza remota via TeamViewer e non abbiamo il tempo materiale per rispondere.

Stai visualizzando 15 post - dal 1 a 15 (di 31 totali)
  • Devi essere connesso per rispondere a questo topic.