Salve,
ho il seguente hardware setup:
Batteria connessa ad un ESC YEP HV-80A (manuale) ed un motore Turnigy Aerodrive SK3 - 6374-168kv Brushless Outrunner Motor.
L'ESC e' connesso ad un Arduino Mega su un pin PWM e nonostante abbia provato diversi esempi per connettere Arduino con un ESC non ho avuto fortuna.
Praticamente non riesco a trovare la sequenza iniziale per armare l'ESC. Una volta connesso l'ESC, sento una sequenza di beeps ma poi nulla.
Dalle caratteristiche dell' ESC ho visto che PWM: 8~16 KHz e che "Safe power-on. (Motor will not start until throttle is returned to lowest position)", il che significa che dovrei settare il pin PWM a zero per poter poi usare il motore.
Il manuale non aiuta ed inoltre ho scoperto che questi ESC sono cloni di altre marche, quindi mi viene il dubbio che i settaggi non siano standard(?).
In questo momento sto utilizzando questo esempio con qualche variazione.
#include <Servo.h>
#define MAX_SIGNAL 2000
#define MIN_SIGNAL 600
#define MOTOR_PIN 9
int throttle;
Servo motor;
void setup() {
Serial.begin(115200);
Serial.println("Program begin...");
Serial.println("This program will calibrate the ESC.");
//pinMode(MOTOR_PIN, OUTPUT); // sets the pin as output
motor.attach(MOTOR_PIN, MIN_SIGNAL, MAX_SIGNAL);
Serial.println("Now writing maximum output.");
Serial.println("Turn on power source, then wait 2 seconds and press any key.");
motor.writeMicroseconds(MAX_SIGNAL);
Serial.println(MAX_SIGNAL);
// Wait for input
while (!Serial.available());
Serial.read();
// Send min output
Serial.println("Sending minimum output");
motor.writeMicroseconds(MIN_SIGNAL);
Serial.println(MIN_SIGNAL);
}
void loop() {
//Read the new throttle value
throttle = Serial.parseInt();
// Wait for some input
if (Serial.available() > 0 && throttle > 0) {
// Print it out
Serial.print("Setting throttle to: ");
Serial.println(throttle);
// Change throttle to the new value
motor.writeMicroseconds(throttle);
throttle = 0;
}
}
Ho gia' provato altri esempi dove si mappa il valore tra 0-1024 a 0-180 del servo, ma non ho avuto dei risultati.
Ho contattato HobbyKing per avere piu' dettagli sul ESC, appena mi contattano aggiorno il post.
Questo dovrebbe essere il manuale degli ESC di YGE originali.
Quindi PWM-Frequency = 8 kH significa 125 microsec
Qualche suggerimento da qualcuno che ha esperienza con ESC ed Arduino? Magari qualche debugging da fare sul PWM?
Grazie,
Alessandro
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
In allegato un semplice ESC tester, gestisce fino a quattro ESC, o servo, in simultanea.
Gli ESC vanno collegati ai pin 2-3-4-5, il potenziometro sul pin A0, variando il potenziometro tra 0 e il massimo vari la velocità del motore collegato al ESC, il motore non parte fino a che il potenziometro non viene portato a zero.
Ricordati che devi collegare il negativo degli ESC con il GND di Arduino e che gli ESC vanno alimentati tramite batteria dedicata.
// ESC tester.
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int Pot, Vel;
bool ld_stat;
void setup()
{
pinMode(13, OUTPUT);
servo1.attach(2);
servo2.attach(3);
servo3.attach(4);
servo4.attach(5);
servo1.writeMicroseconds(1000);
servo2.writeMicroseconds(1000);
servo3.writeMicroseconds(1000);
servo4.writeMicroseconds(1000);
}
void loop()
{
ld_stat ^= 1;
digitalWrite(13, ld_stat);
Pot = analogRead(A0);
Vel = map(Pot, 0, 1023, 1000, 2000);
servo1.writeMicroseconds(Vel);
servo2.writeMicroseconds(Vel);
servo3.writeMicroseconds(Vel);
servo4.writeMicroseconds(Vel);
delay(20); // 50 Hz cycle
}
nid69ita:
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
ok!
Nuovo sul sito ma non in elettronica e programmazione.
Ingegnere con la conoscenza di una decina di linguaggi di programmazione.
Non nuovo su Arduino ma nuovo agli ESC.
astrobeed:
In allegato un semplice ESC tester, gestisce fino a quattro ESC, o servo, in simultanea.
Gli ESC vanno collegati ai pin 2-3-4-5, il potenziometro sul pin A0, variando il potenziometro tra 0 e il massimo vari la velocità del motore collegato al ESC, il motore non parte fino a che il potenziometro non viene portato a zero.
Ricordati che devi collegare il negativo degli ESC con il GND di Arduino e che gli ESC vanno alimentati tramite batteria dedicata.
Grazie dell'esempio, ma e' uno di quelli che ho gia' provato! 
Piu' o meno fa la stessa cosa del mio programma, io entro dei valori come il potenziometro.
L'ho eliminato per semplificare il circuito e le variabili in modo da semplificare il debugging.
Giusto una domanda. Normalmente Arduino deve avere un segnale PWM al massimo quando connetto (power up) l'ESC e subito dopo un segnale 0. Dovrebbe mimare la sequenza di arming da quanto ho letto.
delay(20); // 50 Hz cycle
PWM sul pin di Arduino giusto?
biskero:
Grazie dell'esempio, ma e' uno di quelli che ho gia' provato! 
Direi proprio di no visto che l'ho scritto io e non puoi averlo trovato in giro, inoltre io controllo direttamente la durata in us dell'impulso, in modo da avere la certezza di lavorare tra 1 e 2 ms come deve essere.
biskero:
PWM sul pin di Arduino giusto?
ESC e Servo si controllano in PPM e non in PWM.
"Ricordati che devi collegare il negativo degli ESC con il GND di Arduino e che gli ESC vanno alimentati tramite batteria dedicata."
Assolutamente fatto come prima cosa 
astrobeed:
Direi proprio di no visto che l'ho scritto io e non puoi averlo trovato in giro, inoltre io controllo direttamente la durata in us dell'impulso, in modo da avere la certezza di lavorare tra 1 e 2 ms come deve essere.
Ho scritto uno simile con potenziometro, non il tuo codice!
biskero:
Ho scritto uno simile con potenziometro simile, non il tuo codice!
Il fatto che usi un potenziometro non significa che hai fatto le cose nel giusto modo, sopratutto con le corrette temporizzazioni.
biskero:
Puoi spiegarti meglio?
Non hai detto che sei un ingegnere ?
Dovresti sapere molto bene che differenza c'è tra pwm e ppm.
astrobeed:
Il fatto che usi un potenziometro non significa che hai fatto le cose nel giusto modo, sopratutto con le corrette temporizzazioni.
infatti quello che sospetto sia il problema sia sui delay
astrobeed:
Non hai detto che sei un ingegnere ?
Dovresti sapere molto bene che differenza c'è tra pwm e ppm.
la conosco benissimo la differenza!
biskero:
la conosco benissimo la differenza!
E allora perché insisti col pwm quando il segnale di controllo degli ESC è un ppm ?
astrobeed:
E allora perché insisti col pwm quando il segnale di controllo degli ESC è un ppm ?
Io ti ho solo chiesto di spiegare ESC e come funziona.
Qui dice diversamente
Dalla spiegazione e' la trasmissione che e' PPM.
biskero:
Io ti ho solo chiesto di spiegare ESC e come funziona.
Perché invece di stare fare tanta polemica non provi il codice che ti ho postato ?
Qui dice diversamente
Dicono cazzate visto che in pwm l'informazione è veicolata dal rapporto tra parte bassa e parte alta del segnale, in ppm l'informazione può essere veicolata in due modi, sia dalla durata della sola parte alta, o parte bassa, del segnale che dalla posizione dell'impulso se è un treno d'impulsi componente un pacchetto di dati.
Si da il caso che nel controllo di servo e ESC conta solo la durata della parte positiva dell'impulso e la parte negativa può essere sia variabile che di lunghezza fissa.
Comunque da quanto hai suggerito, i delay sono il dettaglio che devo modificare