Far compiere 1 giro esatto a un motore per ogni impulso dato da PC: mi aiutate?

Salve a tutti, a Natale ho regalato a mio figlio di 12 anni, la scheda Arduino con il kit di partenza (con l'intenzione poi di provarla anche io ..) alla fine mio figlio non l'ha degnata nemmeno di uno sguardo e quindi mi sono fatto da solo alcuni esercizietti ... poi sono finite le ferie e l'ho accantonanta in un angolo ... :frowning:

Ora avrei l'esigenza di mettere in piedi un piccolo progettino, ma non saprei da dove partire, quindi scrivo sperando nell'aiuto "tutoriale" di qualche buona anima :smiley:

Provo a spiegare:
Vorrei "semplicemente" collegare ad Arduino un motore a 12volt del genere (http://www.robotstore.it/product/304/Motoriduttore-12V-80rpm-18Kg-cm-diam.-37mm-con-Encoder.html) e, tramite un singolo impulso da PC (e/o da un pulsante) far eseguire un unico giro di 360° a destra al motore, all'impulso successivo il motore dovrà fare un unico giro di 360° a sinistra, e poi continuare sempre così alternando dx,sx,dx,sx,...

Io ho bisogno di molta precisione nel compiere un giro esatto, secondo voi l'encoder serve o ne posso fare a meno?
Riuscireste ad aiutarmi a mettere in piedi il progettino software/hardware?

Grazie per l'attenzione, a presto!
:slight_smile:

Un motore in corrente continua come quello non ha coppia quando non viene alimentato. La precisione di lettura posizione é di 1/8384 di giro oppure 360°/8384 = 0,0429° oppure 2,57' Per posizionare il motore Ti serve un ponte H e il controllo dell' encoder. Devi programmare una curva di decelerazione (frenata) per non andare oltre il punto di arrivo da te voluto.

Non so che forza debba avere il otore ma la cosa é molto piú facilmente da realizzare con un motore passo passo.

Descrivici cosa devi fare col motore.

Ciao Uwe

Ciao Uwe e grazie per la tua risposta, provo a chiarire meglio

uwefed:
Descrivici cosa devi fare col motore.

Voglio creare un meccanismo a biella, come quello dei treni a vapore, ma che lavori al contrario, la ruota, su cui sarà applicato il motore, trasmetterà il moto alla biella per spingere degli oggetti.
Se chiamiamo il punto di partenza 0°, fino a circa 90° lo sforzo sarà minimo (sposto solo la biella e lo spintore = 2hg) da quì in poi, sino ai 180° incontrerò anche l'oggetto da spostare (2hg) mentre il ritorno a 359° sarà nuovamente a vuoto (sposto solo biella e spintore). Se fosse possibile creare rampe, l'ideale sarebbe:
Accelerazione da 0÷80% tra 0°÷90°
Accelerazione da 80÷100% tra 90°÷270°
Decelerazione da 100%÷30% circa tra 270°÷0°
Il fatto di ruotare una volta a destra e l'altra a sinistra lo facevo solamente per cercare di recuperare eventuali errori di ritorno agli 0° di partenza.

uwefed:
Un motore in corrente continua come quello non ha coppia quando non viene alimentato.

Ho capito, tu dici che da posizione 0° potrebbe muoversi e non ci sarebbe nulla che controlla se si è spostato e se al prossimo ciclo partirà da +7° o da -5° giusto? ...in realtà non DOVREBBE essere un problema ... però vedo che consigli un "passo passo" quindi potrei valutarlo certamente.

uwefed:
La precisione di lettura posizione é di 1/8384 di giro oppure 360°/8384 = 0,0429° oppure 2,57'

La precisione mi sembrerebbe ottima, ma la paura degli accumuli di errori mi spinge, se il motore passo passo garantisce una maggiore precisione (immagino potrò dire 100passi a dx e poi 100passi a sx vero?) e un minimo di coppia anche da fermo sui 0° a passare proprio al passo passo ... solo che su Robotstore non trovo nulla (anche per capire i prezzi), sapresti suggerirmi qualche link utile?

uwefed:
Per posizionare il motore Ti serve un ponte H e il controllo dell' encoder.

Per il discorso encoder, mi sembra che il passo passo non ne abbia bisogno, o sbaglio?
Per il ponte H ... :frowning: mi spiegherai cos'è vero?

uwefed:
Devi programmare una curva di decelerazione (frenata) per non andare oltre il punto di arrivo da te voluto.

... eee tu avrai la pazienza di spiegarmi "passo passo" come fare tutto quanto detto sopra? :smiley:

uwefed:
Non so che forza debba avere il motore ma la cosa é molto piú facilmente da realizzare con un motore passo passo.

In realtà dovrei aver bisogno di pochi kg/mt (intorno a 0,15÷0,20kg/mt) ma non sapendo ancora valutare gli attriti e le inerzie, vorrei poter valutare una tabella di motori con diverse coppie per scegliere il rapporto prezzo/prestazioni migliore.

Spero di essere stato esaustivo e di non essermi dilungato troppo, resto in attesa del vostro aiuto e dei vostri commenti e ovviamente a disposizione per altri chiarimenti.

A presto e grazie!
:slight_smile:

Tu hai bisogno di guglielmo :grin:
quando passerà è inizierà a spiegarti le cose vedrai come è paziente :grin:

Ciao Madwriter, per come la vedo io, ho bisogno di tutti non solo di guglielmo :stuck_out_tongue:
Tu ad esempio, puoi/vuoi darmi una mano per procedere nella giusta direzione?

Madwriter:
Tu hai bisogno di guglielmo :grin:
quando passerà è inizierà a spiegarti le cose vedrai come è paziente :grin:

Grazie e a presto
:slight_smile:

Va bene , allora uno stepper(ovvero un motore passo a passo) può essere controllato e mosso in base ai passi del motore(ma và :grin: , volevo scriverlo un pò meglio ma il significato si capisce :grin:).
I stepper hanno bisogno di un integrato per essere controllati, in base alla potenza dello stepper quest'integrato cambia, abbiamo vari driver per ora dovrebbe bastare un ULN2003.
Vedo che a te non serve molta potenza quindi ti consiglio questo:
http://www.ebay.com/itm/5V-Stepper-Motor-28BYJ-48-With-Drive-Test-Module-Board-ULN2003-5-Line-4-Phase-D1-/221349638342?pt=LH_DefaultDomain_0&hash=item33897770c6
Almeno per iniziare è molto economico, per pilotarlo:

Scusa Madwriter, ma quello stepper non mi sembra abbastanza "in salute" per generare 0,15-0,20 Kg/m di coppia o mi sbaglio? forse sarebbe più indicato un Nema 23 ( 3Nm, ovvero 0,3058 Kg/m) vedere qui: Motori passo passo NEMA 23

Ovviamente se venisse usato un par di pulegge di diametro diverso e cinghia dentata si potrebbe aumentare la coppia trasmissibile a scapito della velocità ma a favore della precisione, lo stepper sulla baia ha 64 steps/giro, ipotizzando che usassimo un rapporto di demoltiplicazione di 10:1 avremmo 640 passi per compiere un giro della biella ma anche 10 volte la coppia originale del motore (qualche dubbio lo avrei sulla rigidità dei supporti del motore però).

Visto che muovi un pezzo con una biella non c'é problema se il motore fermo nella posizione di inizi non ha forza perché quel punto coincide con la posizion in basso della biella.

Indipendentemente se usi un Dc o un stepper hai bisogno di un sensore di zero che Ti segnala la posizione di partenza. Sia un stepper che un encoder Ti danno la posizione relativa alla partenza e non assoluta.

Vedendo la meccanica anche un motore DC puó andare meglio. Con un sensore di zero del tipo interuttore finecorsa, optocoppler a forchetta, sensore magnetico o contatto reed puoi determinare con precisione la posizione 0° e percui non é necessario invertire la direzione. Questo semplifica molto il circuito di pilotaggio del motore DC e lo riduce a un MOSFET. l'encoder lo usi per determinare la posizione e percui la velocitá PWM di pilotaggio.

Ciao Uwe

Ciao, rieccomi ...

Madwriter:
Va bene , allora uno stepper(ovvero un motore passo a passo) può essere controllato e mosso in base ai passi...
I stepper hanno bisogno di un integrato ... abbiamo vari driver per ora ... ULN2003.
Vedo che a te non serve molta potenza quindi ti consiglio questo:
http://www.ebay.com/itm/5V-Stepper-Motor-28BYJ-48-With-Drive-Test-Module-Board-ULN2003-5-Line-4-Phase-D1-/221349638342?pt=LH_DefaultDomain_0&hash=item33897770c6 ... per pilotarlo:
Stepper - Arduino Reference

Ho aspettato a rispondere perchè volevo controllare se nella mia scatola "Arduino Starter Kit in Italiano" ci fosse per caso :stuck_out_tongue: uno stepperino (avrei fatto le prove con quello prima di comprare quello "buono") invece no, ho solo un motorino (CC/DC vuol dire la stessa cosa vero?) e un servo da 180° (che potrebbe fare avanti e indietro in simulazione, ma poi la potenza non andrebbe bene e dovrei ripartire alla ricerca ... no, non và bene).
Ho guardato il tuo link ed ho avuto la stessa sensazione di hiperformance71 ...

hiperformance71:
Scusa Madwriter, ma quello stepper non mi sembra abbastanza "in salute" per generare 0,15-0,20 Kg/m di coppia o mi sbaglio?

La coppia non è indicata, ma viste le dimensioni direi che non potrà dare alte prestazioni... (io già sono in profonda difficoltà con questo progetto, se ho la fortuna di essere seguito da ragazzi come voi che mi danno una ... o meglio almeno due mani, voglio approfittarne ed arrivare subito alla soluzione finale, evitando il più possibile prove diverse).

Il mio intento ora è:

  • capire quale motore mi serve
  • capire e raccogliere il software/hardware che mi serve
  • capire come unire il tutto con Arduino
    e quindi comprare motore, hardware e collegare il tutto sicuro che funzioni al 100% (o quasi)
    (diversamente rischierei di stancarvi a forza di domande stupide o banali senza approdare a nulla)

hiperformance71:
forse sarebbe più indicato un Nema 23 ( 3Nm, ovvero 0,3058 Kg/m) vedere qui: Motori passo passo NEMA 23

bello, la coppia c'è, manca l'indicazione di prezzo (e questo mi spaventa :sweat_smile:)
io scrivendo "motori passo passo" avevo trovato questo http://www.emmeshop.it/product.php?id_product=1265 (noto solo ora che si chiamano uguali...) che ha un prezzo OK! E poi avevo trovato questo controller http://www.robotstore.it/product/496/A4988-Stepper-Motor-Driver-Black-Ed.-Scheda-Controllo-Motori-Passo-Passo.html (ovviamente trovati, ma senza sapere se possono andarmi bene...)

hiperformance71:
Ovviamente se venisse usato un par di pulegge ...

Questo lo escludo per evitare di complicare-appesantire-aumentare i giochi del sistema.

uwefed:
Visto che muovi un pezzo con una biella non c'é problema se il motore fermo nella posizione di inizio..

Esatto, è stato fatto apposta :smiley:

uwefed:
Indipendentemente se usi un Dc o un stepper hai bisogno di un sensore di zero ... Sia un stepper che un encoder Ti danno la posizione relativa alla partenza e non assoluta.

:frowning: ah ... mi sembra d'aver capito che lo step fosse più preciso...
vediamo se ho capito, tu dici lo step è preciso, ma se quando è spento (perdona la semplificazione) qualcuno lo muove, quando verrà riacceso, lui sarà sempre preciso ma partendo da posizione sbagliata compirà un ciclo sbagliato... è così? :frowning:

uwefed:
Con un sensore di zero del tipo interuttore finecorsa, optocoppler a forchetta, sensore magnetico o contatto reed puoi determinare con precisione la posizione 0° e percui non é necessario invertire la direzione.

Ok, inversione eliminata! :smiley:
Mi dai qualche link per poter scegliere il sensore che meglio si adatta al mio caso? Ho cercato in giro ma trovo solo roba gigantesca ... :frowning:

uwefed:
Questo semplifica molto il circuito di pilotaggio del motore DC e lo riduce a un MOSFET. l'encoder lo usi per determinare la posizione e per cui la velocitá PWM di pilotaggio.
Ciao Uwe

... se non ho capito male, l'encoder in questo caso mi serve per gestire le rape di accelerazione e decelerazione giusto?

Avendo necessità di circa 0,2kg/mt = 20kg/cm = 200N/cm a 60giri al minuto con encoder, scarto questi

Allora, ricapitolando mi servirà:

  • Arduino (ce l'ho)
  • Alimentatore per Arduino (manca)
  • Scatola per Arduino (manca)
  • Portatile o PC su cui far girare un software che dovrà mandare ad Arduino un impulso per ogni ciclo di motore (poi spero mi direte come e dove mandare l'impulso verso Arduino) (ce l'ho)
  • sensore di zero tipo interruttore finecorsa, optocoppler a forchetta, sensore magnetico, contatto reed, ... (manca - in attesa di link)
  • Motore/motoriduttore (scelto, se non si trova qlc di più potente)

... dopodichè cosa manca ancora (ponte H, Motor Controller, software per Arduino, integrati, driver, mosfet, PWM di pilotaggio, ...) per potermi mettere nelle condizioni di avere un quadro generale chiaro e poter INIZIARE a capire i vostri suggerimenti?

vediamo se ho capito, tu dici lo step è preciso, ma se quando è spento (perdona la semplificazione) qualcuno lo muove, quando verrà riacceso, lui sarà sempre preciso ma partendo da posizione sbagliata compirà un ciclo sbagliato... è così? smiley-sad

Giusto. Ma vale anche per un motore DC con encoder incremantativo.

se non ho capito male, l'encoder in questo caso mi serve per gestire le rape di accelerazione e decelerazione giusto?

Giusto!

Nel elenco manca l' alimentatore per il motore e il MOSFET.
Arduino potrebbe essere alimentato dal PC. Se collegato alla USB puoi mandare comandi dal PC tramite la seriale.

Adesso non ho tempo per controllare i link indicati per il motore. lo faccio con calma piú tardi.

Ciao Uwe

Ciao, il motore da te indicato penso potrebbe funzionare a patto che la coppia erogata ti sia sufficiente, ha una riduzione interna (infatti è un motoriduttore) e questo significa che l'encoder sviluppa 64 impulsi a giro del motore e che l'asse del motoriduttore compie 8384 conteggi a giro (asse, il motore ne fa circa 131 volte di più). Non so però, quanto sia difficile gestire i dati dell'encoder, di sicuro mendiante l'uso di interrupt sarebbe da preferire su ogni altro metodo di rilevamento, ma bisogna considerare la cadenza di questi impulsi in base alla pesantezza/lentezza del resto del codice, in linea di massima, se il riduttore compie 80 RPM vuol dire che fa: 80 / 60 sec = 1.333 giri/sec che moltiplicato per gli 8384 impulsi a giro rilevati dall'encoder, fanno circa: 11178 impulsi /sec ovvero una freq. di 11,18 KHz Non è poco se non si sa gestire bene la cosa, ne sto imparando un pò sul tema, ma è fattibile, arduino ce la può fare, l'importante è che tutto il resto sia efficiente, senza uso di funzioni troppo pesanti, lente o bloccanti (come delay() per esempio). Da una parte, credo che uno stepper come il Nema 23 indicato in precedenza ed un bel sensore/switch di fine corda o di "0°" sarebbe più semplice credo, ma parlo da profano, ho studiato solo superficialmente come funzionano gli stepper e fatto pratica solo con quelli unipolari, ovvero quelli che possono funzionare con un ULN2003, mentre quelli bipolari richiedono di un L298N se non ricordo male, ma per un Nema 23 non saprei, è un bel servo, lo usano per automatizzare le frese/torni CNC fatti in casa, anche da fermo ci vuole un bel po di forza per farlo ruotare, quindi l'idea di mettervi un sensore di finecorsa garantirebbe il controllo della precisione all'accensione, del resto, come fanno ancora oggi tante stampanti all'accensione o i motorini dell'accelleratore elettronico delle macchine a benzina o il motorino del minimo anche, all'accensione del quadro, portano/forzano il motore in posizione chiusura per essere sicuri sia dove deve essere. Che io sappia, uno stepper non richiederebbe di algoritmo di accelerazione e rallentamento o mi sbaglio? (il motore DC invece ha molta inerzia e quindi poco freno, mentre un passo passo, si frena quasi al momento, salvo elevata inerzia del carico sa spostare). Unica ragione che vedo (sempre parlando da profano) nel dargli una rampa di accelerazione è per tenere sotto controllo la corrente di picco (gli ampere assorbiti al momento di partire in 4a!!) se fatto troppo brusco, l'assorbimento potrebbe essere troppo elevato, mentre con una rampa di accelerazione sarebbe più graduale la salita di corrente richiesta dal motore. Ma potrebbe non essere un problema, i controller per questi motori sono ben dimensionati e dai video visti in rete, non si direbbe che siano proprio lenti!!

Nel link che ti ho dato non vi sono i prezzi, ma tieni presente che il "Nema 23" è più un formato di flangia e caratteristiche meccaniche che un modello di una ditta o l'altra, infatti basta che metti in ricerca Nema 23 e trovi infinità di offerte e da quanto ricordo, i prezzi possono andare da da circa 20-25 euro ad oltre 50 euro c/u, ma attenzione alle caratteristiche tecniche perchè come detto, il Nema 23 è solo un formato di misura di flangia, ho riscontrato diverse coppie dichiarate, e quindi bisogna ricercare quella che fa al caso, in mancanza di modelli economici nel formato 23, si potrebbe optare per i modelli maggiori come il Nema 34, di sicuro sarebbe all'altezza, anche con modelli economici.

Ciao ragazzi, vedo che diventa difficoltoso (per le mie capacità), riuscire a fare il punto e trarne soluzioni pratiche,
fortunatamente ho trovato vicino a casa un ingegnere appassionato che mi darà una mano a partire :smiley:

Volevo ringraziarvi per il tempo dedicatomi e per gli utili consigli,
rimango sempre interessato ad eventuali vs altri link riguardo motori/motoriduttori con coppie simili a quelle che mi necessitano.