Laboratorio CAD di circuiti elettronici Esercitazione

Download Report

Transcript Laboratorio CAD di circuiti elettronici Esercitazione

Laboratorio CAD di circuiti elettronici
Esercitazione 6
Esercitazione 6
Sensori TX ed RX ad Infrarossi
1) Line Tracking Sensor (SEN0017)
Scrivere in mbed il codice di un programma in grado di inviare al pc un messaggio ogni qual volta un
sensore di traccia rileva il passaggio da una superficie nera ad una superficie riflettente (passaggio
da nero a bianco).
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
/*
*/
#include "mbed.h"
InterruptIn LT(D2); //define and name the interrupt input
DigitalOut led(LED1);
Serial pc(USBTX, USBRX);
void ISR1()
//this is the response to interrupt, i.e. the ISR
{
pc.printf("Warning: reflective surface detected!\n\r");
led=1;
wait(0.5);
led=0;
}
int main()
{
led=0;
LT.rise(&ISR1); // attach the address of the ISR function to the
// interrupt rising edge
while(1) { // continuous loop, ready to be interrupted
// code here...
}
}
Figura 1 Pinout del sensore di traccia SEN0017.
1
Laboratorio CAD di circuiti elettronici
Esercitazione 6
Figura 2 Schema elettrico del sensore di traccia SEN0017.
I sensori IR sono fondamentalmente dei moduli costituiti da un trasmettitore e un ricevitore
all'infrarosso, supportati da una circuiteria di controllo. Anche in questo caso, il principio di
funzionamento si basa sulla riflessione del segnale generato. In particolare, il trasmettitore IR (o IR
LED), invia un segnale infrarossi ad una particolare frequenza che deve essere compatibile con il
ricevitore IR (fotodiodo o fototransistor) che ha il compito di rilevarlo. Se il segnale inviato arriva su
una superficie riflettente rimbalza in diverse direzioni, compresa quella del ricevitore IR il quale cattura
il segnale rilevando l’oggetto. Nel caso di superficie assorbente invece, il segnale IR non è riflesso e
l’oggetto non può essere rilevato. Questo risultato si verifica anche se l’oggetto è assente in quanto
non ci sarà nessuna riflessione come rappresentato nella figura seguente. Ci sono diversi tipi di sensori
IR per diverse tipologie di applicazioni. La tecnologia IR è usata, ad esempio, nei sensori di prossimità
per rilevare un oggetto nelle immediate vicinanze, nei sensori di contrasto per individuare un percorso
o nei sensori di conteggio per contare gli oggetti.
2) Line Tracking Sensor (con uscita analogica)
Scrivere in mbed il codice di un programma in grado di inviare al pc un messaggio con il valore della
tensione analogica (normalizzata) in uscita ad un sensore di traccia (sensore con 2 pin di uscita: D0
e A0). Si alimenti il sensore a 3.3V.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include "mbed.h"
Serial pc(USBTX, USBRX);
DigitalIn TR_sensor(D2);
DigitalOut myled(D3);
AnalogIn Sensor(A1);
float dist;
int main()
{
while(1) {
dist=Sensor.read();
2
Laboratorio CAD di circuiti elettronici
14.
15.
16.
17.
18.
19.
20.
21.
22. }
Esercitazione 6
pc.printf("Distanza = (%f)\r \n",dist);
if (TR_sensor == 0) {
myled = 1; //LED is ON
} else
myled = 0; //LED is OFF
wait(0.5);
}
Figura 3 Schema di connessione tra la scheda Nucleo ed il sensore di traccia analogico.
Modulo Bluetooth HC-05
3) Convertitore Bluetooth-seriale
Scrivere in mbed il codice di un programma in grado di ricevere i comandi di accensione e
spegnimento di un LED tramite connessione Bluetooth.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include "mbed.h"
Serial pc (SERIAL_TX, SERIAL_RX);
DigitalOut myled(D7); // Pin digitale di uscita
RawSerial hc05(D8, D2);
int main ()
{
char a;
pc.baud(9600); // setto il baud rate della porta seriale pc
hc05.baud(9600); // setto il baud rate della porta rawserial hc05
while (1) {
if(hc05.readable()) { // se e’¨ stato ricevuto un carattere
3
Laboratorio CAD di circuiti elettronici
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23. }
Esercitazione 6
a=hc05.getc(); // assegna il carattere ricevuto alla var a
if(a=='F') {
myled=1;
pc.printf("LED ON %c\n\r",a);
} else if (a=='B') {
myled=0;
pc.printf("LED OFF %c\n\r",a);
}
}
}
Il modulo HC-05 è un modulo SSP (Serial Port Protocol) Bluetooth facile da utilizzare. Questo modulo
contiene un Bluetooth V2.0 con EDR (Enhanced Data Rate) di 3Mbps Modulation, e con
ricetrasmittente wireless a 2,4 GHz. Esso utilizza un CSR Bluecore 04 ovvero un sistema Bluetooth
esterno su un singolo chip, in tecnologia CMOS e con AFH (Adaptive Frequency Hopping Feature).
Tabella 3.3 Caratteristiche software e hardware modulo HC-05
La principale funzione del HC-05 è quella di sostituire i collegamenti delle porte seriali in varie
circostanze quali:
- Quando abbiamo due MCU che vogliono comunicare tra loro. Uno collega al dispositivo master
del Bluetooth, mentre l’altro lo collega al dispositivo slave. Questa connessione Bluetooth è
equivalente alla connessione con porta seriale incluso i segnali RX e TX, che possono utilizzare
il modulo seriale Bluetooth per comunicare l’un l’altro.
- Quando il MCU ha un modulo slave Bluetooth, esso può comunicare con un Adattatore
Bluetooth di computer o smartphone. Quindi c’è una linea virtuale comunicabile di una porta
seriale tra il MCU e il computer o smartphone.
- I dispositivi Bluetooth principalmente presenti sul mercato sono dispositivi slave, come
stampanti Bluetooth, GPS Bluetooth ecc. Quindi, noi possiamo utilizzare un modulo master per
fare una coppia e comunicare con loro.
Il funzionamento del modulo Bluetooth seriale, non necessita di un pilota, e può comunicare con altri
dispositivi Bluetooth che hanno una porta seriale. Ma la comunicazione tra due moduli Bluetooth
richiede almeno due condizioni:
- La comunicazione deve essere tra un master e uno slave
- La password di connessione deve essere corretta
4
Laboratorio CAD di circuiti elettronici
Esercitazione 6
Figura 4 Schema di connessione per modulo Bluetooth alla scheda Nucleo.
Pilotaggio motori DC
4) Motori DC
Scrivere in mbed il codice di un programma in grado di pilotare 2 motori DC tramite la scheda driver
MR001-004.2 basata sull’integrato L298 prodotto dalla STMicroelectronics. Fare in modo che ogni
2 secondi i motori invertano il senso di marcia e vadano ad una “velocità normalizzata” di 0.6. Fare
uso della libreria Motor disponibile all’indirizzo https://developer.mbed.org/cookbook/Motor.
La scheda MR001-004.2 permette di pilotare in modo indipendente due motori DC, controllandone sia
la velocità che la direzione. E' basato sul famoso circuito integrato L298, prodotto dalla
STMicroelectronics; il L298 è un circuito integrato monolitico nel formato PowerSO20. Ha la funzione
di doppio driver a ponte-H ad alta tensione ed alta corrente, progettato per accettare livelli logici
standard TTL e per pilotare carichi induttivi come relè, solenoidi, motori DC e motori passo-passo. Per
abilitare o disabilitare ciascun canale in modo indipendente dai segnali di input, sono presenti i due
ingressi di enable (E1, E2) posizionati nella parte frontale della scheda; la regolazione della velocità di
rotazione dei motori si ottiene applicando a questi pin un segnale PWM con frequenza massima di
20KHz. La scheda comprende anche i LED di direzione su entrambi i canali; questa caratteristica è utile
nelle fasi di setup per verificare il firmware (anche senza applicare realmente il motore in uscita). Le
morsettiere due vie sono le uscite per i due motori (M1 e M2). I due connettori strip a 3 pin vicini alla
morsettiera di alimentazione sono utilizzati per controllare i due canali del DC Dual Motor Driver 30V
4A V2. Ciascun connettore strip riporta i segnali come riportato in tabella 1.
5
Laboratorio CAD di circuiti elettronici
Esercitazione 6
Per capire il significato di questi segnali ed il loro utilizzo potete far riferimento alla tabella seguente
(Tab.2), dove vengono riportate tutte le condizioni. Si noti che sono riportate solo le condizioni per il
canale 1 in quanto quelle del canale 2 sono identiche.
I segnali E1 e E2 hanno i resistori di pull-up così che in alcune applicazioni non avete bisogno di pilotarli
e potrete controllare ciascun motore con soli 2 segnali.
Figura 5 Pinout del driver MR001-004.2.
Figura 6 Esempio di applicazione del driver MR001-004.2.
6
Laboratorio CAD di circuiti elettronici
Esercitazione 6
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
#include "mbed.h"
#include "Motor.h"


Visualizzare con un oscilloscopio i segnali pwm ed alternativamente fwd/rev.
Modificare il codice affinchè la velocità dei motori sia settata in funzione di un valore di
tensione analogico fornito da un potenziometro.
Modificare le connessioni del circuito per prevedere una alimentazione autonoma (tramite
batteria da 9 V) della scheda nucleo seguendo l’esempio della figura seguente. In ogni caso,
prima di procedere leggere attentamente il paragrafo Alimentazione della scheda Nucleo
STM32F401RE.

Motor m1(D10, D8, D9); //pwm (E1), fwd (1A), rev (1B)
Motor m2(D5, D6, D7); //pwm (E2), fwd (2A), rev (2B)
DigitalIn button(PC_13);
int main()
{
while(1) {
if (button==0) {
m1.speed(0.6);
m2.speed(0.6);
wait(2);
m1.speed(-0.6);
m2.speed(-0.6);
wait(2);
} else {
m1.speed(0);
m2.speed(0);
}
}
}
Alimentazione e LED della scheda STM32F4-Nucleo
7
Laboratorio CAD di circuiti elettronici
Esercitazione 6
La scheda STM32F4-Nucleo ha diverse possibilità di alimentazione. Nel seguito vengono elencate in
base alle loro caratteristiche:
 Alimentazione tramite il connettore USB CN1. Una volta collegata la scheda al PC tramite un
cavo USB inizierà la fase di “enumerazione” della porta. Se il PC è in grado di erogare tramite
l’USB una corrente massima di 300mA, il LED3 della scheda si accende e il microcontrollore
viene alimentato, altrimenti il LED3 non si accende e il microcontrollore non viene
alimentato. Se si lascia chiuso il jumper JP1 verrà richiesta al PC una corrente massima di
100mA anziché 300mA. Se si alimenta la scheda tramite cavo USB, il jumper JP5 deve essere
posizionato su U5V.
 Alimentazione esterna tramite connettore VIN. E’ possibile alimentare la scheda attraverso
il connettore VIN dai pin 8 di CN6 o pin 24 di CN7, con una tensione da 7V a 12V e una
corrente massima di 800mA. In questo caso:
- Il jumper JP5 deve essere spostato in posizione E5V;
- Il jumper JP1 deve essere lasciato aperto e bisogna connettere l’USB per poter eseguire
la programmazione.
 Alimentazione esterna 5V. La board di sviluppo può essere alimentata con un’alimentazione
di 5V tramite l’ingresso E5V del pin 6 di CN7 a una corrente massima di 500mA, spostando
sempre il JP5 in posizione E5V e tenendo aperto JP1.
 Alimentazione esterna 3.3V. Basta collegare l’alimentazione di 3.3V al pin 4 di CN6 o al pin
12 e pin 16 di CN7. Ciò è possibile solo se è stata tagliata la parte dell’ST-LINK oppure se sono
state rimosse le resistenze da 0 Ohm SB2 e SB12.
8
Laboratorio CAD di circuiti elettronici
Esercitazione 6
Figura 7 Foto della scheda Nucleo F401RE con evidenziati i pin di alimentazione e relativi jumper di configurazione.
Di grande importanza è anche il jumper JP6, denominato IDD, che serve per misurare la corrente
assorbita dalla STM32F4-Nucleo, collegandolo ad un amperometro dopo averlo rimosso. Occorre
poi ricordare di rimettere il jumper altrimenti il microcontrollore non sarà più alimentato. La board
di sviluppo STM32F4-Nucleo presenta anche un LED tricolore il quale fornisce informazioni sullo
stato della comunicazione del ST-LINK:
- Lampeggia lentamente di rosso prima che l’USB sia inizializzata;
- Lampeggia velocemente di rosso durante l’enumerazione della porta;
- Rimane acceso di rosso quando l’inizializzazione è completata;
- Lampeggia rosso e verde durante la comunicazione tra scheda e PC;
- Resto acceso fisso il verde se la comunicazione finisce con successo;
- Resta acceso fisso l’arancione se la comunicazione fallisce.
Il LED rosso LD3 indica la presenza dei 5V di alimentazione. Sono presenti anche due pulsanti sulla
scheda:
- switch B1 denominato anche USER, che è connesso al I/O PC13 del MCU STM32;
- switch B2 è collegato al NRST, ed è utilizzato per il RESET della scheda.
9