|
| |
Bisogna innanzi tutto scegliere
quale tipo di microcontrollore usare, in questo progetto ne ho usato uno della
famiglia PIC 16Fxx, precisamente il 16F876A, perché al suo interno è presente un
convertitore ADC e possiede 22 pin di ingresso/uscita ripartiti in 3 port:
PORT_A (6 pin), PORT_B (8 pin), PORT_C (8 pin). Si sarebbe potuto benissimo
usarne uno del tipo 16F84, ma, il dispositivo doveva essere montato a bordo
permanentemente, ed ospitare i vari programmi di controllo. Tutto ciò, per
ottimizzare la fase di collaudo sperimentale.
Poi bisogna provvedere ai sensori ad ultrasuoni, in ciascuna coppia, ve ne è una
che fa da altoparlante, e che quindi emette degli ultrasuoni, ed un sensore che
funge da microfono, ovvero, se riceve in ingresso l’ultrasuono inviatogli
dall’altoparlante, vuol dire che davanti al Robot si è presentato un ostacolo, e
manda un segnale in continua al microprocessore, il quale mediante il programma
al suo interno, reagirà aggirando l’ostacolo; inoltre bisogna provvedere alle fotoresistenze
le quali captano ognuna la propria fonte di luce, mandando un segnale analogico
al microprocessore, il quale mediante il convertitore analogico ed il programma
al suo interno, reagirà seguendo la fonte luminosa al suo interno.
Il programma dovrà essere steso in modo da prevedere il maggior numero di
casistiche che il nostro Robot può incontrare nel suo tragitto. Ad esempio si
può fare in modo che:
- Quando il Robot incontra un ostacolo, se ne accorge, va indietro, si gira
nella direzione opposta all’ostacolo e poi riparte,
con questa automazione sorge il seguente problema: se nella direzione opposta
c’è subito un altro ostacolo, cosa accade? Allora si può pensare a
questo altro tipo:
- Quando il Robot incontra un ostacolo, se ne accorge, va indietro, si gira
nella direzione opposta all’ostacolo e poi riparte,
in quest’altro caso invece, se non è andato abbastanza indietro, in modo da
permettergli di aggirare l’ostacolo che succede?
L’idea più giusta è quella di continuare ad interrogare il sensore ad
ultrasuoni, in modo che il carrello arretri sino a che esce dalla portata
dell’ostacolo. A questo punto si può girare e continuare il suo percorso.
Un altro problema che si pone, è quello legato allo spazio di manovra. Sono
possibili due tipi di rotazione:
Una è quella in cui il Robot ruota su se stesso, così da permettergli di girarsi
molto più velocemente, facendo andare i 2 motori in direzioni opposte.
L’altra è quella in cui il Robot ruota su una sola ruota, occupando più spazio
per la manovra.
Si è scelto di usare il primo tipo di rotazione, ossia su se stesso.
Se il programma viene eseguito correttamente, in modalità “evitare gli
ostacoli”, si potrà avere come risultato una situazione simile:
Fase 1) Il Robot segue la direzione avanti come predefinità
|
Fase 2) Il Robot avverte l’ostacolo
|
|

|

|
Fase 3) Il robot indietreggia fino a non avvertire più
l’ostacolo
|
Fase 4) Il robot segue la direzione avanti come
predefinità |
|
.jpg) |
.JPG)
|
Per quanto riguarda le scelte dei pin I/O si è scelto di stabilire la
seguente impostazione:
|
PORT A: |
PORT B: |
PORT C: |
|
RA0à
Fr Sx
RA1à
Fr Dx
RA2à
Ultr Sx
RA3à
Ultr Dx
RA4à
Fd Sx (Non utilizzato)
RA5à
Fd Dx (Non utilizzato) |
RB0à
Motore Sx (b0)
RB1à
Motore Sx (b1)
RB2à
Motore Dx (b0)
RB3à
Motore Dx (b1)
RB4à
ON\OFF: LED Sx
RB5à
ON\OFF: LED Dx
RB6à
ON\OFF Buzzer (Non utilizzato)
|
RC0à
Selezione del programma (attivo basso)
RC1à
ON\OFF: LED rosso, per selezione del programma “inseguitore di luce” (attivo
alto)
RC2à
ON\OFF: LED verde, per selezione del programma “evita gli ostacoli” (attivo
alto) |
Fr = Fotoresistenza --- Ultr
= Sensore ad ultrasuoni --- Fd = Foto diodo
Dopo aver tenuto conto di queste premesse si può stilare un flow-chart,
uno schema di flusso, che spiega il comportamento del Robot, in modalità “evita
gli ostacoli”, oltre che a dare un’idea del software di programmazione del
microcontrollore:
 Torna
ad inizio pagina |