Università degli studi di Perugia Facoltà di Ingegneria Tesi di Laurea in Ingegneria Informatica ed Elettronica Progetto di un sistema di controllo per un robot basato su CAN bus Relatore Ing. Antonio Ficola Candidato Giulio Spinozzi Anno Accademico 2008/2009
Dedicato ai miei genitori
Indice 1 Introduzione 7 1.1 I nodi della rete................................. 8 1.1.1 Il Master................................ 8 1.1.2 Gli Slave................................ 8 1.1.3 Il PC.................................. 9 1.1.4 I messaggi scambiati.......................... 9 1.2 Azionamenti e motori............................. 9 1.2.1 Definizione di Azionamento...................... 10 2 Il CAN bus 12 2.1 CAN bus secondo il modello ISO-OSI.................... 13 2.2 Data Link Layer: Il Transfer Layer...................... 15 2.2.1 Struttura dei messaggi......................... 15 2.2.2 Arbitraggio del bus........................... 18 2.3 Data Link Layer: l Object Layer....................... 19 2.3.1 Modi di operare............................ 19 2.3.2 Ricezione di messaggi......................... 19 2.3.3 Trasmissione di messaggi....................... 21 2.4 Gestione degli errori.............................. 21 2.5 Il Physical Layer................................ 23 2.5.1 PLS (Physical Signaling) e la Baud Rate............... 24 2.5.2 MDI (Medium Dependent Interface)................. 25 2.5.3 PMA (Physical Medium Attachment)................ 26 3 Il Controllo 27 3.1 Controllo feed-back o in retroazione..................... 27 3.2 Tecniche di controllo.............................. 28 3.3 Regolatori Standard.............................. 28 3.4 Il motore a corrente continua......................... 29 3.5 Encoder incrementale............................. 31 3.6 Ponte H e modulazione PWM......................... 32 3.6.1 Modulazione PWM........................... 32 3.6.2 Ponte H................................. 34 3.7 Scambio di dati tramite calcolatore: l UART................ 37 4 Il Progetto 38 4.1 L oscillatore................................... 38 4.2 Il Timer 1.................................... 39 4.3 L UART, ovvero lo scambio dati Master-PC................. 39
INDICE 3 4.4 Il CAN bus................................... 41 4.5 Il QEI...................................... 46 4.6 Il Regolatore.................................. 49 4.7 Il PWM..................................... 49 5 L Elettronica 54 5.1 La scheda Master................................ 54 5.1.1 L alimentazione............................. 54 5.1.2 La programmazione.......................... 55 5.1.3 I LED.................................. 56 5.1.4 L oscillatore esterno.......................... 56 5.1.5 L UART................................. 57 5.1.6 Il CAN bus............................... 58 5.2 Le schede Slave................................. 59 5.2.1 Encoder incrementale......................... 59 5.2.2 Alimentazione motore e ponte H................... 59 5.2.3 Collegamento motore al ponte H................... 60 5.2.4 Il ponte H................................ 60 5.3 Eagle, PCB e librerie.............................. 63 6 Conclusioni 74 6.1 Sviluppi futuri................................. 75 A Il dspic 76 A.1 La scelta del dspic30f4011.......................... 77 A.2 Architettura della famiglia dspic30f..................... 77 A.3 La memoria................................... 77 A.4 La periferiche.................................. 79 A.5 Gli Interrupts.................................. 80 A.6 Clock di sistema................................ 80 A.7 L ambientie di sviluppo: MPLAB....................... 81 A.8 Pin dspic30f4011 TQFP........................... 83 B I firmware delle schede elettroniche 86 B.1 Il Master.................................... 86 B.2 Lo Slave 1.................................... 92
Elenco delle figure 1.1 Schema dello SCORBOT........................... 7 1.2 Schema della rete................................ 8 1.3 Suddivisione in stadi di un azionamento (1)................. 10 1.4 Suddivisione in stadi di un azionamento (2)................. 11 2.1 CAN bus in un automobile.......................... 12 2.2 CAN secondo OSI............................... 14 2.3 Schema del Data Frame............................ 16 2.4 Arbitraggio del bus............................... 18 2.5 Schema a blocchi della ricezione........................ 20 2.6 Confronto maschera, filtro e ID messaggio.................. 20 2.7 Schema a blocchi della trasmissione...................... 21 2.8 Tempo per bit (1)............................... 24 2.9 Tempo per bit (2)............................... 25 2.10 Tempo per bit (3)............................... 25 2.11 Esempio di bus CAN.............................. 26 3.1 Schema di controllo in retroazione...................... 27 3.2 Motore Brushed (1).............................. 29 3.3 Motore Brushed (2).............................. 30 3.4 Sezione di un encoder incrementale...................... 31 3.5 Impulsi con ugual periodo ma diverso duty cycle.............. 33 3.6 PWM di una sinusoide, ottenuto per confronto con un dente di sega... 34 3.7 Il ponte H.................................... 35 3.8 Modulo di potenza interfacciato al dspic.................. 36 4.1 Clock del sistema................................ 38 4.2 Schema di messaggio UART.......................... 40 4.3 Eventi di comunicazione............................ 41 4.4 Funzionamento QEI (2X)........................... 46 4.5 Utilizzo di MAXCNT (4X).......................... 48 4.6 Aggiornamento del periodo di PWM..................... 50 4.7 Relazione tra i registri PTPER e PDCx................... 51 4.8 Esempio di uscite complementari....................... 51 5.1 Interfaccia alla programmazione........................ 55 5.2 Interfaccia a ICD2............................... 56 5.3 Schema elettrico dell oscillatore esterno................... 57 5.4 Circuito del MAX232............................. 57
ELENCO DELLE FIGURE 5 5.5 Schema dell MCP2551............................. 58 5.6 Schema di controllo in retroazione del motore................ 60 5.7 Schema controllo del motore.......................... 61 5.8 Circuito equivalente del driver L6384..................... 62 5.9 Circuito equivalente del TSC101....................... 63 5.10 Schematico della scheda Master........................ 65 5.11 PCB, livello superiore, della scheda Master................. 66 5.12 PCB, livello inferiore, della scheda Master.................. 67 5.13 Schematico della scheda Slave senza TSC101................ 68 5.14 PCB, livello superiore, della scheda Slave senza TSC101.......... 69 5.15 PCB, livello inferiore, della scheda Slave senza TSC101.......... 70 5.16 Schematico della scheda Slave con TSC101................. 71 5.17 PCB, livello superiore, della scheda Slave con TSC101........... 72 5.18 PCB, livello inferiore, della scheda Slave con TSC101........... 73 A.1 Architettura DSP................................ 78 A.2 Diagramma pin dspic30f4011........................ 83
Elenco delle tabelle 2.1 Rapporto lunghezza bus/bit Rate...................... 24 3.1 Tabella logica del ponte H........................... 35 4.1 Standard ID degli Slave............................ 43 4.2 Standard ID del Master............................ 44 4.3 Maschere e filtri del Master.......................... 44 4.4 Maschere e filtri degli Slave.......................... 45 4.5 Tipologie di messaggi trasmessi........................ 46 4.6 Valori della variabile AngPos......................... 48 4.7 Calcolo del dead time............................. 52 A.1 dspic30f Motor Control and Power Conversion Family.......... 77 A.2 Sorgenti di interrupt associati a IFS..................... 81 A.3 Moltiplicatori PLL............................... 81 A.4 Descrizione pin dspic30f4011 (1)...................... 84 A.5 Descrizione pin dspic30f4011 (2)...................... 85