- Cos'è un motore DC?
- Componenti richiesti
- Schema elettrico
- Programmazione Atmega16 per controllo motore DC
I motori CC sono i motori più utilizzati. Questi motori possono essere trovati quasi ovunque, dai piccoli progetti alla robotica avanzata. In precedenza abbiamo interfacciato DC Motor con molti altri microcontrollori come Arduino, Raspberry pi e lo abbiamo utilizzato in molti progetti robotici. Oggi impariamo a controllare il motore CC con il microcontrollore AVR Atmega16. Ma prima di andare avanti, conosciamo meglio il motore DC.
Cos'è un motore DC?
DC Motor è un dispositivo che trasforma l'energia elettrica in energia meccanica. In particolare, un motore CC utilizza la corrente CC per convertire l'energia elettrica in energia meccanica. Il principio di base del motore è l'interazione tra il campo magnetico e la corrente per produrre una forza all'interno del motore che aiuta il motore a ruotare. Quindi, quando la corrente elettrica viene fatta passare attraverso una bobina in un campo magnetico, viene generata una forza magnetica che produce una coppia risultante nel movimento del motore. La direzione del motore è controllata invertendo la corrente. Anche la sua velocità può essere variata variando la tensione fornita. Poiché i microcontrollori hanno pin PWM, quindi può essere utilizzato per controllare la velocità del motore.
In questo tutorial, il funzionamento del motore CC verrà dimostrato con Atmega16. Il driver del motore L293D verrà utilizzato per invertire la direzione della corrente, quindi la direzione del movimento. Il driver del motore L293D utilizza la configurazione del circuito H-Bridge che invia la corrente richiesta al motore. Due pulsanti vengono utilizzati per selezionare la direzione del motore. Uno dei pulsanti viene utilizzato per selezionare la rotazione in senso orario e l'altro viene utilizzato per selezionare il funzionamento anti-orologio del motore CC.
Componenti richiesti
- Motore CC (5 V)
- Driver motore L293D
- Atmega16 Microcontroller IC
- Oscillatore in cristallo da 16 Mhz
- Due condensatori da 100 nF
- Due condensatori da 22pF
- Premi il bottone
- Cavi per ponticelli
- Breadboard
- USBASP v2.0
- Led (qualsiasi colore)
Schema elettrico
Programmazione Atmega16 per controllo motore DC
Qui Atmega16 è programmato utilizzando USBASP e Atmel Studio7.0. Se non sai come programmare Atmega16 usando USBASP, visita il link. Il programma completo viene fornito alla fine del progetto, basta caricare il programma in Atmega16 e utilizzare i due pulsanti per ruotare il motore CC in senso orario e antiorario.Il motore CC è interfacciato utilizzando il driver del motore L293D. Il motore CC ruoterà in due direzioni quando viene premuto il rispettivo pulsante. L'unico pulsante verrà utilizzato per ruotare il motore CC in senso orario e l'altro pulsante verrà utilizzato per ruotare il motore CC in senso antiorario. In primo luogo definire la frequenza della CPU del microcontrollore e includere tutte le librerie necessarie.
#define F_CPU 16000000UL #include #include
Quindi, utilizzare una variabile per tenere traccia dello stato di pressione del pulsante. Questa variabile verrà utilizzata per definire la direzione del motore.
int i;
Seleziona la modalità di input / output di GPIO utilizzando il registro di direzione dei dati. Inizialmente, abbassare l'uscita del pin del motore per evitare l'avvio del motore senza premere il pulsante.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Controllare se 1 ° viene premuto pulsante collegato ad PORTA4 di Atmega16 e memorizzare lo stato del pulsante in variabile.
se (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Allo stesso modo controllare se è premuto il 2 ° pulsante collegato a PORTA5 di Atmega16 e memorizzare lo stato del pulsante in variabile.
altrimenti se (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Se lo stato del primo pulsante è vero, ruotare il motore CC in senso orario e se lo stato del secondo pulsante è vero, ruotare il motore CC in senso antiorario.
se (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } altrimenti se (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
È possibile collegare i pin del motore a qualsiasi pin GPIO a seconda del GPIO utilizzato. Inoltre è importante utilizzare il Motor Driver IC per diminuire il carico sul microcontrollore poiché i microcontrollori non sono in grado di fornire la corrente richiesta per far funzionare i motori CC. Per ulteriori dettagli e altri progetti basati su motori CC, visitare il collegamento fornito.
Di seguito vengono forniti il codice completo e il video dimostrativo.