«

»

Giu 17

Stampa Articolo

Brushless Tiger Motor Arduino

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.

brushless T-motor test

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:

brushless T-motor ESC 400Hz

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:

arduino servo libraries attach

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:

arduino write microseconds

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.

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/brushless-tiger-motor-arduino.html

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>