Brushless Motor

Buonasera a tutti,
innanzitutto vorrei augurare una buona pasqua a tutti.
sono nuovo del forum ma arduino lo utilizzo già da alcune settimane e vorrei unirlo alla mia passione per l aeromodellismo.
il mio obbiettivo sarebbe controllare un brushless motor(tramite ESC) con un potenziometro, in cui il valore 0 è il motore fermo e più giro il pot per arrivare a 1023 con il motore al massimo. avevo sentito parlare che si dovevano giestire con la libreria dei servo il PWM utilizzando qualcosa simile all esempio KNOB presenet nell' IDE. sinceramente forse per errore mio non ho capito coem utilizzarlo e visto che il Brushless lo ho acquistato e dovrebbe arrivare entro la fine della settiamana non voglio fare casino e/o rovinarlo/distruggerlo.
grazie a chi mi risponderà e ancora buona pasqua

P.S: se collego l'ESC alla basetta el pin del segnale au PWM devo collegare anche il 5V e il GND?(

Devi collegare la massa e il segnale a Arduino.
Ci sono ESC con un alimentatore interno (BEC o battery ellimination circuit) che danno 5V sul conettore e cosí potresti alimentare Arduino. Non so se il modell che nomini ha questa funzione.
Il pilotaggio avviene con un segnale PPM che viene gestito dalla bibioteca servo.h di serie nel IDE.
Leggi il valore di tensione del potenziometro con un entrata analogica e lo mappi a 0 a 180.
Attenzione la maggior parte dei ESC ha bisogno che il senale vada prima a 0 e poi al valore stabilito per partire.

Ciao Uwe

Grazie della risposta,
allora l ESC è questo (Radio Control Planes, Drones, Cars, FPV, Quadcopters and more - Hobbyking
e il motore è questo Radio Control Planes, Drones, Cars, FPV, Quadcopters and more - Hobbyking (lo so sono andato molto largo con il rapporto A motore e A ESC).
e a quanto pare l'ESC ha un BEC di 3A e credo che basti per Arduino(mi sbaglio?). ma questo cavo lo devo colegare cosi?

con questo prgramma andrebbe bene?

#include <Servo.h> 
 
Servo brushlessmotor1;  
int potenziometro1pin = 0;  
int val=0;    
 
void setup() 
{ 
  brushlessmotor1.attach(9);  
} 
 
void loop() 
{ 
  val = analogRead(potenziometro1pin);            
  val = map(val, 0, 1023, 0, 179);     
  brushlessmotor1.write(val);                                            
}

Ecetto che programmi il pin 9 e attacchi il ESC al pin 10 del Arduino il resto é giusto.
Per favore rinpicciolici l'immagine per inserirla o agiungi "width=500" al "img" tag.
Ciao Uwe

Grazie mille,
Ora però mi è venuto un dubbio:
La libreria servo avevo sentito dire che potesse gestire soltanto il pin 9 e 10 ,ciò vuol dire che posso controllare solo due brushless motor!?!?!

no, la libreria gestisce 12 pin dei 20 disponibili del Arduino (i 14 digitali e i 6 analogici).
Ciao Uwe

so che e' un thread vecchio ma almeno evito di aprirne uno nuovo, volevo chiedere a chi potesse rispondermi, come mai il la mappa tura viene fatta a valori 0-179 nn era piu' corretto 0-255? 255 non e' la massima potenza erogabile?

forse mi sono risposto da solo, e' xke secondo la libreria servo i valori accettabili vanno da 0 a 179 giusto?

"Standard servos allow the shaft to be positioned at various angles, usually between 0 and 180 degrees"

Ispa:
volevo chiedere a chi potesse rispondermi, come mai il la mappa tura viene fatta a valori 0-179 nn era piu' corretto 0-255? 255 non e' la massima potenza erogabile?

0-179 è sbagliato per un ESC dato che corrisponde ad una variazione di +/- 90° su un servoRC, il valore da usare è +/- 45°, quello standard dei radiocomandi, quindi si deve ragionare tra 45 e 135 utilizzando la myservo.write() in gradi.
Sarebbe meglio utilizzare la myservo.writeMicroseconds() con valori compresi tra 1000 e 2000 (1ms e 2 ms).

astrobeed:
0-179 è sbagliato per un ESC dato che corrisponde ad una variazione di +/- 90° su un servoRC, il valore da usare è +/- 45°, quello standard dei radiocomandi, quindi si deve ragionare tra 45 e 135 utilizzando la myservo.write() in gradi.
Sarebbe meglio utilizzare la myservo.writeMicroseconds() con valori compresi tra 1000 e 2000 (1ms e 2 ms).

grazie della risp,

ho ancora dei dubbi..... 0-179 nn e' un escursione di 180 gradi?

se dovessimo rimappare cmq a 45 gradi nn sarebbe stato più corretto rimappare cosi':

val = map(val, 0, 1023, 0, 44);

ma c'e' un documento che posso leggere dove chiarire meglio le idee? sinceramente nn ho capito cosa diciamo di fare all'ESC con il comando brushlessmotor1.write(val); il valore che passiamo e' la rimappatura del potenziometro ed ok. ma di fatto cos'e'?

Ispa:
ho ancora dei dubbi..... 0-179 nn e' un escursione di 180 gradi?

Si 0-179 sono +/- 90°, con posizione centrale a 90, però lo standard per i servo RC, usato da tutti i radiocomandi, è escursione di +/- 45°, con centro a 0, che corrisponde ad un impulso compreso tra 1ms e 2ms, mentre l'escursione di +/- 90° (180° totali), corrisponde ad un impulso compreso tra 500us e 2500us.
Gli ESC sono progettati per accettare in ingresso il comando di un servo rc standard, quindi impulsi compresi tra 1 e 2 ms, pertanto per ottenere questa escursione con la servo.write è necessario usare valori compresi tra 45 e 135, 90 corrisponde alla posizione centrale del servo (1500 us).
Lo so che è un casino, chi ha scritto la libreria servo l'ha fatta in questo modo e tocca tenersela così :slight_smile:

ma quindi avendo un range di 90 gradi -45 gira a massima potenza a rotazione inversa, e +45 massima potenza a rotazione diretta? ed ovviamente a 0 fermo?

corretto?

Dipende dal tipo di ESC, quelli ad uso aeronautico fanno girare il motore in un solo verso, dal minimo al massimo, quelli per uso automodelli o girano in un solo senso con una parte della corsa riservata al freno, oppure possono girare nei due versi però non è detto che il centro sia motore fermo, tocca leggere il manuale d'uso del ESC.

ma nn capisco ho collegato tutto ma il motore nn gira e nn esce tensione dall'esc pero' canta... ch epotrebbe essere?

Ispa:
ma nn capisco ho collegato tutto ma il motore nn gira e nn esce tensione dall'esc pero' canta... ch epotrebbe essere?

Leggi il manuale del ESC e guarda la procedura per calibrarlo e per armarlo.

infatt e' l'esc solo che e' cinese e il libretto di istruzioni e' scritto in mandarino tradotto con google ed e' impossibile da legere considera mi sta facendo impazzire anche cn la radio