Calibrage ESC
djeje
4 Messages
Le mardi 12 février 2019 à 19:37:02
Bonjour,
Je suis subjugué par la qualité des articles et je vous remercie pour ce partage.
Je me pose une question sur le calibrage des ESC. Dans le tuto on augmente automatiquement le vitesse puis on le stop net.
Ce qui m'étonne c'est que le calibrage ne dépende pas de la radiocommande aussi.
Ma vrai question, j'ai un ESC trackstar 80A que je n'arrive pas à calibrer avec ma radiocommande je pensais donc faire ça avec l'arduino. Qu'en pensez vous ?
Bien cordialement
Jérome
Je suis subjugué par la qualité des articles et je vous remercie pour ce partage.
Je me pose une question sur le calibrage des ESC. Dans le tuto on augmente automatiquement le vitesse puis on le stop net.
Ce qui m'étonne c'est que le calibrage ne dépende pas de la radiocommande aussi.
Ma vrai question, j'ai un ESC trackstar 80A que je n'arrive pas à calibrer avec ma radiocommande je pensais donc faire ça avec l'arduino. Qu'en pensez vous ?
Bien cordialement
Jérome
Le mercredi 13 février 2019 à 14:32:15
Salut djejde, content que les articles te plaisent, ça fait plaisir à lire
Pour la partie calibration je te conseille en effet d'utiliser ton Arduino, tu maîtrisera plus les signaux envoyés.
Pour la partie calibration je te conseille en effet d'utiliser ton Arduino, tu maîtrisera plus les signaux envoyés.
djeje
4 Messages
Le jeudi 21 février 2019 à 21:05:43
Merci.
Je me posais une question car je n'arrive pas à le calibrer, à quoi correspondent les valeurs 1000,2000.
Est -ce que ça pourrait en être la cause ?
Merci par avance !
Je me posais une question car je n'arrive pas à le calibrer, à quoi correspondent les valeurs 1000,2000.
Est -ce que ça pourrait en être la cause ?
Merci par avance !
Le vendredi 22 février 2019 à 11:20:47
Ces valeurs correspondent respectivement à la durée min et max de l'impulsion (en ms).
D'après moi c'est clairement ça qu'il faut adapter dans ton cas. Il va te falloir fouiller dans la doc de tes ESC pour trouver leur plage de fonctionnement.
D'après moi c'est clairement ça qu'il faut adapter dans ton cas. Il va te falloir fouiller dans la doc de tes ESC pour trouver leur plage de fonctionnement.
Fredblock
20 Messages
Le dimanche 1 mars 2020 à 10:23:57
Hello
Je me permet de reprendre ce sujet, qui est une bonne base pour solutionner mon problème.
Je suis également sur un projet de drone quadrirotor, malgré le fait que je sois débutant dans l'arduino (mais c'est en faisant que l'on apprend )
J'ai passé l'étape calibrage des ESC en m'aidant du tuto calibrage des ESC, et jusque là, cela fonctionne. Les moteurs cherchent leurs positions lors de l'alimentation des ESC, et lorsque j'envoie la commande 0 dans le moniteur série, les moteurs s'arrêtent suite au bip bip bip rapproché.
Et suite à la commande 2, les moteurs prennent leurs régimes crescendo jusqu'au régime max et enfin la coupure.
Normalement, arrêtez-moi si je me trompe, mais l'apprentissage est terminé, on peut donc couper l'alimentation des ESC.
Mon problème surgit maintenant.
J'ai voulu tester mes 4 moteurs via un potentiomètre (1er étape avant d'essayer avec un joystick en liaison filaire) afin de simuler manuellement une accélération et/ou décélération des moteurs.
J'ai branché le signal ESC1 sur la pin 4 de l'arduino, l'ESC2 sur la pin 5, l'ESC3 sur la pin 6 et l'ESC4 sur la pin 7.
La masse ESC1/2/3/4 sur la masse breadboard.
5V arduino sur la breadboard + et GND arduino sur la breadboard -
Et la pin A0 sur mon potentiomètre.
Et voici mon code :
Résultat des courses ? Sur les 4 moteurs, celui relié à la PIN7 fonctionne comme je le souhaite, c'est à dire que son régime varie bien selon la position potentiomètre.
Mais les 3 autres moteurs ne fonctionnent pas. Ils cherchent leurs positions en faisant des BIP.
De ce fait, plusieurs interrogations me viennent à l'esprit :
- est-ce que l'apprentissage du couple ESC/MOTEUR est toujours ok malgré que le code apprentissage n'est plus dans l'arduino ? en clair, est-ce que l'ESC garde en mémoire cet apprentissage ? Puisque j'ai l'impression que c'est un problème d'apprentissage/calibrage des ESC vu que 3 moteurs cherchent leurs positions.
- Si l'apprentissage est enregistré, cela semblerait être un problème de connexion du fil signal ESC non ?
Il faut peut-être même combiner les 2 codes, c'est à dire celui du calibrage et essayage des moteurs via potentiomètre ?
J'ai essayé plusieurs fois, et le phénomène est répétable. Ce n'est pas aléatoire.
Rappel du matériel :
- 4X Racerstar 2207 BR2207S Fire Edition 2500KV
- 4X ESC XXD HW30A 30A
- ARDUINO UNO
- LIPO 5000 mAh 3S
Merci par avance pour l'aide apportée :)
Fred
Je me permet de reprendre ce sujet, qui est une bonne base pour solutionner mon problème.
Je suis également sur un projet de drone quadrirotor, malgré le fait que je sois débutant dans l'arduino (mais c'est en faisant que l'on apprend )
J'ai passé l'étape calibrage des ESC en m'aidant du tuto calibrage des ESC, et jusque là, cela fonctionne. Les moteurs cherchent leurs positions lors de l'alimentation des ESC, et lorsque j'envoie la commande 0 dans le moniteur série, les moteurs s'arrêtent suite au bip bip bip rapproché.
Et suite à la commande 2, les moteurs prennent leurs régimes crescendo jusqu'au régime max et enfin la coupure.
Normalement, arrêtez-moi si je me trompe, mais l'apprentissage est terminé, on peut donc couper l'alimentation des ESC.
Mon problème surgit maintenant.
J'ai voulu tester mes 4 moteurs via un potentiomètre (1er étape avant d'essayer avec un joystick en liaison filaire) afin de simuler manuellement une accélération et/ou décélération des moteurs.
J'ai branché le signal ESC1 sur la pin 4 de l'arduino, l'ESC2 sur la pin 5, l'ESC3 sur la pin 6 et l'ESC4 sur la pin 7.
La masse ESC1/2/3/4 sur la masse breadboard.
5V arduino sur la breadboard + et GND arduino sur la breadboard -
Et la pin A0 sur mon potentiomètre.
Et voici mon code :
#include <Servo.h> //Appel de la library Servo.h
int valeur = 0; //Variable potentiomètre
Servo esc ; //Variable de type servo et de nom esc
void setup() {
esc.attach(4); //attribution de la pin 4 à la variable esc
esc.attach(5); //attribution de la pin 5 à la variable esc
esc.attach(6); //attribution de la pin 6 à la variable esc
esc.attach(7); //attribution de la pin 7 à la variable esc
esc.writeMicroseconds(1000); //attribution de la valeur mini
Serial.begin(9600);
}
void loop() {
valeur = analogRead(A0);
int valeuresc = map (valeur , 0 , 1023 , 1000 , 2000);
esc.writeMicroseconds(valeuresc); //attribution de la variable mappée à l'esc
Serial.println(valeuresc);
Résultat des courses ? Sur les 4 moteurs, celui relié à la PIN7 fonctionne comme je le souhaite, c'est à dire que son régime varie bien selon la position potentiomètre.
Mais les 3 autres moteurs ne fonctionnent pas. Ils cherchent leurs positions en faisant des BIP.
De ce fait, plusieurs interrogations me viennent à l'esprit :
- est-ce que l'apprentissage du couple ESC/MOTEUR est toujours ok malgré que le code apprentissage n'est plus dans l'arduino ? en clair, est-ce que l'ESC garde en mémoire cet apprentissage ? Puisque j'ai l'impression que c'est un problème d'apprentissage/calibrage des ESC vu que 3 moteurs cherchent leurs positions.
- Si l'apprentissage est enregistré, cela semblerait être un problème de connexion du fil signal ESC non ?
Il faut peut-être même combiner les 2 codes, c'est à dire celui du calibrage et essayage des moteurs via potentiomètre ?
J'ai essayé plusieurs fois, et le phénomène est répétable. Ce n'est pas aléatoire.
Rappel du matériel :
- 4X Racerstar 2207 BR2207S Fire Edition 2500KV
- 4X ESC XXD HW30A 30A
- ARDUINO UNO
- LIPO 5000 mAh 3S
Merci par avance pour l'aide apportée :)
Fred
Le dimanche 1 mars 2020 à 11:55:55
Salut Fredblock, ton problème vient de esc.attach(); Tu dois créer une variable de type Servo par ESC. Là tu ne fait qu'écraser l'assignement à chaque fois.
Ton code doit donc être le suivant :
Avec ça, ça devrait marcher nickel
Ton code doit donc être le suivant :
#include <Servo.h>
Servo esc1 esc2 esc3 esc4 ;
void setup() {
esc1.attach(4);
esc2.attach(5);
esc3.attach(6);
esc4.attach(7);
esc1.writeMicroseconds(1000);
esc2.writeMicroseconds(1000);
esc3.writeMicroseconds(1000);
esc4.writeMicroseconds(1000);
Serial.begin(9600);
}
Avec ça, ça devrait marcher nickel
Fredblock
20 Messages
Le dimanche 1 mars 2020 à 12:13:55
Merci pour ta réponse.
Il est vrai que ça paraît plus logique de cette manière.
Mais par contre il faut que je rajoute ma fonction loop par dessus non ?
Mon autre question, lorsque l'apprentissage de l'ESC est fait, et que l'on enlève le code de l'apprentissage de l'arduino, l'ESC garde bien en mémoire l'apprentissage ?
Fred
Il est vrai que ça paraît plus logique de cette manière.
Mais par contre il faut que je rajoute ma fonction loop par dessus non ?
Mon autre question, lorsque l'apprentissage de l'ESC est fait, et que l'on enlève le code de l'apprentissage de l'arduino, l'ESC garde bien en mémoire l'apprentissage ?
Fred
Le dimanche 1 mars 2020 à 12:46:03
Mais par contre il faut que je rajoute ma fonction loop par dessus non ?Oui, bien sûr. Je n'ai mis là que ce qui change par rapport à ton code.
Une fois que l'ESC est calibré, c'est stocké dans sa mémoire interne, donc plus besoin du code.
La seule chose indispensable c'est d'initialiser la valeur du zero-throttle dans la fonction setup().
Fredblock
20 Messages
Le dimanche 1 mars 2020 à 14:26:44
Un grand merci à toi :)
Malheureusement j'ai essayer ton code avec le reste du mien (variable potentiomètre et fonction loop)
Mais un message d'erreur survient après compilation sur la ligne Servo esc1 esc2 esc3 esc4 ;
Avec comme message : " expected initializer before 'esc2'
Malheureusement j'ai essayer ton code avec le reste du mien (variable potentiomètre et fonction loop)
Mais un message d'erreur survient après compilation sur la ligne Servo esc1 esc2 esc3 esc4 ;
Avec comme message : " expected initializer before 'esc2'
Fredblock
20 Messages
Le dimanche 1 mars 2020 à 16:57:08
J'ai dupliqué les variables servo pour chaque ESC et ça fonctionne. Voici une copie de mon code :
il y a très probablement moyen de le réduire. mais ça fonctionne.
Si quelqu'un peut m'aiguiller pour le rendre plus optimisé, ça m'intéresse :)
Fred
#include <Servo.h> //Appel de la library Servo.h
int valeur = 0; //Variable potentiomètre
Servo esc1 ; //Variable de type servo et de nom esc
Servo esc2 ; //Variable de type servo et de nom esc
Servo esc3 ; //Variable de type servo et de nom esc
Servo esc4 ; //Variable de type servo et de nom esc
void setup() {
esc1.attach(4); //attribution de la pin 4 à la variable esc
esc2.attach(5); //attribution de la pin 5 à la variable esc
esc3.attach(6); //attribution de la pin 6 à la variable esc
esc4.attach(7); //attribution de la pin 7 à la variable esc
esc1.writeMicroseconds(1000); //attribution de la valeur mini
esc2.writeMicroseconds(1000); //attribution de la valeur mini
esc3.writeMicroseconds(1000); //attribution de la valeur mini
esc4.writeMicroseconds(1000); //attribution de la valeur mini
Serial.begin(9600);
}
void loop() {
valeur = analogRead(A0);
int valeuresc = map (valeur , 0 , 1023 , 1000 , 2000);
esc1.writeMicroseconds(valeuresc); //attribution de la variable mappée à l'esc
esc2.writeMicroseconds(valeuresc); //attribution de la variable mappée à l'esc
esc3.writeMicroseconds(valeuresc); //attribution de la variable mappée à l'esc
esc4.writeMicroseconds(valeuresc); //attribution de la variable mappée à l'esc
Serial.println(valeuresc);
}
il y a très probablement moyen de le réduire. mais ça fonctionne.
Si quelqu'un peut m'aiguiller pour le rendre plus optimisé, ça m'intéresse :)
Fred
Le dimanche 1 mars 2020 à 18:26:21
Impec. Ton est code tout ce qu'il y a de plus court, pas moyen de le réduire :)
Fredblock
20 Messages
Le jeudi 5 mars 2020 à 19:49:40
Merci pour ton aide.
Je vais maintenant essayé de remplacer le potard par un Joystick type celui de ma radiocommande, et m'attaquer au calibrage du capteur Gyroscopique :)
Fred
Je vais maintenant essayé de remplacer le potard par un Joystick type celui de ma radiocommande, et m'attaquer au calibrage du capteur Gyroscopique :)
Fred
Fredblock
20 Messages
Le vendredi 20 mars 2020 à 10:20:55
Hello
Après avoir savourer les premiers décollages de ma petite bête à 4 bras, j'ai très vite remarqué après plusieurs checks, que mes ESC deviennent rapidement (après plusieurs minutes d'alimentation/essais) tiède.
Est-ce un phénomène normal ?
Il faut dire qu'ils sont plutôt consommateur, mais de là être tiède aussi rapidement ...
Hâte de vous lire
Fred
Après avoir savourer les premiers décollages de ma petite bête à 4 bras, j'ai très vite remarqué après plusieurs checks, que mes ESC deviennent rapidement (après plusieurs minutes d'alimentation/essais) tiède.
Est-ce un phénomène normal ?
Il faut dire qu'ils sont plutôt consommateur, mais de là être tiède aussi rapidement ...
Hâte de vous lire
Fred
Le vendredi 20 mars 2020 à 11:36:00
Yo, oui c'est totalement normal. Tes ESC sont des 30A, avec une LiPo 3S la puissance dissipée vaut $P = U \times I$ :
$$11.1 \times 30 = 333W$$
Ça en fait des watts !
Réellement, ils ne dissipent pas cette puissance en continue, ça varie en fonction du courant tiré. Mais quand même, c'est normal que ça chauffe.
$$11.1 \times 30 = 333W$$
Ça en fait des watts !
Réellement, ils ne dissipent pas cette puissance en continue, ça varie en fonction du courant tiré. Mais quand même, c'est normal que ça chauffe.
Fredblock
20 Messages
Le vendredi 20 mars 2020 à 17:27:51
Hello
Merci pour ta réponse.
Cela semble logique, mais la rapidité à laquelle ils chauffent me laissait songeur.
J'ai beaucoup d'autres questions liées au stade auquel mon drone progresse.
Si tu es d'accord, je vais ouvrir un ou plusieurs autre sujets différents ( pour structurer un peu tout de même )
Merci
Fred
Merci pour ta réponse.
Cela semble logique, mais la rapidité à laquelle ils chauffent me laissait songeur.
J'ai beaucoup d'autres questions liées au stade auquel mon drone progresse.
Si tu es d'accord, je vais ouvrir un ou plusieurs autre sujets différents ( pour structurer un peu tout de même )
Merci
Fred