Arduino, stepper Nema17 e driver TMC2208
Moderatori: MrMassy86, adobel55, lorelay49, Docdelburg
- Docdelburg
- Socio GAS TT
- Messaggi: 6922
- Iscritto il: martedì 4 settembre 2012, 18:16
- Nome: Mauro
- Regione: Estero
- Città: Madrid (España)
- Ruolo: Moderatore
- Stato: Non connesso
Arduino, stepper Nema17 e driver TMC2208
Avevo scelto il vecchio driver L298N che però ho dovuto cambiare per l’eccessiva rumorosità del motore in funzione.
Qui il riferimento alla discussione relativa alla costruzione della piattaforma:
Piattaforma girevole con Arduino - Norma Fremo GasTT - Fonte www.scalatt.it/forum
La ricerca e i suggerimenti di altri modellisti mi hanno portato a provare il driver TMC2208 che promette di muovere lo stepper in modo molto silenzioso e fluido.
La ricerca di come eseguire i collegamenti è stata relativamente semplice mentre capire come impostare lo sketch per Arduino è stato molto più complicato.
Questi driver specifici per stepper sono prodotti per l’uso prevalente su stampanti 3D, che infatti hanno gli incastri predisposti per diversi driver; se ne usa uno per ogni motore presente.
Di seguito l’immagine di quanto presente nella confezione del driver TMC2208.
Molto utile la schedina che riporta il significato di ogni contatto.
Per l’uso del driver mi sono procurato delle piccole basette di prova o breadbord e relativi jumper di collegamento, così da realizzare un sistema stabile di connessioni. Inserendo un jumper corto da una parte nella breadboard e dall’altra nei morsetti a vite, ho potuto fare le prove del caso in tutta comodità.
Scartando buona parte dei suggerimenti dell’AI, che raramente funzionano, ho fatto riferimento a questo sito che spiega in modo esauriente l’uso del driver e suggerisce un codice utile a valutare inizialmente il corretto funzionamento del complesso Arduino/stepper/driver.
Arduino Code for TMC2208 Stepper Motor Control - Fonte circuitdigest.com
Dallo sketch proposto sono partito per inserire la funzione di quattro pulsanti che comandano ciascuno un movimento diverso. La mia intenzione è eseguire questi comandi:
-con un pulsante compiere una rotazione della piattaforma di 180° in senso orario;
-con un pulsante compiere una rotazione della piattaforma di 180° in senso antiorario;
-con un pulsante muovere di un passo la piattaforma in senso orario;
-con un pulsante muovere di un passo la piattaforma in senso antiorario.
Il risultato ottenuto è lo sketch che segue, ma che ritengo vada migliorato. In particolare non sono riuscito a far si che i pulsanti che muovono di un solo passo eseguano un comando singolo per volta, con un intervallo di 1 o 2 secondi. Inserendo un “delay” non funziona più nulla.
Premendoli anche brevemente la piattaforma ruota di diversi passi.
Ringrazio se qualcuno ha suggerimenti
- anam
- Messaggi: 61
- Iscritto il: martedì 25 marzo 2014, 19:32
- Nome: Daniele
- Regione: Piemonte
- Città: Santhià
- Stato: Non connesso
Re: Arduino, stepper Nema17 e driver TMC2208
tre suggerimenti per cercare di migliorare il funzionamento.
1. un pulsante, per la sua meccanica, non funziona come un interrutore. quando lo premi genera una serie di impulsi. Questo vuol dire che tu premi una volta, ma arduino (che è più veloce del tuo dito) legge come se lo avessi prenuto più volte. Devi pertanto cercare in rete come impostare la lettura di un pulsante escludendo il rimbalzo (tecnica debouce).
2. quando la variabile bool che tiene il valore del pulsante l'hai processata (se HIGH allora muovi il motore) riportala a LOW. Può sembrare una cosa ridondante e inutile, ma sempre meglio essere sicuri dello stato in cui si trova una variabile quando inizia il loop. Questa variabile innesca un qualcosa quando il suo stato è HIGH. Portandolo manualmente a LOW sei sicuro che lo stato HIGH deriva da un vero comando sul pulsante
if (statoCW == HIGH){
statoCW = LOW;
.........
3. evita di usare delay() e i suoi derivati. Queste istruzioni bloccano completamente il processore. usa millis() o, nel tuo caso, micros() (anche qui la rete ti può dare ottimi suggerimenti)
Buon test
daniele
- Docdelburg
- Socio GAS TT
- Messaggi: 6922
- Iscritto il: martedì 4 settembre 2012, 18:16
- Nome: Mauro
- Regione: Estero
- Città: Madrid (España)
- Ruolo: Moderatore
- Stato: Non connesso
Re: Arduino, stepper Nema17 e driver TMC2208
E se usassi un debounce hardware con un condensatore e resistore per ciascuno dei due pulsanti in pull down?
- anam
- Messaggi: 61
- Iscritto il: martedì 25 marzo 2014, 19:32
- Nome: Daniele
- Regione: Piemonte
- Città: Santhià
- Stato: Non connesso
Re: Arduino, stepper Nema17 e driver TMC2208
Output on press then repeat while button is held - Fonte forum.arduino.cc
Qui si parla del problema.
Potrei suggerire la solita via di mezzo. Un pulsante con soluzione hardware ed uno software. Così vedi quale fa più al tuo caso.