MECCANICA e DINTORNI
http://meccanicaedintorni.morpel.it/phpbb/

motorizzazione asse X con arduino per fresa
http://meccanicaedintorni.morpel.it/phpbb/viewtopic.php?f=16&t=29762
Pagina 6 di 8

Autore:  sbinf74 [ ven nov 19, 2021 21:48 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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:
Allegato:
libreria_usata.GIF

Autore:  raunarde [ sab nov 20, 2021 14:34 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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.

Autore:  raunarde [ lun nov 22, 2021 11:17 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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/32974104519.html?spm=a2g0o.detail.1000014.11.a6473a85VLz5zV&gps-id=pcDetailBottomMoreOtherSeller&scm=1007.33416.213724.0&scm_id=1007.33416.213724.0&scm-url=1007.33416.213724.0&pvid=9e1f884f-115a-48a1-9db6-70dd84aa59a7&_t=gps-id:pcDetailBottomMoreOtherSeller,scm-url:1007.33416.213724.0,pvid:9e1f884f-115a-48a1-9db6-70dd84aa59a7,tpp_buckets:668%232846%238108%231977&&pdp_ext_f=%7B%22sku_id%22:%2266661695653%22,%22sceneId%22:%2223416%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

Autore:  raunarde [ lun nov 22, 2021 12:49 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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.

Autore:  raunarde [ lun nov 22, 2021 13:26 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

https://www.aliexpress.com/item/1005003212787515.html?spm=a2g0o.productlist.0.0.34511501xcAWEa&algo_pvid=d756e273-c015-4769-9593-9507f36cd468&algo_exp_id=d756e273-c015-4769-9593-9507f36cd468-0&pdp_ext_f=%7B%22sku_id%22%3A%2212000024687220782%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++

Autore:  raunarde [ mer nov 24, 2021 09:12 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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?

Autore:  sbinf74 [ mer nov 24, 2021 09:42 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

Ho aggiornato lo sketch riscarica il file dal post precedente.

Autore:  sbinf74 [ mer nov 24, 2021 10:48 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

Ho preso il COMMUTATORE ROTATIVO a 4 posizioni 3 vie cosi posso fare la matrice XYZ.

Autore:  sbinf74 [ gio nov 25, 2021 11:25 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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

Autore:  raunarde [ gio nov 25, 2021 15:19 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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

bravo ragazzo!

Autore:  raunarde [ lun nov 29, 2021 20:19 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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.

Autore:  sbinf74 [ lun nov 29, 2021 22:20 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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.

Allegato:
1638219518437.jpg

Allegato:
1638219518458.jpg

Allegato:
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.
Allegato:
joy_pwm_2004.zip

Autore:  raunarde [ mar nov 30, 2021 01:58 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

bel lavoro!!! Bravo , pulito ed ordinato.

Autore:  raunarde [ mar nov 30, 2021 03:11 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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

Autore:  sbinf74 [ mar nov 30, 2021 13:54 ]
Oggetto del messaggio:  Re: motorizzazione asse X con arduino per fresa

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:
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:
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;
}
}

Pagina 6 di 8 Tutti gli orari sono UTC +1 ora
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/