4.   Circuito di interfaccia al PC

1 Descrizione 2 Braccio 3 Encoder 4 Interfaccia al PC 5 Realiz. pratica

 

Home
Sistemi
Telecom
Elettronica
Italiano
Storia
Inglese
Ed.Fisica
Progetto personale
Chi sono

 

 

Nell’applicazione in esame si utilizza la sola meccanica del braccio ed è stato nostro compito la progettazione, realizzazione e collaudo dell’elettronica di interfaccia e del software di gestione in Visual Basic 6.

Il circuito di interfaccia permette essenzialmente la “comunicazione” tra il PC ed il braccio meccanico e il relativo adattamento di potenza.

Per risolvere il problema si è utilizzato un integrato dedicato.

Il fig.13 si mostra lo schema elettrico dell’integrato LM18293 della National equivalente L293 della SGS Thomson.

 

 

 

Fig 13 Schema elettrico dell’integrato LM18293

 

 

 

In fig. 14 si mostrano le tipiche applicazioni.

 

 

 

Fig 14 Tipiche applicazioni dell’integrato LM18293

 

 

L’integrato è costituito da 4 buffer in grado di pilotare motori in c.c. fino ad 1 Ampère per canale.

L’alimentazione massima vale Vs=36V mentre l’integrato è alimentato al pin 16,con Vss= 4.5÷36V.

Gli ingressi, TTL compatibili, definiscono il modo di funzionamento secondo le tabelle della verità indicate nella figura precedente .

In particolare l’ingresso Ve, se basso, porta l’uscita del buffer in tri-state (motore OFF).

Con 1 integrato è possibile gestire 4 motori con un unico verso di rotazione o 2 motori con selezione del verso di rotazione. Pertanto, dovendo gestire 6 motori in modo bidirezionali sono necessari 4 integrati LM18293.

In fig. 15 si riporta lo schema elettrico dell’interfaccia di comando dei motori del braccio meccanico.

 

 

Fig 15 Schema elettrico del circuito di comando dei motori.

 

 

L’interfaccia è comandata da 8 bit denominati D1, D2,……..D8 provenienti dalla porta Centronics. I bit D1 e D2 possono assumere le combinazioni 01 e 10 e definiscono il verso di rotazione. I bit da D3 a D8, se al livello alto, abilitano al funzionamento del corrispondente motore. È compito del software in Visual Basic 6 l’invio del codice binario di comando, come si descriverà in seguito.

 

 

 

4.1  Interfaccia Centronics

 

L’interfaccia Centronics è un’interfaccia parallela ad 8 bit di tipo asincrona usata soprattutto per collegare un computer ad una stampante parallela. Il flusso di dati è tipicamente monodirezionale e va, naturalmente, dal computer alla stampante ma è possibile anche inviare sulle stesse linee dati che vanno dal dispositivo periferico al computer e ciò consente l’utilizzo di tale interfaccia anche per il collegamento di dispositivi di input come, ad esempio, lo scanner o la webcam. Il connettore sul retro del computer è di tipo D a 25 poli femmina. Su un PC possono prendere posto fino a 3 interfacce parallele denominate LPT1, LPT2 e LPT3 (Line Printer Terminal). Ciascuna delle 3 LPT presenta 3 indirizzi contigui destinate alle periferiche di I/O.

L’indirizzo base della LPT1 è 888 (in esadecimale: 378), gli altri due indirizzi sono 889 e 890. L’indirizzo base della LPT2 è 632 (in esadecimale: 278), gli altri due indirizzi sono 633 e 634. L’indirizzo base della LPT3 è 956 (in esadecimale: 3BC), gli altri due indirizzi sono 957 e 958. Si riassume la situazione nella seguente tabella.

 

 

Ind. base

Ind.base+1

Ind.base+2

LTP1

888

889

890

LPT2

632

633

634

LPT3

956

957

958

 

Tabella degli indirizzi delle varie porte centronics

 

 

Alla LPT1 viene riservato l’interrupt IRQ7. Il registro base di indirizzo 888, denominato registro dati,  contiene 8 bit di uscita dal PC.

Il registro di indirizzo successivo 889, noto come registro di stato, è accessibile solo dall’esterno e solamente per 5 dei suoi 8 bit. È detto registro di stato perché ciascuna delle 5 linee individua un particolare stato in cui si trova la stampante (occupata, carta esaurita, errore, ecc.). Il registro di indirizzo 890, noto come registro di controllo, rende disponibili solo 4 bit di uscita.

In fig. 16 si mostra il connettore a 25 poli posto sul retro del computer.

 

 

 

 

 

 

fig. 16 – Interfaccia Centronics. Connettore D a 25 poli femmina posto sul retro del PC.

 

In tabella  si riporta la piedinatura, la denominazione, la direzione, l’indirizzo e l’uso delle linee che l’interfaccia Centronics mette a disposizione sul connettore D a 25 poli agli indirizzi 888, 889 e 890 della LPT1.

Tabella dei pin con le varie funzioni

 

PIN

NOME

DIREZIONE

INDIRIZZO ED USO

1

_______

STROBE

USCITA

890  OUT 890,1   0V        

 890  OUT 890,0   5V

2

DATA1

USCITA

 

3

DATA2

USCITA

 

4

DATA3

USCITA

 

5

DATA4

USCITA

OUT 888,N

6

DATA5

USCITA

Per

7

DATA6

USCITA

 0  £ N £ 255

8

DATA7

USCITA

 

9

DATA8

USCITA

 

10

ACK

INGRESSO

B3  (64)  SE ALTO

 

11

_____

BUSY

 

INGRESSO

 

B4 (128) SE BASSO

12

PAPER OUT

INGRESSO

B2  (32)  SE ALTO

13

SELECTED

INGRESSO

B1  (16)  SE ALTO

 

14

__________

AUTOFEED

 

USCITA

 

890 OUT 890,2 0V

15

ERROR

INGRESSO

B0  ( 8 )  SE ALTO

16

INIZIALIZE PRINTER

USCITA

890 OUT 890,4 5V

 

17

_____________

SELECT INPUT

 

USCITA

 

890 OUT 890,8 0V

18…25

GND

 

 

 

 

Registro dati (indirizzo 888) :

Le linee di uscita DATA8...DATA1, di indirizzo 888 (378 esadecimale),  situate tra i pin 9....2, sono memorizzate, cioè rappresentano i bit di uscita di altrettanti flip-flop.

 

 

 

LINEE

 

DATA8

DATA7

DATA6

DATA5

DATA4

DATA3

DATA2

DATA1

PIN

9

8

7

6

5

4

3

2

 

 

Registro di stato (indirizzo 889):

L’interfaccia Centronics possiede 5 linee di ingresso all’indirizzo 889 (379 esadecimale) con i seguenti valori e logiche di funzionamento:

_____

BUSY                           (pin 11)         vale 128 se è al livello basso          (logica negativa).

ACK                                       (pin 10)         vale 64 se è al livello alto      (logica positiva).

PAPER OUT                   (pin 12)         vale 32 se è al livello alto      (logica positiva).

SELECTED                     (pin 13)         vale 16 se è al livello alto      (logica positiva).

ERROR                          (pin 15)         vale 8 se è al livello alto       (logica positiva).

 

 

 

LINEE

 

_____

BUSY

ACK

PAPER OUT

SELECTED

ERROR

1

1

1

PIN

11

10

12

13

15

 

 

 

 

I rimanenti 3 bit meno significativi del byte di ingresso non sono accessibili sul connettore e sono poste, internamente all’interfaccia,  al livello alto (1112 = 710 ).

Avendo a disposizione 5 bit (32 combinazioni) è possibile acquisire, via software in una variabile A, un valore compreso tra 0 e 31.

 

Registro di controllo (indirizzo 890):

 

 

L’indirizzo Centronics 890 (37A esadecimale) rende disponibile in uscita altri 4 bit di cui tre attivi in logica negativa ed una in logica positiva :

___      _____

STB = STROBE                                (pin 1)   vale 1 se è al livello basso (logica negativa).

__     __________

AF = AUTOFEED                     (pin 14)  vale 2 se è al livello basso (logica negativa).

 

IP = INIZIALIZE PRINTER         (pin 16)           vale 4 se è al livello alto (logica positiva).

__    _____________

SI = SELECT INPUT                 (pin 17)  vale 8 se è al livello basso (logica negativa).

 

IRQE = ABILITA INTERRUPT        vale 16  se è al livello alto (logica positiva)

                                                                 ma non è disponibile fisicamente.

 

indirizzo 890

bit 7

bit 6

bit 5

bit 4

bit 3

bit 2

bit 1

bit 0

 

LINEE

 

 

 

 

 

IRQE

__

SI

 

IP

­­__

AF

___

STB

PIN

 

 

 

 

17 

16

14

1

 

Il bit 5 dell’indirizzo 890, selezionabile solo via software, se posto a 0 imposta i bit da DATA1 fino a DATA8 come output (default), se posto a 1 come input.                                                                          

Il linguaggio di programmazione Visual Basic consente di mettere a punto interfacce grafiche estremamente elaborate ed accattivanti con poca fatica ma purtroppo, in forma nativa, non supporta le istruzioni di input e di output direttamente da unità periferiche.

Per ovviare a tale limitazione è necessario istallare opportune librerie che consentono di disporre delle istruzioni di input e output su periferica. La libreria inpout32.dll disponibile sul sito www……...com consente di utilizzare le istruzioni input e output in ambiente Windows dalla versione 98 fino a XP. Il software in VB6 deve includere un modulo INPOUTV4.BAS di seguito riportata.

Public Declare Function Inp Lib "inpout32.dll" _

Alias "Inp32" (ByVal PortAddress As Integer) As Integer

Public Declare Sub Out Lib "inpout32.dll" _

Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

 

 

      

 

Software di gestione in Visual Basic 6

           

Per il pilotaggio del robot sono stati sviluppati diversi software di varia complessità.

 

Software di comando versione1

 

 

In fig. 17 si mostra il form del programma di pilotaggio dei 6 motori e la Gestione Progetti che evidenzia l’inserimento del modulo INPOUTV4.BAS.

 

 

 

Fig. 17 Form del programma in VB6 e Gestione Progetti.


 

Nella seguente tabella si riporta la  funzione svolta dai 6 motori

MOTORE

COMANDO

M1

Apri/Chiudi mano

M2

Ruota mano

M3

Spalla

M4

Gomito

M5

Polso

M6

Corpo

 

Il software utilizza 6 OptionButton denominati M1……………M6 per la selezione del motore. I pulsanti denominati Orario, Antiorario e Stop consentono, rispettivamente, la rotazione del motore selezionato nel verso Orario, Antiorario o il suo Stop.

Di seguito si riporta il listato del programma.

 

 

Private Sub Form_Load()

 

    Out (890), 0    ' Indirizzo 888 come output

    Out (888), 0     'Motori fermi

 

End Sub 

 

Private Sub cmdAntiorario_Click()

 

If optM1.Value = True Then

    Out (888), 5

ElseIf optM2.Value = True Then

    Out (888), 9

ElseIf optM3.Value = True Then

    Out (888), 17

ElseIf optM4.Value = True Then

   Out (888), 33

ElseIf optM5.Value = True Then

   Out (888), 65

ElseIf optM6.Value = True Then

   Out (888), 129

 Else

   Out (888), 0

 End If

 

End Sub

 

Private Sub cmdOrario_Click()

 

If optM1.Value = True Then

    Out (888), 6

ElseIf optM2.Value = True Then

   Out (888), 10

ElseIf optM3.Value = True Then

   Out (888), 18

ElseIf optM4.Value = True Then

   Out (888), 34

ElseIf optM5.Value = True Then

   Out (888), 66

ElseIf optM6.Value = True Then

   Out (888), 130

Else

   Out (888), 0

End If

 

End Sub

 

Private Sub cmdStop_Click()

 

    Out (888), 0

 

End Sub

 

 

 

Al caricamento del form si imposta l’indirizzo 888 della Centronics come output, anche se non necessario poiché per default la porta parallela è impostata in output. Si impostano gli 8 bit DATA1……DATA8 al livello basso 0 in modo da tenere i motori sicuramente nello stato di Stop. I pulsanti cmdAntiorario e cmdOrario definiscono il verso di rotazione. La routine individua quale OptinButton è selezionato e invia l’opportuna configurazione binaria.

Ad esempio, se è selezionato il motore M1 nel verso Antiorario il software invia il numero 5 che in binario equivale :0000 0101, nel verso Orario, invece, è inviato il numero 6 equivalente a: 0000 0110. Tale configurazione binaria è inviata direttamente al circuito di comando di fig. 15.

Scarica il programma con i relativi componenti.

 

Software di pilotaggio versione con timer

 

In fig.18 e 19 si riportano il form di progetto del software e il programma in esecuzione.

 

 

Fig.18 – Form del controllo del braccio meccanico con timer.

 

 

Fig.19 –Controllo del braccio meccanico con timer.

 

Il software consente di:

 

·        Selezionare il motore;

·        Selezionare la direzione;

·        Impostare il tempo di movimento con una risoluzione al decimo di secondo;

·        Impostare il numero di volte che deve essere ripetuto il ciclo.

 

I pulsanti presenti sul form consentono:

 

  • Aggiungi: Inserisce nella lista un movimento;
  • Cancella: Cancella dalla lista il movimento;
  • Cancella lista: Cancella l’intera lista dei movimenti inseriti;
  • Leggi lista: Consenti di aprire una lista precedentemente salvata;
  • Salva lista: Consente di salvare la lista;
  • Start: Inizia il ciclo operativo dei movimenti impostati;
  • Stop: Blocca il ciclo operativo in esecuzione;
  • Uscita: Esce dal software.

 

 

Il software contiene dei moduli per la gestione della lista e per il comando dei motori oltre al solito modulo per l’utilizzo delle istruzioni di I/O della Centronics.

 

Si allega il software completo.

 

 

Software di pilotaggio versione con encoder

 

Si è detto che i motori del braccio meccanico sono forniti di encoder.

In figura 20 si mostra il Form relativo al software progettato per pilotare gli encoder.

 

Fig.20 – Form del controllo del braccio meccanico con encoder.

 

 

 

Fig.21 –Controllo del braccio meccanico con encoder.

  

Il software consente di:

 

·        Selezionare il motore;

·        Selezionare la direzione;

·        Impostare il numero di passi che il motore deve effettuare;

·        Impostare il numero di volte che deve essere ripetuto il ciclo;

·        Impostare un tempo di time out superato il quale il software procede nella sequenza operativa. Poiché, se il motore si ferma non giungono impulsi dall’encoder e il software si blocca.

 

I pulsanti presenti sul form consentono:

 

  • Aggiungi: Inserisce nella lista un movimento;
  • Cancella: Cancella dalla lista il movimento;
  • Cancella lista: Cancella l’intera lista dei movimenti inseriti;
  • Leggi lista: Consenti di aprire una lista precedentemente salvata;
  • Salva lista: Consente di salvare la lista;
  • Start: Inizia il ciclo operativo dei movimenti impostati;
  • Stop: Blocca il ciclo operativo in esecuzione;
  • Uscita: Esce dal software.

 

Il software contiene dei moduli per la gestione della lista e per il comando dei motori oltre al solito modulo per l’utilizzo delle istruzioni di I/O della Centronics.

 

Si allega il software completo.

 

 

Interfaccia per la lettura degli encoder

 

In fig. 22 si mostra il circuito dell’interfaccia relativo alla lettura degli encoder e la tabella di funzionamento.

 

 

Fig. 22. – Interfaccia di lettura degli encoder.

 

 

Il circuito è costituito da due multiplexer 74LS151 con gli ingressi di selezione in comune.

Degli 8 ingressi dei multiplexer se ne utilizzano 6, un per ciascun motore. Sul primo multiplexer giungono gli inpulsi dell’encoder. Sul secondo i segnali, provenienti da 6 flip flop tipo D contenuti in 3 integrati siglati 74LS74. Tali segnali ci informano sul verso di rotazione.

Il PC attraverso la Centronics invia 3 bit per la selezione dell’ingresso da leggere. Le 2 uscite del multiplexer sono acquisite dal PC. L’uscita del primo multiplexer è un segnale impulsivo. Il software contiene una routine in grado di contare le transizioni di livello e quindi il numero di passi del motore.

Il segnale del secondo multiplexer ci fornisce la direzione ma, nel software da noi sviluppato non è utilizzato poiché sono previsti pulsanti di direzione. Tale segnale potrà essere impiegato per espansioni future.

 

Software di pilotaggio versione pilotaggio da Joistik

 

Il software base è stato modificato in modo da poter comandare il braccio meccanico attraverso un JoySticK da collegare alla porta USB del PC. Per poter utilizzare il JoySticK il Visual Basic 6 necessita anche di un modulo di classe necessario al riconoscimento del JoySticK e alla sua configurazione. Si mostra in fig. 23 si mostra il relativo form e Gestione Progetti.

 

 

 

 

 

                                  

 

Fig. 23 Form e Gestione Progetti per il comando del robot con Joystick.

 

 

Scarica il programma con i relativi componenti.

 

Sistema di alimentazione

 

Il sistema di alimentazione necessita di due tensioni continue:

 

  • +12V/ 1.5A per l’alimentazione dei motori attraverso i 3 integrati L293B e della ventola di raffreddamento;
  • +5V/ 500mA per l’alimentazione dei circuiti digitali e degli encoder incrementali.

Per l’alimentazione si è utilizzato un alimentatore siglato TS3022S della THANDAR disponibile in laboratorio.

In alternativa è possibile costruire il sistema di alimentazione.

In fig. 24 si mostra lo schema elettrico del sistema di alimentazione.

 

Fig 24. – Schema elettrico del sistema di alimentazione.

 

1 Descrizione • 2 Braccio • 3 Encoder • 4 Interfaccia al PC • 5 Realiz. pratica