PRAM, il tuo Primo Robot Autonomo Mobile – Parte 2

Nel precedente articolo “PRAM, il tuo Primo Robot Autonomo Mobile – Parte 1” abbiamo introdotto il progetto del PRAM, un semplice progetto di robot autonomo mobile basato sul modello di una smart car, che utilizzeremo come tutorial per l’approccio al mondo della robotica. Nella prima parte abbiamo illustrato l’assemblaggio dello chassis della smart car con i quattro motori ed i rispettivi encoder di velocità. In questo tutorial utilizzeremo solo due motori e nessun encoder; gli encoder li abbiamo installati in previsione di successivi progetti di smart car più complessi ed evoluti. Abbiamo, inoltre, riportato lo schema elettrico della scheda di controllo e la descrizione del funzionamento di PRAM. In questo articolo faremo un breve riepilogo del progetto e tratteremo la descrizione dettagliata dei principali componenti del robot car PRAM.

INTRODUZIONE

Per chi non avesse seguito la prima parte del progetto, riteniamo utile fare un breve riepilogo e per questo, innanzitutto, riportiamo in Figura 1 lo schema elettrico della scheda di controllo di PRAM.

Figura 1: schema elettrico della scheda di controllo di PRAM

La scheda di controllo è costituita essenzialmente da un microcontrollore, un driver dei motori e alcuni sensori. Il microcontrollore è la scheda di sviluppo uChip che, attraverso un driver d’interfaccia, ha il compito di controllare la direzione di rotazione dei motori, e quindi delle ruote di PRAM, in funzione delle informazioni ricevute dai sensori. Come si può rilevare dallo schema elettrico della scheda di controllo, i motori vengono pilotati dal driver L293D controllato da alcune porte del microcontrollore uChip. Le due fotoresistenze LDR1 e LDR2, mediante la proprietà di variare il valore di resistenza in funzione dell’intensità luminosa captata, forniscono al microcontrollore un determinato valore di tensione dato dai rispettivi partitori resistivi di tensione. Il sensore di distanza HC-SR04 e gli switch “paraurti” SW3 e SW4 costituiscono il sistema di rilevamento ed evitazione degli ostacoli. Il circuito è alimentato da un pacco di cinque batterie AA da 1,5 V.

Gli “ORGANI” DI PRAM

Dato che abbiamo definito PRAM un robot autonomo, in quanto tale deve essere in grado di decidere da solo cosa fare. I suoi compiti sono molto semplici: si deve muovere seguendo una sorgente di luce evitando ostacoli. Per fare questo, il cervello (il microcontrollore uChip) per far muovere le gambe (i motori e le ruote) nella giusta direzione, ha bisogno di occhi per vedere la luce (i Light Detector LDR) ed evitare gli ostacoli (il sensore di distanza e gli switch “paraurti”). Ma vediamo in dettaglio questi organi.

La scheda di sviluppo uChip

Il modulo uChip prodotto dall’azienda italiana Itaca Innovation s.r.l. è il controllore del sistema. uChip è una scheda di sviluppo open source con chip microcontrollore integrato SAMD21E18 Cortex M0 AT a 32 bit compatibile con Arduino (Arduino Zero ha a bordo lo stesso chip SAMD21) che si adatta a un socket standard DIL a 16 pin a profilo stretto, requisito molto importante per la realizzazione di sistemi elettronici compatti. Il chip SAMD21 implementa la maggior parte delle funzioni di Arduino Zero, inclusa la funzionalità USB-OTG (USB On-The-Go) e la possibilità di fare il debug del codice. Ha 256 kB di memoria flash e 32 kB di RAM. Il modulo uChip contiene un LED (connesso internamente al pin D0) programmabile via software, un pulsante con funzioni di programmazione e reset, un quarzo, una circuiteria per la gestione automatizzata delle alimentazioni (che vedremo in dettaglio), una circuiteria di protezione EMI/ESD, un connettore micro-USB per la programmazione, la comunicazione seriale e l’alimentazione della scheda uChip a cui è possibile associare la funzionalità OTG, ovvero, è possibile alimentare dispositivi esterni dal connettore micro-USB stesso. In Figura 2 viene mostrata la scheda di sviluppo uChip.

Figura 2: la scheda di sviluppo uChip

La scheda di sviluppo uChip ha un sofisticato sistema di gestione delle alimentazioni, che include due convertitori DC-DC: il boost converter (convertitore elevatore di tensione o step-up) e il buck converter (convertitore riduttore di tensione o step-down). Il convertitore boost consente di fornire al connettore micro-USB una tensione di 5 V con corrente erogabile fino a 500 mA quando viene applicata una tensione esterna al pin VEXT (pin 16) compresa tra 3,3 V e 5 V. Il convertitore buck, selezionabile tramite software, fornisce al pin VEXT una tensione in uscita di 3,3 V o quella fornita dall’esterno al micro-USB (normalmente 5 V) con corrente erogabile fino a 1 A; quando uChip è alimentato tramite USB da un PC, normalmente la corrente erogabile massima è di 500 mA, ma si può anche avere una corrente erogabile maggiore fino a 1 A alimentando uChip con un powerbank in grado di erogare 1 A.

Si consideri che quando viene selezionata la tensione da una sorgente USB, la tensione di uscita VEXT effettiva dipenderà dalla tensione dell’USB (che potrebbe essere più bassa di 5 V) e dalla corrente di uscita (da cui la caduta di tensione è tipicamente 0,5 Ω × I, dove I è la corrente di uscita in Ampere). Quando invece si seleziona 3,3 V, la tensione di uscita dipenderà solo dalla corrente, come si evince dalla relazione VEXT = 3,3 V - 0,15 Ω × I. Inoltre, applicando una tensione esterna al pin VEXT o alimentando da USB, mediante un ponticello da realizzare sulla scheda uChip, è possibile ottenere al pin 15 di uChip una tensione regolata di 3,3 V con corrente erogabile fino a 100 mA. Un circuito ausiliario impedisce la corrente inversa tra la tensione esterna al pin 16 VEXT e l'alimentazione proveniente dall’USB, ovvero, quando l’alimentazione non è in modalità USB-OTG.

Un circuito di supporto implementa anche la selezione automatica dell'alimentazione tra USB e la tensione esterna applicata a VEXT, e impedisce di avere alimentazioni contemporaneamente da due sorgenti, ossia da USB e VEXT. In fase di progettazione occorre considerare che, sebbene uChip accetti e possa fornire una tensione esterna fino a 5 V al pin 16, tutti gli altri pin I/O NON SOPPORTANO livelli di tensione a 5 V ma accettano solo livelli digitali o analogici di 3,3 V. Forzare una tensione superiore a 3,3 V sui pin I/O danneggerà irreversibilmente uChip. Inoltre, non applicate una tensione superiore a 5,5 V sul pin 16 VEXT poiché danneggerebbe uChip anche in questo caso.

Specifiche tecniche

    • CPU: integrata della serie Cortex M0 + ATSAMD21 a 32 bit a 48 MHz (compatibile con Arduino Zero e varianti analoghe)
    • FLASH: 256 kB (248 kB per il bootloader)
    • RAM: 32 kB
    • Alimentazione: tramite USB o esternamente (da 3,3 V a 5 V)
    • DC-DC converter Boost integrato: tensione di uscita 5 V, corrente fino a 500 mA
    • DC-DC converter buck integrato: tensione selezionabile via software 3,3 V/5 V, corrente fino a 1 A
    • 14 pin di I/O
    • LED di stato: controllato via software con singola istruzione
    • Pulsante multifunzione: reset e programmazione
    • 8 ingressi ADC a 12 bit
    • 1 uscita DAC a 10 bit
    • 14 pin di interrupt
    • Interfacce seriali: SPI, I2C, UART
    • Porta I2S per audio decoder: (ad esempio UDA1334A)
    • 13 pin PWM
    • Fattore di forma: DIP stretto standard, distanza tra le file 7,62 mm, passo dei pin 2,54 mm
    • Compatibilità dei pin: compatibile con pin-out di integrati CMOS, alimentazione e GND sono sui pin 16 e 8, quindi è anche possibile emulare alcuni circuiti integrati CMOS a 16 pin (serie 4000 e 74HC)
    • Dimensioni: 28,5 mm x 10,16 mm compresa la porta USB (27,23 mm x 10,16 mm esclusa la porta USB)

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3066 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend