Ben arrivato! Fai login o registrati per fruire di tutte le funzionalità del forum e del sito.
Se eri già registrato e non ti ricordi la password usa questo link per recuperare l'accesso.
Sito e forum dedicati al fermodellismo, il nostro hobby viene praticato in molte maniere diverse, tutte ugualmente valide: hai un plastico? oppure sei un collezionista? oppure un semplice appassionato? Non esitare a scrivere nel forum, tutti gli interventi sono benvenuti... Postate foto e video del vostro plastico e chiedete aiuto per ogni problema o curiosità inerente al nostro hobby.
Rinnovo/Iscrizione/Donazioni GAS TT - 2027

Arduino, stepper Nema17 e driver TMC2208

Tutto ciò che è elettricità applicata al fermodellismo.

Moderatori: MrMassy86, adobel55, lorelay49, Docdelburg

Messaggio
Autore
Avatar utente
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

#1 Messaggio da Docdelburg »

Mi è capitato ultimamente di usare uno stepper Nema17 a 200 passi, come quello nell’immagine seguente, per muovere una piattaforma autocostruita tramite Arduino Nano.

Stepper Nema17.jpg

Avevo scelto il vecchio driver L298N che però ho dovuto cambiare per l’eccessiva rumorosità del motore in funzione.

STEPPER E DRIVE.jpg

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.

TMC110.jpg

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à.

TMC100.jpg

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.
SKTMC2208A.jpg
SKTMC2208B.jpg
SKTMC2208C.jpg

Ringrazio se qualcuno ha suggerimenti



Avatar utente
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

#2 Messaggio da anam »

Ciao Mauro,
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
Daniele - Plastico delle terme

Avatar utente
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

#3 Messaggio da Docdelburg »

Grazie Daniele!
E se usassi un debounce hardware con un condensatore e resistore per ciascuno dei due pulsanti in pull down?
debounce hardware.jpg

Avatar utente
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

#4 Messaggio da anam »

La soluzione hardware ha il vantaggio di mantenere pulito il codice. La software è più veloce da implementare e facilmente personalizzabile
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.
Daniele - Plastico delle terme

Torna a “COLLEGAMENTI ELETTRICI”