Leggi la tesina - ITIS in progress

UN PROGETTO DI:
REBELLATO Elia & BENOTTO Daniele
Classe 5^Bet
2012/2013
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 1
Indice
1.
2.
3.
4.
5.
6.
7.
8.
Descrizione generale del progetto
Schema a blocchi del progetto
Descrizione hardware
Descrizione software
Descrizione delle fasi di costruzione
Datasheet dei componenti
Schemi elettrici
Elenco componenti
pag. 3
pag. 4
pag. 5
pag. 12
pag. 20
pag. 22
pag. 36
pag. 41
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 2
Descrizione generale del progetto
Il progetto che abbiamo costruito consiste in un veicolo cingolato
controllato dal computer che ci permette di muoverlo in tutte le
direzioni. Questo è possibile grazie a due motori in corrente
continua posti sul retro del veicolo che, a seconda del verso in cui
girano, muovono i cingoli avanti e indietro. I motori vengono
controllati tramite il ponte H che consente di regolare la velocità
e di cambiare la direzione. I comandi vengono inviati dal
computer ad un microcontrollore che, a sua volta, invia i dati
tramite un modulo radio wireless alimentato via usb. Questi
vengono ricevuti da un altro modulo radio wireless posto nel
circuito sopra il mezzo, alimentato da una batteria che fornisce la
corrente necessaria per il funzionamento del circuito. I motori
sono pilotati da un microcontrollore che gestisce i driver, i quali
controllano un circuito di potenza (ponte H) che fornisce tensione
ai motori.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 3
Schema a blocchi Trasmettitore
Computer
Connettore USB
Modulo radio
Microcontrollore
PIC18F4550
Led
Antenna
Schema a blocchi Ricevitore
Antenna
Modulo radio
Microcontrollore
PIC18F4520
Driver
Led
Led
Ponte H
Motore
Sinistro
Motore
Destro
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Led
Pag. 4
Descrizione Hardware
 Connettore USB
L’Universal Serial Bus è uno standard di comunicazione seriale
che consente di collegare diverse periferiche a un computer. Lo
standard prevede che il connettore porti anche un cavo (VBUS)
per alimentare le periferiche a basso consumo fino a 5V. Nel
nostro progetto per comodità abbiamo utilizzato l’USB tipo B
versione 2.0, che supporta collegamenti a 480 Mbit/s. Il circuito
per l’invio dei dati è alimentato a 5V quindi questo metodo ci è
risultato essere il migliore.
Pin
1
2
3
4
5
Nome segnale
VBUS
DD+
ID
GND
Colore filo
Rosso
Bianco
Verde
Fucsia
Nero
Note
+5V
Data Data +
Non connesso
Massa
 PIC18F4550
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 5
Il microcontrollore è progettato per interagire direttamente con il
circuito tramite un programma residente nella propria memoria
interna e mediante l’uso di pin specializzati e configurabili dal
programmatore. Abbiamo adoperato questo pic perché dispone
di una quantità sufficiente di porte e di una velocità adeguata alle
le nostre esigenze, inoltre è già predisposto per la comunicazione
USB e lavora a 8 bit. I 40 piedini non ci sono serviti tutti, dato che
abbiamo controllato solo la radio. Abbiamo inserito un oscillatore
esterno da 20MHz per far in modo che la precisone del clock
fosse alta in modo da comunicare adeguatamente con la
periferica USB. Per avere un riscontro visivo sul funzionamento
del programma, abbiamo incluso tre led di differente colore, che
lampeggiano a seconda delle operazioni che sta svolgendo il
micro.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 6
 PIC18F4520
Questo microcontrollore è molto simile al PIC18F4550 solo che
non ha la possibilità di collegare l’USB. In questo caso il numero di
piedini utilizzati è stato maggiore, perché abbiamo controllato i
driver dei motori, le luci del cingolato e la radio. Non è servito
mettere un oscillatore esterno, perché il pic dispone già di uno
interno e anche in questo caso abbiamo messo un led per
verificare se il programma stesse funzionando.
 LM1117
Il circuito di invio, oltre che dei 5 V forniti dall’USB, ha bisogno di
alimentare il modulo wireless che funziona a 3.3 V, e per questo
abbiamo messo uno stabilizzatore di tensione che,
opportunamente polarizzato, ha il compito di abbassare la
tensione. Nel circuito di ricezione, oltre alla tensione della
batteria da 6 V per alimentare i motori, ce ne servono altre due:
la prima sono i 5 V necessari per l’alimentazione del
microcontrollore, dei driver e della porta logica; la seconda sono i
3.3 V per l’alimentazione del modulo radio wireless.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 7
 Modulo radio wireless usb
Questo tipo di modulo radio basa la trasmissione dati sulla
modulazione DSSS, che è un particolare tipo di modulazione che
sfrutta la tecnica di comunicazione a spettro espanso (spread
spectrum). Spreading è il termine che indica il processo con cui lo
spettro di un segnale viene espanso su una banda molto più
grande di quella del
segnale informativo in ingresso moltiplicandolo per un segnale di
spreading che ha una banda molto maggiore di quella del segnale
in origine. Si ha cosi una distribuzione della potenza del segnale
su una banda larga, quindi una potenza per unita di banda molto
piccola.
In ricezione si esegue il despreading, cioè si moltiplica il segnale
ricevuto per lo stesso segnale per cui lo si è moltiplicato in
trasmissione e si eliminano le alte frequenze con un filtro passa
basso. Questo sistema permette di condividere la banda con altri
utenti di uno stesso sistema senza creare interferenze, basta che
ognuno utilizzi un codice di spreading differente e trasmetta con
una bassa densità spettrale di potenza.
Questo modulo è stato scelto in base alla portata di circa 40 m,
che è più che sufficiente per la nostra applicazione, e in base alla
frequenza di lavoro di 2.4 GHz.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 8
 74HC14
È una porta logica NOT trigger usata per negare il segnale PWM
che pilota uno dei due driver per ciascun motore. Abbiamo scelto
la famiglia HC perché la commutazione del segnale è molto più
veloce rispetto alla famiglia LS.
Il Trigger di Schmitt è un particolare tipo di comparatore di
soglia con isteresi, ovvero un circuito che consente di trasformare
un segnale analogico in un'uscita che varia soltanto tra due valori
di tensione a seconda che l'ingresso superi una certa soglia o sia
inferiore ad una seconda soglia (più bassa).
Questo schema ci può aiutare a capire il funzionamento:
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 9
 Mosfet a Ponte H
Abbiamo preferito utilizzare la tecnologia dei mosfet perché, nel
comportamento da interruttore chiuso, dissipano una potenza
minore rispetto ai transistor. I transistor in saturazione hanno
una VCE pari a 0.2 V, mentre i mosfet hanno una tensione tra
drain e source molto più piccola. Dato che la potenza dissipata è
data dal prodotto tra tensione e corrente, se la corrente che
attraversa il dispositivo e alta, il transistor si surriscalda molto di
più del mosfet. Il ponte H è un circuito elettronico che può
funzionare nei quattro quadranti del piano corrente-tensione sul
carico.
Nel convertitore a quattro quadranti corrente e tensione di carico
possono essere sia positive che negative. Per un carico induttivo,
proprio il caso di un motore in continua, questo tipo di
convertitore può controllare il flusso di potenza e la velocità del
motore nel funzionamento diretto (tensione e corrente di carico
positive), nella frenatura a recupero diretto (tensione di carico
positiva e corrente di carico negativa), nel funzionamento inverso
(tensione e corrente di carico negative) e nella frenatura a
recupero inverso (tensione di carico negativa e corrente di carico
positiva).
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 10
 Driver
Il segnale PWM che proviene dal microcontrollore non è
sufficientemente potente per controllare adeguatamente i
mosfet, che sono gli elementi principali nel controllo del
motore. Essendo racchiusi in un ponte ad “H” devono operare
come interruttori, cioè devono entrare in conduzione o spegnersi
per far passare corrente sui motori, in base a degli intervalli di
tempo (molto piccoli). Per garantire al gate del mosfet un segnale
con livelli
logici corretti e abbastanza potente si usano i driver. Il driver,
quindi, deve fornire una VGATE positiva, per far entrare in
conduzione il mosfet, e una VGATE uguale a 0 nel caso in cui lo si
voglia spegnere, o meglio, una VGATE minore di zero, per evitare
accensioni indesiderate dovute ai disturbi. Inoltre il tempo di
accensione dei mosfet dipende dal valore della corrente di gate,
quindi il progettista deve dimensionare opportunamente i
driver affinché riescano ad erogare la corrente desiderata.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 11
Descrizione Software
La comunicazione tra il computer e il circuito di trasmissione
avviene tramite un cavo USB.
Windows grazie a degli appositi driver, non riconosce il
collegamento come una vera e propria comunicazione attraverso
il cavo USB, ma attraverso una porta COM, così da avere una
gestione più semplice della comunicazione, anche se più lenta,
con Visual Basic 6.0.
All'avvio del programma viene richiesto il numero della porta
COM “virtuale” ove è collegato il circuito.
Dopo aver impostato il numero della porta, si aprirà la seguente
finestra:
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 12
 Controllo USB
In questo Frame verrà gestita la porta virtuale che è stata
impostata precedentemente. Per iniziare ad inviare dati è
necessario spuntare, dopo aver cliccato sul pulsante “Apri”, la
casella “Comunicazione Disattivata”, in questo modo verrà
attivato il timer “timerDati” che ogni 5 ms provvederà a chiudere
tutti i dati che servono al cingolato in una stringa e ad inviare
quest'ultima al circuito di trasmissione. La stringa dei dati è la
seguente:
2
velSX
velDX
temp checksum
/ / /
I numeri contenuti nelle variabili sopra indicate verranno
convertiti in caratteri secondo la tabella ascii.
Il primo carattere della stringa indica l'inizio del pacchetto, il
secondo e il terzo contengono la velocità del motore sinistro e del
motore destro, la variabile “temp” potrà essere 1 o 0 e indica se i
fari della macchina sono accesi o spenti. Il checksum verrà
calcolato eseguendo l'operazione XOR tra le velocità dei due
motori. Di seguito il codice in Visual Basic che esegue quanto
descritto sopra:
StringaTX = Chr$(2) & Chr$(velSX) & Chr$(velDX) & Chr$(temp) & Chr$(velSX Xor (velDX)) & Chr$(166)
If MSComm1.PortOpen = True Then MSComm1.Output = StringaTX
Per convertire il numero in carattere viene utilizzata la funzione
“Chr$(var)”. Es: Chr$(65) = “A” .
È stato deciso di convertire i numeri in caratteri per ottenere una
comunicazione più pulita e ordinata.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 13
 Modalità di controllo separata
In questa modalità di controllo i motori vengono gestiti in modo
separato tramite due scrollbar che vanno da -100 a +100. È
possibile quindi modificare la velocità del motore trascinando il
cursore o cliccando il pulsante “Carica” dopo aver inserito il
valore nella apposita casella.
Per fermare il cingolato è necessario cliccare sui due pulsanti
“Ferma”.
In questa modalità è possibile anche comandare i motori
premendo i pulsanti del tastierino numerico 4,5,7,8.
Alla pressione del tasto 4 il motore di sinistra avrà una velocità
del -100% (quindi andrà indietro) mentre alla pressione del tasto
7 la velocità sarà del +100%.
I tasti 5 e 8 controllano il motore destro.
 Modalità di controllo con cloche
Questo blocco è ispirato ai joystick del Pc,
di conseguenza deve essere immaginato
come uno di questi visto dall'alto.
Trascinando il cerchio blu (Cloche) verso
l'alto la velocità di tutti e due i motori verrà
aumentata in modo proporzionale, mentre
trascinandolo verso il basso verrà diminuita.
Trascinando la cloche verso sinistra invece,
aumenterà solo la velocità del motore
destro, mentre quella del motore sinistro diminuirà. Viceversa
nella direzione opposta.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 14
La cloche torna automaticamente alla posizione centrale quando
viene rilasciata: per evitare questo evento è necessario togliere la
spunta alla casella “Auto-centramento al rilascio della cloche”.
 Modalità di controllo con percorso
In questa sezione è possibile creare un percorso che la macchina
dovrà eseguire automaticamente.
Per costruire il tragitto bisogna inserire la velocità (compresa tra 100% e +100%) dei due motori e il tempo in millisecondi che
indica per quanto deve essere tenuto quell'andamento. Dopo
aver caricato il percorso è sufficiente premere il pulsante “Esegui
percorso prestabilito” che attiverà il timer “timerPercorso”,
quest'ultimo provvederà a inviare alla macchina la velocità dei
motori come stabilito nel listbox. Man mano che viene eseguito il
tragitto verrà selezionato nella listbox il punto in cui il veicolo è
arrivato. Per interrompere il percorso è necessario premere il
pulsante “INTERROMPI”.
È possibile inoltre eliminare un solo punto del percorso
selezionandolo e premendo sul tasto “Elimina selezionato”; per
eliminare l'intero percorso, invece, bisogna premere il pulsante
“Elimina tutto”.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 15
Nella listbox i dati vengono memorizzati come segue:
“Motore SX:10% ; Motore DX:10% ; Per:10ms”
Per permettere al programma di capire la velocità dei motori e il
tempo, è stata utilizzata la funzione Split:
temp = Split(percorso.List(indexPath), ":")
temp1 = Split(temp(1), "%")
velSX = 100 + temp1(0)
temp1 = Split(temp(2), "%")
velDX = 100 + temp1(0)
temp1 = Split(temp(3), "m")
Questa funzione divide una variabile e restituisce un array.
Esempio:
variabile = “ciao, mondo”
seguendo la funzione Split sul carattere “,” ottengo un array
del tipo:
array[0] = “Ciao”
array[1]= ” mondo”
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 16
 Diagramma di flusso del trasmettitore
Inizio
Inizializzazione programma
Controllo dati ricevuti
da USB
Invio dei dati via Radio
Durante la fase di inizializzazione programma è necessario
impostare quali piedini del pic verranno utilizzati come ingressi e
quali verranno utilizzati come uscite.
Dopo aver regolato tutti i valori necessari al funzionamento del
pic, è necessario avviare la comunicazione USB con il computer,
affinché quest'ultimo possa riconoscere il circuito, e la
comunicazione con il modulo radio. Verranno quindi impostati gli
Interrupt e i timer, indispensabili per il funzionamento del
programma.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 17
A questo punto il circuito continuerà a controllare se riceve dati
dal computer tramite la funzione “USBtask();” che verranno
elaborati, una volta ricevuti, nella funzione “processIO();”. Dopo
aver ricevuto tutta la stringa, la funzione “SendRad();” invierà
tutto il pacchetto via radio.
 Diagramma di flusso del ricevitore
Inizio
Inizializzazione programma
Controllo dati ricevuti
via Radio
Elaborazione dati e
gestione motori
Come nel circuito di trasmissione, all'avvio del programma
verranno svolte tutte quelle funzioni che impostano i parametri
per il funzionamento del pic.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 18
Verrà quindi abilitata la ricezione della radio e, ad ogni pacchetto
ricevuto, verrà eseguita l'operazione XOR con le velocità dei due
motori che sono state ricevute, il risultato verrà confrontato con
il checksum ricevuto. Se le due variabili risultano uguali i valori
ricevuti verranno memorizzati nelle variabili globali del
programma, altrimenti verranno scartati.
Il programma, una volta avviato, continuerà ad eseguire la
funzione “InitPwm();” che controlla il ponte H:
if (velocitaSX == 0)
PWM1_OFF;
//Motore Sinistra
else
{
if (uptimerVelSX < 1)
{
if (uptimerVelSX == 0)
{
--uptimerVelSX;
PWM1_OFF;
}
--downtimerVelSX;
if (downtimerVelSX < 1)
{
uptimerVelSX = velocitaSX;
downtimerVelSX = 100 - velocitaSX;
PWM1_ON;
}
}
else
--uptimerVelSX;
}
if (direzioneSX == 1)
PORT1_ON;
//direzione Motore Sinistra
else
PORT1_OFF;
Questa routine segue la seguente logica:
1
2
3
*…+
100
101
102
*…+
119
120
uptimerVelSX
80
(velocitaSX)
99
98
*…+
1
0
0
0
0
80
(velocitaSX)
downtimerVelSX
20
(100-velocitSX)
20
20
20
20
19
18
*…+
1
20
(100-velocitaSX)
PWM1
1
1
1
1
1
0
0
0
0
1
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 19
Descrizione delle fasi di costruzione
Nel mese di ottobre 2012 abbiamo pensato di costruire qualcosa
che avrebbe potuto interessare coloro che avrebbero visto il
nostro progetto. L’idea era quella di una macchina
radiocomandata da un telecomando, progetto che avevano già
svolto dei ragazzi di quinta l’anno scorso e su cui ci potevamo
basare per non partire ‘allo sbaraglio’. Pensavamo di partire da
zero, costruendoci l’intera macchina, con due motori passo passo
e quattro ruote, con la possibilità di farla sterzare come una vera
macchina.
Dopo alcuni consigli dell’ingegner Michele Visentin e del dottor
Joe Rigato abbiamo deciso di modificare il progetto per una
questione di tempi e di semplicità. Abbiamo quindi recuperato da
un escavatore giocattolo la base, formata da due cingoli che
girano grazie a due motori in corrente continua. Dopo aver
definito tutto il materiale che era necessario abbiamo effettuato
gli ordini dei componenti che non erano disponibili in laboratorio.
Una volta ottenuti tutti i componenti necessari, abbiamo iniziato
a costruire il circuito di invio e, dopo averlo terminato, abbiamo
verificato che non fossero presenti cortocircuiti e che i
collegamenti fossero esatti. Finito di costruire anche il circuito
della macchina e fatto il programma in VisualBasic, abbiamo
provato a comunicare. Durante questa fase è stato necessario
aggiungere un condensatore ad un piedino del microcontrollore
nel circuito di invio per stabilizzare la tensione di alimentazione
fornita dall’usb, in modo che il computer riconoscesse la
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 20
periferica. In seguito abbiamo apportato delle modifiche al
programma che gestiva lo scambio dei dati tra le due schede, e
fatte le opportune verifiche, abbiamo collaudato l’intero
progetto, provando anche del divertimento nel veder muovere il
cingolato ai nostri comandi.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 21
Datasheet dei componenti
 PIC18F4550
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 22
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 23
 PIC18F4520
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 24
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 25
 LM1117
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 26
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 27
 74HC14
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 28
 Driver TC4468
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 29
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 30
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 31
 Mosfet FQP50N06L
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 32
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 33
 Modulo radio CYWM6935
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 34
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 35
Schemi elettrici
Microcontrollore Trasmettitore
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 36
 Trasmettitore
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 37
 Microcontrollore ricezione
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 38
 Motore Destro
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 39
 Motore Sinistro
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 40
Elenco componenti
 Parte trasmissione
1 microcontrollore PIC18F4550
1 modulo radio wireless CYWM6935
1 connettore usb femmina tipo B
1 stabilizzatore di tensione LM1117-ADJ
1 quarzo 20MHz
1 resistenza 1 MΩ, 1/4W
1 resistenza 100 KΩ, 1/4W
7 resistenze 10 KΩ, 1/4W
1 resistenza 1.5 KΩ, 1/4W
5 resistenza 1 KΩ, 1/4W
1 resistenza 100 Ω, 1/4W
1 resistenza 150 Ω, 1/4W
5 resistenze 470 Ω, 1/4W
5 condensatori a film plastico 100 nF
1 condensatore elettrolitico 10 μF
2 condensatori ceramici 22 pF
2 diodi 1N4148
2 led verdi
1 led rosso
1 led giallo
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 41
 Parte ricezione
1 microcontrollore PIC18F4520
1 modulo radio wireless CYWM6935
2 driver TC4468
1 integrato 74HC14
4 mosfet FQP50N06L
4 mosfet IRF9540
3 morsettiere 2 pin
1 base cingolato
2 motori in CC
2 stabilizzatori di tensione LM1117-ADJ
3 resistenze 10 KΩ, 1/4W
1 resistenza 1.5 KΩ, 1/4W
3 resistenze 1 KΩ, 1/4W
5 resistenze 470 Ω, 1/4W
1 resistenza 330 Ω, 1/4W
1 resistenza 150 Ω, 1/4W
1 resistenza 100 Ω, 1/4W
4 resistenze 10 Ω, 1/4W
20 resistenze 1 Ω, 1/2W
3 condensatori a film plastico 10 nF
2 condensatori elettrolitici 470 μF 25V
3 condensatori a film plastico 100 nF
2 condensatori elettrolitici 10 μF
2 condensatori elettrolitici 1 μF
1 trimmer 5 KΩ
5 diodi 1N4148
2 led verdi, gialli, rossi
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 42
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 43
Ringraziamenti
Un ringraziamento particolare all’ingegner Michele Visentin per l’aiuto
che ci ha dato nella programmazione dei pic, al professor Rigato Joe che ci
ha sostenuto e consigliato nella progettazione e a Cirillo Riccardo che ci
ha aiutato a trasformare il giocattolo in un cingolato adatto alle nostre
necessità.
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele
Pag. 44