ELS (Electronic Lead Screw) - progetto con ARDUINO
Moderatore: Junior Admin
-
eolobiccolo
- APPRENDISTA E ADDETTO ALLE PULIZIE
- Messaggi: 9
- Iscritto il: lun dic 17, 2018 21:50
- Località: Matelica
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Beh... in parte hai ragione, ma qualche vantaggio ce l'ha:
1) Non bisogna stare a cambiare ingranaggi per passi particolari.
2) A fine passata si ferma da solo evitandoti casini.
Al momento la mia era più che altro curiosità, ma non nego che se tu progettassi una versione che comanda anche il trasversale un pensierino ce lo farei. Magari con la scheda ST di cui spesso parli. ;)
Vuoi mettere fare filettature ed altro in automatico invece che in manuale?
Io ho un vecchio divisore meccanico professionale per la fresa (rimediato da un rottamaio a 2 soldi).
Beh, stufo di star ogni volta a fare conti e girare decine di volte la manovella per acchiappare il buco giusto, me ne sono costruito uno comandato da arduino e quello meccanico ormai sta solo a prendere polvere in un angolo.
Sono appassianato sia di meccanica che di elettronina, e a volte le cose le faccio solo per il piacere di farle (tempo permettendo).
Il tuo e' un bel progetto ed ha attirato la mia curiosità.
1) Non bisogna stare a cambiare ingranaggi per passi particolari.
2) A fine passata si ferma da solo evitandoti casini.
Al momento la mia era più che altro curiosità, ma non nego che se tu progettassi una versione che comanda anche il trasversale un pensierino ce lo farei. Magari con la scheda ST di cui spesso parli. ;)
Vuoi mettere fare filettature ed altro in automatico invece che in manuale?
Io ho un vecchio divisore meccanico professionale per la fresa (rimediato da un rottamaio a 2 soldi).
Beh, stufo di star ogni volta a fare conti e girare decine di volte la manovella per acchiappare il buco giusto, me ne sono costruito uno comandato da arduino e quello meccanico ormai sta solo a prendere polvere in un angolo.
Sono appassianato sia di meccanica che di elettronina, e a volte le cose le faccio solo per il piacere di farle (tempo permettendo).
Il tuo e' un bel progetto ed ha attirato la mia curiosità.
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
McMax,
mi sono incaponito nel cercare di capire perchè utilizzando il movimento libero dell'ELS escono dei valori che non corrispondono alla realtà.
Leggendo il codice mi sembra che torni tutto
Ma stranamente facendo dei test i valori non corrispondono....ho aggiunto allora alcuni print su seriale per capire quali valori uscivano a caxxo e ho visto che la variabile NORTON_feed mi mette 44!!
Ora mi chiedo ma da dove lo pesca che ho messo 300 ovunque?

Ho fatto altre prove e pare che il valore limite definito come centesimi giro sia 250 poi mette numeri a cavolo.
mi sono incaponito nel cercare di capire perchè utilizzando il movimento libero dell'ELS escono dei valori che non corrispondono alla realtà.
Leggendo il codice mi sembra che torni tutto
Codice: Seleziona tutto
Posizione = ((float(absolute_steps)/one_turn_screw_steps)*float(NORTON_feed))/100;Ora mi chiedo ma da dove lo pesca che ho messo 300 ovunque?
Ho fatto altre prove e pare che il valore limite definito come centesimi giro sia 250 poi mette numeri a cavolo.
-->I MIEI VIDEO<--
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Premetto che sono con lo smartphone quindi non riesco a vedere il mio codice completo ma leggendo ciò che scrivi e pensando, non é che forse ho definito la variabile NORTON_feed come byte?
Tornerebbe con il limite di 250 (dovrebbe essere 255 per la precisione). In effetti pensandola per il caser che ha avanzamenti Norton molto corti ci può stare che l'abbia definita come byte.
Il problema é che quel parametro lo salvo in Eeprom quindi non basta ridefinirlo come intero per sistemarlo ma va modificato tutto il salvataggio in eeprom..... posso sistemarlo comunque.
Tornerebbe con il limite di 250 (dovrebbe essere 255 per la precisione). In effetti pensandola per il caser che ha avanzamenti Norton molto corti ci può stare che l'abbia definita come byte.
Il problema é che quel parametro lo salvo in Eeprom quindi non basta ridefinirlo come intero per sistemarlo ma va modificato tutto il salvataggio in eeprom..... posso sistemarlo comunque.
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à
“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à
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Grande McMax beccato!... nel movimento libero era definito come byte.....ora modifico e riprovo
Sistemato ora funziona perfettamente :) Grazie
Sistemato ora funziona perfettamente :) Grazie
Codice: Seleziona tutto
void MovimentoLibero() //moves the stepper motor freely using the joystick. It returns the carriage position calculated on the actual NORTON gearbox ratio
{
boolean stay = true;
unsigned long stepperSpeed;
float Posizione = 0.00;
unsigned int joy;
int NORTON_feed; -->I MIEI VIDEO<--
- Davide Resca
- CAPO OFFICINA
- Messaggi: 13863
- Iscritto il: lun feb 29, 2016 11:29
- Località: Ustica & Dintorni saltuariamente Bologna o Pesaro
- Contatta:
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Cioè fatemi capire, con arduino trasformate una variabile da byte a word e la salvate nella epron senza nessun artificio ?
Io per scrivere nella epron una word ho duvuto scomporla, salvarlacome byte in due celle attigue della eprom, leggere i valori e ricomporla ...
Parliamo di10 anni fa ...microchip pic 16f84...
Io per scrivere nella epron una word ho duvuto scomporla, salvarlacome byte in due celle attigue della eprom, leggere i valori e ricomporla ...
Parliamo di10 anni fa ...microchip pic 16f84...
Gli errori sono per i principianti, noi esperti puntiamo al disastro !!!
Le conoscenze acquisite, sono proporzionali al DANNO PRODOTTO !!! ( esperienza personale...)
youtube
2°socio TIRATOSAURO CLUB ITALIAN
Le conoscenze acquisite, sono proporzionali al DANNO PRODOTTO !!! ( esperienza personale...)
youtube
2°socio TIRATOSAURO CLUB ITALIAN-
umbez
- TORNITORE E FRESATORE
- Messaggi: 1895
- Iscritto il: lun set 29, 2008 23:19
- Località: Cologno Monzese
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Avide, c'è una libreria che lo fa, se ti fossi scritto una libreria anche tu oggi non te ne saresti lamentato ;P
lol
lol
Ù.
- Davide Resca
- CAPO OFFICINA
- Messaggi: 13863
- Iscritto il: lun feb 29, 2016 11:29
- Località: Ustica & Dintorni saltuariamente Bologna o Pesaro
- Contatta:
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
ma sta buono ...lassame sta'

Gli errori sono per i principianti, noi esperti puntiamo al disastro !!!
Le conoscenze acquisite, sono proporzionali al DANNO PRODOTTO !!! ( esperienza personale...)
youtube
2°socio TIRATOSAURO CLUB ITALIAN
Le conoscenze acquisite, sono proporzionali al DANNO PRODOTTO !!! ( esperienza personale...)
youtube
2°socio TIRATOSAURO CLUB ITALIANRe: ELS (Electronic Lead Screw) - progetto con ARDUINO
Ultimo nato e questo per ora è mio
realizzato su scatola gewiss 44206 per il joy ho usato un elemento singolo al posto della solita schedina, ed aggiunti i pulsanti metallici la scatola è stata abbassata di 1 cm per renderla esteticamente più piacevole. Il coperchio è stato verniciato ed ho applicato delle etichette a rilievo fatte con la stampante 3D. Supporti display e joy sempre realizzati con la stampante 3D es incollati per evitare di forare.
Sto facendo delle modifiche al software per sempificare i menu.
Per ora ho fatto in modo che il menu delle impostazioni compaglia solo se si tiene premuto il tasto reset durante l'avvio.
realizzato su scatola gewiss 44206 per il joy ho usato un elemento singolo al posto della solita schedina, ed aggiunti i pulsanti metallici la scatola è stata abbassata di 1 cm per renderla esteticamente più piacevole. Il coperchio è stato verniciato ed ho applicato delle etichette a rilievo fatte con la stampante 3D. Supporti display e joy sempre realizzati con la stampante 3D es incollati per evitare di forare.
Sto facendo delle modifiche al software per sempificare i menu.
Per ora ho fatto in modo che il menu delle impostazioni compaglia solo se si tiene premuto il tasto reset durante l'avvio.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
-->I MIEI VIDEO<--
-
tarzan
- SON PASSATO AI TRAPANINI
- Messaggi: 87
- Iscritto il: mer ago 13, 2014 09:21
- Località: Pordenone
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Ciao ragazzi, i lavori procedono a rilento ma sono riuscito a muovere i primi passi.
Ho collegato per ora stepper e vite madre utilizzando due ingranaggi di serie del tornio da 40 ed 80 perchè per puro caso combaciano perfettamente ( sto riciclando il più possibile ! )
Più avanti provvederò con cinghia e pulegge
Devo però ancora montare stabilmente l'encoder e lo sto facendo girare con un elastico per prova.
Vorrei chiedervi di migliorare alcuni punti del sw.
1- In "Movimento Libero" la precisione è pazzesca, col comparatore sul carro i movimenti rispecchiano al centesimo il display ;)
Ho bisogno però di maggior sensibilità col joystick perchè mi tocca tenerlo fermissimo per sfruttare l'incredibile precisione ottenibile ed è quasi impossibile riuscirci..
Pensavo che sarebbe fantastico poter abbinare un tasto + movimento per ottenere una funzione lento-veloce !
A meno che non si riesca a renderlo più lineare modificando i parametri già impostati . ( anche se temo che la sua corsa sia fisicamente limitata per ottenere una prima parte lenta e la restante veloce..)
2-In Filettatura il ritorno dopo la passata è lentissimo; come si può dargli una mossa? ( senza alzare i giri motore..)
Intanto basta così... e grazie di tutto
Ho collegato per ora stepper e vite madre utilizzando due ingranaggi di serie del tornio da 40 ed 80 perchè per puro caso combaciano perfettamente ( sto riciclando il più possibile ! )
Più avanti provvederò con cinghia e pulegge
Devo però ancora montare stabilmente l'encoder e lo sto facendo girare con un elastico per prova.
Vorrei chiedervi di migliorare alcuni punti del sw.
1- In "Movimento Libero" la precisione è pazzesca, col comparatore sul carro i movimenti rispecchiano al centesimo il display ;)
Ho bisogno però di maggior sensibilità col joystick perchè mi tocca tenerlo fermissimo per sfruttare l'incredibile precisione ottenibile ed è quasi impossibile riuscirci..
Pensavo che sarebbe fantastico poter abbinare un tasto + movimento per ottenere una funzione lento-veloce !
A meno che non si riesca a renderlo più lineare modificando i parametri già impostati . ( anche se temo che la sua corsa sia fisicamente limitata per ottenere una prima parte lenta e la restante veloce..)
2-In Filettatura il ritorno dopo la passata è lentissimo; come si può dargli una mossa? ( senza alzare i giri motore..)
Intanto basta così... e grazie di tutto
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
sbinf complimenti per la realizzazione, e ottima anche l'idea di entrare in impostazioni con la pressione del tasto in avvio!
Tarzan:
si è possibile aggiungere dei tasti, ci avevo pensato, ma come per altri 200 cose che mi passano per la testa non ho mai tempo di mettermi a farlo. Non è complicato, s mastichi un po di C e ti sai arrangiare con aurduino puoi farlo tu stesso
Il ritorno in filettatura è tanto più lento quanto più veloce gira il mandrino. Il motivo è semplice, ogni impulso encoder mandrino genera un interrupt che rallenta l'esecuzione del codice e quindi influisce sulla frequenza con cui vengono inviati gli impulsi di step per far girare il motore stepper sulla vite. Non è possibile ovviare a questo inconveniente perché in filettatura il software deve tenere traccia in modo continuativo del posizione del mandrino altrimenti perdi il sincronismo angolare.
Una soluzione è quella di prevedere un encoder con index ed usare sempre quello come impulso di start per il filetto.... in questo modo al posto di avere 1000 interrupt a giro ne avremmo uno solo e il movimento di ritorno sarebbe molto più fluido. Gli encoder con index però sono più difficili da trovare quindi quando ho sviluppato il software ho preferito sceglierne uno senza.
Tarzan:
si è possibile aggiungere dei tasti, ci avevo pensato, ma come per altri 200 cose che mi passano per la testa non ho mai tempo di mettermi a farlo. Non è complicato, s mastichi un po di C e ti sai arrangiare con aurduino puoi farlo tu stesso
Il ritorno in filettatura è tanto più lento quanto più veloce gira il mandrino. Il motivo è semplice, ogni impulso encoder mandrino genera un interrupt che rallenta l'esecuzione del codice e quindi influisce sulla frequenza con cui vengono inviati gli impulsi di step per far girare il motore stepper sulla vite. Non è possibile ovviare a questo inconveniente perché in filettatura il software deve tenere traccia in modo continuativo del posizione del mandrino altrimenti perdi il sincronismo angolare.
Una soluzione è quella di prevedere un encoder con index ed usare sempre quello come impulso di start per il filetto.... in questo modo al posto di avere 1000 interrupt a giro ne avremmo uno solo e il movimento di ritorno sarebbe molto più fluido. Gli encoder con index però sono più difficili da trovare quindi quando ho sviluppato il software ho preferito sceglierne uno senza.
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à
“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à
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Grazie Max!
considera che dalle prove che ho fatto riesco a mandarlo in programmazione anche quando viene scritto la prima volta (valori non corretti nella EPROM)
ho fatto un'altra modifica mettendo nelle impostazioni anche il valore OFF alla scatola NORTON (indice 4) così facendo vado a rimuovere tutti i menu relativi e semplifico il menu avanzamento.
Per non incasinare il software a indice 4 la variabile NORTON_gearbox viene impostata a 0
la semplificazione dei menu l'ho fatta con un case.
considera che dalle prove che ho fatto riesco a mandarlo in programmazione anche quando viene scritto la prima volta (valori non corretti nella EPROM)
Codice: Seleziona tutto
void loop()
{
if (digitalRead(RESET) == PRESSED || !(one_turn_mandrel_steps >= 1000) ) { SHOW_Impostazioni = true; delay(5000);} //Verifico se è premuto il tasto RESET o se ci sono valori non validi nella EPROM
char scelta;
if ( SHOW_Impostazioni ) {
lcd.clear(); Impostazioni();
}
else
{
while (true)
{
scelta = Principale();
switch (scelta) {
case 1: lcd.clear(); Avanzamento(); break;
case 2: lcd.clear(); Filettatura(); break;
case 3: lcd.clear(); MovimentoLibero(); break;
case 4: lcd.clear(); MandrelSpeed(); break;
case 5: lcd.clear(); PosizioneAngolare(); break;
//case 6: lcd.clear(); Impostazioni(); break;
}
}
}
}ho fatto un'altra modifica mettendo nelle impostazioni anche il valore OFF alla scatola NORTON (indice 4) così facendo vado a rimuovere tutti i menu relativi e semplifico il menu avanzamento.
Per non incasinare il software a indice 4 la variabile NORTON_gearbox viene impostata a 0
Codice: Seleziona tutto
EEPROM.get(32, NORTON_gearbox); //NORTON GEARBOX POSITION
if ( NORTON_gearbox == 4 ) { NORTON_gearbox = 0; NORTON = false;}Codice: Seleziona tutto
if ( !NORTON ) // Se la scatola norton è disattivata salto i menu
{
switch (previous) {
//disabilito menu trasversale 1 e menu norton 4 e il menu 6 empty space
case 1: previous = 5; Current = 2; next = 3; break;
case 2: previous = 2; Current = 3; next = 5; break;
case 3: previous = 3; Current = 5; next = 2; break;
case 4: previous = 5; Current = 2; next = 3; break;
case 5: previous = 5; Current = 2; next = 3; break;
case 6: previous = 2; Current = 3; next = 5; break;
}
} -->I MIEI VIDEO<--
-
desdemone1976
- APPRENDISTA E ADDETTO ALLE PULIZIE
- Messaggi: 7
- Iscritto il: mar lug 06, 2021 07:44
- Località: Ancona
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Ciao a tutti...
Mi sto cimentando nella realizzazione di questo progetto...ma sto avendo un problema con il sistema...
Cioè il motore non gira...
Premesso che sto usando un Arduino Mega che avevo in casa ed è tutto acrocchiato al momento, ma ho fatto la prova di creare un programmaccio banale per provare il motore e driver e FUNZIONA.
Il dubbio ce l'ho sulla generazione del segnale PWM sul pin 9...
Ho fatto anche una verifica attaccando un oscilloscopio al pin mentre stavo eseguendo un avanzamento libero ma NON leggevo niente!
Ammetto che arduino lo conosco ma non cosi bene e non sono riuscito a capire benissimo come viene gestito il PWM dal sorgente... sono abituato a comandi più spartani come un "analogWrite(pwm, duty)" ma non ho trovato niente di simile nel codice...
Mi sto cimentando nella realizzazione di questo progetto...ma sto avendo un problema con il sistema...
Cioè il motore non gira...
Premesso che sto usando un Arduino Mega che avevo in casa ed è tutto acrocchiato al momento, ma ho fatto la prova di creare un programmaccio banale per provare il motore e driver e FUNZIONA.
Il dubbio ce l'ho sulla generazione del segnale PWM sul pin 9...
Ho fatto anche una verifica attaccando un oscilloscopio al pin mentre stavo eseguendo un avanzamento libero ma NON leggevo niente!
Ammetto che arduino lo conosco ma non cosi bene e non sono riuscito a capire benissimo come viene gestito il PWM dal sorgente... sono abituato a comandi più spartani come un "analogWrite(pwm, duty)" ma non ho trovato niente di simile nel codice...
- onorino
- CAPO OFFICINA
- Messaggi: 41550
- Iscritto il: mar mar 23, 2010 22:18
- Località: Artena(Roma)
- Contatta:
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
desdemone aggiungi la residenza al profilo utente.
la democrazia funziona fino a quando fate quello che dico io!
Mc Mazzafrusten meccanico mannaro
il riparatore di riparazioni
er robin hood de no'antri
tagliatore scelto di puntarelle
http://www.lievitoedintorni.it/phpbb/index.php
Mc Mazzafrusten meccanico mannaro
il riparatore di riparazioni
er robin hood de no'antri
tagliatore scelto di puntarelle
http://www.lievitoedintorni.it/phpbb/index.php
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Ciao Desdemone; non ho mai provato a portare il codice su arduino mega quindi non so dirti se ci sono problemi o meno.
Il segnale di uscita per il passo sul pin 9 viene generato in 2 modi, in funzione di quello che si sta facendo. Mi spiego meglio, nel caso in cui si stia filettando è richiesto un controllo preciso del passo pertanto ogni chiamata di funzione genera un singolo passo che per comodità viene controllato con un timer come fosse un PWM, questa la parte di codice interessata:
con SetOneShot() si impostano in timer e il registro di comparazione invece con FireStep() si fa in modo che il timer raggiunga il valore (e si fermi) del registro OCR1A dopo 2 cicli di clock. In questo modo il comando FireStep() non è bloccante per il codice che eseguirà un impulso da circa 8 microsecondi senza bisogno di impostare alcun delay (che bloccherebbe il codice...).
Queste due funzioni vengono utilizzare per muovere il motore in filettatura.
Per muovere invece il motore senza controllo del passo viene impostato un PWM sempre facendo uso del timer ma in questo caso non esiste un controllo su ogni singolo passo bensì sulla frequenza, queste le funzioni interessate:
Questa parte è gestita con un interrupt sul timer1 in modo che la generazione del PWM non sia bloccante per il codice.
Nelle funzioni che usano il PWM per muovere il motore in pratica si imposta il Timer1 come PWM, si attiva l'interrupt e si carica un valore nella variabile TOP che viene passato al registro ICR1 che regola la frequenza del PWM e quindi la velocità del motore.
Scusa per i commenti del codice un po' in Italiano e un po' in Inglese ma l'ho scritto in tempi diversi e commentavo come mi girava
Il segnale di uscita per il passo sul pin 9 viene generato in 2 modi, in funzione di quello che si sta facendo. Mi spiego meglio, nel caso in cui si stia filettando è richiesto un controllo preciso del passo pertanto ogni chiamata di funzione genera un singolo passo che per comodità viene controllato con un timer come fosse un PWM, questa la parte di codice interessata:
Codice: Seleziona tutto
void SetOneShot()
{
ICR1 = 0; // Set ICR1 register to 0. ICR1 is the TOP of the timer counting which means the timer is stuck to 0
OCR1A = 65534; // Set OCR1A to 65534 in order to fire a pulse of 2 cycle clock (8us)
TCCR1A = _BV(COM1A1) | _BV(COM1A0) | _BV(WGM11); //OC1A set for PWM with CLEAR at BOTTOM and SET at MATCH (inverted mode)
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS11) | _BV(CS10); //WGM set for Fast PWM with ICR1 used as TOP value. Prescaler set to clk/64 (4uSec cycle)
// Timer1 start HERE
}
void FireStep()
{
TCNT1 = 65533; // Force the Timer1 value to 65533 in order to hit the MATCH of OCR1A after one clock cycle
}
Queste due funzioni vengono utilizzare per muovere il motore in filettatura.
Per muovere invece il motore senza controllo del passo viene impostato un PWM sempre facendo uso del timer ma in questo caso non esiste un controllo su ogni singolo passo bensì sulla frequenza, queste le funzioni interessate:
Codice: Seleziona tutto
void StopTimer1() //pulisce i registri del Timer1 per fermare il PWM e quindi il motore stepper
{
TCCR1B &= B11111000; //imposta il prescaler del Timer a 0 - il Timer1 si ferma in questo punto
TIMSK1 &= B11111101; //ferma l'interrupt associato al Timer1
TCNT1 = 0; //resetta il valore del Timer1
}
void StartTimer1() //imposta i registri del Timer 1 e fa partire il conteggio - riavvia il motore dopo che stato fermato
{
TCNT1 = 0; //resetta il valore del Timer1
TIMSK1 |= B0000010; //imposta l'interrupt associato al Timer1
TCCR1B |= B0000011; //imposta il precaler del Timer1 a clk/64 - il Timer1 parte in questo punto
}
void ClearPWM() //Clear the PWM and stops Timer1
{
TCCR1B = 0; // halt Timer by setting clock bits (Prescaler) to 0. This will stop the timer until we get set up
TCCR1A = 0; // Reset the register to avoid misconfiguration issue
TCNT1 = 0; // start counting at 0 (BOTTOM)
TIMSK1 = 0; // Reset the interrupt mask register for Timer1
}
void SetPWM() //Sets the PWM and starts Timer1
{
ICR1 = 65535; //(65535)set TOP at maximum value in order to get minumun frequency on the motor with prescaler clk/64
OCR1A = 3; // Set OCR1A register to 1 which means that the CLEAR of the OC1A pin is done after 2 timer1 cycle.
// means 8us with clk/64 prescaler
TCCR1A = _BV(COM1A1) | _BV(WGM11); //OC1A set for PWM with SET at BOTTOM and CLEAR at MATCH (non-inverted mode)
TCCR1B = _BV(WGM13) | _BV(WGM12); //WGM set for Fast PWM with ICR1 used as TOP value
}
ISR (TIMER1_COMPA_vect) // rountine di interrupt del Timer1 - usata per incrementare i passi stepper e tenere traccia della posizone
{
ICR1 = TOP;
if (Direction == CW)
absolute_steps++;
else
absolute_steps--;
}
Nelle funzioni che usano il PWM per muovere il motore in pratica si imposta il Timer1 come PWM, si attiva l'interrupt e si carica un valore nella variabile TOP che viene passato al registro ICR1 che regola la frequenza del PWM e quindi la velocità del motore.
Scusa per i commenti del codice un po' in Italiano e un po' in Inglese ma l'ho scritto in tempi diversi e commentavo come mi girava
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à
“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à
-
tarzan
- SON PASSATO AI TRAPANINI
- Messaggi: 87
- Iscritto il: mer ago 13, 2014 09:21
- Località: Pordenone
Re: ELS (Electronic Lead Screw) - progetto con ARDUINO
Scusa se ne approfitto McMax, se ricordi qualche post sopra ti chiedevo di inserire un sistema per rendere più preciso il movimento manuale, sia libero che in filettatura.
Senza utilizzare combinazioni di tasti mi è venuta un'altra ideona
Ho visto che in quei campi ovviamente viene utilizzato solamente l'asse X del joy mentre Y non ha altre funzioni.
Si potrebbe associarlo ad un movimento più preciso ? <> normale e up down Fine
Senza utilizzare combinazioni di tasti mi è venuta un'altra ideona
Ho visto che in quei campi ovviamente viene utilizzato solamente l'asse X del joy mentre Y non ha altre funzioni.
Si potrebbe associarlo ad un movimento più preciso ? <> normale e up down Fine
Ultima modifica di tarzan il ven lug 23, 2021 20:08, modificato 2 volte in totale.