Sottomarino giallo - R.O.V

Infatti stiamo cercando di modificare quella: se non ci stiamo sbagliando vuole un numero

di step come imput.
Ora sembra che abbiamo un altro problema, a ogni motore che si aggiunge la velocità dimezza…

Io ho capito che quello che volete è dirgli “muoviti a X m/s” e che lui si aggiusti per muoversi a quella velocità, ma la libreria invece prende come input solo “muoviti a Y giri/s”. Prevedere la velocità in base ai giri è difficile, ma potete (forse) invece rilevare la velocità in tempo reale, e dire alla libreria “aumenta i giri/s finché non rilevi la velocità X m/s”.

mi sa che mi sono spiegato male, per come abbiamo fatto fin ora bisogna dargli 3 dati in imput: nunero di passi(e’ quello che ci da piu fastidio perchè vorremmo che il motore girasse di continuo dipendendo da quello che dice il joystik), una velocità max, e un accelerazione. con questi 3 imput il programma fa partire il motore , lo accelera senza che si impunti e lo rallenta fino a fermarlo.
per quento abbiamo spulciato la libreria non abbiamo trovato (ma potremmo sbagliarci) altre funzioni utili alla nostra causa, pertanto abbiamo perso un po’ di tempo a fare quelche prova rudimentale di’personalizzazione libreria (ma siamo ancora in alto mare). Per ora sappiamo che possiamo pilotare il motore singolo ad una velocità sufficente ma se ne aggiungiamo un secondo con gli stessi comandi la velocita dimezza.nel frattempo che stiamo cercando di risolvere i problemi della libreria(o nostre incapacità) ci chiedevamo se un arduino superiore (due o zero) potesse pilotare abbastanza velocemente i motori.
La cosa inizia a complicarsi ma e’ sempre piu’ interessante! :):wink:
Ci sentiamo presto e grazie per il supporto!

Puoi descrivere che funzioni della libreria stai usando? Perché sembrano due problemi diversi al momento:)

sono due problemi diversi.
ecco un esempio di codice.
qui stavamo cercando i valori massimi che potevamo avere sul motore.
con queste impostazioni (e siamo al limite ) siamo come ordine di grandezza ai 1000 rpm con un motore solo e ci andrebbe bene

int maxSpd=1950;
stepper0.setMaxSpeed(maxSpd);
stepper0.setAcceleration(10000.0);
stepper0.moveTo(1000); //steps

Questo aiuta? Dovrebbe esserci un metodo runSpeed che mantiene la velocità costante. moveTo sembrerebbe settare la posizione. Qui c’è la documentazione doxygen. A quanto pare dev’essere chiamato ad un intervallo regolare di tempo, ad esempio tipo la funzione loop() di Arduino. Questo dovrebbe risolvere il primo problema.

Forse risolve anche il problema della velocità dimezzata!

Runspeed lo avevamo gia provato ma non supporta le accelerazioni, a noi le accelerazioni servono visto che portiamo il motore al limeite come velocità e non possiamo partire da zero a palla in tempo 0 altrimenti si impunta. Mi spiego meglio:per esempio il motore tollera 1000 giri al minuto massimi ,da zero a 60 rpm e’ il massimo da cui puo’ accelerare istantaneamente quindi ci serve di aumentare gradualmente la velocità fino alla desiderata ad esempio1000 per poi tenere costante.
Sempre che non abbiamo commesso errori…

1 Mi Piace

Chiaro! Sì in effetti setSpeed non incrementa la velocità in base all’accelerazione massima impostata, ma è istantaneo.

Per adesso sembra che arduino due supporti senza problemi 4 stepper in velocità contemporaneamente.
un problema i meno. :+1:
ci sentiamo presto per altri aggiornamenti . :hugs:

2 Mi Piace