motorizzazione asse X con arduino per fresa

Moderatore: Junior Admin

sbinf74
TORNITORE E FRESATORE
Messaggi: 1349
Iscritto il: ven nov 21, 2008 14:34
Località: Roma

Re: motorizzazione asse X con arduino per fresa

Messaggio da sbinf74 »

Sul remote ci metto Hold, Dir e switch xy/z (devo aggiungere un tasto) il resto sull'altro quadruccio.

Intanto ti metto il codice che ho aggiornato finora.

Devo aggiungere altri tre tasti per Enable/lock

Libreria display usata:
libreria_usata.GIF
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Ultima modifica di sbinf74 il mer nov 24, 2021 09:41, modificato 3 volte in totale.
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

quindi se uso un cavo ethernet per il collegamento ci sto giusto giusto a meno di usare anche la calza come massa e guadagno un filo in più.

sono 5 per i controlli più i pulsanti che sono 3 riferiti a massa o al +, devo vedere ancora bene il tuo sketch.

vado di connettore rj45 femmina alla scatola ed alla parte del display cos' posso staccare i cavi quando voglio.

appena ho tempo provo a caricare il tuo prog e vediamo.
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

sbinf74 ha scritto: Se trovo un commutatore rotativo per il lock X-Y-XY-Z potrei inserire l'enable nei tasti delle coordinate.
https://www.aliexpress.com/item/3297410 ... 3416%22%7D


con questo puoi fare tranquillamente una matrice di commutazione

così puoi scegliere quali pin mettere a massa per abilitare gli assi:
_______ X _|_ Y _|_ Z _|_ X-Y
Asse X | on | off | off | on
Asse Y | off | on | off | on
Asse Z | off | off | on | off
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

in merito a quanto ho scritto 2 messaggi fa ho sbagliato se metti 3 fili per abilitare gli assi servono più fili per il controllo remoto, invece se fai con pressione pulsante allora basta il cavo ethernet.

poi se aggiungi led per identificazioni di selezioni a questo punto passo a doppio cavo di rete oppure ad un cavo telefonico da 10cp o 20cp.
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

https://www.aliexpress.com/item/1005003 ... 0782%22%7Dcome display è bello anche questo, non lo conoscevo, ma porta via un po' di pin, ma sul mega ce ne sono a sufficienza

è un display che usano sulle stampanti 3d da 128x64 pixel. come dimensioni sono 72mm come un 2004 e di altezza 39.

Ho scoperto ora che esistono anche i display 4004... sto scoprendo un mondo nuovo, resta il problema di imparare a programmare arduino meglio in C++
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

Sbinf, dopo aver studiato per bene il tuo prog ed avendo oggi un po' di tempo libero stavo provando a caricare su arduino mega il tuo prog.
non mi trovo con le librerie di liquidcristal_i2c che hai usato. ho provato con quella che utilizzavi per l'ELS ma non va. Utilizzando quella di Arduino mi genera sempre lo stesso errore nella riga : LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // Set the LCD I2C address
se la modifico come hai fatto sull ELS con LiquidCrystal_I2C lcd(0x27,20,4); // Set the LCD I2C address questo lo accetta ma si ferma nel Void Setup alla riga lcd.setbacklightPin(3,POSITIVE); se rimuovo i campi tra parentesi lasciandogli () la riga successiva genera errore lcd.setBacklight(HIGH);
A questo punto credo ci sia di base un errore nelle librerie che ho caricato e non so quale tu stia usando.

puoi darmi info aggiuntive?
sbinf74
TORNITORE E FRESATORE
Messaggi: 1349
Iscritto il: ven nov 21, 2008 14:34
Località: Roma

Re: motorizzazione asse X con arduino per fresa

Messaggio da sbinf74 »

Ho aggiornato lo sketch riscarica il file dal post precedente.
sbinf74
TORNITORE E FRESATORE
Messaggi: 1349
Iscritto il: ven nov 21, 2008 14:34
Località: Roma

Re: motorizzazione asse X con arduino per fresa

Messaggio da sbinf74 »

Ho preso il COMMUTATORE ROTATIVO a 4 posizioni 3 vie cosi posso fare la matrice XYZ.
sbinf74
TORNITORE E FRESATORE
Messaggi: 1349
Iscritto il: ven nov 21, 2008 14:34
Località: Roma

Re: motorizzazione asse X con arduino per fresa

Messaggio da sbinf74 »

E' arrivato il commutatore rotativo, ho intenzione di metterlo direttamente sulla scatola del joy.
A questo punto elimino il tasto che faceva lo switch xy/z e uso due ingressi su arduino (gli ultimi due fili del cavo :mrgreen: ) per fare una matrice binaria 2x4

X=00
Y=01
XY=10
Z=11
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

ah bè si è vero con lo stato dei pin scegli cosa far fare.

bravo ragazzo!
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

Sbinf, stavo riguardando il tuo sketch, mancano i finecorsa. li devi ancora implementare o scelta tua di non metterli?

comunque complimenti bel giocattolino hai fatto.
sbinf74
TORNITORE E FRESATORE
Messaggi: 1349
Iscritto il: ven nov 21, 2008 14:34
Località: Roma

Re: motorizzazione asse X con arduino per fresa

Messaggio da sbinf74 »

No non intengo implementare i finecorsa.

Visto che anche l'occhio vuole la sua parte ecco il maquillage che ho fatto ai box dell'elettronica.
1638219518437.jpg
1638219518458.jpg
1638219518476.jpg
E ho quasi terminato il cablaggio interno .....lo so non è il massimo ma è quello che sono riuscito a fare. Utilizzo un cavo elettrico rigido che si inserisce in maniera salda nei pin di arduino e ho riportato i contatti sui morsetti a vite.

Il programma l'ho ulteriormente modificato implementando l'enable dei vari drive.
joy_pwm_2004.zip
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

bel lavoro!!! Bravo , pulito ed ordinato.
raunarde
SON PASSATO AI TRAPANINI
Messaggi: 114
Iscritto il: lun nov 04, 2019 12:49
Località: tra i laghi zona Varese

Re: motorizzazione asse X con arduino per fresa

Messaggio da raunarde »

ti segnalo un errore di digitazione poi ripetutto con ctrl+C e ctrl+v
riga 207 ISR (TIMER1_COMPA_vect) // rountine di interrupt del Timer1 - usata per incrementare i passi stepper e tenere traccia della posizone

leggendo da neofita il tuo codice non vedo dove hai inserito l'avanzamento in mm per ogni giro di vite in pratica il passo vite che sicuramente il tuo con viti a ricircolo saranno diversi dal mio con viti trapezoidali standard.


dalla riga 724 come mai tutti i case hanno sempre lo stesso valore? (maxSpeed/6)*mapAxis*(speedscale/100.00) non dovrebbe essere differenti per ogni case? e come mai il case 6 è vuoto?

switch (mapAxis) {
case 1:
speedAxis=minSpeed;
break;
case 2:
speedAxis=(maxSpeed/6)*mapAxis*(speedscale/100.00);
break;
case 3:
speedAxis=(maxSpeed/6)*mapAxis*(speedscale/100.00);
break;
case 4:
speedAxis=(maxSpeed/6)*mapAxis*(speedscale/100.00);
break;
case 5:
speedAxis=(maxSpeed/6)*mapAxis*(speedscale/100.00);
break;
case 6:
case 7:
speedAxis=(maxSpeed/6)*mapAxis*(speedscale/100.00);
break;
default:
speedAxis=minSpeed;
break;
}


diciamo che ragionandoci sopra vedo che il parametro "speedscale" ti cambia ad ogni "case" nel "void Multi", solo che hai una cosa che non capisco: case 1 dove poi hai un ulteriore switch ma il valore ai case 100,80,60 ed ai successivi case chi glieli da?

scusami se ti tartasso ma è per capire. quindi se tu premi il tasto multi, prima hai un opzione case 1 dove posso scegliere la velocità da 100 a step di 20 per ridurla, se premo un'altra volta passo alla velocità con step di riduzione 10 poi altra pressione step di 5 e poi di 1 o è un decremento logaritmico?
poi però hai ancora altri case sul primo switch dove in uno hai la max velocità e nell'altro una molto bassa (5) giusto?

Grazie e scusami ancora per la rottura di scatole
sbinf74
TORNITORE E FRESATORE
Messaggi: 1349
Iscritto il: ven nov 21, 2008 14:34
Località: Roma

Re: motorizzazione asse X con arduino per fresa

Messaggio da sbinf74 »

Effettivamente quel pezzo di codice non ha più ragione di esistere.

Inizialmente facevo il mapAxis sul range totale dei valori dell'asse del joy da 0 a 1023 quindi avevo bisogno del case perchè la situazione di riposo era nel centro e le velocità dipendevano dal suo scostamento.
Poi ho deciso di "normalizzare la lettura" quindi a prescindere dal lato faccio in modo che il mapping ritorni sempre un numero da 0 a 7 numero che ho utilizzato per parzializzare la velocità.

Ho dovuto gestire il comportamento del potenziometro che su un lato mi arrivava a 7 e sull'altro si fermava a 6 pertanto trovavi quello che definivi Case "vuoto" che è semplicemente una OR con il successivo.

Comunque il codice l'ho modificato così

Codice: Seleziona tutto

int Joy(long val, int Axis)
{
long mapAxis;
int speedAxis;

//PER DARE STABILITA' AL JOY QUANDO E' PROSSIMO AL CENTRO
if (val <500 || val >524)
 {

  if (val <=512)
   {
    mapAxis = map(val, 0, 512, 7, 0);
    Direction[Axis] = CW;
   }
  else
  {
    mapAxis = map(val+4, 513, 1023, 0, 7);
    Direction[Axis] = CCW;
  }

if (mapAxis==7) mapAxis=6;

speedAxis=(maxSpeed/6)*mapAxis*(speedscale/100.00);
 
}
else
{
  speedAxis = minSpeed;
}
  
return speedAxis;
}

La riduzione della velocità rispetto a quanto indicato dal joy la fa questa funzione che è richiemata dal rispettivo tasto e che prevede delle "scorciatoie" a seconda di come premi il tasto
btnX.attachClick(Multi, 1);
btnX.attachDoubleClick(Multi, 2);
btnX.attachLongPressStop(Multi, 3);

La riduzione della velocità diventa sempre più fine al raggiungimento delle percentuale minima


Codice: Seleziona tutto

void Multi(int Option)
{
 beepON(1);
 old_speedscale=speedscale;
 switch (Option) {
 case 1:
    switch (speedscale) {
    case 100:
    case 80:
    case 60:
      speedscale=speedscale - 20;
    break;
    case 40:
    case 30:
    case 20:
      speedscale=speedscale - 10;
    break;
    case 10:
      speedscale=speedscale - 5;
    break;
    case 5:
    case 4:
    case 3:
    case 2:
      speedscale=speedscale - 1;
    break;
    default:
      speedscale=100;
    break;
    }
    delay(100);
 break;
 case 2:
    speedscale=100;
    delay(300);
 break;
 case 3:
   speedscale=5;
    delay(300);
 break;
}
}
Rispondi

Torna a “Elettronica ed elettrotecnica”