ultimo aggiornamento 27 luglio 2014 |
|
La scheda qui presentata è un piccolo Shield che
misura 43x57mm che collegato
ad una
scheda Arduino permette l'utilizzo del modulo sonoro
LPM11162 con cui è possibile la
memorizzazione e la riproduzione di file audio in formato wave,
Rappresenta l'evoluzione del
primo prototipo montato utilizzando una Proto Shield V.4.
Nello Shield è presenti uno
stadio
alimentatore,
uno di interfaccia per adattamento delle tensioni, tra il
processore Arduino e il
modulo LPM11162,
uno stadio amplificatore,
un led di
segnalazione e
un pulsante
di reset del processore.
Modello
presentato in questa pagina |
Nuova versione |
Stadio necessario per fornire la tensione di 3.3V per l'alimentazione del modulo LPM11162. La tensione è derivata da quella di +5V fornita dalla scheda Arduino. E' utilizzato il regolatore LM317LZ, la tensione d'uscita è dimensionata a 3.3V tramite le due resistenze da 240Ω e 390Ω.
LM317LZ Regolatore di tensione regolabile | ||
Piedinatura | Datasheet | Foto dell'integrato |
Il
modulo LPM11162 funziona con una tensione di
alimentazione di +3.3V, e anche le comunicazioni seriale e i segnali di reset e busy sono e devono essere a questa tensione, il processore Arduino ha una logica
a +5V.
Per questo motivo è necessario adattare i livelli uscenti ed entranti dal
modulo.
Per quelli entranti (RX - Reset) è sufficiente un partitore realizzato con due
resistenze che abbassano la tensione.
Per quelli uscenti si sono utilizzati due transistor
BC337 che "trasferiscono" il
segnale dalla tensione di +3.3V a +5V.
Transistor BC337 (NPN Switching and Amplifier Applications ) | ||
Piedinatura | Datasheet | Foto del transistor (contenitore plastico) |
Il segnale audio analogico in
uscita dal pin 9 del modulo
LPM11162
è connesso ad un amplificatore con
LM386.
Questo circuito integrato è molto diffuso perché con pochi componenti esterni è
in grado di pilotare direttamente un piccolo altoparlante, il package è un
piccolo DIP8 e si tratta di un componente economico.
Lo schema utilizzato nello shield è il più semplice realizzabile. I
pin 1 ed 8 sono previsti per una regolazione del guadagno dell'amplificatore nel range
20÷200.
Se lasciati aperti il guadagno è quello minimo, quindi l'ampiezza del segnale
sull'altoparlante sarà 20 volte quella di ingresso sul pin 3, mentre inserendo
come indicato nello schema un condensatore elettrolitico da 10 µF
l'amplificazione sarà pari a 200.
Al pin di ingresso arriva il segnale audio proveniente dal modulo
opportunamente attenuato dal trimmer R11 da 10K.
Questa attenuazione è necessaria per
limitare il valore massimo del segnale ingresso all'LM386 in modo da non far
saturare l'uscita. Tramite il trimmer possiamo poi effettuare una regolazione
del volume quando necessario.
l condensatore da 47nF e la resistenza da 10Ω in serie sull'uscita
dell'amplificatore sono necessari per rendere stabile l'amplificatore come
indicato nel datasheet.
C'è poi un condensatore di disaccoppiamento in serie
all'altoparlante che costituisce un blocco in corrente continua.
LM 386 Low Voltage Audio Power Amplifier | ||
Piedinatura | Datasheet | Foto dell'integrato |
Il modulo audio
LPM11162 è un piccolo componente con una
memoria flash interna progettato per memorizzare e riprodurre file wave grazie a
pochi semplici comandi seriali.
Le quattro linee RX, TX, Busy, Reset sono connesse al processore Arduino
tramite uno stadio adattatore di
livelli.
L'uscita analogica è collegata all'amplificatore audio di potenza che pilota un altoparlante.
Per la programmazione del modulo si deve collegare un PC e scaricare all'interno del modulo audio i file wave
che saranno riprodotti come sintesi vocale.
Una volta che tramite il PC avremo
programmato i messaggi all'interno del modulo audio il microcontrollore dovrà
soltanto inviare il comando di Play (indicando il nome del file wave da
riprodurre) per iniziare la riproduzione del file.
LPM11162 Modulo audio/voce | ||
Piedinatura | Datasheet | Foto dell'integrato |
Led di segnalazione e pulsante
E' disponibile un led
connesso alla porta digitale 6 del
processore
Arduino, il led è connesso ad una resistenza limitatrice.
Per effettuare il reset del
processore
Arduino è presente un pulsante connesso al pin reset del connettore da
cui vengono anche prelevate le tensioni +5V e Vin per alimentare il circuito
Foto della scheda montata
|
Schema elettrico
Per chi usa il programma EAGLE per disegnare i propri circuiti, ho creato il simbolo con il modello 3d, per ulteriori informazioni vedere la pagina di istruzioni. |
Realizzazione pratica.
Per la costruzione della
scheda si procederà iniziando dalla realizzazione del circuito stampato il cui
lato rame in scala 1:1 è riportato sotto, in alternativa si può utilizzare un
pezzo di basetta millefori cove visibile nelle foto del prototipo.
Per la sua realizzazione si utilizzerà una basetta in
vetronite (monofaccia) di dimensioni 43x57 mm, il metodo potrà essere quello
della fotoincisione o del trasferimento termico utilizzando i cosiddetti fogli
blu (PRESS-N-PELL), in questo caso ricordo che l’immagine delle tracce del
circuito dovrà essere speculare.
Circuito stampato.
Una volta inciso il rame, si verificherà in controluce o mediante l’utilizzo di
un multimetro che non vi siano cortocircuiti soprattutto tra le piste più
vicine.
Si passerà quindi alla foratura della stessa, utilizzando principalmente una
punta da 0,8 mm, mentre si utilizzeranno una da 1mm per le pin strip.
In seguito si potrà passare al posizionamento e alla saldatura dei componenti
seguendo lo schema visibile sotto.
Disposizione dei componenti.
Per la saldatura si utilizzerà un piccolo
saldatore a punta fine, della potenza di circa 25 – 30 W.
S’inizierà dai vari ponticelli continuando con le resistenze, si potrà quindi, procedere con il pulsante, lo zoccolo
dell'
integrato, i condensatori. Si concluderà con le pin strip e i
connettori.
Terminato la saldatura si potrà inserire l'integrato IC2 (Modulo
LPM1162) e IC3 (LM386) nell' apposito
zoccolo facendo attenzione alla tacca di riferimento.
Alcune fasi del montaggio
|
Test dello shield
/* shield_lpm11162.pde Programma per testare lo shield per LPM11162, vengono attivati due relè mentre viene emesso il messaggio vocale corrispondente Vengono utilizzati i seguenti pin Pin +5V -> Alimentazione Pin GND -> Alimentazione Pin Vin -> Alimentazione Motori Pin Digital 2 -> Pin 2 RESET modulo LPM11162 Pin Digital 3 -> Pin 3 TX modulo LPM11162 Pin Digital 4 -> Pin 4 RX modulo LPM11162 Pin Digital 5 -> Pin 5 BUSY modulo LPM11162 Pin Digital 6 -> Pin 6 led su shield LPM11162 Pin Digital 8 -> Attiva relè 1 Pin Digital 9 -> Attiva relè 2 Pin Digital 10 -> Pulsante su ProShield Pin Digital 13 -> Pin 13 led su ProShield Creato il 27/06/2012 da Adriano Gandolfo <https://www.adrirobot.it> This example code is in the public domain. */ #include <SoftwareSerial.h> #include <LPM11162.h> LPM11162 audio(3,4,2); //Arduino tx, Arduino rx, reset const int led_1 = 6; // Pin 6 Led su shield LPM11162 const int led_2 = 13; // Pin 13 led su ProShield const int rele_1 = 8; // Pin 8 Relè 1 const int rele_2 = 9; // Pin 9 Relè 2 const int pulsante = 10; // Pulsante su ProShield // variabile: int buttonState = 0; // variabile per lettura stato pulsante void setup(){ pinMode (led_1, OUTPUT); pinMode (led_2, OUTPUT); pinMode (rele_1, OUTPUT); pinMode (rele_2, OUTPUT); pinMode (pulsante, INPUT); if ( audio.synch() ) { audio.bridge(); } audio.begin(9600); } void loop() { // legge lo stato del pulsante: digitalWrite(rele_1, HIGH); digitalWrite(rele_2, HIGH); digitalWrite(led_1, LOW); digitalWrite(led_2, LOW); delay (1000); buttonState = digitalRead(pulsante); // Controlla se il pulsante è premuto. // se si il valore di buttonState è HIGH: if (buttonState == HIGH) { digitalWrite(led_1, HIGH); // Accende led Rosso su shield LPM11162 digitalWrite(rele_1, LOW); audio.volume(50); //delay (500); audio.play("rele1.wav"); // Pronuncia frase delay (2000); digitalWrite(rele_2, LOW); audio.play("rele2.wav"); // Pronuncia frase delay (2000); digitalWrite(led_2, HIGH); //delay (2000); digitalWrite(rele_1, HIGH); digitalWrite(rele_2, HIGH); audio.play("emergenza.wav"); // Pronuncia frase delay (3000); } else { // turn LED off: digitalWrite(led_1, LOW); digitalWrite(led_2, LOW); } } |
Elenco revisioni | |
27/07/2014 | Corretto refuso sul valore di C8 |
29/10/2012 | Emissione preliminare |