ultimo aggiornamento 4 giugno 2009



 

 

La scheda di controllo di RoboZak denominata MR-C3024 è dotata di un'apposita porta per il collegamento di un display LCD. Questa porta utilizza il comando PRINT del Robobasic per mostrare dei testi rappresentati da stringhe.
Il display può inoltre essere utilizzato per verificare i valori letti dai sensori quali: luce, prossimità, suono, accelerometro e altri.
La Hitec, produttrice del robot, fornisce un display dedicato con 2 linee per 16 caratteri.
Ma come vedrete si può anche utilizzare un display che potrete autocostruire.
La posizione della porta LCD è visibile nella figura sotto riportata. In pratica è rappresentata da una porta seriale il cui accesso è effettuato tramite RoboBasic.
La porta è pre configurata con questi parametri di collegamento: 4800 baud, 8 databits, 1 stopbit, nessuna parità. I segnali sono TTL con 5 volt di livello logico.


Segnalazione come argomento caldo del forum LCD seriale per Robozak

homotix

PCBA

OurPCB

Per questo motivo occorre utilizzare un circuito di comando del display LCD compatibile con questo livello di tensione.
Quando si vorrà utilizzare il display occorrerà inserire nel programma RoboBasic l'istruzione LCDINIT che aprirà la porta LCD.
Per scrivere sul display si utilizzerà l'istruzione PRINT, si potrà inoltre utilizzare il comando PRINT FORMAT ().
A fine pagina sono riportati alcuni esempi di programmi.

'======================================
' LCD.bas
' Esempio utilizzo LCD seriale
' 4800 baud, 8 databits, 1 stopbit, no parity
' di Adriano Gandolfo
' www.adrirobot.it
'======================================
DELAY 3000 'Pausa iniziale
LCDINIT 'inizializzazione porta LCD
PRINT "&$" 'Cancellazione LCD
DELAY 100 'Pausa
PRINT "1 Adrirobot.it #$" 'Scrittura prima linea
DELAY 100 'Pausa
PRINT "2 ROBOZAK #$" 'Scrittura seconda linea
DELAY 100 'Pausa
END 'Fne programma


LCD.bas

 

 

 Versione realizzata da landyandy

 

Il modulo   è basato su un progetto presente sul sito francese http://kudelsko.free.fr/.  e permette la gestione di un comune modulo LCD del tipo HD44780 compatibile.
La comunicazione avviene tramite una linea seriale, la decodifica e il pilotaggio del display LCD avviene tramite un PIC 16F628 opportunamente programmato.
LCD può essere pilotato tramite un flusso di dati con una velocità di:2400, 4800, 9600, 19200 baud 8 bit, no parity, 1 bit stop.
La velocità si varia modificando la posizione dei DIP.
Il collegamento con la scheda avviene tramite un connettore analogo a quello dei servo (+5V, GND, Sig).
La sintassi per l'invio dei comandi è molto semplice.

PRINT  "&$"
PRINT "1XXXXXXXXXXXXXXXX#$"
PRINT "2XXXXXXXXXXXXXXXX#$"

dove:
"&$" cancella il display
"1XXXXXXXXXXXXXXXX#$" scrive sulla prima riga del display
"2XXXXXXXXXXXXXXXX#$" scrive sulla seconda riga del display

lcd_seriale_new-dettaglio-connettore.JPG    mini-lcd_seriale_new-prova.JPG

Display LCD - fasi di montaggio

lcd_seriale_new-montaggio_1.JPG lcd_seriale_new-montaggio_2.JPG
lcd_seriale_new-montaggio_3.JPG lcd_seriale_new-montaggio_4.JPG

 

Elenco componenti

R1

4,7kΩ ¼ W 5%

R2,R4

10kΩ ¼ W 5%

P1

10k Ω trimmer orizzontale

C1,C2

4,7 pF ceramico

C3,C4

100nF multistrato

Q1

Quarzo 12 MHz

IC1

16F628-04/P + zoccolo 18 pin

LCD

LCD 16x2 tipo C216L01YBW00 o equivalente

S1

interruttore DIL 2 poli

SV1

Pin-strip femmina 1x6

SV2

Pin-strip femmina 1x4

mini-lcd_seriale_new-componenti.JPG

Circuito stampato e disposizione componenti

Per la costruzione si procederà iniziando dalla realizzazione del circuito stampato il cui disegno lato rame è visibile sopra
Per la sua realizzazione si utilizzerà una basetta in vetronite (monofaccia) di dimensioni di circa 41x44 mm, il metodo potrà essere quello della fotoincisione o del trasferimento termico utilizzando i cosiddetti fogli blu (PRESS-N-PELL)
Una volta inciso il rame, si verificherà in controluce o mediante l’utilizzo di un multimetro che non vi siano cortocircuiti soprattutto tra le piste più vicine.
Si passerà quindi alla foratura della stessa, utilizzando principalmente una punta da 0,8 mm, mentre si utilizzeranno una dal diametro di 1 mm per i connettori.
In seguito si potrà passare al posizionamento e alla saldatura dei componenti seguendo lo schema disposizioe componenti visiobile sopra.
Per la saldatura si utilizzerà un piccolo saldatore a punta fine, della potenza di circa 25 – 30 W.
S’inizierà dai ponticelli, proseguendo con le resistenze, si passerà poi allo zoccolo dell'integrato, i condensatori, e il quarzo.
Si concluderà con i pin-strip e infine con l'interruttore DIL.
Terminato la saldatura si potrà inserire l'integrato IC1 (che deve essere programmato) nell'apposito zoccolo facendo attenzione alla tacca di riferimento che andrà rivolta verso i ponticelli.

Programmazione del PIC16F628
Occorre prima di tutto scaricare il file esadecimale SERLCD3.HEX (in formato compresso autoscompattante) destinato al microcontrollore 16F628-20/P (o 16F628-04/p).


File SERLCD3.EXE

Per la programmazione del microcontrollore occorre un apposito programmatore con il suo programma di gestione come ICPROG creato da Bonny GIJZEN.

Configurazione dei microswitchs

La comunicazione con il microcontrollore può avvenire a quattro diverse velocità (2400, 4800, 9600, 19200 baud).
Per modificare la velocità occorre modificare la configurazione

Velocità di trasmissione switchs 1 switchs 2
2400 ON ON
4800 ON OFF
9600 OFF ON
19200 OFF OFF

 

PIC16F628 - FLASH-Based 8-Bit CMOS Microcontrollers

Piedinatura Datasheet Foto dell'integrato

LCD 16x2 tipo C216L01YBW00
Piedinatura Datasheet display C216L01YBW00 Foto

Descrizione
Il display a cristalli liquidi o LCD (dall'inglese Liquid Crystal Display) utilizzato in questo modulo è dotato di 2 linee di 16 caratteri ciascuna. I display LCD più comuni reperibili in commercio, hanno un'interfaccia ideata da Hitachi che, nel tempo, è diventata uno standard industriale utilizzato anche da altre case produttrici.

Funzione dei vari pin del display

PIN

Nome

Funzione

1

GND

Ground – Pin che deve essere collegato al negativo d’alimentazione.

2

VDD

Power Supply – Pin da collegare a +5V d’alimentazione.

3

Vo

A questo Pin si deve applicare una tensione variabile da 0 a +5V tramite un trimmer per regolare il contrasto del display.

4

RS

Register Select – Questo pin è una linea di controllo con cui si comunica al display se si sta inviando sul bus dati (linee da DB0 a DB7) un comando (RS=0) oppure un dato (RS=1).

5

R/W

Read, Write – Questo pin è un’altra linea di controllo con cui si comunica al display se s’intende inviare un dato al display (R/W=0) oppure leggere un dato dal display (R/W=1).

6

E

Enable – Questo pin è una linea di controllo con cui si può abilitare il display ed accettare dati ed istruzioni dal bus dati (E=1).

7

DB0

Data Bus line 0 – Le linee su cui transitano i dati tra processore e display.

8

DB1

Data Bus line 1

9

DB2

Data Bus line 2

10

DB3

Data Bus line 3

11

DB4

Data Bus line 4

12

DB5

Data Bus line 5

13

DB6

Data Bus line 6

14

DB7

Data Bus line 7

15

A

Pin per il collegamento della retroilluminazione se presente.

16

K

Pin per il collegamento della retroilluminazione se presente.

Dei 16 pin presenti se ne utilizzano però solamente 7
RS   Register select signal
E     Enable signal
R/W read/wrwite selection
DB4 Data bit 4
DB5 Data bit 5
DB6 Data bit 6
DB7 Data bit 7

Le linee dati, RS ed E, sono dotati di una resistenza pull-down per forzare a massa la linea quando non utilizzate.
Il trimmer R6 connesso al pin Vo permette di regolare il contrasto del LCD.

Programma di prova del display per lettura sensore

'======================================
' Lettura_accelerometro.bas
' di Adriano Gandolfo
' www.adrirobot.it
'======================================
'Definizione variabili
DIM asse_x AS INTEGER
DIM asse_y AS INTEGER
'Inizializzazione LCD e
'messaggio iniziale
LCDINIT
PRINT "&$"
DELAY 500

lettura:
asse_x=AD(0) 'Il valore letto dalla porta 0 è salvato nella variabile Asse_x
asse_y=AD(1) 'Il valore letto dalla porta 1 è salvato nella variabile Asse_Y
PRINT "1Asse X="
PRINT FORMAT(Asse_x,DEC,2) ' Viene mostrato il valore letto
PRINT "#$"
DELAY 100
PRINT "2Asse Y="
PRINT FORMAT(Asse_y,DEC,2) ' Viene mostrato il valore letto
PRINT "#$"
DELAY 100
GOTO lettura


Lettura_accelerometro.bas

'======================================
' Lettura_sensore.bas
' di Adriano Gandolfo
' www.adrirobot.it
'======================================
'Definizione variabili
DIM sensore AS INTEGER

'Inizializzazione LCD e
LCDINIT
PRINT "&$"
DELAY 500

lettura:
sensore=AD(0) 'Il valore letto dalla porta 0 è salvato nella variabile
PRINT "1Lettura sensore#$"
DELAY 100
PRINT "2Valore="
PRINT FORMAT(sensore,DEC,2) ' Viene mostrato il valore letto
PRINT "#$"
DELAY 100
GOTO lettura


Lettura_sensore.bas

Elenco revisioni
04/06/2009 Inserito segnalazione di argomento caldo del forum.
17/03/2009 Emissione preliminare
Private Policy Cookie Policy Termini e Condizioni