Un modo più economico per controllare i motori dell'Hoverboard

Ho trovato una scheda più economica con una potenza nominale di 350 W 6–60 V. Ciò significa che può azionare il motore dell'hoverboard alimentato da una batteria da 36 V. Questo articolo spiega come utilizzare quella scheda per azionare due motori hoverboard utilizzando Arduino Nano. Tuttavia, una volta che conosci la configurazione di base puoi praticamente utilizzare qualsiasi microcontrollore come Raspberry Pi Pico, ESP32, Teensy o RPi4 per controllare la velocità e la direzione.

Componenti necessari per il progetto
  1. Hoverboard e potenzialmente costruisci il telaio del robot sopra l'hoverboard.
  2. Arduino Nano
  3. scheda controller motore driver
  4. Intestazioni pin, fili, un ponticello e intestazioni JST aggiuntive menzionate nella sezione successiva
Preparazione della scheda driver per l'uso

Anche se la scheda driver è di ottima qualità, il produttore non l'ha resa facile da usare. Per poter utilizzare correttamente la scheda ho finito per apportare due modifiche alla scheda prima di poterla utilizzare.

  1. Intestazione a 2 pin a saldare per installare il ponticello per abilitare il controllo PWM non popolato dal produttore
  2. Installare un'intestazione maschio JST per l'intestazione di controllo PWM non popolata dal produttore

È necessario installare un connettore maschio a 2 pin nella posizione mostrata di seguito. In genere puoi semplicemente ottenere una serie di intestazioni da Amazon o da qualsiasi altra parte e tagliare due perni da lì con un taglierino. Si tratta di un'intestazione con spaziatura standard di 2,54 mm e sono disponibili ovunque.

Ho provato a riempire direttamente i due fori con la saldatura, ma non sono molto bravo a saldare, quindi ho finito per danneggiare la scheda. Quindi la soluzione finale era saldare un connettore maschio a 2 pin sul retro della scheda e quindi installare il ponticello standard per cortocircuitare i pin. Questa è una soluzione molto più elegante poiché puoi sempre rimuovere il ponticello di plastica per testare la scheda utilizzando il potenziometro presente sulla scheda.

La parte difficile qui è stata che ho dovuto svitare il grande dissipatore di calore in alluminio che si trova sul retro della scheda e solo allora sono riuscito ad accedere alla posizione per saldare l'intestazione a 2 pin.

Il secondo passaggio consiste nell'installare l'intestazione del controllo PWM accanto all'intestazione dell'encoder [contrassegnata nel rettangolo nero sopra]. Il produttore fornisce il connettore Encoder preinstallato sulla scheda come connettore maschio stile JST. Tuttavia, non hanno preinstallato l'intestazione del controllo PWM e puoi vedere che quei 5 pin accanto all'intestazione dell'encoder sono solo fori vuoti non popolati dai pin dell'intestazione. Credo che il passo su questi particolari fori sia 1 mm o 1,5 mm [non standard 2,54 mm]. Questo è un kit che viene fornito con cavi precrimpati in modo da poter costruire i propri connettori. Ho provato a installare un'intestazione pin maschio standard, ma quelle non erano abbastanza alte per avere una presa adeguata con i cavi DuPont e continuavano a staccarsi durante i test, quindi la soluzione migliore sarebbe installare un'intestazione in stile JST adeguata che bloccherà i cavi.

Utilizzeremo solo i pin P e S dell'intestazione di controllo PWM, quindi se ritieni che l'installazione dell'intestazione JST sia eccessiva e puoi semplicemente saldare il filo direttamente ai pin P e S, puoi farlo. Sappi però che non è una soluzione molto robusta e potresti finire per danneggiare la scheda.

Cablaggio e programmazione

Ho seguito le istruzioni dettagliate contenute nell'articolo del blog di MAD-EE per controllare prima un singolo motore da un Arduino Nano e poi ho modificato il codice per controllare due motori. Tutti i suoi esempi di codice hanno funzionato senza intoppi al primo tentativo. Puoi semplicemente copiare e incollare il codice dalla sezione del codice finale e assicurarti che i numeri pin siano gli stessi del codice prima di caricare il codice su Arduino Nano.

Ecco lo schema elettrico che ho ottenuto per Arduino Nano per controllare entrambi i controller del motore.

È stato difficile mostrare i cavi trifase [Ma, Mb, Mc] dal motore che va dal motore al terminale a vite in alto a sinistra contrassegnato da una linea rossa spessa, quindi assicurati di collegare i cavi di fase appropriati dal motore del mozzo ai pin corretti su ZS-X11H.

Lo stesso vale per i cavi dell'encoder che vanno dal motore al connettore Encoder JST preinstallato sul asse contrassegnato da una linea viola spessa nello schema elettrico. Sono presenti 5 fili per l'encoder Hall per il motore del mozzo: Gnd, Hc, Hb, Ha, 5v.

Inoltre, le connessioni da Arduino Nano a entrambe le schede sono contrassegnate con colori ed etichette di testo diversi nel diagramma e ho anche fornito due tabelle di mappatura dei pin per il controller del motore sinistro e destro sui pin di Arduino.

Durante questo test Arduino Nano è alimentato dal cavo USB del computer portatile e utilizziamo lo stesso cavo per alimentare e caricare il codice Arduino.

Test

Test di base per far funzionare motori senza controllo PWM

Dopo aver completato la preparazione della scheda e finito di cablare tutto, possiamo testare il funzionamento dei motori senza programmarli effettivamente tramite Arduino. Per fare ciò, assicurati innanzitutto che tutte le schede siano spente.

  1. Rimuovi il ponticello che mette in cortocircuito i pin di abilitazione PWM [intestazione a 2 pin saldata durante la preparazione]
  2. Assicurati che il potenziometro blu sulla scheda sia ruotato completamente in senso antiorario fino in fondo. [in senso orario aumenta la velocità e in senso antiorario diminuisce la velocità quindi vogliamo iniziare da zero].
  3. Assicurati di aver appoggiato l'hoverboard su un supporto o una scatola resistente, così se le ruote girano non scapperà dal tavolo e danneggerà qualcosa

A questo punto è possibile accendere la batteria e ruotare lentamente il potenziometro blu su Sinistra scheda di controllo del motore senso orario. Il motore sinistro dovrebbe iniziare a girare lentamente e puoi aumentare e diminuire lentamente la velocità. Questo test può essere eseguito un motore alla volta. Quindi, dopo aver finito di testare il motore sinistro, abbassa la velocità a zero ed esegui lo stesso test sul controller del motore destro ruotando il suo potenziometro.

Una volta completato il test, ruotare il potenziometro blu su entrambe le schede sulla posizione zero. A questo punto, sappiamo che tutti i collegamenti di alimentazione e dell'encoder sono corretti e che i motori possono essere controllati correttamente.

Tieni presente che questa scheda richiede che anche i cavi dell'encoder siano collegati, altrimenti i motori non gireranno.

Puoi anche installare nuovamente il ponticello di controllo PWM prima di poter eseguire i test di controllo PWM.

Test di controllo PWM

Prima di eseguire questo test assicurati di queste cose:

  1. Il potenziometro blu su entrambe le schede viene ruotato completamente in senso antiorario, ovvero in posizione zero
  2. Il ponticello di abilitazione del controllo PWM è installato sull'intestazione a 2 pin
  3. I cavi dell'encoder sono collegati al motore corretto per ciascuna scheda

A questo punto puoi collegare il cavo USB dal laptop ad Arduino e caricare il codice Sezione Codice finale dell'articolo del blog MAD-EE.

Nel codice prestare attenzione a queste righe in alto. Questi numeri di pin sono associati al nostro motore del mozzo destro, quindi quando esegui il test sposterà solo il motore del lato destro. È possibile modificare i numeri dei pin qui con i numeri dei pin del motore sinistro dalle tabelle e sarà possibile testare il motore sinistro nello stesso modo. Tuttavia, questo codice di esempio fa funzionare solo un motore alla volta.

// MOTORE DESTRO
const int PIN_DIR = 2; // Segnale di direzione del motore
const int PIN_BRAKE = 3; // Segnale freno motore (attivo basso)
const int PIN_PWM = 9; // Controllo della velocità del motore PWM
const int PIN_SPEED = 12; // Uscita dell'impulso di velocità SC dalla scheda RioRand
// MOTORE SINISTRO
const int PIN_DIR = 4; // Segnale di direzione del motore
const int PIN_BRAKE = 5; // Segnale freno motore (attivo basso)
const int PIN_PWM = 10; // Controllo della velocità del motore PWM
const int PIN_SPEED = 11; // Uscita dell'impulso di velocità SC dalla scheda RioRand

Dopo aver caricato il codice su Arduino, avvia la finestra del monitor seriale e assicurati di impostare la velocità di trasmissione su 115200 come previsto nel codice altrimenti vedrai caratteri spazzatura.

A questo punto è possibile eseguire i seguenti comandi nel monitor seriale [assicurarsi che il carattere di nuova riga sia impostato su ritorno a capo prima di immettere comandi nel monitor seriale].

Per avviare il motore a bassa velocità inserire:

PWM, 10

Questo farà funzionare qualsiasi motore che stai testando con i numeri pin nel codice con un ciclo di lavoro di 10. È possibile aumentare o diminuire la velocità inserendo un ciclo di lavoro diverso o arrestare il motore inserendo un ciclo di lavoro pari a 0.

Puoi anche rompere il motore inserendo il comando break:

FRENO, 1

Il comando Break con 1 abiliterà l'interruzione, il che significa che il motore si fermerà, mentre il comando Break con 0 disabiliterà l'interruzione, il che significa che l'interruzione è disattivata e il motore può muoversi. Tuttavia, se in precedenza hai inviato un comando Break con 1 e poi invii un comando PWM con duty cycle diverso da zero, il motore non si muoverà finché non eseguirai un altro comando Break con 0.

L'ultimo comando è DIR o comando di direzione. È possibile modificare la direzione di rotazione del motore eseguendo:

DIR, 1

Questo sposterà il motore in avanti e se cambi la direzione inviando 0 si sposterà all'indietro.

Fare attenzione a cambiare la direzione del motore mentre funziona ad alta velocità in una direzione. Arrestare o rompere sempre il motore prima di cambiare direzione per evitare di causare danni alla configurazione.

Se sei interessato a controllare entrambi i motori contemporaneamente puoi fare riferimento al codice in questo deposito che consente di inviare comandi PWM a entrambi i motori contemporaneamente. Tuttavia, ciò richiede alcune modifiche aggiuntive al codice e il lavoro è attualmente in corso. Condividerò i dettagli quando avrò testato con successo il codice.

È stato un viaggio doloroso con molte fermate e inizi alla ricerca di un controller motore che possa essere utilizzato per controllare i motori dell'hoverboard che non rompa una banca e possa essere utilizzato per convertire un hoverboard in un robot controllato da ROS2 e questo è un altro piccolo passo in quel viaggio.

Grazie mille a MAD-EE per aver condiviso video e codice di YouTube di pubblico dominio, è stato di grande aiuto. Inoltre, grazie alle persone della comunità di robotica/ROS per aver condiviso idee per far andare avanti questo progetto.

Spero che questo sia stato utile. Divertitevi a costruire!!