Arduino UNO più motor shield più stepper motor

Ciao a tutti,
spero che qualcuno mi possa aiutare col mio problema.
Ho un programma che mi consente con un Arduino UNO e un arduino Motor shield di far funzionare un motore passo-passo bipolare, che fa muovere un carrello, in modo random.
Invece vorrei che il motore andasse con una determinata sequenza. Ogni 5ms dovrebbe far girare il motore in modo da portare un carrello avanti e indietro di una certa misura (lo spazio che deve compiere deriva dai dati che vorrei inserire nel programma).
Ho circa 400 dati ogni 2 minuti da inserire e ogni dato corrisponde al numero di giri che deve compiere il motore.
Questi dati sono su excel, quindi la mia domanda è come faccio a inserire i dati da excel al mio programma e far girare il motore e quindi far spostare il carello fino a quanto dice il dato che ho su excel?
In allegato metto il programma e i dati per farvi capire meglio.
I dati da inserire sono quelli nella colonna D sotto “step”
grazie in anticipo

motor shield.ino (2.11 KB)

test.xlsx (24.5 KB)

Hai ragione scusatemi, in un secondo momento mi presenterò, adesso avrei l'esigenza di risolvere questo mio problema, siete in grado di aiutarmi ? Non sono alle prime armi con Arduino, so già utilizzare molte funzioni, ma non so come mettere dei dati che ho su excel o su sd card dentro il programma che ho mandato precedentemente in allegato.
Grazie
Gabriele

In un secondo momento Ti risponderemo. Adesso abbiamo curiositá di conoscerti.
Ciao Uwe

gabriele13:
Hai ragione scusatemi, in un secondo momento mi presenterò...

Mi sono appena presentato sul forum, adesso che l’ho fatto spero che mi possiate aiutare a risolvere il mio problema peerfavore.

Prima alcune domande
Quelle 400 righe, sono sempre le stesse o cambiano spesso ?
Se ad esempio le metti su una SD, quante volte la devi cambiare

La colonna step, visto che vedo valori in virgola mobile ( es 140,812) si riferisce agli step (passi) del motore o ai giri che deve fare ?

Il motore da quanti step/giri e' ?
Come viene pilotato, a passo intero ?

ciao grazie della risposta,
le 400 righe cambiano spesso,per adesso uso sempre i soliti valori.
I valori nella colonna step corrispondono ai giri che il motore deve fare.
Non so di preciso da quanti giri è il motore, ma sono certo che supera i 1000.
Che vuol dire viene pilotato a passo intero?

Non so di preciso da quanti giri è il motore, ma sono certo che supera i 1000.

io chiedevo quanti passi (step) deve fare il motore per fare un giro completo... 200 - 96 -48 ?

altra cosa... ma il motore deve girare solo in un senso ?

Comunque mi pare ci sia un piccolo problema.
Supponiamo che sia uno stepper standard da 200 passi giro ( 1,8°)
prima posizione- giri 140,012 che corrispondono a 28002 passi, da fare in 5ms
Corrispondono a 5.600.000 pps ( passi al secondo )
= 28.000 giri al secondo
= 1.680.000 giri al minuto

Neanche Superman....

Ciao Brunello
ho 10.000 ca. valori raccolti da una boa marina di una giornata con un escursione da 0 a 15 cm. Io devo simulare questo movimento con un motore passo applicato ad una vite senza fine, devo infine applicargli un piccolo generatore e calcolare il rendimento di un ipotetico sistema di generazione con il moto del mare.
I dati hanno un periodo di 5 millisecondi che devo mandare alla motor shield e quindi pilotare il motore passo passo orario ed antiorario: supponiamo che parto da 0 andrà a 5 cm poi scenderà e poi risalirà etc etc.
Ho un motore Lam technologies e di seguito il link

ok, ma non sono 5 mS, ma 50 mS
cambia il mondo,.........

Il periodo è ogni 5 millesecondi

a casa mia, 400 movimenti in 20 secondi fanno 5decimi, ovvero 50mS
20/400=0,05

Comunque, tornando al problema

Come passare i dati ad Arduino

  1. Aggiungere a Excel la gestione della seriale. Mi pare si possa fare con qualche Script, prova a cercare su Google "Excel e seriale"
  2. mettere i dati su SD
  3. Mettere i dati su EEprom

Punto 1) Se possibile tramite Excel, meglio, altrimenti un programmino che legga il file e trasmetta su seriale.
Su Arduino una routine di lettura da Seriale che passa i valori allo stepper

Punto2) E' un po' piu' scomoda, ma piu' semplice come gestione. Leggi i dati dal file e li passi allo stepper.
Il problema semmai sara' la lentezza nella lettura del file

Punto3) Simile al punto 2, ma piu' veloce come risposta nei tempi di esecuzione. Di contro c'e' la limitata memoria a disposizione, senza usare Eeprom esterne. Anche qui serve una routine che legga da seriale o da SD e la passi alla Eeprom

Cosa c'e' da passare ad Arduino?
Il valore assoluto ( STEP_A) della posizione dello Stepper o lo scostamento rispetto all'ultima posizione
es.

Tempo (s)	Spazio (cm)	    Step	   STEP_A	   Scostamento
0	              2,41	    140,012	   28002	
0,05	              2,41	    140,012	   28002	   0
0,1	              2,41	    140,012	   28002	   0
0,15	              2,35	    136,068	   27214	   -789
0,2	              2,30	    133,11	   26622	  - 592

Il tutto dipende da che libreria si voglia usare.

Comunque, anche se sono 50 mS, il motore non ce la puo' fare a girare a quella velocita'
ci deve essere una calcolo errato con le costanti che hai usato, non ci possono volere 3 giri per fare 5 mm
O se ci vogliono, forse e' il caso di cambiare il rapporto della vite senza fine

Vedo difficile se non impossible farlo con un motore passo passo che deve anche dare una certa potenza a d un generatore.
Questo perché la potenza e la velocitá di rotazione sono troppo alti.

Ciao Uwe

Avevate ragione, è ogni 50ms, neanche con questa variazione è possibile?