ELS (Electronic Lead Screw) - 2.0

Moderatore: Junior Admin

Avatar utente
McMax
CAPO OFFICINA
Messaggi: 9016
Iscritto il: dom gen 31, 2010 21:46
Località: Bussero (MI)

Re: ELS (Electronic Lead Screw) - 2.0

Messaggio da McMax »

Mi vengono in mente varie ragioni ed é bene escluderle tutte:
1- Encoder che perde passi o male impostato. Verifica che la posizione angolare sia precisa: segna un riferimento sul mandrino e fai girare a mano per parecchi giri e controlla che l'index corrisponda in modo preciso.
2 - offset non sufficiente a compensare il gioco della vite. Quanti passi stepper hai messo come offset ?
3 - slittamento accoppiamenti meccanici. Che tipo di accoppiamenti stai usando tra mandrino ed encoder e tra stepper e vite? Devono essere cinghie sincrone o ruote dentate (meglio le prime) e tutte le pulegge/ruote devono avere la chiavetta o comunque un sistema che non permetta lo slittamento delle pulegge sugli alberi
4 - la torretta portautensili é ben bloccata? Controlla che non ruoti.... a volte si muove di pochissimo sotto lo sforzo di taglio e se si sposta l'utensile in filettatura perdi l'index (questa é banale lo so ma meglio verificare :risatina:)
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età
Avatar utente
robyt
APPRENDISTA E ADDETTO ALLE PULIZIE
Messaggi: 21
Iscritto il: mar gen 02, 2018 17:32
Località: Casorezzo (MI)

Re: ELS (Electronic Lead Screw) - 2.0

Messaggio da robyt »

Ciao a tutti,

ho realizzato una versione modificata dell' ELS 1.82 perché mi interessava poter andare più velocemente nelle fase di ritorno in filettatura.
Poiché la versione 1.9 non funziona e per la 2.0 credo bisognerà attendere ancora un po' ho pensato di prendere dalla 1.9 la funzione "StepperMoveToPosition" e integrarla con qualche modifica nella 1.82.
Per recuperare un po' di memoria ho rimosso tutto ciò che riguardava la scatola Norton che a me non serve e credo anche a molti dei frequentatori del Forum.

La versione che ho realizzato contiene le modifiche fatte da Sbinf74 per l'utilizzo del display i2c e gira su Arduino Nano quindi per l'assegnazione dei pin bisogna fare riferimento alla sua versione.

Le modifiche che ho fatto io sono le seguenti:

- Nel menu filettatura sostituito SEL+RESET con RESET
- Attivata funzione per abilitare/disabilitare il motore stepper
- Rimosse tutte le istruzioni di gestione scatola NORTON per recuperare un po' di memoria
- Sostituita la funzione "StepperMoveToPosition" con quella della versione 1.9 per aumentare la velocità di ritorno in filettatura
- Rimosse alcune variabili non usate e aggiunti beep e delay qua e la
- Aggiunta nel menu impostazioni la possibilità di disabilitare il buzzer o variarne il tono
- Nel menu Principale se premuti RESET ed ESC contemporaneamente vado al menu Impostazioni
- Aggiunta gestione coefficiente correttivo RPM per compensare l'errore di millis() nelle routines di calcolo degli RPM
(quest'ultima modifica non è "scientifica", è puramente estetica, ma consente di ottenere un valore un po' più vicino agli RPM reali)

La sto provando da qualche giorno e sembra funzionare bene.

Se qualcuno la volesse provare può scaricarla qui:
ELS_v1.8_I2C_N.zip
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
pacio74
APPRENDISTA E ADDETTO ALLE PULIZIE
Messaggi: 16
Iscritto il: gio set 06, 2018 09:47
Località: umbertide (PG)

Re: ELS (Electronic Lead Screw) - 2.0

Messaggio da pacio74 »

McMax ha scritto: lun dic 01, 2025 22:01 Mi vengono in mente varie ragioni ed é bene escluderle tutte:
1- Encoder che perde passi o male impostato. Verifica che la posizione angolare sia precisa: segna un riferimento sul mandrino e fai girare a mano per parecchi giri e controlla che l'index corrisponda in modo preciso.
2 - offset non sufficiente a compensare il gioco della vite. Quanti passi stepper hai messo come offset ?
3 - slittamento accoppiamenti meccanici. Che tipo di accoppiamenti stai usando tra mandrino ed encoder e tra stepper e vite? Devono essere cinghie sincrone o ruote dentate (meglio le prime) e tutte le pulegge/ruote devono avere la chiavetta o comunque un sistema che non permetta lo slittamento delle pulegge sugli alberi
4 - la torretta portautensili é ben bloccata? Controlla che non ruoti.... a volte si muove di pochissimo sotto lo sforzo di taglio e se si sposta l'utensile in filettatura perdi l'index (questa é banale lo so ma meglio verificare :risatina:)
Ho fatto diversi test, il problema e che Arduino non tiene in memoria i passi encoder, nel setting imposto 800 avendo un encoder da 200 ma quando esco dal setting rientrando mi trovo encoder settato a 1000.
Ho sospeso da qualche giorno per impegni , appena ho un'ora libera voglio provare a dargli in pasto una versione con valori EPROM già impostati di default.
E voglio apportare modifiche al rapporto di trasmissione step per vite, ho usato tutte cinghie sincrone GT2 per l'endoder e GT5 per lo stepper, ma voglio ridurre il rapporto stepper vite 1/1 per poter aumentare il passo filetto.
meipei
TRA NON MOLTO PASSO AL TORNIO
Messaggi: 291
Iscritto il: ven lug 28, 2017 16:41
Località: Avezzano

Re: ELS (Electronic Lead Screw) - 2.0

Messaggio da meipei »

Ciao Robyt, ho provato la tua versione.
Penso che sarebbe meglio aprire un nuovo post a riguardo e lasciare questo per le finalità chiaramente espresse da McMax all'inizio.
Avatar utente
robyt
APPRENDISTA E ADDETTO ALLE PULIZIE
Messaggi: 21
Iscritto il: mar gen 02, 2018 17:32
Località: Casorezzo (MI)

Re: ELS (Electronic Lead Screw) - 2.0

Messaggio da robyt »

Ciao meipei,
prima di pubblicare la mia versione mi sono consultato con McMax che non ha avuto nulla da obiettare.
Se comunque si ritenesse più opportuno spostare il messaggio in un nuovo post non ho nulla in contrario e qualche moderatore potrebbe provvedere.
Dici di aver provato la versione, hai trovato qualche problema ?
meipei
TRA NON MOLTO PASSO AL TORNIO
Messaggi: 291
Iscritto il: ven lug 28, 2017 16:41
Località: Avezzano

Re: ELS (Electronic Lead Screw) - 2.0

Messaggio da meipei »

Ciao Robyt,
grazie di aver rimesso mano a questo progetto, rimasto purtroppo orfano di aggiornamenti da un po' di tempo, permettimi un ringraziamento d'obbligo a McMax per aver condiviso il suo lavoro gratuitamente e aver reso disponibile il codice.

Ho provato diverse versioni apparse sul forum, ma sempre a banco, simulando il mandrino con un motorino alimentato a parte e calettato all'encoder, ho il tornio BV25 (con inverter), ma non essendo totalmente convinto dal funzionamento in avanzamento, non l'ho ancora implementato sullo stesso, in attesa di quella versione definitiva che mi avrebbe fatto abbandonare gli ingranaggi, "abbandonare" non del tutto visto che il BV25 ha quel disconnettore della vite madre che la stacca dalla cascata di ingranaggi, per cui in caso di implementazione metterei il motore stepper sul moncone della vite madre alla fine del bancale e facendo convivere i due sistemi.
Non avendo le conoscenze di programmazione per modificare in maniera così profonda il programma di McMax, sono rimasto alla finestra, in attesa di ulteriori aggiornamenti.

Grazie al tuo lavoro di modifica, con questa versione vengono risolti diversi aspetti che, a almeno io, attendevo da tempo: la rimozione dei riferimenti alla scatola Norton che semplicemente non ho, l'attuazione dell'enable del driver che spegnesse il motore quando non si è in menu operativi, nonché la pagina di impostazioni rimossa dal menu principale, tanto una volta settato il sistema non serve più entrarci.

Veniamo al dubbio, non mi ha mai soddisfatto nel menù avanzamento la funzione di "fotografare" il numero di giri e poi dato lo start se si ferma il motore, il carro continua imperterrito nella sua corsa con disappunto dell'utensile, o se durante la passata si cambia il numero di giri il passo resta quello iniziale, si deve stoppare e far ripartire, nonché se si da lo start a motore fermo essendo i giri a zero resta tutto fermo.

Comprendo che le risorse di Arduino non permettono, alle normali velocità di esecuzione di una passata, di star dietro al segnale generato dall'encoder, a tal proposito si potrebbero adottare delle soluzioni hardware tipo: prelevare il segnale generato da un sensore hall sulla puleggia dell'encoder con quattro magnetini e switchare il segnale tra encoder e sensore hall con delle porte logiche, oppure mettere un paio di divisori x 10 (7490) in cascata e ottenere una divisione x100, con un encoder da 400 passi ottenere 4 impulsi a giro ed eseguire il medesimo switch, sono consapevole che ciò renderebbe la realizzazione non proprio adatta a tutti, ma questa è la mia idea, ovviamente le relative modifiche al software sono oltre la mia portata.
Altra modifica che avevo invano cercato di implementare è un potenziometro (letto e rimappato) con cui, in avanzamento, regolare il passo in anticipo ancor prima di dare lo start e che restava tale anche uscendo e rientrando dalla funzione.

Avevo fatto delle insignificanti modifiche in passato e ho fatto anche alla tua versione, usando un joystick singolo mi sono accorto che comunque lo si ruota uno degli assi lavora al contrario, e a meno di tagliare piste sul cs e ricollegarlo diversamente, non se ne esce, cosi per le funzioni di incremento/decremento dei valori in Y, che aumenta inclinando verso il basso il joystick, ho sostituito con :
#define YUPDN 1023
if ((YUPDN - (analogRead(ANALOG_Y)) <= LOW_TOL) ovvero con in suo complemento a 1023 in modo da ribaltare il funzionamento in Y del joystick.

Saluti.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Rispondi

Torna a “Elettronica ed elettrotecnica”