Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Probleme Arduino Drone !



  1. #1
    Thor06

    Smile Probleme Arduino Drone !


    ------

    Bonjour!
    Je réalise avec mon IUT, un projet de drone birotor.
    Le probleme, c'est que j'arrive à lire mon capteur 9dof IMU, mais faire fonctionner les servomoteurs en même temps pose probleme.
    J'ai beau chercher, je trouve pas la solution.
    Donc je vous met mon programme au cas ou vous trouverez la solution :

    ////////////////////////////////////////////////////////////////////////////////
    /

    #include <NewSoftSerial.h>
    #include <Servo.h>

    int RESET = 7;
    const int servo1 = 10;
    Servo mon_servo1;
    const int servo2 = 9;
    Servo mon_servo2;
    byte pinRx=6;
    byte pinTx=8;
    char TabX[10],TabY[10],TabZ[10];
    byte Resultat=0;
    int Calc=0,i=0,Res=0,Res2=0;


    NewSoftSerial IMU(pinRx,pinTx);

    void setup()
    {
    pinMode(RESET,OUTPUT);
    Serial.begin(115200);
    IMU.begin(9600);
    pinMode(pinRx, INPUT);
    pinMode(pinTx, OUTPUT);
    pinMode(servo1, OUTPUT);
    pinMode(servo2, OUTPUT);
    mon_servo1.attach(servo1);
    mon_servo2.attach(servo2);
    }

    void loop()
    {
    int X1=0,Y1=0,Z1=0;
    int x=0,y=0,z=0;
    delay(1);
    if(IMU.available()>0)
    {
    Resultat=IMU.read();
    if(Resultat==':'){
    do{
    if(IMU.available()>0)
    {
    Resultat=IMU.read();
    if(Resultat!=','){
    TabX[x]=Resultat;
    x++;}
    }
    }while(Resultat!=',');
    TabX[x]='\0';
    do{
    if(IMU.available()>0)
    {
    Resultat=IMU.read();
    if(Resultat!=','){
    TabY[y]=Resultat;
    y++;}
    }
    }while(Resultat!=',');
    TabY[y]='\0';
    do{
    if(IMU.available()>0)
    {
    Resultat=IMU.read();
    if(Resultat!=0xD){
    TabZ[z]=Resultat;
    z++;}
    }
    }while(Resultat!=0xD);
    TabZ[z]='\0';
    X1=atoi(TabX);
    //Serial.print("X = ");
    //Serial.print(X1);
    //Serial.print(" ");
    Y1=atoi(TabY);
    Serial.print("Y = ");
    Serial.println(Y1);
    // Serial.print(" ");
    Z1=atoi(TabZ);
    //Serial.print("Z = ");
    //Serial.println(Z1);
    }
    }
    Res=90-(2*Y1);
    Res2=90+(2*Y1);
    if((Res2>=0)&&(Res2<=150)){
    mon_servo1.write(Res2);}
    if((Res>=30)&&(Res<=180)){
    mon_servo2.write(Res);}
    if(Res2<0){
    Res2=0;
    mon_servo1.write(Res2);
    }
    if(Res>180){
    Res=180;
    mon_servo2.write(Res);
    }
    delay(20);
    }

    //////////////////////////////////////////////////////////////////////////////

    La vitesse que j'ai choisis pour mon IMU et de 9600.

    Voilà, si vous avez sinon un programme simple, pour m'inspirer la solution, pour que je puisse lire les valeurs de l'IMU en même temps que de commander les servo.

    Sinon, j'ai une intuition sur les temps de communication, car l'IMU est a 960Hz et les servo a 50Hz.

    merci d'avance de votre aide.

    -----

  2. Publicité
  3. #2
    Thor06

    Re : Probleme Arduino Drone !

    Bonjour!

    J'ai mon programme qui lit correctement mon IMU en dissociant L'axe X, Y et Z. Grace à la librairie <NewSoftSerial.h>, qui crée un RX et TX supplémentaire sur les broches digital. Car attention, mon IMU 9dof razor est tout nouveau, il fonctionne donc en série.
    Donc là, pas de probleme, mais quand j'ajoute la librairie <servo.h>, même sans instruction, la lecture de l'IMU bug ainsi que les servos.

    Enfin, j'ai cherché des solutions sur internet mais pas moyen de ressoudre mon probleme.

    S'il vous plait, aidez-moi, je conçois en ce moment même, un drône différent de tous les autres, j'espere que vous pourrez m'aider à résoudre ce probleme.

    J'attend vos réponses, merci.

  4. #3
    clempar55

    Re : Probleme Arduino Drone !

    Si j'en crois ce lien, les bibliothèques "Servo" et "NewSoftSerial" ne sont pas compatibles et ne peuvent pas être utilisées ensemble, il y a un conflit avec les interruptions. Je ne sais pas si le problème a été résolu depuis (il y a un an tout de même).
    Désolé je n'ai pas de solution à te proposer

  5. #4
    Thor06

    Re : Probleme Arduino Drone !

    Merci.
    Justement, je suis déjà aller voir ce lien, mais aucune solution.

    C'est pour cela que je sollicite votre aide.

  6. A voir en vidéo sur Futura
  7. #5
    ftorama

    Re : Probleme Arduino Drone !

    Le problème est que l'UART soft nécessite des timings précis et pour ça, elle désactive les interruptions, faisant donc rater des pulses aux servos.

    Quelques idées de solutions:
    - trouver un Arduino avec un second port série hardware
    - utiliser un baudrate plus rapide pour limiter les temps sans interruptions (d'ailleurs Sparkfun parle de 57600 bauds)
    - dédier un microcontrôleur au pilotage des servos
    - utiliser des servos robotiques qui se pilotent par port série ou se maintiennent même sans impulsions

  8. #6
    Thor06

    Re : Probleme Arduino Drone !

    Bonjour!!!
    Et Biensûr, Bonne Annee 2011 à tous!!!!!

    Voilà, lundi j'attaque une semaine de projet sur mon drone, et j'aimerais bien terminer mon cahier des charges, pour le voir enfin décoler.
    Mais bon, le probleme de conflit, me pose vraiment une colle.
    Par contre, je ne sais pas si augmenter le baudrate, va changer quelquechose, car l'arduino va accumuler les informations en masse et j'ai peur qu'il ne suit plus.
    Après, normalement, un seul microcontroleur devrait suffir, car j'ai déjà vu des drones pilotés par des mini arduino.

    Enfin voilà, d'autres idée ?

  9. Publicité
  10. #7
    ftorama

    Re : Probleme Arduino Drone !

    Citation Envoyé par Thor06 Voir le message
    Bonjour!!!
    Et Biensûr, Bonne Annee 2011 à tous!!!!!

    Voilà, lundi j'attaque une semaine de projet sur mon drone, et j'aimerais bien terminer mon cahier des charges, pour le voir enfin décoler.
    Mais bon, le probleme de conflit, me pose vraiment une colle.
    Par contre, je ne sais pas si augmenter le baudrate, va changer quelquechose, car l'arduino va accumuler les informations en masse et j'ai peur qu'il ne suit plus.
    Après, normalement, un seul microcontroleur devrait suffir, car j'ai déjà vu des drones pilotés par des mini arduino.

    Enfin voilà, d'autres idée ?
    Au lieu de balancer tout le temps les données, tu fais en sorte que ton Arduino les demande....après tout, c'est aussi un Arduino sur le capteur

    Donc, l'Arduino principal ne demande les infos que quand il en a besoin, à haute vitesse pour réduire les temps morts. Je ne sais pas avec la couche logicielle Arduino ni avec ses vitesses d'horloge, mais un AVR peut dialoguer à 1mBaud sans soucis. Par contre, c'est l'UART hardware dans ce cas.

    Puisque tu peux reprogrammer le capteur, pourquoi ne pas non plus implémenter un protocole SPI qui ne nécessitera pas de temps d'attente

  11. #8
    Thor06

    Re : Probleme Arduino Drone !

    Bonjour à tous!
    Bon, je voulais garder l'exclusivité, ou la surprise, mais bon.
    Je vous présentes mon drone birotor arduino de type V22 Osprey.





    Bientôt, je ferait un site internet avec le projet open source.
    J'espere que maintenant, cette initiative va permettre de motiver certain, pour m'aider, un peu plus.

    Mon soucis premier est un conflit entre la bibliotheque servo et newsoftserial. Un probleme d'interruption perturbé.

    Mon deuxieme soucis est du choix de lecture du capteur, ainsi que de son asservissement.

  12. #9
    ftorama

    Re : Probleme Arduino Drone !

    Belle bête, surtout avec les phares bleus

    Mais tu corriges comment le tangage sur un bestiau pareil? Le pas est réglable sur les pâles?

  13. #10
    Thor06

    Re : Probleme Arduino Drone !

    Il y a des servomoteurs pour incliner les moteurs, cela permet de jouer sur le tangage.

    Sinon, ou puis-je demander des conseils sur la programmation arduino et sur l'analyse des résultats de l'IMU.
    Enfin, si quelqu'un si connait.
    ca m'avancerais, merci.

  14. #11
    ftorama

    Re : Probleme Arduino Drone !

    Citation Envoyé par Thor06 Voir le message
    Il y a des servomoteurs pour incliner les moteurs, cela permet de jouer sur le tangage.

    Sinon, ou puis-je demander des conseils sur la programmation arduino et sur l'analyse des résultats de l'IMU.
    Enfin, si quelqu'un si connait.
    ca m'avancerais, merci.
    prog Arduino, ça devrait aller, sinon le forum officiel...

    Pour l'IMU, je ne saurais t'aider

    Pour les servos, effectivement, je les ai vu après...un Chinook qui vole en crabe...original

  15. #12
    Thor06

    Re : Probleme Arduino Drone !

    Apparament, le NewsoftSerial exécute des interruptions en continu avec 1 bit de pause, puis execute le loop du mon programme. Mais une prochaine interruption fait sortir du loop pour repartie en interruption.
    Donc le servo ne suit plus.
    Les interruptions utilise 100% du timer 0.

    Après je cherche des exemples sur d'autres type de drone, mais personne n'utilise un 9dof IMU razor avec communication série.

    Oui, effectivement, il faudrait demander les infos de l'IMU quand je lui demande, mais il faut changer le programme interne du capteur.
    Il faut donc programmer cette fonctionnalité, mais je sais pas quoi modifier.

    Une question, si j'utilise un arduino mega, j'ai plusieur connexion serie, donc je ne devrais plus avoir ce probleme.

  16. Publicité
  17. #13
    ftorama

    Re : Probleme Arduino Drone !

    Citation Envoyé par Thor06 Voir le message
    Oui, effectivement, il faudrait demander les infos de l'IMU quand je lui demande, mais il faut changer le programme interne du capteur.
    Il faut donc programmer cette fonctionnalité, mais je sais pas quoi modifier.
    Le premier truc à modifier ça serait de n'envoyer les infos que quand le capteur reçoit un caractère, ou même un signal quelconque.

    Une question, si j'utilise un arduino mega, j'ai plusieur connexion serie, donc je ne devrais plus avoir ce probleme.
    Effectivement, ça résoudrait pas mal de choses

  18. #14
    Thor06

    Re : Probleme Arduino Drone !

    J'ai une solution :
    utiliser un arduino mega qui possede 4 UART (RX ET TX), je pourrais y mettre mon IMU 9dof razor sur RX1 ET TX1, et un module Bluetooth sur RX2 ET TX2. Et pourquoi pas laisser une place pour une caméra serie (enfin je sais pas si c'est possible, c'est juste une éventualité) sur RX3 ET TX3.

    Comme ca, cette solution ne possera plus de probleme, et l'arduino pourra éxécuter son loop sans probleme d'interruption.

Discussions similaires

  1. Projet drône
    Par LouR56 dans le forum Électronique
    Réponses: 12
    Dernier message: 18/08/2011, 20h18
  2. Problème Mesure tension Arduino
    Par Flemmard dans le forum Électronique
    Réponses: 18
    Dernier message: 17/11/2010, 08h58
  3. Définition - Drone
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 0
    Dernier message: 28/05/2010, 23h08
  4. drone helicoptere
    Par loico55 dans le forum Technologies
    Réponses: 7
    Dernier message: 13/11/2007, 06h10
  5. Plan Drone
    Par jitou dans le forum Électronique
    Réponses: 8
    Dernier message: 01/09/2004, 08h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.