«

»

Gen 13

Stampa Articolo

Motori passo-passo bipolari con Arduino controlla la velocità

Oggi ho fatto qualche esperimento con il mio motore bipolare, Arduino e l’SN754410NE, nel precedente articolo: Motori passo-passo bipolari con Arduino – seconda parte hai imparato a pilotare un motore bipolare con Arduino, oggi imparerai come regolarne la velocità.

Motore Stepper Bipolare Schema

Nello schema in alto ho rappresentato il collegamento tra

  • Arduino Duemilanove;
  • SN754410NE driver Brige H;
  • Il motore bipolare (riciclato da una stampante);
  • Un potenziometro da 10KΩ

Oltre a questi componenti ti serviranno una breadboard e dei cavetti per l’assemblaggio.

Per facilitare il collegamento del motore all’SN754410NE ed Arduino puoi leggere l’articolo: Motori passo-passo bipolari con Arduino – prima parte in cui ho scattato delle foto passo dopo passo su come eseguire il collegamento.

Per collegare il potenziometro puoi seguire lo schema in alto, in cui vedi che gli estremi del potenziometro sono connessi al positivo e negativo dell’alimentazione, in pratica la resistenza fissa di 10KΩ è tra positivo e negativo ed il pin centrale, quello relativo al cursore del potenziometro lo devi collegare al pin analogico 0 (A0) di Arduino, utilizzerai questo pin per rilevare il valore della resistenza assunta dal potenziometro.

Dovrai fare anche alcune modifiche allo sketch proposto in precedenza:

Aggiungi una nuova variabile al gruppo delle variabili già impostate:

int pinPot = 0;

serve a definire a quale pin hai collegato il potenziometro, nell’esempio è collegato al pin 0;

Nella funzione setup() devi aggiungere una nuova linea dopo le altre che indichi ad Arduino di utilizzare il pin 0 (pinPot) come INPUT, ossia per leggere il valore di resistenza impostato:

pinMode(pinPot, INPUT);

Ed infine alcune modifiche alla funzione loop(), in primo luogo aggiungi subito dopo la definizione della funzione loop() le seguenti linee:

int readPin = analogRead(pinPot);
int delayTime=map(readPin,0,1024,0,500);

Il cui significato è per la linea 01 l’impostazione di una nuova variabile di tipo integer in cui farai confluire il valore letto sul pinPot mediante l’utilizzo della funzione analogRead, se vuoi maggiori dettagli su questa funzione e sul suo utilizzo puoi leggere l’articolo Programmare con Arduino – leggere un segnale analogico; la linea 2 imposta il delayTime, in italiano tempo di attesa, uguale alla proporzione matematica tra lo 0 letto e lo 0 impostato e il valore 1024 letto e il 500 come valore massimo, in pratica la funzione map() restituisce in tempo reale la rimappatura del valore minimo e massimo letto rispetto ai valori minimo e massimo desiderati, quando sul pin 0 leggerai un valore 0 -> map restituirà 0; quando leggerai 1024 -> map restituirà 500; quando leggerai 512 -> map restituirà 250; e così via per tutti i valori intermedi da 0 a 1024.

Non occorrono altre modifiche in quanto il tempo calcolato su delayTime è già impostato come quello da attendere tra un passo e quello successivo.

Ora hai chiaro anche il perchè della proporzione inversa tra resistenza e velocità di rotazione, il motivo è che al crescere della resistenza aumenta il tempo di attesa tra un passo ed il successivo per cui una velocità più lenta; al diminuire della resistenza diminuisce anche il tempo di rotazione comportando una velocità maggiore di rotazione.

Riporto lo sketch intero per semplificarti la vita:

int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int pinPot = 0;

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
  
  pinMode(pinPot, INPUT);
}

void loop() {
  int readPin = analogRead(pinPot);
  int delayTime=map(readPin,0,1024,0,500);
  
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
}

Ho realizzato anche un piccolo video in cui puoi osservare come lo sketch appena visto si comporta in pratica.

Buon divertimento.

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/motori-passo-passo-bipolari-con-arduino-controlla-la-velocita.html

71 comments

1 ping

Vai al modulo dei commenti

  1. Luigi

    Ciao ringrazio per i vari tutorial che mi hanno dato la possibilità di capirne un po’, a questo punto mi sorge una domanda sarebbe possibile comndare il movimento del passo passo e visualizzare in percentuale quale è la velcità del motere stesso, cosa utile se si volesse costruire un estrusore.?
    Grazie

    1. Mauro Alfieri

      Ciao Luigi,
      il motore passo-passo per sua natura compie un giro al raggiungimento del numero di passi per cui è progettato, mi spiego meglio: se hai un 200step avrai il giro completo in 200passi, 100% del giro. La velocità in cui li compie è data dal tempo che attendi tra un passo e l’altro, ossia 0,10 sec tra un passo ed il successivo equivale a 20sec = ( 0,10 sec x 200 passi ).
      Con Arduino ogni loop è dato dalla velocità di esecuzione dello sketch, se non ci sono delay a fermare lo sketch puoi misurare questa velocità con la funzione millis(), c’è un tutorial su questa funzione.
      Assegna A=millis(), esegui 200 passi e assegna B=millis() la differenza (B-A) ti da il tempo in cui il tuo motore passo-passo fa un giro.

      Attenzione che il motore potrebbe non riuscire ad eseguire i passi ad una velocità troppo elevata, devi fare un po’ di prove con il tuo motore rallentando i passi fino a capire l’intervallo minimo di rotazione.

      Spero di aver capito il tuo dubbio, se così non fosse riscrivimi.

      Mauro

    2. vitaliano

      Salve, ottimo pilotare motori passo passo con potenziometro, ma la mia domanda è la seguente, è possibile far ruotare un mot.passo passo con l’utilizzo di un encoder rotativo? Mi spiego, il motore deve rimanere fermo , quindi velocità zero, solo quando faccio ruotare l’encoder dovrà girare, mentre la velocità del motore dipenderà esclusivamente dalla velocità con la quale faccio ruotare l’encoder.
      é possibile?grazie

      1. Mauro Alfieri

        Ciao Vitaliano,
        non è semplicissimo ma si può fare 🙂
        Leggi i miei articoli sugli encoder per comprendere come leggere il loro valore angolare e applicali al motore passo-passo secondo le tue esigenze.

        Mauro

  2. paolo

    Bravo Mauro i tuoi tutorial sono chiari e alla portata anche dei non esperti come me. Stavo seguendo un progetto che mi interessa realizzare e che richiede l’utilizzo di un motore passo passo. La domanda è sulla reperibilità di questi motori possibile che non riesca a trovarlo simile in Italia.? Sotto i link.
    grazie Paolo
    PS complimenti per il recente progetto ROVER 5 penso di provare a realizzarlo presto.

    progetto
    http://www.youtube.com/watch?v=pk52n31XMPM
    il motore
    https://www.sparkfun.com/products/9238?
    tutti i componenti:
    http://imgur.com/a/9QmfJ

    1. Mauro Alfieri

      Ciao Paolo,
      bello il progetto.
      Per il motore hai provato sul sito http://www.robot-domestici.it con cui collaboro, mi sembra che un motore simile sia quello che ho utilizzato per il mio progetto Dolly e l’ho comprato da loro:
      http://www.robot-domestici.it/joomla/component/virtuemart/robotica-domotica/motori/motori-passo-passo/stepper-motor-with-cable

      con leasydriver:
      http://www.robot-domestici.it/joomla/component/virtuemart/robotica-domotica/schede/controllo-motori/easydriver-stepper-motor-driver

      Grazie per il rover lo trovi in kit sempre sul sito:
      http://www.robot-domestici.it/joomla/component/virtuemart/Arduino/arduino-kit/leo-wi-rover5

      Mauro

  3. Antonio Porcelli

    ciao Mauro,
    con enorme entusiasmo sto sviluppando varie ideee a partire da questo toutorial, sto però riscontrando un piccolo problema, l’ SN754410H scalda parecchio specialmente alle alte velocità… è normale che si comporti che riscontri questi surriscaldamenti, quale sarebbe una possibile via per eliminare il problema?
    sto alimentando l’integrato direttamente da arduino… non ho ancora provato con la rete esterna perchè ho paura di fare guai, potrebbe essere una strada per migliorare la situazione?

    1. Mauro Alfieri

      Ciao Antonio,
      sicuramente l’alimentazione è una delle cose che devi tenere in considerazione, se utilizzi quella proveniente da Arduino e ti è sufficente allora non hai bisogno dell’SN754410H ti basta collegare le fasi in modo diretto.
      I componenti elettronici di potenza, ossia quelli che ti permettono di pilotare motori o altri carichi induttivi, solitamente scaldano, tale surriscaldamento non dovrebbe essere eccessivo e di solito con un opportuno dissipatore puoi risolvere il problema.

      Mauro

  4. Antonio Porcelli

    grazie Mauro,
    non sono riuscito a trovare le specifiche tecniche del mio motore (l’ho riciclato da una stampante rotta), tenterò si la strada del collegamento diretto che quella dell uso di un dissipatore.

    a presto.
    Antonio

  5. Pasquale Cardellicchio

    Piacere di fare la tua conoscenza Mauro,
    prima di ogni cosa devo farti i complimenti per il tuo blog
    è Fantastico!

    mi chiamo Pasquale e studio all’ università di Chieti in Abruzzo
    ti scrivo x chiederti dei consigli in merito ad un progetto che voglio realizzare.

    Vorrei collegare dei motri passo – passo ad un arduino
    per controllarne il verso di rotazione e la velocità in modo preciso.

    vorrei capire, x fare questo mi bastano dei motori unipolari?
    (te lo chiedo xke qui x la velocità fa riferimento a quelli bipolari ma se ho ben capito la velocità la si imposta con delle pause nello script e credo a sto punto anche il versolo si imposta da li) oppure ho bisogno di un potenziometro?? io vorrei far gestire il tutto dal pc in modo da avere diverse condizioni(velocità costante, velocità variabile; sia un verso che nell’altro)

    è la prima volta che mi avvicino al mondo dell arduino
    quindi perdonami se sono un semplice neofita.
    basta un semplice arduino uno?

    mi devo riferire alla guida con l’integrato SN754410NE o ad un integrato di tipo ULN2003A

    mi consiglieresti un sito dove poter acquistare tutto il materiale insieme in modo da nn avere diversi ordini ( o spendo piu di spedizione che di materiale)

    ti ringrazio x il tuo aiuto è davvero prezioso!
    io sono laureato in Psicologia è quel poco che so mi è stato trasmesso da mio padre che era un elettro-tecnico e di cui vado profondamente orgoglioso 🙂

    magari se ti va possiamo sentirci anche su fb o su skype

    spero di essermi fatto capire attraverso le mie domande 🙂
    (sicuramente ti saranno sembrate idiote)

    Ancora Grazie
    Pasquale

    1. Mauro Alfieri

      Ciao Pasquale,
      abbiamo 2 cose in comune: Arduino ed un padre elettrotecnico che ci ha trasmesso la passione per l’elettronica.
      In compenso io non capisco nulla di psicologia.

      I motori bipolari e unipolari differiscono per tante caratteristiche, una tra tutte il modo di pilotarli, se non sei pratico di elettronica, saldature e schede auto costruite ti consiglio di provare con i driver per motori passo-passo già fatti.

      Io acquisto da robot-domestici.it e mi trovo bene, hanno una buona assistenza e non impiegano molto a farmi recapitare il materiale se disponibile.

      Per i motori bipolari io uso la EasyDriver, trovi tanti esempi sul blog.
      Per i motori unipolari non ho trovato nessun driver già fatto a catalogo, puoi riferirti all’ULN2003A.

      Mauro

  6. Pasquale

    sto gia procedendo alla lista della spesa da robot-domestici 🙂

    1 Arduino Jumper Cables (65 Pack)
    1 ARDUINO UNO REV3
    2 Stepper Motor with Cable (Step Angle (degrees) :1.8)
    1 BREADBOARD – 400 CONTATTI

    l’unico problema è che nn trovo i 2 ULN2003A Con che cosa li posso sostituire???

    1. Mauro Alfieri

      Ciao Pasquale,
      purtroppo l’ULN2003A è un componente che puoi trovare solo nei negozi di elettronica.
      Se i motori stepper li devi acquister perchè non prendi dei bipolari e due easyDriver rendendo tutto più semplice sia per il montaggio che per il controllo?
      Io avevo intuito che i motori tu li avessi già.

      Mauro

  7. Pasquale

    no no devo comprare tutto… e ho pressioni a fare il prima possibile
    x l’ULN2003A non credo sia un grosso prob.
    gbc mi ha detto di averli
    il resto lo prendo tutto da robot-domestici
    opterò x gli unipolari xke mi sembrano piu semplici da montare 🙂 speriamo solo che i newton siano suff. x quello che voglio fare

    al posto del duemilanove l’ arduino uno andra bene lo stesso?

    se riesco a fare il tutto ti mando le foto e cosi se ti fa piacere puoi aggiungere delle sezioni nel blog x esperimenti di psicologia con l’arduino 🙂

    1. Mauro Alfieri

      Ciao Pasquale,
      mi incuriosisce molto il progetto che vede Arduino usato in psicologia 🙂 e sarò felicissimo di pubblicarlo oltra ad altri progetti che potrai inventare.
      Per i motori se hai dubbi sui newton puoi verificare le caratteristiche del motore prima di acquistarlo, sul motaggio mi sembra che si montino tutti allo stesso modo, 4 viti, i bipolari hanno soli 4 fili e con i driver è più semplice pilotarli.
      Gli unipolari hanno minimo 5 fili e ti consiglio di guardare sul datasheet dell?ULN2003A come costruire un driver, non penso tu possa usare il solo integrato se intendi usare il progetto più volte o per più tempo.

      L’arduno Uno andrà benissimo al posto del 2009, per darti maggiori informazioni dovrei almeno sapere di che progetto si tratta, io in alcuni progetti ho dovuto sostituire Arduino Uno con Leonardo.

      Mauro

  8. vincenzo mastroddi

    Buon giorno sign Alfieri
    Sono giorni che giro su iinternet ma purtroppo senza risultati
    Voreei chiederle una cosa io avrei bisogno di motorizzare due persiane un po scomode a casa mia secondo lei e possibile farlo con arduino in modo che si apra prima una poi dopo qualche secondo laltra e che quando stanno per arrivare a fine c o rsa rallentino per trovare lo stop dato dall assorbimento del motore
    La prego mi aiuti
    Vuona giornata

    1. Mauro Alfieri

      Ciao Vincenzo,
      puoi darmi del tu come fanno tutti .. siamo appassionati e makers 🙂
      A mio avviso non ci sono problemi sia per la parte di apertura ritardata tra le due persiane sia per la regolazione della velocità.

      L’unica cosa che non ho provato è misurare l’assorbimento del motore, immagino che sia una informazione che dovrebbe arrivare dal driver per motori che usi, quelli che ho provato io non lo fanno.

      Prova a cercare sul web chi produce controlli motore per persiane con rilevazione dell’assorbimento, penso si tratti di articoli professionali.
      Quando avrai questo genere di dispositivo puoi verificare se il tuo progetto è fattibile.

      Mauro

  9. vincenzo mastroddi

    Buon giorno
    E grazie per la risposta
    Il problema e proprio questo io vorrei autocostruirmi tutto
    Vorrei acquistare dei motorini e da li provare a fare questa ardua impresa anche perche se dovesse funzoonare piu in la lo vorrei mettere su tutte la persiane in modo da farle chiudere ed aprire ogni qualvolta inserisco e tolgo l antifurto
    Buona giornata

  10. Giovanni

    non funziona

    1. Mauro Alfieri

      A tutti gli altri si 🙂
      Scherzi a parte se non mi dici che errore ti da non posso aiutarti.

      Mauro

  11. Daniele

    Ciao Mauro,
    ho un motore stepper, arduino e la motor shield di arduino.
    Mi puoi dare una mano per lo sketch per far ruotare il motore sia in un senso, che in un altro?
    Gentilissimo,grazie!

    1. Mauro Alfieri

      Ciao Daniele,
      sul blog trovi molti articoli a cui puoi fare riferimento.

      Mauro

  12. Utente

    Ho recuperato un motore passo-passo bipolare Epson EM-483 da una vecchia stampante. Cercando con Google ho trovato queste informazioni:
    Nominal Voltage 7
    Current 0.7
    Resistance (ohm) 3.6
    Torque (in-oz) 44.4
    Torque (kg*cm) 3.2
    Wires 4
    Condition pulled
    Steps / Revolution 200
    Step Size (degrees) 1.8
    NEMA frame size 17
    Ora vorrei pilotarlo con questo circuito, usando però un’ alimentazione esterna, visto che la 5v non sembra sufficiente e vorrei sapere se le comuni pile alcaline sono in grado di alimentarlo o devo usare qualcos’ altro.

    1. Mauro Alfieri

      Ciao Utente,
      Mi piacerebbe conoscere il tuo nome e poterci dare del tu, come avrai letto che faccio con tutti gli appassionati di arduino e motori passo-passo.

      Se vuoi puoi alimentare il motore con una alimentazione esterna da 7v e le normali pile alcaline potrebbero andar bene visto i limitati consumi: 0,7A del motore.
      Con 7v potresti anche alimentare Arduino che accetta in input 7-12v

      Mauro

  13. Lorenzo

    Mauro,
    vorrei provare ad utilizzare un vecchio motore passo-passo recuperato da una stampante il modello è EM-483.
    Spero che i dati indicati dall’utente del 16/08 siano giusti (in internent ho trovato 12V di alimentazione).
    Ho visto che hai utilizzato un SN754410NE, hai avuto la necessità di montare anche un dissipatore?
    Puo’ andare bene anche per il motore EM-483?

    Grazie

    Ciao

    Lorenzo

    1. Mauro Alfieri

      Ciao Lorenzo,
      i dati che hai trovato in internet per il tuo motore potrebbero essere più corretti di quelli riportati nel commento del 16/08, ciò che ti interessa conoscere è la tensione di alimentazione e la corrente per fase.
      In ogni caso per un test va benissimo il chip SN754410NE, ma se vuoi realizzare un progetto io ti consiglio un driver per motori passo-passo tipo l’EasyDriver, la Big Easy Driver o uno dei driver della Pololu.

      Mauro

  14. Nicolò

    Buona sera.
    Avrei un problema che non riesco ad’uscirne,chiedo il suo santo aiuto:)
    Ho costruito una scheda per comandare un motore passo con il 297 e 298 però io avrei bisogno di un istruzione di arduino che mi generi per esempio 50 passi(clock) e poi si ferma.
    Come posso fare?
    Grazie mille

    1. Mauro Alfieri

      Ciao Nicolò,
      trovi molti esempi di questo tipo nei miei progetti, consulta ad esempio gli articoli del Dolly.

      Mauro

  15. Marco

    Caro Mauro,

    Grazie ai Tuoi tutorial ho mosso i miei primi passi con arduino. Per il mio esperimento ho bisogno di controllare un motore bipolare con arduino variandone la velocità ed il senso di rotazione . Vorrei usare come reostato una LCD keypad shield (df robot v1.0) per poter visualizzare sul display i valori di velocità .
    Potresti aiutarmi?
    Grazie
    Marco

    1. Mauro Alfieri

      Ciao Marco, certo che posso aiutarti quello che ti occorre é una parte del codice del Dolly, puoi prendere quello, studiarlo tutto ed eliminare le parti di codice superflue per ottenere il codice che ti occorre.

  16. Luciano

    Ciao MAuro, complimenti per il sito, per me neofita di arduino è una miniera di informazioni. Mesi fa ho comprato per pochi euro una scheda simile ad arduino della T.I. che credo conoscerai, Launchpad. Ho provato alcuni schetc di arduino e pare non ci siano differenze…ma devo ancora sperimentare qualcosa oltre il semplice led !! ahahahh. Sto costruendo un piccolo automatismo ad un macchinario e mi servirebbe poter controllare la velocità di un motore passo passo (preso da una cnc), così mi sono imbattuto nel tuo articolo molto preciso.
    VOrrei usare 2 interruttori per far muovere un solo motorino in senso orario o antiorario, e un potenziometro per regolarne la velocità, e due finecorsa per limitarne la corsa nulla di complesso…
    Mi chiedevo se potesse bastare la tua “scheda” con sn754410 o è meglio optare per easy driver? in effetti dovrebbe fa girare il motorino per 2 minuti al max… con soste di qualche minuto e non più di 5 volte al giorno….. quindi non sarebbe un “lavoro” pesante! Ora non ho il motorino davanti a me , ma mi pareva fosse 1,5A.
    Dove posso reperire l’SN o eventualmente ? Credi che il launchpad possa andare o meglio un arduino?
    Ti ringrazio per la tua risposta.

    1. Mauro Alfieri

      Ciao Luciano, non conosco la scheda di cui mi parli, se ritieni possa essere simile puoi usarla, tuttavia io consiglio sempre di riprodurre i miei progetti con materiale uguale o migliore di quello da me utilizzato, questo ti mette al riparo da malfunzionamenti non dovuti al codice ma al prodotto.

      Per il controllo di un motore come quello che descrivi ti consiglio la easydriver, più semplice da controllare ed affidabile, inoltre mi sembra che l’SN….. abbia al massimo 1A di controllo.

      1. Luciano

        Ti ringrazio del tuo consiglio, quindi prenderò la easy… per non avere problemi. Tu dove ti fornisci?

        1. Mauro Alfieri

          Ciao Luciano,
          io acquisto dal sito robot-domestici.it

          1. Luciano

            Grazie Mauro..farò altrettanto, tanto sono vicini..

      2. Luciano

        Ciao Mauro, ho seguito il tuo consiglio e in meno di 48 ore ho ricevuto il materiale da robot-domestici. Ho provato alcuni programmini, o meglio ne ho realizzati un paio fortunatamente funzionanti, sebbene dopo un pò ldi tempo usato per rivedere l’abbinamento pins, dato che uso un “launchpad”. Diciamo che mi interessava realizzare un controllo di velocità per un motore passo passo, usando potenziometro. Ci sono riuscito! Ho notato una cosa : nella void in cui leggo il valore del potenziometro e mando lo step alla bigeasydriver, se aggiungo un if per dare un senso alla rotazione, il motore gira più lentamente, come se l’istruzione if rallenti l’esecuzione della void…… E’ questo il motivo??

        1. Mauro Alfieri

          Ciao Luciano,
          solitamente ogni iscruzione eseguita dal microcontrollore richiede un tempo di elaborazione.
          Di solito un if non dovrebbe introdurre una latenza tale da essere percepita ad occhio nudo, tuttavia dipende molto da quante operazioni l’if deve elaborare e quanto veloce stai facendo girare il motore.

  17. Johny

    Ciao io avrei un problemino… Il potenziometro risponde in maniera illogica, teoricamente se lo dovessi muovere tutto da una parte, aumenterebbe/diminuirebbe al massimo/minimo la velocità giusto? Poi a circa metà ad una certa posizione del potenziometro il motore non si muove nemmeno :S

    1. Mauro Alfieri

      Caio Johny, dalla tua descrizione deduco che il potenziometro potrebbe essere danneggiato, considera che i potenziometri hanno due difetti:
      1. non sono lineari al 100% almeno di non usare potenziometri molto costosi e con precisione garantita;
      2. Sono normalmente composti da un sottile strato di grafite su cui scorre un contatto, con l’uso la grafite si consuma per sfregamento e forma delle irregolarità nella risposta dei valori.

      Ti consiglio di testare i valori provenienti dal potenziometro leggendoli con il monitor seriale.

  18. Marco

    Salve Mauro, ti ringrazio molto del tutorial, è stato molto utile, ma ti volevo chiedere: avendo un arduino uno e un arduino motor shield, come collego il potenziometrio???

  19. Claudio

    Ciao Mauro.
    Ho bisogno di un consiglio pratico:
    Vorrei acquistare un motore bipolare con un’alta coppia perchè devo calettarci una barra filettata che tramite un bullone mi alza un peso di 500 grammi.
    Deve muoversi in un senso (verso l’alto) di circa 40 cm in un tempo di 5-10 secondi al massimo. E nell’altro senso (verso il basso) per la stessa distanza e stesso tempo.
    Vorrei utilizzare arduino uno r3 che ho già preso e sicuramente mi servirà un driver per motori tipo easydriver.
    Vorrei alimentarlo a batterie (max 9 v)
    Mi aiuti per la scelta del motore e del driver?
    In attesa ti ringrazio anticipatamente.
    Claudio

    1. Mauro Alfieri

      Ciao Claudio,
      data la complessità meccanica ti chiedo se hai idea della coppia di cui hai bisogno.
      Alta per me può essere 2N/cm e per te 30N/cm non saprei quantificarla.

  20. Damiano

    Ciao Mauro vorrei applicare allo sketch di questa lezione la possibilita’ di inversione del moto con i due pulsanti, ho provato ad utilizzare gli esempi in giro per il tuo blog ma con scarsi risultati, mi puoi aiutare, dispongo di arduino uno e shield ardumoto (shield FE) e vorrei realizzare un tester per motori PP Bipolari.

    ciao grazie

    1. Mauro Alfieri

      Ciao Damiano, mi sembra tu abbia già commentato altri articoli, ma posso sbagliarmi.
      Ti consiglio di leggere e capire il principio di funzionamento dei motori passo-passo ed i miei sketch, resterai stupito della semplicità e di come sia semplice adattare uno sketch come questo al tuo progetto.

  21. claudio

    Ciao Mauro.
    Se la coppia si misura: peso per la forza di gravità (sempre che sia cosi..) allora il calcolo da me fatto è:
    peso per forza di gravità= 500 gr x 9.8 = 4900 gr/cm2= 4,9 Newton giusto?
    Se è sbagliato ti prego di correggermi.
    Se è esatto (più o meno) ci sono motori che hanno questa coppia (4,8N) ma il fatto è che ho bisogno che giri anche veloce. Credo 1000 g/m vadano bene. Devo spostare un peso di 500 gr per 40 cm in 5-8 secondi al max.
    Un aiutino? Non vorrei fare altri acquisti e pentirmene ancora..(ho comprato un nema 17 da 200 passi da 2,5A per 3V circa ma è lento e l’ho restituito)
    Grazie in anticipo
    Claudio

    1. Mauro Alfieri

      Ciao Claudio, non sono ferrato in meccanica, lascio ad appassionati del blog la possibilità di correggerti le formule, mi sembrano solo molto ridotte all’osso e quindi suscettibili di grandi errori.
      Per il secondo problema, la velocità, io mi concentrerei sui motori Dc al posto dei passo-passo e se ti serve conoscerne la posizione usa un encoder.

  22. claudio

    Ciao Mauro e..Buon Anno!
    Volevo chiederti se potevi linkarmi il post (che non trovo) dove colleghi un motore (passo passo) e lo fai funzionare con 2 pulsanti. i fine corsa possono essere considerati (al momento) con 2 pulsanti.
    Il problema è che non ricordo come programmare lo sketch per far si che premendo i due pulsanti insieme (tipo VERSO ORARIO E ANTIORARIO) non si creino interferenze. Mi spiego meglio: se premo il pulsante per VERSO ORARIO non ottengo nessuna reazione dagli altri pulsanti TRANNE quello di fine corsa (pulsante!)
    Mi consigli?
    Grazie mille
    Claudio

    1. Mauro Alfieri

      Ciao Claudio,
      ti invito a cercare meglio nel blog, ci sono molti articoli che fanno quello che mi chiedi.
      Per il conflitto tra i pulsanti puoi risolverlo via sketch in modo molto semplice: nel loop() usi due while le cui condizioni sono la pressione del primo o del secondo pulsante in modo che quando leggi la pressione di uno dei due il ciclo loop() non legga altro pulsante fino al rilascio dello stesso.

  23. claudio

    Ciao Mauro
    volevo sapere una cosa:
    collegando una tensione esterna ad arduino senza la usb per esempio 12 volt. 5 volt servono ad arduino per funzionare ei restanti 7 volt vanno al circuito (motori,pulsanti,resistenze ecc..)?
    E’ giusto? Non riesco a capire questa cosa..
    grazie mille
    Claudio

    1. Mauro Alfieri

      Assolutamente no!!
      Ti consiglio di leggere le prime lezioni del mio corso on-line per capire meglio come funziona arduino e non danneggiarlo.

  24. claudio

    Ciao Mauro.
    Grazie delle risposte e del tempo dedicatomi. Ho la testa piena di progetti e più leggo post più aumentano i desideri di realizzare qualcosa di concreto.. Purtroppo il tempo a disposizione è poco e i figli “succhiano” anche quel poco..
    Spero di riuscire a realizzare quest’ascensore!
    Complimenti per tutto il lavoro che svolgi ma soprattutto per la pazienza che devi avere per aiutare i neofiti come me!
    claudio

    1. Mauro Alfieri

      Ciao Claudio,
      anche io ho un figlio e ti capisco 🙂
      Tuttavia credo riuscirai ed attendo che tu abbia concluso il progetto, se vuoi, per condividerlo con altri papà makers.

  25. Simone

    Ciao Mauro,
    Grazie per i tuoi tutorial!

    Vorrei chiederti se è possibile utilizzare il potenziometro non solo per regolare la velocità di rotazione ma anche come switch per invertirne la rotazione.

    Vorrei costruire una pompa a siringa e un tool del genere potrebbe essermi utilissimo!

    Grazie
    buona giornata

    Simone

    1. Mauro Alfieri

      Ciao Simone,
      si è possibile giocando con i valori letti ed inviati al motore.
      Per una pompa io preferirei usare un motore cc e non un motore passo-passo per le sue caratteristiche.

  26. FRANCESCO

    Ciao Mauro, da tempo seguo i tuoi tutorial e ti ringrazio per il tempo che ci dedichi.
    Devo scegliere un motore stepper a 24Vdc, bassa velocità(anche 30 giri/min) ma con coppia elevata, almeno 16Nm. Vorrei controllare il tutto con Ardunio come hai fatto tu, ma devo scegliere il driver adatto ( che supporti almeno 8A di corrente) e prendere chiaramente un power supply a 24V. La mia richiesta è la seguente:
    in commercio esistono Stepper a 4Nm ma con 2000 rpm, secondo te, visto che a me bastano 30 rpm, potrei diminuire la velocità con conseguente aumento di coppia (Nm) fino ad ottenere i miei 16Nm? è possibile diminuire la velocità con Arduino, aumentando di conseguenza la coppia?

    1. Mauro Alfieri

      Ciao Francesco,
      la tua domanda è più adatta ad un esperto di meccanica e di motori passo-passo che ad un appassionato di elettronica ed arduino.
      Lascio la tua richiesta pubblica così che chiunque sappia la risposta corretta possa fornirtela.

  27. MAURIZIO

    EGREGIO SIG. MAURO DA QUALCHE TEMPO SEGUO CON MOLTA ATTENZIONE I SUOI PROGETTI E REALIZZAZIONI IN PARTICOLARE ARDUINO MI SONO AVVICINATO A QUEST ‘ULTIMO AQUISTANDO UN ARDUINO UNO E POI UN ARDUINO 2 NUTRIVO MOLTO INTERESSE PER IL TOUCH SCREEN E NE HO AQUISTATO UNO DICESI ADATTO ALL’ARDUINO 2, MA NON RIESCO A FARLO FUNZIONARE
    CON NESSUN SHETC INDICATO .
    I DATI DEL TFT SONO ” SAINSMART TFT320QVT, LE SAREI MOLTO GRATO SE POTESE INDICARMI LO SCHETC GIUSTO PER VEDERLO IN FUNZIONE , SEMBRA CHE CI SIA PROPRIO UNA INCOMPATIBILITA’
    GRAZIE MAURIZIO

    1. Mauro Alfieri

      Ciao Maurizio,
      ti chiedo la cortesia di non usare il carattere MAISCOLO quando scrivi, sul web è considerato cattiva educazione perché equivale ad urlare.
      Detto questo non sono riuscito a trovare documentazione sul display, ti consiglio di chiedere al fornitore/negozio/produttore del tuo display di darti un esempio di sketch.

      In generale ti sconsiglio di acquistare materiale da siti che non ti diano uno sketch di uso/esempio perché spesso è troppo complesso utilizzarli e si rischiano acquisti inutili.

  28. Carmelo

    Salve,
    ho letto molte cose su arduino nel suo blog e devo farle i complimenti.
    Avevo un dubbio, siccome sto costruendo un inseguitore stellare (ho letto anche di un ragazzo che le ha scritto in merito), ho già tutto il materiale. Ho anche lo sketch per farlo ruotare precisamente ad 1 rpm. Adesso vorrei aggiungere un interruttore del tipo ON-OFF-ON per fare ruotare da una parte il motore ad 1 rpm e dell’altro , in senso inverso, ad elevata velocità. Cosa dovrei aggiungere nello sketch? e l’interruttore va collegato nei pin analogici, giusto?

    1. Mauro Alfieri

      Ciao Carmelo,
      l’interruttore puoi collegarlo sia ai pin digitali sia analogici con le dovute resistenze di pull-up.
      Ti consiglio la lettura degli articoli in cui parlo di pulsanti o interruttori, troverai gli schemi di collegamento e capirai anche cosa modificare nel codice.

      1. Carmelo

        Perfetto, quindi seguo la parte dei pulsanti. Grazie mille.

  29. MAURIZIO

    grazie infinite Mauro per il consiglio scrivo raramente sul web ed ho trascurato questa regola , vi prego di accogliere le mie scuse ,
    torniamo al tft , lei quale mi consiglierebbe per non incappare nel problema delle librerie?

    1. Mauro Alfieri

      Ciao Maurizio,
      nessun problema per il maiuscolo.
      In merito si display ne esistono molti modelli tra cui scegliere quello più adatto al tuo scopo, touch e non.
      Io ho usato quelli della 4D System, se cerchi nel blog trovi qualche esperimento descritto da cui prendere spunto.

  30. mimmo

    Ciao Mauro, be complimenti bei progetti, ho trovato ineressante questo sul controllo della velocita’ nei bipolari……..se puoi, mi aiuteresti nel mio intento e cioe’ utilizzare easy driver come drive e potenziometro per la regolazione della velocita’ sempre per i bipolari.

    Grazie

    Mimmo

    1. Mauro Alfieri

      Ciao Mimmo,
      con easydriver è più semplice 🙂 comprendi il concetto su cui ho scritto questo progetto e applicalo agli sketch scritti per l’easy driver.

  31. Andrea

    Ciao Mauro ti seguo assiduamente anche se non scrivo tanti commenti.
    A proposito dei motori stepper mi è capitato tra le mani un NEOCENE 2T3542 che dal datasheet si presenta come 5 omh a 12v (3A ma non sono sicuro.
    Come posso collegarlo ad arduino? Quali integrato a ponte H mi consigli? Grazie!

    1. Mauro Alfieri

      Ciao Andrea,
      se hai un motore con 3A per fase puoi verificare le caratteristiche della BigEasyDriver che ricordo supporti fino a 3A, considera che sei ad un punto limite e che sarebbe meglio tenere un margine spostandosi in driver di fascia semi-professionale.

  32. Fabio

    È possibile utilizzare anche un L239D al posto del SN?? Tanto le uniche differenze sono nella corrente nominale minore. Se il motore me lo permette potrei usare anche L239D giusto?

    1. Mauro Alfieri

      Ciao Fabio,
      se la sola differenza è nella corrente nominale penso tu possa utilizzarlo. Io non ho mai provato.

  33. Federico

    Ciao Mauro. Ho fatto anche io la stessa cosa per controllare la velocità ma non saprei come fare per aggiungere uno switch per cambiare il senso di rotazione.. hai qualche consiglio?
    Grazie,
    Federico

    1. Mauro Alfieri

      Ciao Federico, non sai come aggiungere uno switch al circuito? Come scrivere il codice o come invertire la rotazione? Per ognuno di questi argomenti dovresti trovare un mio articolo su questo blog. Se non li trovi puoi seguire il mio corso base Arduino gratuito on line.

  1. Mauro Alfieri » Blog Archive » Motori passo-passo bipolari comandati da interruttori – prima parte

    […] un motore passo-passo con due interruttori. Nei precedenti articoli hai imparato a collegare e regolare la velocità di un motore passo-passo bipolare con […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>