Problème démarrage du drone
✔ Ce sujet est résolu
frangipane
42 Messages
Le dimanche 31 janvier 2021 à 12:51:30
Bonjour,
Dans le chapitre 5, je crois, on doit faire une manip pour calculer les offset du gyro et de l'accéléromètre.
Mais je vois pas où mettre ces valeurs dans le code final.
Finalement on s'en fou ?
Dans le chapitre 5, je crois, on doit faire une manip pour calculer les offset du gyro et de l'accéléromètre.
Mais je vois pas où mettre ces valeurs dans le code final.
Finalement on s'en fou ?
Le dimanche 31 janvier 2021 à 12:58:18
Salut, tu peux passer ce chapitre. Le code final n'utilise pas cette technique pour mesurer les angles.
Lit le chapitre 7 plutôt.
Lit le chapitre 7 plutôt.
frangipane
42 Messages
Le dimanche 31 janvier 2021 à 13:56:20
Ah ok merci !
Bon… je l'ai "terminé".
Parce que évidement, il marche pas.
Je vois pas où est le problème, mais sachez que j'ai rajouté quatre relais, un par moteur pouvoir couper l'alimentation des moteurs.
Au démarrage, les ESC sont alimentés mais les moteurs font chacun un bip environ par seconde, et ces bips se décalent a chaque fois un peu plus (au début ils les font tous en même temps et après ils se décalent).
Pour l'instant je sais que "pulse_length_esc1" reste à 1000 même en changeant les joysticks. Et je pense que les moteurs ignore le signal.
Tout est alimenté via la batterieen faisant attention au différentes tension. Les grounds sont reliés.
Bon… je l'ai "terminé".
Parce que évidement, il marche pas.
Je vois pas où est le problème, mais sachez que j'ai rajouté quatre relais, un par moteur pouvoir couper l'alimentation des moteurs.
Au démarrage, les ESC sont alimentés mais les moteurs font chacun un bip environ par seconde, et ces bips se décalent a chaque fois un peu plus (au début ils les font tous en même temps et après ils se décalent).
Pour l'instant je sais que "pulse_length_esc1" reste à 1000 même en changeant les joysticks. Et je pense que les moteurs ignore le signal.
Tout est alimenté via la batterieen faisant attention au différentes tension. Les grounds sont reliés.
Le dimanche 31 janvier 2021 à 14:04:24
S'ils font des bips qui se décalent c'est que la séquence d'initialisation des ESC ne s'est pas faite. Normalement on entend "bip1
bip2 bip3" quand on allume. Ensuite 3 bips courts et 1 bip long.
bip2 bip3" quand on allume. Ensuite 3 bips courts et 1 bip long.
frangipane
42 Messages
Le dimanche 31 janvier 2021 à 14:07:28
J'ai mis des serial.print un peu partout, dont dans la loop().
Mais la loop() est faite qu'une seul fois ! (je reçoit qu'une seul fois le serial.print)
isStarted() reste à 0
pulse_length[CHANNEL1] reste à 1500
S'il vous plait aidé moi ! Je veux finir ce drone !
Mais la loop() est faite qu'une seul fois ! (je reçoit qu'une seul fois le serial.print)
isStarted() reste à 0
pulse_length[CHANNEL1] reste à 1500
S'il vous plait aidé moi ! Je veux finir ce drone !
frangipane
42 Messages
Le dimanche 31 janvier 2021 à 14:09:14
Ah ! Je viend de voir votre message.
J'ai bien bip1 bip 2 et bip3 mais pas les autres.
J'ai un programme qui peut calibrer les moteurs.
Comment je peux régler le problème ?
J'ai bien bip1 bip 2 et bip3 mais pas les autres.
J'ai un programme qui peut calibrer les moteurs.
Comment je peux régler le problème ?
frangipane
42 Messages
Le dimanche 31 janvier 2021 à 14:31:30
Le programme que j'ai fait calibre tout seul les moteurs, avec la librairie servo.
Après (tojours avec servo) je peux faire tourner les moteurs. Si je leurs donne rien à faire, au bout d'environ 10 s ils refont les bips
Après (tojours avec servo) je peux faire tourner les moteurs. Si je leurs donne rien à faire, au bout d'environ 10 s ils refont les bips
frangipane
42 Messages
Le dimanche 31 janvier 2021 à 19:04:44
J'ai vérifié, je recois bien les signaux de la télécommande.
Mais je pense que mon problème viens de la :
Comme j'utilise un méga, j'ai du tout modifié (notamment parce que les interruptions ne sont pas disponible sur toutes les broches) sauf :"while (PORTH >= 16)" Parce que je sais pas si il faut changer et comment.
Vous avez une idée ?
Mais je pense que mon problème viens de la :
// Set pins #6 #7 #8 #9 HIGH
PORTH |= B01111000;
// Wait until all pins #6 #7 #8 #9 are LOW
while (PORTH >= 16) {
now = micros();
difference = now - loop_timer;
if (difference >= pulse_length_esc1) PORTH &= B11110111; // Set pin #6 LOW
if (difference >= pulse_length_esc2) PORTH &= B11101111; // Set pin #7 LOW
if (difference >= pulse_length_esc3) PORTH &= B11011111; // Set pin #8 LOW
if (difference >= pulse_length_esc4) PORTH &= B01111111; // Set pin #9 LOW
Comme j'utilise un méga, j'ai du tout modifié (notamment parce que les interruptions ne sont pas disponible sur toutes les broches) sauf :"while (PORTH >= 16)" Parce que je sais pas si il faut changer et comment.
Vous avez une idée ?
frangipane
42 Messages
Le dimanche 31 janvier 2021 à 20:16:08
Re-bonjour,
J'ai peut-être envoyé les messages un peu trop vite, j'ai avancé, réglé des problèmes ect...
J'ai deux problèmes, un gros et un plus petit (normalement).
1) Le calcule pour la puissance des moteurs est problèmatique.
En gros, il y a un moteur qui dérive (l'esc3) et qui finit par arriver àla puissance max pour une toute petite puissance demandé (les autres ne semble pas avoir de problème).
2) Les moteurs ne tourne pas (mais bon ça je pense que ce sera vite réglé, et pour l'instant, ça m'arrange).
Pour savoir la puissance des moteurs j'ai mis des serial.print. Et pour mon problème qui est dans le message d'avant j'ai fait ça :
Je sais pas si c'est bon, je sais pas si c'est ça qui cause le problème, mais voila. En tout cas, j'ai compris que ce petit bout de code
attribue à chaque moteur la puissance demandé (c'est bien ça ?)
Je n'ai plus le problème des bips décalé.
En espérant que vous pouvez m'aider,
Et bonne fin de Week-end
J'ai peut-être envoyé les messages un peu trop vite, j'ai avancé, réglé des problèmes ect...
J'ai deux problèmes, un gros et un plus petit (normalement).
1) Le calcule pour la puissance des moteurs est problèmatique.
En gros, il y a un moteur qui dérive (l'esc3) et qui finit par arriver àla puissance max pour une toute petite puissance demandé (les autres ne semble pas avoir de problème).
2) Les moteurs ne tourne pas (mais bon ça je pense que ce sera vite réglé, et pour l'instant, ça m'arrange).
Pour savoir la puissance des moteurs j'ai mis des serial.print. Et pour mon problème qui est dans le message d'avant j'ai fait ça :
// Set pins #6 #7 #8 #9 HIGH
PORTH |= B01111000;
test_LOW = B01111000;
// Wait until all pins #6 #7 #8 #9 are LOW
while (test_LOW != 0) { // quand c'est différent de zéro
now = micros();
difference = now - loop_timer;
if (difference >= pulse_length_esc1) PORTH &= B11110111; // Set pin #6 LOW
if (difference >= pulse_length_esc2) PORTH &= B11101111; // Set pin #7 LOW
if (difference >= pulse_length_esc3) PORTH &= B11011111; // Set pin #8 LOW
if (difference >= pulse_length_esc4) PORTH &= B10111111; // Set pin #9 LOW
test_LOW = test_LOW & PORTH; //quand il y a une valeur qui devient LOW, il enregistre
}
Je sais pas si c'est bon, je sais pas si c'est ça qui cause le problème, mais voila. En tout cas, j'ai compris que ce petit bout de code
attribue à chaque moteur la puissance demandé (c'est bien ça ?)
Je n'ai plus le problème des bips décalé.
En espérant que vous pouvez m'aider,
Et bonne fin de Week-end
Le lundi 1 février 2021 à 19:35:52
Salut frangipane,
Est-ce qu'à tout hasard tu as accès à un oscilloscope ? Ça te permettait
de vérifier les signaux qui sont générés pour chaque ESC.
Tu as bien ajouté la ligne d'attente pour avoir des signaux de 250 Hz ?
Est-ce qu'à tout hasard tu as accès à un oscilloscope ? Ça te permettait
de vérifier les signaux qui sont générés pour chaque ESC.
Tu as bien ajouté la ligne d'attente pour avoir des signaux de 250 Hz ?
// Fs = 250Hz : on envoie les impulsions toutes les 4000µs
while ((now = micros()) - loop_timer < 4000);
Je n'ai plus le problème des bips décalé.C'est qu'a priori les signaux sont correctement générés.
frangipane
42 Messages
Le lundi 1 février 2021 à 21:43:50
Oui j'ai bien cette ligne de code, je l'ai juste pas copié.
J'ai pas d'oscilloscope mais comme j'ai un deuxième arduino, je me suis dit que je pouvais lire les données avec, j'ai commencé mais j'ai pas encore eu le temps.
Je vous redit quand j'ai réussi.
Le problème reste quand même surtout la dérive d'un des ESC. Elle est en moins d'une minute à 2000 dès que je monte un petit peu les gaz.
J'ai pas d'oscilloscope mais comme j'ai un deuxième arduino, je me suis dit que je pouvais lire les données avec, j'ai commencé mais j'ai pas encore eu le temps.
Je vous redit quand j'ai réussi.
Le problème reste quand même surtout la dérive d'un des ESC. Elle est en moins d'une minute à 2000 dès que je monte un petit peu les gaz.
frangipane
42 Messages
Le mercredi 3 février 2021 à 14:11:59
J'ai un petit problème,
je ne peux plus compilé le code du drone à cause de cette erreur :
Avant ça marchait très bien je comprend pas.
Sinon j'ai pu lire la duré des impulsions avec mon autre arduino et il lit 1000 partout.
je ne peux plus compilé le code du drone à cause de cette erreur :
PORTH |= B01111000;
^~~~~
PORT0
exit status 1
'DDRH' was not declared in this scope
Avant ça marchait très bien je comprend pas.
Sinon j'ai pu lire la duré des impulsions avec mon autre arduino et il lit 1000 partout.
Le mardi 9 février 2021 à 09:12:05
C'est bizarre que ça se mette à déconner d'un coup. Tu fais bien la manipulation de ports dans le fichier .ino et pas dans un .h ?
S'il lit 1000µs partout c'est qu'au moins les signaux sont correctement générés.
S'il lit 1000µs partout c'est qu'au moins les signaux sont correctement générés.
frangipane
42 Messages
Le mercredi 28 avril 2021 à 09:08:56
Re-bonjour !
J'ai deux problèmes, on va commencer par celui que je ne maitrise pas du tout : le calcule de la puissance des moteurs semble un peu anarchique.
Le mieux c'est de vous montrer en vidéo :
Le drone est posé bien droit par terre. Au début je démarre le drone et je donne la puissance minimum (pas arrêt mais juste un tout petit peu de puissance). Après je relance et je met directement la puissance max, et à partir de 1min 30 je baisse progressivement pendant 10s.
On peut observer que seulement deux moteurs "démarre" est que le 3e dérive complètement. A la fin il dérive tellement qu'il passe de 1800 à 1100 d'un coup.
En espérant que vous comprenez d'où viens le problème
frangipane
J'ai deux problèmes, on va commencer par celui que je ne maitrise pas du tout : le calcule de la puissance des moteurs semble un peu anarchique.
Le mieux c'est de vous montrer en vidéo :
Le drone est posé bien droit par terre. Au début je démarre le drone et je donne la puissance minimum (pas arrêt mais juste un tout petit peu de puissance). Après je relance et je met directement la puissance max, et à partir de 1min 30 je baisse progressivement pendant 10s.
On peut observer que seulement deux moteurs "démarre" est que le 3e dérive complètement. A la fin il dérive tellement qu'il passe de 1800 à 1100 d'un coup.
En espérant que vous comprenez d'où viens le problème
frangipane
Le vendredi 7 mai 2021 à 07:38:53
Salut frangipane,
étrange comme comportement. Il me semble que quelqu'un sur le forum avait corrigé le problème en initialisant la variable level_adjust à 0 dans la fonction calculateSetPoint() (je ne retrouve plus le message en question).
Essaye ça et dis-moi si ça corrige ton problème.
étrange comme comportement. Il me semble que quelqu'un sur le forum avait corrigé le problème en initialisant la variable level_adjust à 0 dans la fonction calculateSetPoint() (je ne retrouve plus le message en question).
Essaye ça et dis-moi si ça corrige ton problème.