Driver Motore Passo Passo

Salve, ho acquistato Arduino Mega per gestire il driver NJU39610 in accoppiata con NJM3772.
Qualcuno di voi ha idea di come gestire (attraverso le uscite di Arduino) i pin D0..D7, A0, A1, WR, CS del driver NJU39610?

Grazie.

ciao ivano18

puoi usare un 74hc595 per poter dare i dati D7 fino a D7 e A1,A2, WR e CS lo connetti direttamente a delle uscite digitali.

Ok; l' hai giá comprato e con un DAC puoi fare 128 valori differenti di corrente per il motore ma non tutti sono sensati. vedi per esempio pag 13 e 14 di http://www.pololu.com/file/download/a4983_DMOS_microstepping_driver_with_translator.pdf?file_id=0J199 ) Devi comunque programmare una forma quasi sinusoidale per avere 2 uscite con corrente sinusoidale sfasate di 90 gradi.
Per usare (come segnato a pagina 11 del datasheet che puoi scaricare qui: NJU39610 Datasheet pdf - MicroStepping Motor Controller with Dual DAC - New Japan Radio) puoi anche usare un contatore e un Prom dove sono programmai i singoli livelli della corrente.

Ti consiglio di lasciare quei 2 integrati e di usare il Easydrive 4.2

http://www.watterott.com/en/EasyDriver-V4-Stepper-Motor-Driver
oppure il Stepper Driver della Pololu
http://www.watterott.com/en/Pololu-A4983-Stepper-Motor-Driver-Carrier

Il primo fa 1/8 microstepping e da fino a 750mA e il secondo 1/16 e fino a 2 A.
Come pilotaggio serve solo 2 pin: direzione e step.

Devi considerare che perché funzioni il microstepping deve limitare la corrente il driver e non il motore. Per questo ti serve una tensione abbastanza alta ( tra 24 e 30V) e un motore con una resistenza di avolgimento bassa ( sotto i 10 ohm)
Su tutte 2 le schede puoi impostare la corrente del motore.

Ciao Uwe

Ciao Uwefed,
ti prego correggimi se sbaglio.

Acquisto il componente A4983, e sostituisco NJU39610 + NJM3772.

Il motore che devo controllare è un HY 200 2220 0100 AX 08
(Pilotaggio: bip. chop. par., 1,5 A/F, Resistenza di Fase 5 Ohm).

Con le uscite di Arduino Mega:
1)Seleziono la risoluzione degli step, con tre uscite su MS1, MS2, MS3;
2)Enable e Reset su due uscite a 5V;
3)Con due uscite su STEP e DIR muovo il motore;

Precisamente, se alzo e poi abbasso l'uscita collegata su STEP, il motore effettua uno spostamento (1.8 gradi nel mio caso)?
Se è così, per quanti ms devo tenere alzata l'uscita prima di abbassarla?

Cosa mi consigli per una precisione maggiore tra Full-Half-Quarter-Eighth-Sixteenth step?

Grazie. :wink:
Ivano

ciao ivano18
Non Ti correggo, Ti rispondo.

Si la schedina proposta sostituisce la coppia NJU39610 + NJM3772 e componenti esterni.
Se non sei ferrato nel produrre schedine mulitayer comprati la schedina perché il componente é microscopico ( 5x5mm con i piedini sotto.) Giá la schedina é piccola 2x1,5cm. Esiste anche una versione con 2 stabilizzatori v e 3,3V.

I microstep servono per avere piú risoluzione. Con un 1/16 microstep hai con un motore da 1,8 gradi 3200 passi per 360 gradi.
Il motore é meno rumoroso perché la differenza di tnsione per ogni micro-passo é minore.

Una volta deciso la risoluzione dei passi non serve che cambi percui MS1,MS2 e MS3 puoi metterli direttamenete su 5V o massa.

Il motorino fa un passo all passaggio L-H del segnale step. L' angolo di rotazione dipende dal motore e dai microstep selezionati. ( da 1,8 gradi a 0,1125 gradi nel Tuo caso.)
Per i tempi vedi pag 6 : http://www.allegromicro.com/en/Products/Part_Numbers/4983/4983.pdf
Il step deve avere minimo 1µ secondo high e le entrate MS e dir devono essere validi 0,2µsecondi prima e dopo il passagio Low-High.

Io userei il motore in bipolare paralello come descritto in:
http://www.astelweb.com/download/pdf/prodotti/motoripp/H200/HY%20200%202220.pdf
Cosí hai 2A e una resistenza di 2,5Ohm. È da vedere se ti bastano 12 V o hai bisogno di 24V.
Niente paura il A4983 limita la corrente e deve farlo per poter fare i microstep.

Non so cosa consigliati come selezione dei Microstep; devi spiegare cosa vuoi fare col motore.

Ciaouwe

Grazie per l'interessamento che stai mostrando, sei molto preciso e dettagliato.

Appena letto il tuo primo messaggio ho ordinato il DRIVER MINIATURA PER MOTORI PASSO-PASSO BIPOLARI - Cod. 7300-A4983 su Futura Elettronica (dovrebbe arrivarmi Martedì).

Posso predisporre la scheda per avere l'alimentatore da 24 Vdc.
1)Le performance del motore aumentano?
2)Devo regolare il potenziometro sulla schedina? Con quale logica? A cosa serve?
Il mio obiettivo è muovere con delle cinghie un carrello a scorrimento su guida lineare Bosch.

Attendo (come fossi un innamorato ;D) i tuoi messaggi di replica!
Ciao.

P.s. Mi chiamo Ivano, ho 29 anni, sono Ingegnere Elettronico, di Pescara. Ho tante passioni (troppe!!), e come si dice di solito......."chi fa troppo, non fa niente" .....! :slight_smile:

ciao ivano18

  1. il motore fa piú passi e é piú silenzionso e vibra di meno.
  2. col potenziometro devi regolare la corrente massima.
    Ciao Uwe

Ciao,
vediamo se ho chiaro il concetto:
associo le seguenti uscite di Arduino e faccio le seguenti operazioni:

//Imposto i valori fissi
OUT1=MS1=Low
OUT2=MS2=Low
OUT3=MS3=Low
OUT4=Enable=High
OUT5=Reset=High

//specifico la direzione
attendo 200ns;
OUT6=DIR=High;
attendo 1000ns;
OUT6=DIR=Low;
attendo 200ns;

//effettuo il passo
OUT7=STEP=High;
attendo 1000ns;
OUT7=STEP=Low;
attendo 1000ns;

1)Avendo scelto Full Step, se ripeto l'ultimo blocco per altre 199 volte ho fatto completare un giro di 360 gradi al motore?
2)La logica e' corretta?
3)Con il linguaggio di programmazione di Arduino, riesco ad attendere per 200ns (meno di un microsecondo)?

Grazie.

ciao ivano18
no; i tempi che ti avevo nominato erano tempi minimi.

Il dir lo metti LOW o HIGH e lo lasci finche non cambi direzione.

  1. abbastanza
  2. No, ma non Ti serve. Il motore non reggerá quella velocitá.

Devi sceglier la velocitá del motore a seconda del uso che fai.
diciamo che vuoi fare 400 passi al minuto.
Allora Ti calcoli il tempo per ogni passo 60 secondi/400 passi= 0,15 secondi
Dividi il tempo per 2 e ottieni il ritardo.
E adesso ogni 75 milisecondi cambi stato del pin dei passi.
//effettuo il passo
OUT7=STEP=High;
attendo 75ms;
OUT7=STEP=Low;
attendo 75ms;

Ciao Uwe

Ok, ho capito.

1)Quindi, in riferimento all'esempio che hai fatto, il motore farebbe un giro completo di 360 gradi in mezzo minuto?

2)E' meglio se aggiungo gli 8 diodi veloci a massa e a Vmm, alle 4 uscite dell'A4983, verso il motore, come di solito si fa per assorbire i picchi di corrente?

3)La mia idea è quella di separare l'alimentazione della scheda Arduino e del A4983, dall'alimentazione del motore: il primo sfruttando un alimentatore da 12Vdc, ed in cascata uno stabilizzatore per portare la tensione a 5Vdc, con una corrente erogabile di circa 500 mA, il secondo sfruttando un alimentatore da 24 Vdc e 5A di corrente. Ti sembra una buona idea?

4)Se voglio gestire insieme due motori (stesse caratteristiche), uno per lo spostamento x, l'altro per lo spostamento y, devo acquistare un altro A4983 e gestirlo in parallelo con altre 7 uscite di Arduino?

5)Se volessi essere 6 volte più veloce, (giro completo in 5s) facendo 2400 passi al minuto, avrei 60/2400=0,025 s. Poi 0,025/2=0,0125 s.

Effettuo il passo ogni 12,5 ms:
//effettuo il passo
OUT7=STEP=High;
attendo 12,5ms;
OUT7=STEP=Low;
attendo 12,5ms;

Il motore ce la farebbe? Da cosa vedrei che non ce la fa?

Grazie. :wink:

ciao ivano18

Ti consiglio di non sceglier full step, ma almeno half o quarter Step.

  1. sí.
  2. Non serve, sono integrati e c'é anche una modalitá durante certi momenti del pilotaggio dove intervengono anche i transistori.
  3. Buona idea; non serve uno stabilizzatore ma puoi usare il connettore di alimentazione nero. Se devi coprare un alimentatore a posta é preferibile uno da 9V.
  4. sí, un a4983 per motore. come detto, quasi tutte le entrate del Stepper driver Pololu non necessitano di modifiche ma seconda le tue scelte le colleghi in modo permanente a High o ripettivament Low.
    Rest da pilotare solo DIR, STEP e se vuoi in certi momenti non alimentare i Motori SLP
    Allora Ti bastano 2 o 3 uscite del Arduino.
  5. sí, ma considera le caratteristiche del Tuo motore e le particolaritá dei motori passo passo. Hanno una velocitá massima sopra la quale si bloccano senza nessun preavviso e devi fermarli per farli ripartire.
    Devi anche prevedere una rampa di acelerazione e di frenata.
    In linea di massima la coppia massima che li fa bloccare dipende dai giri e diminuisce con i giri alti.

Ciao Uwe

Buongiorno.
Mi hanno consegnato la scheda A4983.
Per evitare di fare danni, avrei bisogno di sapere:

1)che tensione devo fornire al pin Vref?

2)Su FuturaNet: Il portale per makers ed elettronica by Futura Group ricercando A4983, appare l'immagine che descrive i pin della scheda. Ci sono diversi pin di alimentazione (GND, 5V, VDD, 3.3V, GND e poi in basso a destra VDD, GND). Quali devo alimentare con l'alimentatore da 5 o 9 Vdc? Che differenze hanno?

3)L'uscita di Arduino la posso collegare direttamente all'ingresso di tale scheda o inserisco una Resistenza? Che valore?

4)Riguardo Arduino Mega, invece, se è collegata al Pc tramite cavo Usb, devo comunque collegare il Jack di alimentazione (7-12V)?

Grazie. :wink:

uwefed ci sei?
Mi hai consigliato una soluzione e poi mi hai abbandonato? :frowning:

scusami; Ti rispondo con calma domani
Ciao Uwe

Ciao Ivano

Che motore passo passo hai? Mi basta sapere la corrente e la resistenza del avvolgimanto.

  1. Vref é la tensione per regolare la limitazione della corrente del motore.
    Sulla schedina hai un potenziometro per questo. Non devi collegare niente su quel pin.

Questo é necessario se vuoi usare microsteps perché in quel caso il a4983 deve regolare la corrente per i due avvolgimenti del motore in modo pa poter dare per esempio 1/4 della corrente ad un avvolgimento e 3/4 al altro per posizionarlo ad un quarto tra i 2 passi interi.
C'é una spiegazione quá: Pololu - A4983 Stepper Motor Driver Carrier with Voltage Regulators È lo stesso che vende la Futura Elettronica.

  1. Il a4983 ha 2 alimentazioni; quella per far funzionare la logica (sono 3,3 o 5V) e quella per i motori (fino 35V)
    Sul pin VDD puoi alimentare la schedina con 5V o 3,3V (a secondo la tensione di alimentazione del Arduino)
    Oppure con i stabilizzatori presente sulla schedina puoi alimentare con i 2 ponticelli la schedina con 5V o 3,3V
    Vmot é la tensione con cui vengono alimentate i motori e il stabilizzatore 5V della schedina.
    Non so se per il motore ti bastano i 9V.

  2. si, direttamente

  3. no, prende l' alimentazione dalla USB, devi collegare le masse (Arduino e alimentatore che alimenta la schedina del motore). Quando vuoi fare andare l' arduino senza PC in quel casi sí. é indifferente se alimenti con 9V sulla presa nera o con 5V dal pin 5V.

Ciao Uwe

Ciao,
grazie ancora per la disponibilità che stai mostrando. :wink:

Il motore è HY 200 2220 0100 AX08.
Il link è lo stesso che mi inviasti tu:
http://www.astelweb.com/download/pdf/prodotti/motoripp/H200/HY%20200%202220.pdf

Da come leggo Corrente di Fase Nominale = 1 A
Resistenza di Fase = 5 Ohm

Occorre sfruttare la formula ITripMAX = VREF / ( 8 * RS) per la regolazione del potenziometro? In che modo devo utilizzare il Tester per farlo?
Attendo una tua spiegazione.
Grazie.