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 ) 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/ |