[Progetto in corso] Stepper per foto panoramiche e timelapse

Intro:
Tempo fa ho comprato un aggeggio che vantava la possibilità di fare dei bei timelapse con effetto rotazione (al posto del solito dolly che si muove in linea retta):
MUVI X-Lapse
Con mia amara sorpresa, mi sono reso subito conto che altro non è che un normalissimo timer a carica da cucina ! praticamente ha solo di più la vite per la macchina fotografica!
Onestamente mi aspettavo qualche possibilità in più, così invece il prodotto è molto limitante:

  • non è possibile decidere la durata slegata alla rotazione
  • la durata max è di un'ora
  • non è possibile scegliere un verso

Morale della favola: l'ho distrutto.

Il progetto:
L'idea è quindi di creare qualcosa che rispetti le aspettative iniziali, rimuovendo quindi i difetti del prodotto comprato.
E' venuto spontaneo l'idea di utilizzare uno stepper per poter avere la libertà di rotazione, direzione e velocità.
Per il "prodotto finito" ho ancora le idee un po' vaghe, pensavo di farlo configurabile via bluetooth anzichè con display, in modo da configurarlo da cellulare, è vero che questo da una limitazione, ma anche il vantaggio che la configurazione dovrebbe essere più intuitiva e pratica.

Materiali:
(la lista è temporanea, corrispondente allo stato attuale dello sviluppo)

  • arduino uno
  • batteria piombo 12v 1.2A
  • easy driver
  • Stepper 6v 0.8A di recupero (cod: PK244-02A-C58)

Lo stato attuale
dopo varie ricerche ho trovato un buon punto di riferimento il codice trovato su questo tutorial:
http://bildr.org/2011/06/easydriver/
Ho quindi creato un programmino di prova.
In questo caso fa una rotazione completa in mezz'ora (ma basta cambiare le variabili per settare durata e rotazione):

//////////////////////////////////////////////////////////////////
// Rotary TimeLapse Test 
// by Lorenzo Boasso
// Reference project: http://bildr.org/2011/06/easydriver/
/////////////////////////////////////////////////////////////////
#define DIR_PIN 8
#define STEP_PIN 9

unsigned long time;
long currentPos = 0;
long finalPos;
long finalTime;

void setup() { 
  
  Serial.begin(9600);
  
  time = millis();
   
  pinMode(DIR_PIN, OUTPUT); 
  pinMode(STEP_PIN, OUTPUT); 
  
  finalPos = 1600;
  finalTime = (millis() / 1000) + (60 * 30);
  
  Serial.print("Partito - ");
  Serial.print(millis() / 1000);
  Serial.print(" - ");
  Serial.println( finalTime);
  
} 

void loop(){ 
  checkStep();
}

void checkStep(){
  long currTime = (millis()/1000);
  Serial.print("-CURRTIME: ");
  Serial.println(currTime);
  if (currentPos < finalPos){
    int tempStep = (finalPos * currTime) / finalTime;  
    Serial.print("-TEMP: ");
    Serial.println(tempStep);
  
    if (tempStep > currentPos){
      rotate(tempStep - currentPos, 0.2);
      currentPos = tempStep;
    }
  }else{
    Serial.print("Finito");
  }
  
  delay(1000);
  
}

void rotate(int steps, float speed){ 
  //rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement)
  //speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
  int dir = (steps > 0)? HIGH:LOW;
  steps = abs(steps);

  digitalWrite(DIR_PIN,dir); 

  float usDelay = (1/speed) * 70;

  for(int i=0; i < steps; i++){ 
    digitalWrite(STEP_PIN, HIGH); 
    delayMicroseconds(usDelay); 

    digitalWrite(STEP_PIN, LOW); 
    delayMicroseconds(usDelay); 
  } 
}

Differentemente dal codice di riferimento ho cercato di fare in modo che il codice non sia bloccato finchè la rotazione non si completa.
Dovrei studiarmi la funzione rotate() in modo da integrarla maggiormente col codice e le mie necessità.

Al momento ho però un dubbio.
Dopo aver fatto il test di funzionamento per mezz'ora, ho notato che lo stepper era molto caldo, è normale?
Io pensavo di avere casi in cui il funzionamento potrebbe essere anche di qualche ora, c'è rischio che si bruci?

È normale che il motore diventi molto caldo.
un motore per 6V con accumulatore 12 V puoi pilotarlo col Easydriver solo in Full-step mode non in microstep-Mode. Per questo Ti servirebbe una tensione di alimentazione piú alta.
Ciao Uwe

uwefed:
È normale che il motore diventi molto caldo.
un motore per 6V con accumulatore 12 V puoi pilotarlo col Easydriver sollo in Full-step mode non in microstep-Mode. Per questo Ti servirebbe una tensione di alimentazione piú alta.
Ciao Uwe

quindi comunque posso star tranquillo così?

avevo letto di un bellissimo progetto (per di più anche fatto) di un dolly che non solo faceva ciò che gli dicevi ma potevi portarlo tu a mano e lui salvava il movimento, poi cliccavi un tasto e tornava nella posizione iniziale, quindi faceva tutto lui (aveva pure il suo telecomando per la programmazione!).

in pratica usava degli encoder rotativi per determinare di quanto muoversi.

come cosa era geniale, se ritrovo il progetto te lo linko.

superlol:
avevo letto di un bellissimo progetto (per di più anche fatto) di un dolly che non solo faceva ciò che gli dicevi ma potevi portarlo tu a mano e lui salvava il movimento, poi cliccavi un tasto e tornava nella posizione iniziale, quindi faceva tutto lui (aveva pure il suo telecomando per la programmazione!).

in pratica usava degli encoder rotativi per determinare di quanto muoversi.

come cosa era geniale, se ritrovo il progetto te lo linko.

Interessante, grazie!

ciao a tutti sono nuovo del forum
se mi è possibile vorrei fare qualche domanda .. io volevo fare lo steso progetto . guardando qua e la ho scoperto ed acquistato una Adafruit Motor/Stepper/Servo Shield for Arduino..
ed un arduino 2009
pensavo di prendere l'esempio di un dolly lineare e trasformarlo per foto in timelapse a 365°
solo che non riesco ad installare le librerie.
mi da errore il programma , spero di non essere completamente off.topic dato che il progetto che abbiamo è simile ho pensato che magari potessi aiutarmi .
vi ringrazio in anticipo

andreglo:
ciao a tutti sono nuovo del forum
se mi è possibile vorrei fare qualche domanda .. io volevo fare lo steso progetto . guardando qua e la ho scoperto ed acquistato una Adafruit Motor/Stepper/Servo Shield for Arduino..
ed un arduino 2009
pensavo di prendere l'esempio di un dolly lineare e trasformarlo per foto in timelapse a 365°
solo che non riesco ad installare le librerie.
mi da errore il programma , spero di non essere completamente off.topic dato che il progetto che abbiamo è simile ho pensato che magari potessi aiutarmi .
vi ringrazio in anticipo

sei riuscito a far qualcosa? non è che le librerie che hai scaricato sono incompatibili con l'arduino IDE che hai utilizzato?