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

progetto open source per avanzamenti automatici su arduino
http://meccanicaedintorni.morpel.it/phpbb/viewtopic.php?f=27&t=14088
Pagina 27 di 30

Autore:  McMax [ lun gen 25, 2016 17:40 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

devi scusarmi ma si, io sono "duro di comprendonio"...me lo dicono in tanti.

Ora, tra i due modi che hai spiegato, mi interessa prevalentemente il numero 1. Hai fatto questo esempio:
mimoletti: "1) Abilito il divisore e scelgo divisione 8, carico nel timer valore 125, avrò un'interruzione ad ogni giro. Esce dal pause solo se la prima passata è terminata."

Facciamo che ci troviamo in modalità filettatura, che è quella che mi interessa di più, e facciamo che il tuo divisore non sia esattamente 8 ma, magari, 7,xx. Del resto, la condizione in cui il divisore non è intero è molto più frequente rispetto a quella in cui lo è....
Tu giustamente per gestire un divisore non intero esegui un calcolo ad approssimazione successiva, ovvero tieni la parte intera e aggiungi il resto decimale al valore successivo. Così facendo però i valori che carichi non sono sempre uguali e non è detto che la tua "passata" termini esattamente sull'index del mandrino. Questo tra l'altro fu il tuo motivo di orgoglio quando, tempo addietro, discutemmo sul fatto che io, avendo forzato i divisori a stare all'interno di un giro esatto del mandrino, generavo un errore che si andava a sommare su ogni filetto.
Quello che avviene è molto semplice, facciamo qualche analisi:
- se il tuo divisore fosse sempre 8 sarebbe facile; 4000 è perfettamente divisibile per 8 quindi puoi fare in modo che il conteggio termini esattamente sull'index.... attenzione, non ho detto che ci termina automaticamente, ho detto che puoi fare in modo che ci termini e vorrei capire come fai;
- Se invece il tuo divisore fosse ad esempio 7? 4000 non è divisibile per 7 questo vuol dire che la tua passata non terminerà sull'index ma, molto probabilmente, una manciata di passi prima (3) o una manciata di passi dopo (4). Questa eventulità come l'hai risolta ?
- Poi arriva la parte più probabile, ovvero quella in cui il divisore nemmeno è intero. In questo caso avrai un divisore diverso ad ogni overflow e, anche in questo caso, le probabilità che il tuo filetto termini esattamente sull'index sono davvero scarse.

Ti ripeto la domanda, come lo tieni il sincronismo del mandrino in questi casi ?

Ora passiamo agli avanzamenti.
E' chiaro che al variare della velocità di rotazione del mandrino devi variare l'avanzamento.... la differenza è che sincronizzando il tutto tu lo puoi fare mentre la passata è in corso, facendolo senza sincronizzazione devi terminare una passata.
Ma la domanda è: a che serve? Perchè variare la velocità di taglio di una passata in corso ? ..... mi pare sia una pratica non utilizzata e forse addirittura sconsigliata visto che cambia la finitura del pezzo.....
Io leggo i giri mandrino e aggiusto l'avanzamento in funzione di quelli, attendendo la fine della passata per farlo.

L'evetuale errore a cui mi riferivo nel post precedente è solo dato dal fatto che, non essendo i movimenti sincronizzati, la velocità di rotazione del pezzo cambia leggermente a vuoto o durante la passata.... ma parliamo di differenze ridicole che non pregiudicano la buona riuscita della tornitura.

Autore:  mimoletti [ mar gen 26, 2016 00:15 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Scusami, ma evidentemente mi sono spiegato malissimo, non hai capito un'H.
Dalle sette di stamani che non mi fermo un minuto, nei prossimi giorni ti spiego tutto nel dettaglio.

Autore:  mimoletti [ mar gen 26, 2016 22:05 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Nell'immagine è rappresentato ciò che accade nella mia routine di Interrupt (le frecce di colore rosso sono le interruzioni, in basso invece gli impulsi di step).

Nell'esempio il valori sono:

Encoder da 1000 impulsi a giro;
Valore di divisione: 1,5;
Timer configurato ad 8 bit

Durante la routine di divisione ciclicamente carico nel timer valore 255 e successivamente valore 254.
Questa alternanza la ottengo effettuando semplicemente una sottrazione ed una somma a 16 bit.

Invece durante la routine di Pause, con cui memorizzo la posizione angolare del mandrino, abilito il Prescaler del Timer impostando rapporto di divisione 1:8 e carico nel timer valore 125, avrò un'interrupt ogni 1000 impulsi.
Il valore che carico nel timer durante la routine di Pause, è legato alla risoluzione dell'encoder e non cambia mai, qualunque sia il valore di divisione degli impulsi.
Praticamente memorizzo la posizione angolare utilizzando una sola linea di codice.

Ovviamente passo da una routine all'altra quando delle precise condizioni sono verificate.

Spero di essere stato chiaro.

Autore:  McMax [ mer gen 27, 2016 12:09 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

quindi, se ho capito bene, durante la filettatura vera e propria usi il timer caricando il valore calcolato di volta in volta, quando arrivi alla fine della passata vai in modalità "pause" e leggi tutti i fronti di salita.

Quello che ancora continuo a non capire è come la "memorizzi" sta posizione del mandrino. Cosa intendi per "memorizzo la posizione angolare" ?
Il sistema, non avendo l'index, non ha un riferimento angolare assoluto quindi per sapere dove sei l'unico modo è contare tutti i passi o eseguire dei calcoli a ritroso per eventualmente ricostruire tutto il profilo di rotazione.
Quello che non comprendo è come tu possa "memorizzare" una posizione che di fatto, usando il timer, non tracci.

Autore:  mimoletti [ mer gen 27, 2016 21:41 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Scusami la franchezza ma sei davvero duro di comprensorio.

Come ho chiaramente specificato, quando va in pause, si evidenzia anche dal disegno (frecce di colore rosso), avrò un'interruzione ogni 1000 impulsi, cosa c'è di non chiaro in quello che ho scritto?

Autore:  McMax [ mer gen 27, 2016 22:02 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

COMPRENSORIO ?
Del Monte Bianco ?

L'unica cosa chiara in questo thread caro mimoletti l'hai appena scritta tu con questo messaggio.
Per la "franchezza".... non sei scusato.

Autore:  mimoletti [ mer gen 27, 2016 22:22 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Cosa c'è di non chiaro nella frase avrò un'interruzione ogni 1000 impulsi, accompagnata tra l'altro da un disegno esplicativo?

Come puoi scrivere ancora:

quindi, se ho capito bene, durante la filettatura vera e propria usi il timer caricando il valore calcolato di volta in volta, quando arrivi alla fine della passata vai in modalità "pause" e leggi tutti i fronti di salita.

:frusta: :frusta: :frusta:

Autore:  McMax [ mer gen 27, 2016 22:26 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

mimoletti ma tu leggi quello che scrivo ?

McMax ha scritto:
Tu giustamente per gestire un divisore non intero esegui un calcolo ad approssimazione successiva, ovvero tieni la parte intera e aggiungi il resto decimale al valore successivo. Così facendo però i valori che carichi non sono sempre uguali e non è detto che la tua "passata" termini esattamente sull'index del mandrino.


Se non capisci che questo è un problema.... è un bel problema!

Altro problema: il timer che dici di usare è a 8 bit che, a casa mia, sono 256 valori. Come fai a contare 1000 impulsi ?

Autore:  mimoletti [ mer gen 27, 2016 23:12 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Tu giustamente per gestire un divisore non intero esegui un calcolo ad approssimazione successiva, ovvero tieni la parte intera e aggiungi il resto decimale al valore successivo. Così facendo però i valori che carichi non sono sempre uguali e non è detto che la tua "passata" termini esattamente sull'index del mandrino.

Assolutamente errato la mia passata indipendentemente dal valore del divisore termina sempre esattamente sull'index del mandrino, il problema è tuo che evidentemente non riesci neanche a immaginare come abbia potuto fare.

Altro problema: il timer che dici di usare è a 8 bit che, a casa mia, sono 256 valori. Come fai a contare 1000 impulsi ?

Ma leggi quello che scrivo?
Hai una vaga idea di come funzioni la periferica Timer di un Pic?

Ho scritto:

Invece durante la routine di Pause, con cui memorizzo la posizione angolare del mandrino, abilito il Prescaler del Timer impostando rapporto di divisione 1:8 e carico nel timer valore 125, avrò un'interrupt ogni 1000 impulsi. (125 x 8 = 1000).

A me sembra, che piuttosto che cercare di capire come ho fatto, cerchi in tutti i modi di trovare falle nel mio sistema per "mettermi al muro",
con analisi fantasiose, per poi ritrattare dopo averlo scritto e ripetuto:

direi che non hai dimostrato proprio niente. Il codice è illeggibile cosí presentato e, ribadisco, troppo macchiniso (forse volevi scrivere macchinoso?). Poi per caritá, tutto si puó fare, bisogna vedere come lo si fa....
Che é impossibile non l'ho mai detto. Che é complicato e cervellotico si.... e con il tuo codice hai confermato che i miei sospetti erano fondati.

senza aver capito realmente come ho fatto.

Onestamente non mi sembra un'atteggiamento corretto il tuo, le falle nel mio sistema ci sono sicuramente ma non sono quelle che tu immagini.

Ora se ne vogliamo parlare bene, ma prima di contraddirmi cerca di capire cosa realmente faccio, altrimenti amen, la discussione può finire anche qui!

Autore:  McMax [ gio gen 28, 2016 08:19 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Direi che abbiamo un mutuo problema di comprensione.
Tu dici che fai delle cose ma non spieghi come e dai le informazioni a spizzichi e bocconi. Come fai ad essere certo che la tua passata termina sull'index? Dimostramelo matematicamente.

Quello che vorrei io é che tu pubblicassi il sorgente ma evidentemente ci sono cose che non vuoi che si vedano.....

Autore:  mimoletti [ gio gen 28, 2016 12:24 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Non c'è nessun problema di comprensione, ho risposto in modo preciso alle tue domande, solo eri troppo occupato a cercare di eseguire analisi fantasiose, per "mettermi al muro", errando puntualmente. Oppure cercando in quello che ho scritto, errori di battitura come quando ho scritto comprensorio (mi sono lasciato trarre inganno dalla parola comprensione) con comprendonio, errori ortografici prodotti dalla notevole pressione, a cui sono sottoposto in questi ultimi tempi a causa del surplus di lavoro, ed ai vari progetti a cui mi sto dedicando, irrilevanti in ogni caso ai fini del nostro ragionamento, dimostrando una mancanza di stile da parte tua.

McMax ha scritto:
Tu dici che fai delle cose ma non spieghi come e dai le informazioni a spizzichi e bocconi. Come fai ad essere certo che la tua passata termina sull'index? Dimostramelo matematicamente.


Semplicissimo, non è necessario scomodare la matematica ma solo un po di logica, che in fondo sono due facce della stessa medaglia.
Avanzo e arretro con multipli del passo, della filettatura che sto eseguendo. Non eseguo calcoli complessi ma solo un semplice conteggio.

A dispetto di quello che pensi, il mio codice è estremamente semplice e leggero. Nelle prime versioni aveva una lunghezza inferiore a 2K di programma words.

mimoletti ha scritto:
Ora passiamo agli avanzamenti.
E' chiaro che al variare della velocità di rotazione del mandrino devi variare l'avanzamento.... la differenza è che sincronizzando il tutto tu lo puoi fare mentre la passata è in corso, facendolo senza sincronizzazione devi terminare una passata.
Ma la domanda è: a che serve? Perchè variare la velocità di taglio di una passata in corso ? ..... mi pare sia una pratica non utilizzata e forse addirittura sconsigliata visto che cambia la finitura del pezzo.....
Io leggo i giri mandrino e aggiusto l'avanzamento in funzione di quelli, attendendo la fine della passata per farlo.


Evidentemente ti sfuggono le dinamiche che si sviluppano durante le operazioni di tornitura, e non riesci a capire l'importanza di avere gli avanzamenti sincronizzati:

La velocità di rotazione del mandrino deve variare in funzione del diametro, affinché la velocità periferica e quindi la velocità di taglio rimanga costante. L'avanzamento a giro invece deve rimanere costante.
Quindi non cambio la velocità di rotazione durante la passata, ma mano a mano che diminuisce il diametro del pezzo, tra una passata è quella successiva aumentandola. Ovviamente tu puoi fare lo stesso, ma di volta in volta devi calcolare la nuova velocità di avanzamento in mm/min che devi impostare, in relazione alla nuova velocità di rotazione, per mantenere l'avanzamento a giro costante. Volendo potresti risolvere automatizzando con arduino questa operazione.

Io l'ho automatizzata sincronizzando gli avanzamenti, come è giusto che sia. Lo scopo del mio progetto era quello di semplificarmi il lavoro.

A questo punto continuando a insistere sul fatto che non ti ho mostrato per interno il mio codice, ti stai arrampicando sugli specchi, il mio codice è irrilevante, quello che conta è come ho risolto i vari problemi sorti nel realizzare questa applicazione.

E soprattutto lo scopo di questa discussione, non sarebbe dovuta essere una gara a chi ha scritto il codice migliore come hai sempre inteso, ma avremmo dovuto offrire uno spunto a coloro che abbiano intenzione di sviluppare in modo autonomo, un'applicazione del genere. Evidentemente il tuo carattere ti impedisce di avere un confronto alla pari con un'altra persona. Chi mi conosce mi ritiene una persona molto paziente, ma in questo caso la mia pazienza si è esaurita. Questa è la mia opinione, giusta o sbagliata che sia, quindi personale pertanto opinabile.

Saluti Massimo.

Autore:  McMax [ gio gen 28, 2016 17:39 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Mimoletti mi spiace essere ripetitivo ma ancora una volta non hai risposto alla domanda. Hai semplicemente sparato i tuoi dogmi senza addurre alcuna dimostrazione.
L'index del mandrino è UNO solo, localizzato in un punto ben preciso. Quando esegui una filettatura usando il timer NON conti tutti gli impulsi quindi viene da sè che l'index lo puoi prendere solo quando termini un conteggio del timer. Ma se la combinazione di passi che stai caricando nel timer non è multipla dei passi totali del mandrino NON puoi terminare il conteggio esattamente sull'index.
Questo è quello che sto cercando di dirti da parecchio.
Per l'ennesima ed ultima volta ti dimostro MATEMATICAMENTE quello che dico:
- il tuo mandrino fa 4000 passi/giro
- l'index è localizzato esattamente ogni 4000 passi.
- facciamo l'esempio in cui il divisore è 7, e facciamolo semplice dicendo che è INTERO
- parti a filettare e ovviamente usi quel punto esatto come index
- 4000/7 = 571,428571. Poichè la vite non può fare frazioni di passo, ci sono due opzioni:
1- se la tua vite farà 571 passi: 571*7 = 3397. Il tuo mandrino avrà effettuato 3397 passi
2- se la tua vite farà 572 passi: 572*7 = 4004. Il tuo mandrino avrà effettuato 4004 passi

In entrambi i casi, essendo che mentre filetti usi il timer (l'hai detto tu), NON intercetti tutti i passi del mandrino ma solo l'overflow del timer che, in questo caso, è OGNI 7 passi. Questo vuol dire che la tua passata terminerà quando il madrino avrà effettuato 3397 oppure 4004 passi.
Chiaramente l'esempio è semplificato considerando che la passata termina dopo 1 solo giro del mandrino; se fossero 10 giri non cambierebbe nulla.
Ora la domanda è questa: quei 3 passi in meno (o quei 4 in più) come li compensi ?
Spero di essere stato chiaro.


Alla tua sterile polemica non ho stile adeguato per rispondere, quindi evito.

Autore:  mimoletti [ lun feb 01, 2016 22:35 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Come ti ho ripetutamente spiegato questa tua analisi fantasiosa, non è pertinente alla strategia che adotto per filettare a "misura"

Essenzialmente sono due le condizioni che devo rispettare per poter filettare a misura:

1) Ripartire esattamente dalla posizione angolare, in cui mi trovo, nell'istante in cui interrompo la routine di divisione, (vedi l'immagine allegata).

2) Arretrare il carro di multipli del passo della filettatura che sto eseguendo (al di fuori della routine di interruzione).

Non mi serve terminare il conteggio esattamente sull'index
.
E non ho nessuna necessità di compensare quei 3 passi in meno (o quei 4 in più).

E come se mentre stessi filettando, in modalità manuale, fermi il mandrino e arretri con la slitta portautensili del tornio, di multipli del passo della filettatura che stai eseguendo, per poi riprendere come faccio nei due video:

https://www.youtube.com/watch?v=ht2j_TyyDJA;

https://www.youtube.com/watch?v=Ugc3I6WV3oI

Come vedi il tuo "matematicamente impossibile", diviene possibile.

Autore:  McMax [ mar feb 02, 2016 08:10 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

28 Gennaio
mimoletti ha scritto:
Assolutamente errato la mia passata indipendentemente dal valore del divisore termina sempre esattamente sull'index del mandrino, il problema è tuo che evidentemente non riesci neanche a immaginare come abbia potuto fare.


1 Febbraio
mimoletti ha scritto:
Non mi serve terminare il conteggio esattamente sull'index.


qual'è quella buona della due ?
No perché, a questo punto, mi sento un po' preso in giro.

Autore:  mimoletti [ mar feb 02, 2016 10:06 ]
Oggetto del messaggio:  Re: progetto open source per avanzamenti automatici su ardui

Sono vere entrambe nel mio caso, perché non procedo a ritroso ma solo in una direzione, la passata successiva e come se fosse un proseguo, non so se mi sono spiegato. Utilizzando la posizione angolare alla fine della prima passata per ripartire con la seconda.
Quindi a sinistra termina esattamente sull' index a destra invece potrebbe non terminare sull'index perché ininfluente, a patto di arretrare il carro con multipli del passo.

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