Nell’articolo di lunedì hai letto il test del brushless motor 1100Kv oggi ho fatto qualche altro test con il Brushless Tiger Motor Arduino non convinto del controllo del motore eseguito.
Nel test eseguito con la classe Servo.h non mi ha convinto la partenza del motore al valore 62 e di conseguenza ho iniziato a dubitare anche dell’accellerazione alla massima velocità.
L’ipotesi del Brushless Tiger Motor Arduino
L’ipotesi che arrivati ad un certo valore in gradi fosse completamente inefficace incrementare il valore passato al motore in quanto l’intensità del suono, causato dalla rotazione, non sembrava variare.
Inoltre la partenza “ritardata” dal valore 62 e non da 0 mi insospettiva.
L’analisi dei valori
Ho eseguito prima qualche ricerca in merito al funzionamento dell’ESC che ho acquistato e provato:
ho scoperto che il range di valori in microsecondi che consentono all’ESC di far girare il Brushless Tiger Motor Arduino vanno da 1000 a 2000.
Passo successivo è stato prendere la classe Servo.h e comprendere dalla documentazione ufficiale se puoi passargli il range di valori min e max in microsecondi in modo da poterla utilizzare in modo corretto con questo ESC:
non solo, come hai letto, è presente questa possibilità con il metodo attach( pin,min,max ) ma sopratutto ho letto che il valore di default minimo è 544 ed il valore massimo è 2400.
I valori 544 e 2400 microsecondi sono validi al 99% per il controllo dei servo ma poco adatti al controllo dell’ESC connesso al Brushless Tiger Motor Arduino.
Da questa scoperta ho fatto qualche calcolo:
2400 – 544 = 1856 range di valori dei microsecondi;
1856 / 180 = 10,31 variazione in mocrosecondi tra un valore in gradi ed il successivo;
per cui se il mio motore parte quando gli viene passato il valore 62 ho dedotto che:
62 ( valore di avvio del motore ) x 10,31 ( microsecondi per ogni valore da 0 a 179 ) + 544 ( valore in microsecondi iniziale ) = 1183,28
Inolre nella pagina di riferimento per la classe Servo ho trovato anche il metodo writeMicroseconds() con cui puoi inviare al pin scelto il valore in microsecondi di durata dell’impulso:
ho quindi scritto lo sketch seguente:
#include <Servo.h> #define brushlessPin 11 #define potPin A0 Servo esc; int speed; void setup() { Serial.begin(9600); // Comms with computer Serial.print("Started...\r\n"); esc.attach( brushlessPin ); } void loop() { speed = map( analogRead( potPin ), 0, 1023, 1000, 2000 ); Serial.println( speed ); esc.writeMicroseconds( speed ); delay( 100 ); }
in cui puoi vedere che non ho specificato il range in fase di attach del servo ( linea 14 ) ma ho preferito modificare la map() in modo che al variare da 0 a 1023 ricevuto dal potenziometro i microsecondi inviati al Brushless Tiger Motor Arduino variano nel range 1000-2000 ( linea 18 );
linea 20: invia il dato in microsecondi al pin su cui hai eseguito l’attach;
Il risultato del test ha confermato, leggendolo nel Monitor Seriale, che lo start del motore avviene quando il valore in microsecondi è 1183 lasciando il Brushless Tiger Motor Arduino fermo dal valore 1000 a 1182.
2 commenti
Ciao Mauro, mi sono imbattuto nei tuoi meravigliosi articoli durante lo studio dei brushless per poter li applicare ad un volante per simulatore di guida. Il motore avrebbe la funzione di restituire il force feedback della strada e su di esso dovrebbe essere calettato il pignone del volante stesso senza riduzioni. Per fare ciò mi occorrerà un motore consistente in grado di erogare circa 1,2nm. Considerando che lanello per il controllo di spazio viene chiuso attraverso in encoder esterno (almeno per il momento) mi occorrerebbe quindi comandare il motore nella sua velocità attraverso un segnale modulato in PWM e dovrà avere la possibilità si invertire direzione istantaneamente. Molti hanno svolto questo compito con dei DC motor a spazzole, ed il driver bts. Tuttavia il motore è enorme, e farlo lavorare a 12v a bassissima velocità lo rende un forno. Per questo motivo stavo pensando al brushless, in quanto penso sia più efficente in tal senso. Supponendo di mandare un motore da 500w a 12w chiaramente ho bisogno di parecchi ampere. Vedo in svariati posti questi ESC come finali di potenza, ma sono sempre alimentari con una batteria lipo. Non potrei usare un normale alimentatore da 500w? C’è qualcosa che mi sfugge oppure funzionano solo cob le lipo? Vedo motorini con amperaggi assurdi (50-100A) ok l’esc proporzionato, ma poi l’alimentatore? Se metto un motore da 12v 100A ed il rispettivo ESC, devo metterci un alimentatore da 1.2KW? Grazie, Andrea
Autore
Ciao Andrea,
nel tuo commento poni molte corrette informazioni e molte domande, cerco di rispondere a tutte:
Alimentazione LiPo: solitamente li vedi utilizzati con le LiPo per 2 aspetti caratteristici di queste batterie, il primo è dato dal fatto che spesso i brushless sono usati sui droni, e le lipo offrono un vantaggio in termini di peso che giova all’applicazione; il secondo è la grande capacità di erogare Amperaggi elevati che le lipo possiedono e che spesso con questi motori sono richiesti.
Potenza dell’alimentatore: certamente deve essere proporzionale alla corrente che può essere richiesta dal motore, considera anche le correnti di picco che spesso nei motori brushless possono essere elevate e, solitamente, gli alimentatori tradizionali non possiedono tali correnti di spunto.
Se il motore è dichiarato 12v 100A ma tu non utilizzi tutta la sua potenza, devi misurarla con un amperometro in fase di utilizzo, potresti prendere un alimentatore di minore corrente ma al primo picco rischieresti l’alimentatore ed il funzionamento del progetto.