Camera crane

Ciao a tutti ragazzi, volevo auto-costruire un camera crane cioè una specie di gru per eseguire delle riprese video.
All'estremità di questa mi piacerebbe aggiungere un gimbal auto-costruito con due assi con due motori passo passo che mi piacerebbe comandare con due joistyck con potenziometro che muovendoli avanti e indietro cambio la direzione e la velocità del motore, nella posizione centrale del joistick il motore dovrebbe essere fermo.
So già utilizzare i motori passo passo con pulsanti per la direzione e potenziometro per la velocità, per il resto non saprei proprio come scrivere il programma avete qualche consiglio o sketch simile??
Che scheda per il controllo dei motori mi consigliate? Adafruit??
Grazie in anticipo a tutti.

Ti invitiamo NUOVAMENTE a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Ciao nid69ita,
Sono da tempo iscritto al forum, mi ero già presentato e avevo già letto il regolamento.
Aggiungo al messaggio di prima che possiedo arduino uno e mega
Hai qualche consiglio da darmi relativo al progetto?
Grazie

mi piacerebbe aggiungere un gimbal auto-costruito con due assi con due motori passo passo che mi piacerebbe comandare con due joistyck con potenziometro

Ma vuoi costruire un Gimbal o un movimento Pan-Tilt ?
E comunque, nel secondo caso, il driver dipende dai motori che hai

Io pensavo di fare pan e tilt comandati da due joistyck
Come motori credo che vadano bene i Nema23 ( consiglatemi nel caso altri modelli)
I motori dovranno muovere la reflex + obbiettivo + microfono per un totale di 5/6 kg

Più che altro ( perchè Nema 23 vuol dire solo la misura dell'attacco flangia ) servirebbe uno stepper con riduttore di giri ( Gearbox )

Brunello:
Più che altro ( perchè Nema 23 vuol dire solo la misura dell’attacco flangia ) servirebbe uno stepper con riduttore di giri ( Gearbox )

aaaa ok non lo sapevo pensavo che variasse anche la potenza.
i motori con gearbox passo passo costano una follia perciò stavo pensando di crearlo io con una puleggia più piccola sul motore e una di dimensione maggiore sull’asse del tilt e del pan, collegate con una cinghia dentata.
che ne pensi, può andare bene??
conosci qualche tutorial o esempio su come controllare i motori come descritto nel primo post?
grazie mille in anticipo per i consigli.

Ciao Marco, sto facendo una cosa simile a quello che ti serve, anche se invece di 2 motori pp ne devo controllare 8 e con un solo potenziometro o meglio un joystick cannibalizzato da un vecchio radiocomando per modellismo, selezionando di volta in volta i motori che devo muovere, se vuoi ti allego il codice di come ho realizzato la gestione del joy e di come piloto i motori pp.

Ciao -zen-
Mi farebbe molto comodo avere uno spunto da cui partire, se ti va di caricare lo sketch farà sicuramente comodo a me per imparare di più e magari ad altri utenti.
Una sola curiosità che motori e che driver utilizzi??
Grazie di tutto

-zen-
Se hai bisogno dei joystick e non vuoi smembrare il radiocomando potresti pensare a comprare questo:
Senza potenziometro http://www.futurashop.it/joystick-arcade-4-assi-pulsante-7300-joystickarcade
Con potenziometro
http://m.ebay.it/itm/4-axis-Joystick-Potentiometer-JH-D400X-R2-5K-4D-with-Button-Joystick-/262432039046?hash=item3d1a2b2086%3Ag%3AdWMAAOSwcL5XMv6W&_trkparms=pageci%3Aac2ad493-0777-11e7-8c40-74dbd1808065%7Cparentrq%3Ac4c052c915a0a6a8c2038ffdfff6c67a%7Ciid%3A2

Altrimenti ci sono i soli potenziometri lineari

Io sinceramente prenderei il secondo almeno fai un lavoro più pulito e preciso, poi è solo un consiglio sono pur sempre opinioni personali

Ciao Marco,
per il joystick ti ringrazio per i link, ma visto che avevo questo vecchio radiocomando che non usavo più perché spendere preziosi euro :wink:

Come motori uso dei piccoli pp recuperati da stampanti e fotocopiatrici vari, in pratica non ce ne sono due che sono uguali, essendo tutti piccoli come controller uso questo

Ho modificato il mio programma per la gestione di un singolo motore, eliminando un bel po’ di codice, non ho avuto modo di provarlo in quanto modificando anche i nomi delle variabili non mi andava di modificare proprio tutto, il codice è un po’ in sintesi nel senso che ho tolto tutta la parte di dichiarazione delle variabili e setup che sicuramente non avrai problemi a fare, tengo a precisare inoltre che anche io sono agli inizi con arduino, il programma funziona anche se sicuramente migliorabile :confused:

[EDIT]
dimenticavo, alcuni valori li devi modificare secondo i parametri del tuo joystick ad esempio il mio quando lo stick è in posizione neutra viene letto con un valore di 515 dall’ADC pertanto come range di intervento mi sono tenuto sui 505/520 in modo che non inizi a girare il motore come sfiori il joystick. Mentre la massima escursione in un verso o nell’altro porta ad un variazione di lettura di ±350 rispetto alla posizione neutra di 515, quindi il valore letto dal joystick va da 165 a 865.

void loop()
{
  ReadJoy();                       //legge il valore del joystick
  if (JoyValue != 0) MotorMove();  //Se il joy è stato mosso sposta i motori
  //bla bla bla
  //bla bla
  //b l a
}


void ReadJoy()
{
  JoyValue = analogRead(A8); //legge il valore del potenziometro collegato al pin A8

  if ((JoyValue < 505) || (JoyValue > 525)) //verifica se il valore letto è diverso da quello quando lo stick è in posizione centrale
  {
    if (JoyValue > 525) //se maggiore significa che il joy è stato spostato a dx
    {
      JoyDir = true; //imposta la direzione di dove è mosso lo stick
      JoyValue = 350 - (JoyValue - 525); //modifica valore in modo che dal massimo decrementi spostando lo stick all'estremo
    }
    else //se è stato spostato a sx
    {
      JoyDir = false;   //imposta la direzione di dove è mosso lo stick
      JoyValue = 350 - (505 - JoyValue) ;   //modifica valore in modo che dal massimo decrementi spostando lo stick all'estremo
    }
    JoyValue = map( JoyValue, 0, 400, 10, 6000 ); //modifica valore per adattarlo al nuovo range
    //Serial.println(JoyValue);
  }
  else
  {
    JoyValue = 0;  //se il joystick non viene mosso imposta a zero per eliminare le piccole variazioni di valori quanto lo stick è al 

centro
  }
}


void MotorMove() {
  digitalWrite(motore_enable1, 0);   //Abilita enable sul controller è abilitato quando il pin è low
  do
  {
    if (JoyDir) digitalWrite(motore_dir1, 1) else digitalWrite(motore_dir1, 0);
    digitalWrite(motore_step1, 1); //imposta il pin di step HIGH
    delayMicroseconds(JoyValue);  //attende il tempo letto con il joystick
    digitalWrite(motore_step1, 0); //imposta il pin di steb a LOW
    delayMicroseconds(JoyValue);  //attende il tempo letto con il joystick

    ReadJoy();  // legge di nuovo il valore del joystick e ripete tutto il ciclo se diverso da 0
  } while (JoyValue != 0);

  digitalWrite(motore_enable1, 1);  //se joy ritorna a zero termina il ciclo di invio step e pone enable del controller ad high
}

Grazie mille per i consigli e per lo sketch ora ci lavorerò su un po' e poi eventualmente riprenderò la discussione.
Saluti Marco Mix

Uhm ... parli di spostare una massa di 5/6Kg all'estremita' del braccio di una gru ... per quanto bilanciato possa essere il carico, avrai sempre a che fare con una massa "inerziale" piuttosto alta ... cosi al volo, i 5/6KG dell'attrezzatura, PIU i contrappesi, PIU la massa della struttura della gru, che per avere sufficente robustezza dovra' per forza essere notevole, PIU i vari motori e riduttori, e se il braccio ti serve anche estensibile, PIU il meccanismo di estensione con relativo sistema di spostamento proporzionale del contrappeso ... senza contare ovviamente un treppiede abbastanza robusto e stabile da reggere tutti i possibili movimenti e sforzi senza ondeggiare, spostarsi o piegarsi ...

Considera inoltre che gli stepper, se non pilotati in microstep, causano "saltelli" meccanici, che si possono anche trovare alla fine nella ripresa, quindi per avere una buona qualita' serviranno probabilmente motori DC o brushless di discreta potenza con feedback e demoltipliche molto buone ...

In fondo, oltre al solito "lucro da rivenditore" a parte, ci sara' un motivo se per quelli appena decenti e con il solo pan/tilt remotato (altri movimenti manuali) chiedono dai 4000 dollari in su :smiley:

Quello che voglio dire non e' che sia impossibile realizzarlo a livello amatoriale, ma che se si vuole realizzare qualcosa di decente, servira' comunque buttarci dentro un po di soldi e parecchio lavoro ... :wink:

ciao a tutti
ho scritto uno sketch di prova per un singolo motore secondo voi va bene ?

#include <Stepper.h>

const int stepsPerRevolution = 400;  // change this to fit the number of steps per revolution
// for your motor


// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;  // number of steps the motor has taken
int motorSpeed = 0;
int port = 0;
int stbd = 0;

void setup() {

Serial.begin(9600);  
// nothing to do inside the setup
}

void loop() {

// read the sensor value:
int sensorReading = analogRead(A0);

// map it to a range from 0 to 100:
 motorSpeed = map(sensorReading, 0, 1023, 0, 100);
 port = motorSpeed - 50 ; 
    
 Serial.println(port);
 
 // set the motor speed:
 if (port >0) {
    myStepper.setSpeed(port);
  
  // step 1/100 of a revolution:
  myStepper.step(-stepsPerRevolution / 100);
  delay(1);
 }
 
  if (port <0) {
   port = abs(port);
   stbd = port;
   myStepper.setSpeed(stbd);
   myStepper.step(stepsPerRevolution / 100);
   delay(1);
}
  
}

la struttura non è un problema, il fatto dei kg non si pone perché muovo solo la reflex, non devo muovere l’intera struttura.
per risolvere il problema dei piccoli scatti che potrebbero fare i motori, l’idea era di fare andare il motore ad una velocità sostenuta e metterci un riduttore in mezzo. nello sketch sopra il motore va piano perché ho provato senza riduttore

grazie in anticipo per tutti i suggerimenti

> MarcoMix: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Guglielmo