REBELLATO Elia & BENOTTO Daniele Classe 5^Bet 2012/2013 · fosse alta in modo da comunicare...

44
Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 1 UN PROGETTO DI: REBELLATO Elia & BENOTTO Daniele Classe 5^Bet 2012/2013

Transcript of REBELLATO Elia & BENOTTO Daniele Classe 5^Bet 2012/2013 · fosse alta in modo da comunicare...

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 1

UN PROGETTO DI:

REBELLATO Elia & BENOTTO Daniele

Classe 5^Bet 2012/2013

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 2

Indice 1. Descrizione generale del progetto pag. 3

2. Schema a blocchi del progetto pag. 4

3. Descrizione hardware pag. 5

4. Descrizione software pag. 12

5. Descrizione delle fasi di costruzione pag. 20

6. Datasheet dei componenti pag. 22

7. Schemi elettrici pag. 36

8. Elenco componenti pag. 41

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 3

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. 4

Schema a blocchi Trasmettitore

Schema a blocchi Ricevitore

Computer

Connettore USB

Microcontrollore

PIC18F4550 Led Modulo radio

Antenna

Modulo radio Antenna

Microcontrollore

PIC18F4520 Led

Driver Ponte H

Motore

Sinistro

Motore

Destro Led Led

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 5

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 Nome segnale Colore filo Note 1 VBUS Rosso +5V 2 D- Bianco Data - 3 D+ Verde Data +

4 ID Fucsia Non connesso 5 GND Nero Massa

PIC18F4550

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 6

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. 7

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. 8

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. 9

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. 10

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. 11

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. 12

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. 13

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. 14

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. 15

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. 16

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. 17

Diagramma di flusso del trasmettitore

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.

Inizio

Inizializzazione programma

Controllo dati ricevuti

da USB

Invio dei dati via Radio

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 18

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

Come nel circuito di trasmissione, all'avvio del programma

verranno svolte tutte quelle funzioni che impostano i parametri

per il funzionamento del pic.

Inizio

Inizializzazione programma

Controllo dati ricevuti

via Radio

Elaborazione dati e

gestione motori

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 19

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. 20

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. 21

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. 22

Datasheet dei componenti

PIC18F4550

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 23

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 24

PIC18F4520

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 25

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 26

LM1117

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 27

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 28

74HC14

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 29

Driver TC4468

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 30

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 31

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 32

Mosfet FQP50N06L

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 33

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 34

Modulo radio CYWM6935

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 35

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 36

Schemi elettrici

Microcontrollore Trasmettitore

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 37

Trasmettitore

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 38

Microcontrollore ricezione

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 39

Motore Destro

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 40

Motore Sinistro

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 41

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. 42

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. 43

Cingolato Radiocomandato Rebellato Elia – Benotto Daniele Pag. 44

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à.