![]() |
|
![]() Per vedere i miei filmati |
Lo
Shield Modkit MotoProto per
Arduino rende facile il collegamento di 4 sensori, il controllo di due
motori DC (massima corrente 2A per motore) e un display LCD 16X2 caratteri . Le prese accettano cavi
sensore muniti di jack del tipo stereo del diametro di 2,5mm e fornire l'accesso a VCC, GND, e un ingresso analogico.
I sensori utilizzabili devono essere dotati di uscita analogica come: sensori di linea, sensori di distanza ad ultrasuoni,
sensori di luce, ecc
C'è anche un pulsante
programmabile e di grandi dimensioni uno spazio per un header I2C per
collegare sensori più avanzati, come un accelerometro.
|
Programma test H-Bridge |
Programma test LCD |
Programma test Pulsante |
|
|
|
||

Schema totale dello Shield
| Sigla | Descrizione |
|
C1,C8 |
0.1μF poliestere |
|
R1 |
330Ώ |
|
R2,R2,R4,R5 |
1KΏ |
|
R6 |
Trimmer 10kΏ |
|
R7,R8,R9,R10 |
4.7kk |
|
D1,D2,D3,D4,D5,D6,D7,D8 |
Diodo tipo MBRA140 |
|
F1 |
PTC SMD |
|
LED1 |
LED verde SMD 0603 |
|
LED2,LED3 |
LED giallo SMD 0603 |
|
LED4,LED5 Blue |
LED blu SMD 0603 |
|
Q1,Q2 |
BSS138 (SOT23) |
|
S1 |
Tasto Reset |
|
S2 |
Tasto 12mm |
|
SL1 Vin |
Pinheader 2x1 |
|
JP1 I2C |
Pinheader 4x1 |
|
U2,U3,U4,U5 |
AUDIO-JACK 2.5mm |
|
U6 |
Integrato L298 |
|
U7,U8 |
Integrato 74HC1G04 |
|
U9 |
Zoccolo per LCD 16X2 |
|
JP2,JP3 |
Morsettiera motori |
|
U10 |
ARDUINO |
Schema della sezione driver dei motori
Il circuito pilota del motore è basato sull'integrato H-bridge L298 che può pilotare fino a 2A per canale. La scheda è alimentata dalla stessa linea Vin come la scheda Arduino, include i LED blu e giallo per indicare la direzione attiva, e tutte le linee in uscita sono protette da diodi Schottky tipo MBRA140


Esempio di utilizzo dello schield
| 74HC1G04 Singolo Inverter | ||
![]() |
Codice FARNELL - 1085251 |
![]() |
| Piedinatura | Datasheet | Foto dell'integrato |
Specifiche
| Logic Type: | Inverter |
| Output Current: | 2.6mA |
| No. of Inputs: | 1 |
| Supply Voltage Range: | 2V to 6V |
| Logic Case Style: | SOT-353 |
| No. of Pins: | 5 |
| Operating Temperature Range: | -40°C to +125°C |
| SVHC: | No SVHC (20-Jun-2011) |
| Base Number: | 74 |
| IC Generic Number: | 74HC1G04 |
| Logic Function Number: | 04 |
| Logic IC Base Number: | 74104 |
| Logic IC Family: | HC |
| Logic IC Function: | Uhs Inverter |
| No. of Gates: | 1 |
| Operating Temperature Max: | 125°C |
| Operating Temperature Min: | -40°C |
| Output Current Max: | 2.6mA |
| Package / Case: | SOT-353 |
| Supply Voltage: | 5V |
| Supply Voltage Max: | 6V |
| Supply Voltage Min: | 2V |
| Termination Type: | SMD |
| L298 - Driver per ponte H | ||
![]() |
![]() Codice RS - 714-7715 |
![]() |
| Piedinatura | Datasheet | Foto dell'integrato |
Specifiche
|
Altezza |
3.3mm |
|
Lunghezza |
16mm |
|
Profondità |
11.1mm |
|
Funzione |
Controllo motori in movimento |
|
Montaggio |
Per montaggio superficiale |
|
Package fornitore |
PowerSO |
|
Pin Count |
22 |
|
Temperatura massima |
130°C |
|
Temperatura minima |
-25°C |
|
Tensione alimentazione massima |
46V |
|
Tensione minima di funzionamento |
4.8V |
|
Tensione tipica di funzionamento |
42V |
| MBRA140T3 Surface Mount Schottky Power Rectifier | ||
![]() |
Codice RS - 625-5650 |
![]() |
| Piedinatura | Datasheet | Foto |
Specifiche
|
Altezza |
2mm |
|
Lunghezza |
4.32mm |
|
Profondità |
2.6mm |
|
Configurazione |
Singolo |
|
Pin Count |
2 |
|
Corrente di picco inversa |
500μA |
|
Corrente massima forward |
1A |
|
Corrente sorgente di picco |
30A |
|
Montaggio |
Per montaggio superficiale |
|
Package fornitore |
SMA |
|
Temperatura massima |
125°C |
|
Temperatura minima |
-55°C |
|
Tensione di picco |
0.71V |
|
Tensione di picco inversa ripetitiva |
40V |
|
Tipo Diodo |
Schottky |
| Led smd 0603 | ||
![]() |
![]() Codice RS 466-3683 466-3740 466-3677 |
![]() |
| Piedinatura | Datasheet (Verde, Blu, Giallo) | Foto |
Specifiche
|
Codice RS |
466-3683 |
466-3740 |
466-3677 |
|
Colore |
Blu |
Giallo |
Verde |
|
Altezza |
1.1mm | ||
|
Larghezza |
0.8mm |
||
|
Lunghezza |
1.6mm |
||
|
Dimensioni lente |
1.2x0.8x0.6mm |
||
|
Forma lente |
Rettangolare |
||
|
Package |
SMD |
||
|
Angolo visione |
120° |
||
|
Aspetto lente |
Incolore non diffuso |
||
|
Corrente massima di forward |
30mA |
||
|
Intensità |
60mcd |
150mcd |
70mcd |
|
Lunghezza onda di picco dominante |
470nm |
588nm |
568nm |
|
Lunghezza onda di picco |
468nm |
590nm |
574nm |
|
Materiale LED |
InGaN |
AlGaInP |
AlGaInP |
|
Potenza dissipata massima |
120mW |
75mW |
75mW |
|
Temperatura operativa massima |
85°C |
||
|
Temperatura operativa minima |
-40°C |
||
|
Tensione di reverse |
5V |
||
|
Tensione massima di forward per colore |
4V |
2.5V |
2.5V |
Schema della sezione LCD
Il circuito pilota display prevede la modalità a 4 bit (DB4…DB7), modalità che permette di collegare solo 7 pin, invece che 11. Vediamo come sono connessi
|
LCD RS → |
pin digitale 6 |
|
LCD R/W → |
GND |
|
LCD Enable → |
pin digitale 7 |
|
LCD D4 → |
pin digitale 8 |
|
LCD D5 → |
pin digitale 9 |
|
LCD D6 → |
pin digitale 10 |
|
LCD D7 → |
pin digitale 11 |
Oltre a è presente il collegamento
all'alimentazione e al trimmer per la regolazione del contrasto. I pin
D0, D1, D2, D3 sono posti a massa.
Nel circuito è inoltre presente il collegamento per l'accensione
dell'eventuale retroilluminazione. E'
inoltre visualizzato nello schema il pulsante S2, a disposizione per
eventuale interazione con il programma. Tale pulsante non è
dotato di resistenza di pull-up o pull-down.

Resistenza di pull-up/down
Le resistenze di pull-up e pull-down sono usate nei circuiti elettronici
per forzare un determinato stato logico in un punto, per eliminare
fluttuazioni di corrente o ancora per evitare cortocircuiti quando si
usano i pulsanti.
Ad esempio vediamo il caso più comune di applicazione di queste
resistenze:
|
RESISTENZA DI PULL-UP In uscita avremo lo stato logico HIGH senza premere il pulsante, premendo il pulsante avremo lo stato logico LOW. |
RESISTENZA DI PULL-DOWN In uscita avremo lo stato logico LOW senza premere il pulsante, premendo il pulsante avremo lo stato logico HIGH |
![]() |
![]() |
Schema della sezione interfaccia I2C
Questa sezione del circuito permette di connettere delle interfacce dotate di protocollo I2C,con tensione di riferimento a 3.3V, per fare questo è presente un circuito formato dai Mosfet Q1 e Q2 che si occupa di traslare i livelli.


| BSS138 - Power MOSFET 200 mA, 50 V N−Channel SOT−23 | ||
![]() |
Codice RS - 545-2529 |
![]() |
| Piedinatura | Datasheet | Foto del transistor |
Specifiche
|
Altezza |
0.94mm |
|
Lunghezza |
2.9mm |
|
Profondità |
1.3mm |
|
Montaggio |
Per montaggio superficiale |
|
Categoria |
MOSFET di alimentazione |
|
Configurazione |
Singolo |
|
Corrente massima di drain |
0.2A |
|
Numero di elementi per chip |
1 |
|
Package fornitore |
SOT-23 |
|
Resistenza massima drain source |
3.5Ω |
|
Temperatura massima |
150°C |
|
Temperatura minima |
-55°C |
|
Tempo ritardo turn-off tipico |
20ns |
|
Tempo ritardo turn-on tipico |
20ns |
|
Tensione massima drain source |
50V |
|
Tensione massima gate source |
±20V |
|
Tipo |
canale N |
Schema della sezione interfaccia sensori analogici
Questa sezione del circuito permette il collegamento di 4 sensori di tipo analogico alle rispettive porte di Arduino

Programma test sezione Motori
/* MotoPropto_motore_LCD_test.pde Il programma permette il test della parte controllo motore. Sul display LCD dello shield, viene mostrato il comando in esecuzione. Vengono utilizzati i seguenti pin Pin +5V -> Alimentazione logica Pin GND -> Alimentazione Pin Vin -> Alimentazione motori Pin 2 -> Direzione Motore A Pin 3 -> PWM - Velocità Motore A Pin 4 -> Direzione Motore B Pin 5 -> PWM - Velocità Motore B Pin 6 -> LCD RS Pin 7 -> LCD Enable Pin 8 -> LCD D4 Pin 9 -> LCD D5 Pin 10 -> LCD D6 Pin 11 -> LCD D7 Pin 12 -> Pulsante Pin 13 -> Led su scheda Creato il 26/11/2011 da Adriano Gandolfo <http://www.adrirobot.it> This example code is in the public domain. */ // include il codice della libreria: #include <LiquidCrystal.h> // inizializzare la libreria con i numeri dei pin interfaccia LiquidCrystal lcd(6, 7, 8, 9, 10, 11); int M1_PWM = 3; //PWM controllo velocità per motore 1 - pin digitale 3 int M2_PWM = 5; //PWM controllo velocità per motore 2 - pin digitale 3 int M1 = 2; //Controllo direzione per motore 1 - pin digitale 2 int M2 = 4; //Controllo direzione per motore 2 - pin digitale 4 int speed_val(255); //imposta velocità - valore massimo const int buttonPin = 12; // Numero della porta a cui è collegato il pulsante const int ledPin = 13; // Numero della porta a cui è collegato il led int buttonState = 0; // Variable per la lettura dello stato del pulsante void setup() { pinMode(M1_PWM, OUTPUT); //Imposta i pin come uscite pinMode(M2_PWM, OUTPUT); pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); pinMode(ledPin, OUTPUT); // Inizializza il pin del LED come uscita pinMode(buttonPin, INPUT); // Inizializza il pin del pulsante come ingresso digitalWrite(buttonPin, HIGH); // Attiva resistenza di pull-up // ferma per default entambi i motori M1_stop(); M2_stop(); delay(500); // Imposta lcd per 16 caratteri per 2 linee lcd.begin(16, 2); // Scrittura prima linea lcd.print("Test H-bridge"); lcd.setCursor(0, 1); lcd.print ("Robot FERMO!"); delay(500); } void loop() { lcd.setCursor(0, 1); lcd.print ("Premi un tasto"); // Controlla se il pulsante è premuto. // Se è premuto il livello è basso // collegato a GND buttonState = digitalRead(buttonPin); if (buttonState == LOW) { // Accende il LED ed esegue il programma: digitalWrite(ledPin, HIGH); // Robot AVANTI lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print("Robot AVANTI "); delay (1000); M1_avanti(speed_val); M2_avanti(speed_val); delay (1000); M1_stop(); M2_stop(); delay (2000); // Robot INDIETRO lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print("Robot INDIETRO "); delay (1000); M1_indietro(speed_val); M2_indietro(speed_val); delay (1000); M1_stop(); M2_stop(); delay (2000); // Robot DESTRA lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print("Robot DESTRA "); delay (1000); M1_avanti(speed_val); M2_indietro(speed_val); delay (1000); M1_stop(); M2_stop(); delay (2000); // Robot SINSITRA lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print("Robot SINISTRA "); delay (1000); M1_indietro(speed_val); M2_avanti(speed_val); delay (1000); M1_stop(); M2_stop(); delay (2000); } else { // Spegne il LED: digitalWrite(ledPin, LOW); } } /////////// Impostazione motori //////////////// void M1_indietro(int x){ digitalWrite(M1, LOW); analogWrite(M1_PWM, x); } void M1_avanti(int x){ digitalWrite(M1, HIGH); analogWrite(M1_PWM, x); } void M1_stop(){ digitalWrite(M1_PWM, LOW); } void M2_avanti(int y){ digitalWrite(M2, LOW); analogWrite(M2_PWM, y); } void M2_indietro(int y){ digitalWrite(M2, HIGH); analogWrite(M2_PWM, y); } void M2_stop(){ digitalWrite(M2_PWM, LOW); } |
Programma test sezione LCD
/* MotoPropto_LCD_TEST.pde Il programma permette il test del controllo di un LCD. Sul display LCD dello shield, viene mostrati i secondi dall'attivazione del programma Vengono utilizzati i seguenti pin Pin +5V -> Alimentazione Pin GND -> Alimentazione Pin 6 -> LCD RS Pin 7 -> LCD Enable Pin 8 -> LCD D4 Pin 9 -> LCD D5 Pin 10 -> LCD D6 Pin 11 -> LCD D7 Creato il 26/11/2011 da Adriano Gandolfo <http://www.adrirobot.it> This example code is in the public domain. */ // include il codice della libreria: #include <LiquidCrystal.h> // inizializzare la libreria con i numeri dei pin interfaccia LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup() { // Imposta lcd per 16 caratteri per 2 linee lcd.begin(16, 2); lcd.setCursor(0,0); // Scrittura prima linea lcd.print("www.adrirobot.it"); lcd.setCursor(4,1); // Scrittura seconda linea lcd.print("TEST LCD"); delay (1000); lcd.setCursor(0,1); lcd.print(" ");// Cancella riga } void loop() { lcd.setCursor(0,1); // spostamento del cursore lcd.print(millis()/1000); // mostra i secondi dall'attivazione del programma } |
Programma test sezione LCD
/* MotoPropto_test_pulsante.pde Il programma permette il test del pulsante presente sulla scheda connesso alla porta P12. Ad ogni pressione viene acceso o spento il led connesso alla porta P13. Vengono utilizzati i seguenti pin Pin +5V -> Alimentazione logica Pin GND -> Alimentazione Pin 12 -> Pulsante Pin 13 -> Led su scheda Creato il 26/11/2011 da Adriano Gandolfo <http://www.adrirobot.it> This example code is in the public domain. */ const int buttonPin = 12; // Numero della porta a cui è collegato il pulsante const int ledPin = 13; // Numero della porta a cui è collegato il LED int buttonState = 0; // Variable per la lettura dello stato del pulsante void setup() { pinMode(ledPin, OUTPUT); // Inizializza il pin del LED come uscita pinMode(buttonPin, INPUT); // Inizializza il pin del pulsnate come ingresso digitalWrite(buttonPin, HIGH);// Attiva resistenza di pull-up } void loop(){ // Legge il valore dello stato del pulsante: buttonState = digitalRead(buttonPin); // Controlla se il pulsante è premuto. // Se è premuto il livello è basso // collegato a GND if (buttonState == LOW) { // Accende il LED: digitalWrite(ledPin, HIGH); } else { // Spegne il LED: digitalWrite(ledPin, LOW); } } |
| Elenco revisioni | |
| 28/11/2011 | Emissione preliminare |