Thrust station

mi sento finalmente abbastanza sicuro con arduino da iniziare uno dei primi progetti che avevo in mente quando un mesetto fa gli ho dato corrente per la prima volta.

una thrust station sarebbe una mini postazione per la misurazione della spinta (thrust) di un motore, nel mio caso brushless. La postazione può essere completata da un multimetro (watt, ampere e voltaggio)

eccone un esempio, prodotta dalla famosa turnigy:

il bello però come sapete meglio di me è costrursela da soli :smiley: oltretutto in questo modo con un solo microcontrollore (una nano) avrò tutto ciò che desidero, dalla gestione dell esc, alla misurazione della spinta al consumo.

la mia lista della spesa per quando riguarda il calcolo della spinta è questa:

load cell da 2kg, esistono anche da altri valori ma credo che questo sia quello più adatto, consigli sono sempre ben accetti

HX711 un amplificatore per la load cell

per quando riguarda l "interfaccia" userò un lcd sperando di riuscire a far entrare tutto nel tipico 2x16 ma in caso ne prendo uno più grande. Per la gestione della velocità dell esc userò un semplice potenziometro oppure un rotary encoder.

il problema per me è quando si arriva al multimetro, approposito, si parla di batterie al litio comprese fra 9-16V, amperaggi di punta di circa 30, standard 10, sinceramente avevo anche valutato la possibilità di prenderne uno già pronto: tipo questo

però da un certo punto di vista mi piacerebbe anche provare a costruirlo da solo ho letto un paio di riferimeti, la realizzazione del voltometro non dovrebe essere difficile, però per amperometro e wattmetro sono in alto mare

ho dato un occhiata ad articoli complessi come questo e altri che per il mio livello dovrebbero essere più facilmente realizzabili uno, due

l'alimentazione di arduino e dei sensori avverrà a parte, credo tramite una tipica 9V per evitare possibili interferenze

consigli? dovrei fermarmi alla sola gestione dell esc e lettura della spinta e comprare il multimetro già pronto? aspetto suggerimenti da voi che siete più esperti prima di comprare il tutto

Per la corrente usa un sensore come questo, per la tensione basta un partitore, la potenza è data dal prodotto di Tensione e Corrente.

sembra perfetto, arriva ai 31A e regge fino ai 30V, le connessioni sembrano facili, tipico signal, +, - inoltre sul fault che se non ho capito male si attiva quando eccedo i 31A potrei anche mettere una sorta di "allarme"

avrei un dubbio: io connetto questo fra positivo batteria e positivo esc in questo modo misuro il consumo del blocco esc + motore
se volessi potrei anche metterne un secondo dopo l esc in modo tale da misurare solo il consumo del motore oppure sbaglio? forse sto semplificando troppo visto che il motore ha 3 cavi e credo funzioni con una sorta di corrente alternata, però magari sto sbagliando completamente sono solo supposizioni

ah ho specificato nel primo post che l alimentazione di arduino e dei sensori avverrà con un circuito a parte per non interferire con le letture

Il consumo del ESC è trascurabile rispetto a quello del motore, circa 50-60 mA, eventualmente puoi misurarlo a vuoto, senza motore collegato, e sottrarlo dalla misura della corrente motore.

Ciao, sto optando per un differente sensore, sempre della allegro ma il 712: http://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf
Ha particolari differenze rispetto al 711?

Ci sono 3 versioni, quelle che potrebbero interessare a me sono da 20 o 30 ampere, quale é preferibile? Cioé con quello da 20 avrei una lettura piú fine (100mV/A contro 66) e in ogni caso "survival of the device up to 5 times overcurrent conditions" per vostra esperienza le esc di un drone (attualmente le mie sono da 12 con picco di 20) a quanti ampere arrivano di solito?

Buon ferragosto

Pensando a due piccole implementazioni

  1. Due sensori di temperatura, uno per l esc e l altro per il motore (anche se non penso di poter avere una buona lettura da quest ultimo visto che si parla di motori outrunner dunque non potró metterlo direttamente a contatto)

  2. misurazione rpm, credo che il metodo migliore sia l utilizzo di una coppia di infrarossi, ho un modulino di un kit sensori che potrei usare, questo, ma non sono sicuro se riesce a raggiungere una velocità adeguata.

Idee, consigli?

aster94:

  1. Due sensori di temperatura, uno per l esc e l altro per il motore (anche se non penso di poter avere una buona lettura da quest ultimo visto che si parla di motori outrunner dunque non potró metterlo direttamente a contatto)

perché? il motore non ha buchi filettati per il fissaggio? Potresti usare uno di quelli per la misura della temperatura.

Ciao Uwe

Si, il fatto é che fra la piastra di fissaggio del motore e la parte rotante c é circa mezzo centimetro, non mi va molto di mettere il DS18B20 (nel precedente messaggio avevo scordato di dire quale sensore pensavo di usare) in uno spazio cosí ristretto... Certo se trovo come fissarlo con sicurezza é un altro discorso. In ogni caso sto procedendo bene come componenti/scelte oppure sto sbagliando qualcosa?

La parte che riscalda é l' avvolgimento. Quello é sulla parte ferma. Il rotore oltre che é la parte che é meglio raffredata perché a contatto con l' aria movimentata dall'elica é una parte che poco riscaldata.
Peercui puoi misurare la temperatura sulla superfce di montaggio e vai bene.

Ciao Uwe

Bien allora se tutti i componenti sono adatti oggi pomeriggio inizio con questa bella lista della spesa, faró anche qualche supporto con la stampante 3d e una piccola fresa poi posto tutto

sto un pò impazzendo con questa funzione per il calcolo degli rpm

la funzione è composta da un pulsante che avvia un ciclo di 5 secondi gestito da millis in cui in teoria dovrei leggere le volte in cui l IR vede il passaggio dell elica, il problema è che passandoci il dito davanti una due volte risponde con un valore di almeno il triplo non riesco a capire perchè non funziona

int sensor = 3;

unsigned long startTime;
unsigned long endTime;
int interval = 5000;
int diff;

int rpm;
unsigned int counter;

int button = 2;
boolean state;


void setup() {

  Serial.begin(9600);
  pinMode(sensor, INPUT);
  pinMode(button, INPUT_PULLUP);

}

void loop() {

  state = !digitalRead(button);
  if (state == 1) {
    getRPM ();
    Serial.println(counter);
    //clean rpm
    counter = 0;
  }
}

void getRPM () {

  startTime = millis();

  while (diff <= interval) {

    //rpm
    
     if (!digitalRead(sensor) == 1) {
      counter++;
      while (!digitalRead(sensor) == 1) {
        ;
      }
    }

    //end rpm

    endTime = millis();
    diff = endTime - startTime;
  }

  //outside while

  diff = 0;
  rpm = counter * 12 / 2;

}

inoltre credo di poter fare a meno della "int diff" però non riesco a sbarazzarmene