Eh caro, grazie.. ho già provato a filtrare bene l'alimentazione sulla scheda con regolatore 9v e LC, ho messo dei C da 0.1 tra pulsanti e massa ( ma non proprio sui pin in effetti..)
Mi era venuto un sospetto che siccome il cablaggio del display corre attaccato al chip di Arduino potesse interferire .
Mi sa che faccio prima a prendere la shield già pronta perchè ci sono impazzito per mesi
Tarzan: se i menù impazziscono il problema è il joy visto che è lui a far scorrere i menù. Quando li scolleghi i menu scorrono a manetta perché ingresso analogico resta appeso e con valori casuali (vicini a 0 volt, quindi co assi spostati in una direzione). Controlla le saldature sulle scheda joystick, magari hai un pot saldato male. Ripassale tutte tenendo il saldatore per qualche secondo. Se scarse di stagno mettine un altro pochino.
Bruno: 8 filetti per pollice (3,175mm) è impostabile senza problemi anche perché è pure il passo della mia vite madre!
Va impostato in millimetri e il sistema ti consente 3 decimali a step di 0,005mm quindi lo puoi impostare con precisione.
McMax
“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson
cosa intendi per interferenze I2C esattamente ?
I2C va a 400Khz e non è fonte di interferenze particolari. Io comunque nella mia versione ho usato display parallelo....
McMax
“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson
Tarzan avevo il tuo stesso problema, ora non ricordo ma ho cambiato un pin in input con un altro e ho risolto. Forse è quello più prossimo agli interrupt dell'encoder
Ora che ci ripenso..
Avevo misurato le tensioni ai due ingressi analogici mentre si manifestava il problema ed erano perfette a metà Vcc..immobili, eppure sto dannato continuava a scorrere a caso..Per questo avevo escluso un problema al joy ( a meno che non ci fossero spurie invisibili al tester )
e ricordati che se vuoi volare devi battere le ali.
Tieni sempre a mente! ..... Quando tutto sembra andare contro, ricorda che gli aeroplani decollano contro vento, non con lui!
Vorrei aumentare la velocita`in ritorno nella "Filettatura a misura" almeno raddoppiarla.
Mi spiego meglio, ho fatto un filetto lungo 80mm e andando comunque conservativo la fase di filettatura e`molto piu`rapida di quella di ritorno, ossia quando schiaccio "SEL+RESET"
Dove posso ritoccare il parametro?
Grazie
Gioco con macchine e moto di modellismo e non da 1,5cc agli 8000cc
void StepperMoveToPosition(long absolute_position) //runs the stepper to a specific position without accelerating (this is used for precision positioning only
//please make sure to call SetOneShot() before using this function
{
if (absolute_steps < absolute_position) digitalWrite(DIR, CCW); else digitalWrite(DIR, CW);
while (absolute_steps != absolute_position)
{
FireStep();
if (digitalRead(DIR) == CW) absolute_steps--; else absolute_steps++;
delayMicroseconds(1500);
}
}
Attenzione a ridurre troppo perché rischi di superare la massima velocitá consentita.
In effetti é un po` lento ma ricordo che avevo fatto delle considerazioni a riguardo solo che ora dopo 10 anni non mi ricordo piú i dettagli
In effetti pensandoci potrei limitarla in modo automatico alla massima velocitá impostata per il motore stepper, magari con un po`di margine.
Ci penso... se intanto tu vuoi fare delle prove poi dimmi come va
McMax
“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson
Ah ! ok ..
Cavolo non avevo capito che era un dalay che impostava la cosa.
Grazie.
Non so se e`una modifica apprezzabile da tutti
in quella routine non vai in rampa quindi sarai stato conservativo apposta per evitare che si perdan passi
nel mio caso il problema e`aggirato, uso un closed loop che puo`gestire come un servo le rampe , sforzandolo infatti ha un margine in cui ho visto che muovendolo ad una velocita`fissa e frenando il carro lui rallenta per poi recuperare a manetta la posizione quando tolgo il freno "il freno" e`il manettino che blocca il lardone.
Ovvio oltre un tot di sfasatura impostabile va`in errore e`un parametro impostabile l`ho messo in autotuning ed ho lasciato si regolasse da solo .
in movimenti normali e`una piccola sicurezza in piu , in filettatura se si arriva a quel limite diventa un problema ma vabbe`o cosi`o una perdita passi sempre lavoro rovinato sarebbe.
Avendo usato un 12Nm moltiplicato meccanicamente X 2 e impostato a 800 impulsi sul driver e 400 sull`ELS posso andare molto veloce.
Fortunatamente il sistema in filettatura non considera la vel max e la supera, nei parametri movimento libero ho messo meno di quanto possa fare ,col joy in movimento libero era poco gestibile schizzava via .
Da qui pero Altra domanda...
C è un modo per calcolare ,dati i numero impulsi encoder per rivoluzione, quale e`la vel max a cui posso filettare?
`ho fatto un passo da 5,5 andando veloce ,si e`sfasato ed ho dovuto rallentare, lo stepper seguiva ma ho avuto l`impressione che arduino non sia stato dietro all`encoder.
Saran stati 550 o 600 giri.
Bon mi son messo a 250 e ha fatto tutto perfetto, specifico che ho il buffer a 1100, se lo metto a 1300 quando compila mi avverte rischio instabilita`e mi son tenuto margine, cosa strana che riguarda il compilatore :stesso programma non tocco nulla una volta mi avverte una volta no e la volta no mi avverte se alzo a 1400, mi son tenuto buono il dato peggiore resta che qualcosa nell`IDE non quaglia.
Gioco con macchine e moto di modellismo e non da 1,5cc agli 8000cc
per me, se vuoi implementare quello che dici, devi implementare le rampe di accelerazione e decelerazione, poi fai tu...rischi lo stallo dello stepper se diminuisci i delay, poi puoi fare delle prove sperimentali, ma il giorno in cui cambi lo stepper o il drive sei punto e a capo.
poi fai tu...
si ora ricordo, avevo limitato la velocitá perché non volevo gestire rampe di accelerazione e decelerazione quindi sono sceso a compromessi.
In effetti una rampa si potrebbe pure implementare. Ci penso.
McMax
“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson
si vero e`personalizzato e non andrebbe bene in altri sistemi ma, mi fa`molto comodo, la vite senza fine dell indexer che ho fatto per il Caser e`stata lunga come lavorazione ed i tempi morti son stati importanti sul totale.
son sceso sino a 200 senza problemi ed ho messo un conservativo 400 che comunque si sbriga abbastanza e gia con un filetto da 4 a 300 giri e`piu`rapido il filetare che il ritorno.
McMax :
pero`non mi hai detto a quanti giri max posso filettare.
Gioco con macchine e moto di modellismo e non da 1,5cc agli 8000cc
a quanti giri puoi filettare? vediamo.
L'impulso di step dura circa 8usec, quindi direi che al massimo arduino puoò andare con periodo di circa 20usec, che vuol dire 50Khz, ovvero 50000 impulsi step al secondo.
Questo ovviamente è quello che può fare l'elettronica, poi dobbiamo vedere cosa può fare lo stepper e quindi cosa può fare arduino leggendo l'encoder.
Lo stepper direi che per stare tranquilli non dobbiamo fargli superare i 500 g/min (se proprio te la vuoi rischiare e hai corrente anche 600).
Considerando 500 g/min, quindi 8,33 g/sec, con stepper configurato a 800 passi/giro vuol dire dover fare 6664 passi al secondo, ovvero un passo ogni 150 microsecondi. Quindi al momento questo è il limite e sappiamo che arduino fin qui ci sta dentro alla grande.
Ora dobbiamo analizzare la questione encoder.
Ogi impulso encoder genera un interrupt che ha una durata variabile in funzione di quello che accade. Diciamo che andiamo da un minimo di circa 10 microsecondi ad un massimo di 30. considerando il caso peggiore (non possiamo fare diversamente), necessiteremo di 30 microsecondi per gestire ogni singolo impulso il che vuol dire che al massimo l'encoder potrà generare circa 33000 passi al secondo. Se l'encoder è da 1000 passi, equivale a 33 giri al secondo, ovvero quasi 2000 g/min.
Ovviamente la cosa va gestita con attenzione perché, ad esempio, un filetto con passo corto dovrà attendere più passi encoder prima di generare un passo stepper e questa è la condizione migliore, fino ad arrivare al caso peggiore ovvero il filetto con passo molto lungo che dovrà generare un passo stepper ogni passo encoder. Qui il problema diventa la coppia che lo stepper deve essere in grado di generare considerando la velocità con cui dovrà muovere la massa del carro, senza ovviamente considerare le forze di taglio.
Con i dovuti margini e fatte le dovute considerazioni, io non filetterei mai a più di 500/600 min. ovviamente sempre tenendo in considerazione il limite di velocità dello stepper, e tenendo ben presente com'è fatta la curva di coppia di un motore stepper, ovvero che la coppia diminuisce all'aumentare della velocità.
McMax
“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson