Motori Passo-Passo (step)

Slides:



Advertisements
Presentazioni simili
Piattaforma Arduino Arduino uno Arduino Mega.
Advertisements

INSEGUITORE SOLARE CON ARDUINO
Per questo organizza un corso di Arduino per tutti i soci Amon e GMS.
Linguaggio Arduino: Struttura di un programma
Arduino: introduzione alla programmazione
arduino: dalla teoria alla pratica
SENSORI OTTICI - FOTORESISTENZE
Hardware necessario Una board Intel galileo Un alimentatore Dc 7-15 v
Motore passo-passo Motore brusheless.
Hands-On Arduino Come collegare i sensori ad Arduino P. Perego- Politecnico di Milano AA 2010/2011 Facoltà del Design - Politecnico di Milano 3.o anno.
ISTITUTO TECNICO – SETTORE TECNOLOGICO
Reti Mobili Ad Hoc e di Sensori Andrea De Salve. COS'È ARDUINO ? Piattaforma Open-Source per il Physical Computing basata su Microcontrollore Arduino.
Sensori analogici e digitali per la misura di
LABORATORIO ARDUINO E ANDROID VENERDÌ, 11 SETTEMBRE 2015 UNIVERSITÀ DEGLI STUDI DI TRIESTE.
IL SOFTWARE (FPwin 6.0).
LA STATISTICA DESCRITTIVA
Arduino uno Introduzione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Progetto Parcheggio intelligente
GPIO: General Purpose Input Output I parte
Motore PP.
Terza Lezione → Navigare nel file System → parte 2
LE ARCHITETTURE NON VON NEUMANN
Tecnica batch (passa a passo)
Irrigazione automatica
Microcontrollori e microprocessori
I2c.
INGRESSI E USCITE.
PROGETTO MINDS ON SCUOLA PRIMARIA DI BELFORTE DEL CHIENTI
INSEGUITORE SOLARE CON ARDUINO
I BUS È un insieme di fili conduttori che permette il passaggio di dati tra le varie periferiche del pc.
Alimentazione esterna
Sistemi trifase.
Linearizzazione di un sensore
Realizzazione del progetto di un ascensore
Lezioni di fisica e laboratorio
Alimentazione esterna
istalliamo l’ambiente di sviluppo - ide
La scheda Arduino.
Global System for Mobile Comunication
mBlock Un modo semplice e innovativo per programmare Arduino
Caratteristiche e funzioni della scheda Arduino
IL MOTORE ELETTRICO DI VRANCEAN EVHENII 3B
A/D seconda parte.
Gli automi.
Esercizi di logica Leve e ruote dentate.
Linearizzazione di un sensore
Interrupt Arduino.
Definizione di linguaggio di programmazione
Pilotare Relè e Motori CC
Maker_INO Lezione Quarta Trasduttori e Sensori Digitali
Display a 7 segmenti.
Esercizi di logica Leve e ruote dentate.
Lezione Seconda Primi passi di programmazione
Processi decisionali e funzioni di controllo
Unità 5 Segnali analogici.
UNIT 12 INTERFACCIA SERIALE.
Applicazioni del principio di induzione elettromagnetica
Prof.ri Ponte Vincenzo Ovazza Sergio
Unità 1 Programmi base.
Arduino Lezione Prima Prof. Ponte Vincenzo.
Lezione Terza Primi passi di programmazione
Applicazioni del principio di induzione elettromagnetica
CONTROLLO DI UN SERVOMOTORE A ROTAZIONE CONTINUA
Progettiamo un robot Prof.ri Ponte Vincenzo Ovazza Sergio
TCS230 Sensore di colore.
Nuova gamma comandi a parete
A CURA DEL PROF. HAJJ ALI’
Ing. Cisci Alternatore. Ing. Cisci Macchina elettrica Alternatore Energia meccanica Energia elettrica L’alternatore è una macchina elettrica.
Transcript della presentazione:

Motori Passo-Passo (step) Prof.ri Ponte Vincenzo Ovazza Sergio MAKER-INO Lezione 8°

Pilotare Motore CC con Serial Monitor Gestire la PWM con la scheda in dotazione. Collegando gli ingressi digitali (IN1,IN2…..) a Pin PWM e gestendoli con analogWrite invece che con digitalWrite,risolviamo il problema. Vedremo anche come impartire comandi da SerialMonitor.

Pilotare Motore CC con Serial Monitor int IN1=10; int IN2=11; int IN3=5; int IN4=6; void setup() { pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); Serial.begin(9600); Serial.print("Digita seguenti opzioni:"); Serial.print("1 AVANTI VELOCE"); Serial.print("2 RETRO VELOCE:"); Serial.print("3 STOP"); Serial.print("4 AVANTI BASSA VELOCITA"); Serial.print("5 RETRO BASSA VELOCITA"); Serial.println(); }

Avanti Veloce void Forward() //Avanti veloce { analogWrite(IN1,250); Serial.print("Motore 1 AVANTI"); Serial.println(); analogWrite(IN3,250); analogWrite(IN4,0); Serial.print("Motore 2 AVANTI"); }

Avanti Piano void ForwardB() { analogWrite(IN1,100); Serial.print("Motore 1 AVANTI PIANO"); Serial.println(); analogWrite(IN3,100); analogWrite(IN4,0); Serial.print("Motore 2 AVANT PianoI"); }

Retro Veloce void Reverse() { analogWrite(IN1,0); Serial.print("Motore 1 Retro"); Serial.println(); analogWrite(IN3,0); analogWrite(IN4,250); Serial.print("Motore 2 Retro"); }

Retro Piano void ReverseB() { analogWrite(IN1,0); Serial.print("Motore 1 Retro Piano"); Serial.println(); analogWrite(IN3,0); analogWrite(IN4,100); Serial.print("Motore 2 Retro Piano"); }

STOP void Stop() { analogWrite(IN1,0); analogWrite(IN2,0); Serial.print("Motore 1 Fermoo"); Serial.println(); analogWrite(IN3,0); analogWrite(IN4,0); Serial.print("Motore 2 Fermo"); }

LOOP void loop() { char user_input; while(Serial.available()) { user_input=Serial.read(); digitalWrite(IN1,0); digitalWrite(IN2,0); if(user_input=="1") { Forward(); } else if(user_input=="2") { Reverse();

LOOP else if(user_input=="3") { Stop(); } else if(user_input=="4") { ForwardB(); else if(user_input=="5"){ ReverseB(); else{ Serial.println("Opzione non valida");

Motori passo-passo, come riconoscerli Hanno minimo 4 fili:

Il principio di funzionamento Sono motori che,a differenza di tutti gli altri, hanno come scopo quello di mantenere fermo l'albero in una posizione di equilibrio: se alimentati si limitano infatti a bloccarsi in una ben precisa posizione angolare. Solo indirettamente è possibile ottenerne la rotazione: occorre inviare al motore una serie di impulsi di corrente, secondo un'opportuna sequenza, in modo tale da far spostare, per scatti successivi, la posizione di equilibrio.

Il principio di funzionamento È così possibile far ruotare l'albero nella posizione e alla velocità voluta semplicemente contando gli impulsi ed impostando la loro frequenza, visto che le posizioni di equilibrio dell'albero sono determinate meccanicamente con estrema precisione. È la scelta ideale per tutte quelle applicazioni che richiedono precisione nello spostamento angolare e nella velocità di rotazione, quali la robotica, le montature dei telescopi ed i servomeccanismi in generale.

Motori passo-passo, come riconoscerli I motori passo passo sono classificati in due tipologie distinte: unipolari bipolari i motori unipolari sono più semplici da pilotare in quanto la sequenza della rotazione è espressa dal succedersi dell’eccitazione delle bobine di cui è composto; i motori bipolari sono di maggiore complessità in quanto la rotazione avviene con un campo magnetico generato dalla corrente che percorra in entrambi i versi le bobine.

Motori passo-passo, come riconoscerli Il numero di fili di cui un motore passo-passo possono essere 4,5,6 o 8 e sono direttamente legati alla caratteristica unipolare (5,6 o 8 conduttori) o bipolare (4 o 8 conduttori) del motore stesso.

Motore a 4 -5 -6 fili Come si rappresentano:

Motore a 8 fili I motori a 8 fili possono essere utilizzati sia in configurazione unipolare sia in configurazione bipolare. Lo schema di costruzione riportato in Figura mostra le bobine ciascuna con due terminali indipendenti. L’utilizzo di tali motori in modalità unipolare o bipolare deve essere eseguito in funzione della complessità del progetto, delle forze in gioco e dell’ambito applicativo in cui il motore va collocato.

Motore passo passo Arduino motore passo passo 28YBJ-48 e relativo driver Caratteristiche:  motore a 4 fasi  alimentazione 5-12 volt, da una fonte che puo’ essere esterna ad Arduino  assorbimento: 320 mA  rapporto di riduzione 1/64

Motore passo passo Arduino Questo motore puo’ operare in due modalita’: a 64 oppure a 32 impulsi per rotazione dell’albero motore. Le librerie di Arduino gestiscono la modalita’ a 32 impulsi per cui ad ogni impulso l’albero motore ruota di 11.25 gradi.

Motore passo passo Arduino Il motore e’ pilotato da un driver che, operando sotto il controllo di Arduino, lancia gli impulsi necessari al movimento. Il motore e’ dotato di un riduttore con rapporto 1/64, per cui, per una rotazione completa del perno in uscita, sono necessarie 64 rotazioni dell’albero motore e quindi 32*64 = 2048 impulsi .

Motore passo passo Arduino La connessione tra il driver ed il motore e’ assicurata da un cavo a 4 fili che termina in uno spinotto da inserire nell’alloggiamento bianco presente sulla scheda driver La connessione ad Arduino e’ realizzata attraverso i 4 pin (IN1 – IN4) di input. L’alimentazione (da 5 a 12 volt, eventualmente esterna ad Arduino), corre invece sui due spinotti posti nella parte bassa della scheda, contrassegnati da un – ed un + Per ottenere il corretto funzionamento del motore, bisogna attivare e disattivare le porte di ingresso (IN1 – IN4) rispettando la sequenza 1, 3, 2, 4.

Motore passo passo Arduino Il senso di rotazione (orario o antiorario) e’ gestito dal segno associato al numero di impulsi. Se il numero di impulsi e’ negativo, l’albero motore gira in senso antiorario. In questo esercizio ci si limitera’ ad azionare un motore passo passo, facendo fare al perno in uscita un mezzo giro in senso orario seguito da un mezzo giro in senso antiorario e a velocita’ piu’ elevata. Prima dei due mezzi giri verra’ mostrata, per quattro volte, a velocita’ molto bassa e tramite i led presenti sul driver, la sequenza di lancio degli impulsi

Motore passo passo Arduino Schema Collegare le porte 8, 9, 10 ed 11 di Arduino rispettivamente agli ingressi In1, In2, In3 ed In4 del driver. Alimentare il driver con una tensione da 5 volt e connettere il motore passo passo al driver mediante lo spinotto di cui e’ dotato. Visto il basso assorbimento previsto per questo esercizio, e’ possibile utilizzare le fonte di alimentazione da 5 volt fornita da Arduino

Motore passo passo Arduino Programma #include <Stepper.h> // richiama la libreria con le funzionalita’ int impulsi; // definizione di una variabile intera chiamata "impulsi" /* nella prossima istruzione sono forniti il numero di impulsi (32) necessari per far compiere un giro dell’albero motore e vengono definite le porte da associare al driver con la loro sequenza di attivazione. Le porte 8, 9, 10 ed 11 di Arduino sono collegate, rispettivamente, ai pin In1, In2, In3 ed In4 del driver ma la sequenza di attivazione deve essere In1, In3, In2 ed In4 per cui la dichiarazione delle porte e' 8, 10, 9, e 11 */ Stepper small_stepper(32, 8, 10, 9, 11); void setup() { // non e' necessaria alcuna dichiarazione iniziale poiche' le porte // di Arduino vengono automaticamente dichiarate dalle routine presenti in libreria }

Programma void loop() { // parte 1 - visualizzazione della sequenza di lancio degli impulsi small_stepper.setSpeed(1); // imposta una bassa velocita' dell'albero motore // (1 impulso al secondo) per mostrare, lentamente, la sequenza di lancio degli impulsi // (osservare la sequenza di illuminazione dei led sulla scheda driver) impulsi = 4; // imposta 4 nel contatore di impulsi small_stepper.step(impulsi); // lancia 4 impulsi, facendo muovere l'albero motore di // 45 gradi (11,25 gradi per 4 volte) ed il perno esterno di 0,7 gradi delay(2000); // aspetta 2 secondi prima di attivare il successivo movimento

Programma // parte 2 - rotazione del perno in uscita di 180 gradi in senso orario a velocita' moderata impulsi = 1024; // inserisce nella variabile impulsi il valore 1024, // e cioe' il numero di impulsi necessari per far compiere mezzo giro al perno di uscita small_stepper.setSpeed(100); // imposta una bassa velocita' di rotazione dell'albero // motore (100 impulsi al secondo, pari a 3,125 giri al secondo dell’albero motore e ad // una rotazione di 17,5 gradi al secondo del perno in uscita.) small_stepper.step(impulsi); // ripete per 1024 volte la sequenza di lancio degli impulsi // (la variabile "impulsi" contiene il valore 1024) delay(1000); // aspetta un secondo prima di attivare il successivo movimento

Programma // Parte 3 - rotazione del perno in uscita di 180 gradi, a velocita' elevata ed in senso antiorario impulsi = -1024; // inserisce in "impulsi" il valore negativo -1024, // in modo da imprimere un movimento antiorario al perno di uscita small_stepper.setSpeed(700); // imposta un'alta velocita' di rotazione dell'albero motore // (700 impulsi al secondo, pari a 21,85 giri al secondo dell’albero motore e 123 gradi al secondo // del perno in uscita) small_stepper.step(impulsi); // ripete per 1024 volte la sequenza di lancio degli impulsi che, // essendo negativa, fa girare l'albero in senso antiorario delay(2000); // attende due secondi prima di ripetere l'intera sequenza }

Programma:consiglio Spesso il numero degli step termina lasciando alcune bobine (per intenderci quelle attivate da IN1,IN2,IN3,IN4.) sotto tensione provocando un riscaldamento del motore con assorbimento eccessivo di corrente. Si consiglia, al termine del ciclo inserire una procedura stop() con il seguente codice: digitalWrite(8,0); digitalWrite(9,0); digitalWrite(10,0); digitalWrite(11,0);

Utilizziamo un motorino slitta CD E’ un motore stepper classico a due fasi e quattro fili (A+ A- B+ B-) che puoi, quindi, pilotare solo in bipolare mancando il centro degli avvolgimenti. (1 – 2) Si potrebbe pilotare con le uscite della scheda Arduino, non lo consiglio in quanto le correnti potrebbero bruciarla. Utilizziamo piuttosto un Dual Channel DC Motor Driver Module L298N PWM Speed Control.

Utilizziamo un motorino slitta CD

Utilizziamo un motorino slitta CD Codice:avanti,fermo 1sec e poi torna indietro int coila1 = 10; int coila2 = 11; int coilb1 = 12; int coilb2 = 13; int i=0; int v=10; void setup() { pinMode(coila1, OUTPUT); pinMode(coila2, OUTPUT); pinMode(coilb1, OUTPUT); pinMode(coilb2, OUTPUT); }

Utilizziamo un motorino slitta CD void loop() { for (i=0; i<65; i++){ digitalWrite(coila1, HIGH); digitalWrite(coila2, LOW); digitalWrite(coilb1, LOW); digitalWrite(coilb2, LOW); delay(v);

Utilizziamo un motorino slitta CD digitalWrite(coila1, LOW); digitalWrite(coila2, LOW); digitalWrite(coilb1, HIGH); digitalWrite(coilb2, LOW); delay(v); digitalWrite(coila2, HIGH); digitalWrite(coilb1, LOW);

Utilizziamo un motorino slitta CD digitalWrite(coila1, LOW); digitalWrite(coila2, LOW); digitalWrite(coilb1, LOW); digitalWrite(coilb2, HIGH); delay(v); } delay (1000);

Utilizziamo un motorino slitta CD for (i=0; i<65; i++) { digitalWrite(coila1, LOW); digitalWrite(coila2, LOW); digitalWrite(coilb1, LOW); digitalWrite(coilb2, HIGH); delay(v); digitalWrite(coila2, HIGH); digitalWrite(coilb2, LOW);

Utilizziamo un motorino slitta CD for (i=0; i<65; i++){ digitalWrite(coila1, LOW); digitalWrite(coila2, LOW); digitalWrite(coilb1, LOW); digitalWrite(coilb2, HIGH); delay(v); digitalWrite(coila2, HIGH); digitalWrite(coilb2, LOW); } delay(1000); }

Arduino HC-06 Bluetooth module Piedinatura e cablaggio La disposizione ed il numero dei pin potrebbero variare da modulo a modulo, ma i più importanti sono : VCC, GND, TX, RX. La tensione di alimentazione può variare da 3.3V a 5V, le linee di comunicazione sono tolleranti ai 5V e funzionano anche a 3v3. L’alimentazione del modulo può essere fornita direttamente da Arduino, gli assorbimenti sono bassi ed è sicuro. GND va collegato a massa, occorre una massa comune tra il modulo e il dispositivo che lo utilizza.

Arduino HC-06 Bluetooth module Una cosa importante è ricordasi di incrociare i pin TX e RX. Informazione scontata per chi sa come funziona una comunicazione seriale, tuttavia vale la pena di esplicitarlo. Il pin TX del modulo va collegato al pin RX del dispositivo, allo stesso modo, il pin RX del modulo va collegato al pin TX del dispositivo.

Accendere 3 led con App L’App in questione è Bluetooth RC Controller Utilizzeremo le quattro frecce. Tre per accendere i led e una per spegnerli

Accendere 3 led con App Come si vede dalle impostazioni i codici (lettere) sono: F accende Led Giallo L accende led verde R accende led rosso B Spegne led

Accendere 3 led con App Codice: int LEDR = 8; int LEDV = 9; int LEDG = 10; int state; int flag=0; //si assicura che il seriale stampi //solo una volta lo stato

Accendere 3 led con App void setup() { // sets the pins as outputs: pinMode(LEDR, OUTPUT); pinMode(LEDV, OUTPUT); pinMode(LEDG, OUTPUT); Serial.begin(9600); }

Accendere 3 led con App void loop() { //se viene inviata un dato, lo legge e lo salva in state if(Serial.available() > 0) { state = Serial.read(); flag=0; } if (state == 'R') { digitalWrite(LEDR, HIGH); if(flag == 0){ Serial.println("LED Rosso ON"); flag=1; }

Accendere 3 led con App else if (state == 'L') { digitalWrite(LEDV, HIGH); if(flag == 0){ Serial.println("LED Verde ON"); flag=1; }

Accendere 3 led con App else if (state == 'F') { digitalWrite(LEDG, HIGH); if(flag == 0){ Serial.println("LED Giallo ON"); flag=1; }

Accendere 3 led con App else if (state == 'B') { digitalWrite(LEDR, LOW); digitalWrite(LEDV, LOW); digitalWrite(LEDG, LOW); if(flag == 0){ Serial.println("LED: off"); flag=1;} }

Accendere 3 led con App Prima di caricare il codice sulla scheda Staccare l’alimentazione alla scheda bluetooth. Avviare l’App sul cellulare e nella ricerca dispositivi selezionare HC-05. Il Pin è 1234

Fine………! Buon lavoro. Prof. Ponte Vincenzo Ovazza Sergio