Ciclo 270 gradi CW and 270 gradi CCW

Salve mi presento.
Mi chiamo Ettore ho 56 anni e sono alle prime armi con un progetto Arduino, ma mi sa che questa volta sto chiedendo troppo a me medesimo... :smiley:

Negli anni passati ho lavorato ad un simulatore di volo che utilizzava il C++, ma oramai sono passati parecchi anni e dovrei ripassare la programmazione abbastanza simile ad Arduino.

Passiamo a ciò che sto realizzando
Devo automatizzare una pressa che richiede una forza di circa 60nm.
Ho già acquistato un motore passo passo da 8,7nm ed un riduttore abbinato 10/1 che porta le forze in gioco a ciò che mi è necessario.

Devo scrivere un codice che all'avvio (con un semplice pulsante) controlli per prima cosa un fine corsa iniziale ed uno finale per conoscere il campo di lavoro in passi prestabiliti, quindi dopo la pressione di un pulsante di start deve incominciare il ciclo, controllare durante il ciclo continuamente la posizione di 6 microswitch on off, o magari che ognuno con un valore resistivo, in modo che diano informazione del loro valore su un solo canale analogico per interrompere il processo in qualunque momento ed avvisare con un relativo messaggio la mancanza di un componente del processo.

Cosa fondamentale visto le forze in gioco, sia lo start che lo stop di ogni ciclo deve essere progressivo con accelerazione e decelerazione fino allo stop prima dell'inversione di rotazione.
Ho pensato di usare la libreria AccellStepper 1.57.1.

Mi vedo in alto mare... Qualcuno sa dove posso reperire una bozza di skretch sul quale lavorare?

Uso Arduino UNO, Motore 86HBS85, Driver HBS860H.

Ciao ... prima che te lo chieda un mod ... stiamo parlando di una tua realizzazione a livello di "prototipo", giusto ? ... perche' le vigenti normative vietano di modificare macchinari o attrezzature commerciali, industriali e civili, o che poi vengano comunque adibite a tale uso, per cui se si tratta di fare modifiche ad una macchina esistente, purtroppo per legge non possiamo dare informazioni in merito ...

Se invece si trattasse di un prototipo che stai costruendoti da zero, probabilmente si, ma dovranno comunque decidere i mod in base a quello che vuoi farci, sicurezze, eccetera, perche' lo stesso principio si estende anche alle apparecchiature potenzialmente pericolose ... :wink:

**>BuckRogers: ** REGOLAMENTO, punto 15, ed in particolare il punto 15.4 ... quindi spiega BENE cosa intendi fare, grazie.

Guglielmo

Etemenanki:
Ciao ... prima che te lo chieda un mod ... stiamo parlando di una tua realizzazione a livello di "prototipo", giusto ? ... perche' le vigenti normative vietano di modificare macchinari o attrezzature commerciali, industriali e civili, o che poi vengano comunque adibite a tale uso, per cui se si tratta di fare modifiche ad una macchina esistente, purtroppo per legge non possiamo dare informazioni in merito ...

Se invece si trattasse di un prototipo che stai costruendoti da zero, probabilmente si, ma dovranno comunque decidere i mod in base a quello che vuoi farci, sicurezze, eccetera, perche' lo stesso principio si estende anche alle apparecchiature potenzialmente pericolose ... :wink:

Ovviamente si tratta di un prototipo casalingo ad uso personale, non sarebbe mia intenzione entrare nel campo industriale!

gpb01:
>BuckRogers: REGOLAMENTO, punto 15, ed in particolare il punto 15.4 ... quindi spiega BENE cosa intendi fare, grazie.

Guglielmo

Si Guglielmo credo, essendo un prototipo casalingo sul quale mi sto cimentando, di non violare entrambe le regolamentazioni 15 e 15.4. Poi, se voi non ritenete convincente ciò che sto dichiarando, mi dispiace molto e per non creare problemi al forum toglierò il post.

Grazie

Ok, se si tratta di un tuo prototipo casalingo, sino a quando non si riscontrano 'intrinseche pricolosità' per chi, senza esperienza, volesse provare a fare la stessa cosa, non c'è problema :slight_smile:

Guglielmo

Allora per ora ho scritto queste riche di codice ricavate da alcuni esempi ed il motore parte da solo e fa i gradi di cui ho bisogno. Ora vorrei abilitare 3 interruttori:
Uno per lo start
uno per lo stop
un'altro per interromper il processo e fare alcuni step indietro

un altro problema è che dovrei configurare due fine corsa (microswitch) ed il motore dovrebbe all'avvio memorizzare le due posizioni senza superarle ed agire in quel campo di step.

Un piccolo aiuto?

poi correggo io i valori in base alle mie esigenze. Non ho capito ancora dove inserire le istruzioni.

 //Inclusion of libraries
#include <AccelStepper.h>
#include <Bounce2.h>


// Define a stepper and the pins it will use
// Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
AccelStepper stepper; 

const int pinBtnStart   = 6;
const int pinBtnStop    = 7;
const int pinBtnDietro  = 8;
const int pinEnable     = 9;

int buttonState = 0;         // variable for reading the pushbutton status

void setup(){ 
 
// initialize the pushbutton pin as an input:
  pinMode(pinBtnStart, INPUT);
  
// Change these to suit your stepper if you want
  stepper.setMaxSpeed     (10000);
  stepper.setAcceleration (7000);
  stepper.moveTo          (8000);
  
} 
void loop(){


 // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
   
  
// If at the end of travel go to the other end
    if (stepper.distanceToGo() == 0)
      stepper.moveTo(-stepper.currentPosition());
    stepper.run();}
    

}
}

Motore_avanti_e_indietro_con_accelerazione.ino (1.36 KB)

Quanto mi è dispiaciuto apprendere mio malgrado, che forse questo mio progetto non intriga nessuno. Ho visto che da quando ho pubblicato questa piccola richiesta di aiuto rivolta a chi di sicuro ne sa più di me, ho ricevuto solo tante richieste di precisazioni, e correzioni che ho provveduto celermente a correggere, ma nessun argomento costruttivo. Speravo di non dovermi rivolgere come sempre nell'universo dell'inglese, ma come purtroppo mi sono reso conto, vista la grande disponibilità che ho ricevuto nella sezione Software generale, sono costretto ad abbandonare questa discussione qui nella sezione italiana. Grazie comunque della vostra disponibilità.