Partage
  • Partager sur Facebook
  • Partager sur Twitter

Interface arduino entre variateur et radio

le moteur brushless ne tourne pas

Sujet résolu
    7 juin 2012 à 17:43:54

    Bonjour,

    J'essaye de faire fonctionner un programme arduino de façon à contrôler la vitesse d'un moteur.
    Le but est au final de réguler sa consommation.

    Le circuit minimal se compose d'un récepteur radio (donnee/masse/phase), dont les données sont envoyés à l'arduino sans problème (elle fonctionne par PWM), et le signal traité est envoyé au variateur (donnee/masse/phase)

    en résumé

    ----------------- 
    RADIO ----------------- VARIATEUR
          ---- arduino ----


    La radio envoie toutes les 20ms une pulsation de 1 (-100%) à 2 (+100%) millisecondes (1.5ms = 0%).

    Le programme en lui-même fonctionne très bien, j'arrive à regénérer le même signal que celui reçu via la radio, et mon variateur/moteur fonctionne sans problème lorsqu'il est branché directement à la radio.

    Par contre, une fois l'arduino branché sur le moteur, plus aucun moyen de le contrôler : il fait sa musique 123 puis arrête tout simplement de beeper.

    J'ai regardé les valeurs renvoyées par la radio à l'alimentation mais ca n'a pas l'air de changer grand chose.

    J'ai réussi plusieurs fois à démarrer mais c'était assez accidentellement et impossible de le reproduire, donc je suppose que je ne suis plus très loin, mais je ne sais pas d'où peut venir le problème, si ce n'est de la phase de démarrage/configuration.

    Auriez-vous une idée du problème, une piste ?

    Voici le programme

    [... desolé switch de session pour uploader les sources sur googlecode]

    merci de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      7 juin 2012 à 18:17:15

      Je testais mes variateurs avec ma radio, et parfois il m'arrivait la même chose que toi. Les miens ne répondent plus si la valeur initiale envoyée n'est pas à 0 %. C'est peut-être ton cas ?
      • Partager sur Facebook
      • Partager sur Twitter
        7 juin 2012 à 21:14:50

        Non, j'envoie bien du 0% en valeur initiale dès le début et j'ai essayé avec du -100%, +100% et tout.

        J'ai meme essayé de reproduire le signal de la radio sur l'arduino tel quel dès la mise sous tension, et avec le même signal rien ne se passe.

        Je me pose des questions quant aux tensions, est-ce que cela pourrait changer quelquechose ?
        • Partager sur Facebook
        • Partager sur Twitter
          7 juin 2012 à 22:17:53

          On pourrai quand même voir le programme ?
          • Partager sur Facebook
          • Partager sur Twitter
            7 juin 2012 à 22:58:38

            Ah pardon, je me disais bien qu'il manquait quelque chose >.<

            https://github.com/danman5555/rosasolar
            voici tout le code (désolé si il est un peu moche, je l'ai entièrement réécrit hier pour mieux l'organiser mais j'ai du faire pleins de tests et de modifications), les points importants sont :

            - loop : https://github.com/danman5555/rosasola [...] oller.ino#L67

            - la classe engine : https://github.com/danman5555/rosasola [...] er/engine.cpp

            - la classe radio : https://github.com/danman5555/rosasola [...] ter/radio.cpp

            je peux éventuellement faire un code minimal dès que j'ai du temps ;)
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              8 juin 2012 à 11:40:49

              Le signal radio c'est ce que l'on appel de la PPM.

              Pour ton moteur la simple libraire servo devrai pouvoir contrôler avec un map pour convertir:
              -> 180°
              -100% -> +100%


              j'avoue ne pas avoir regarder le code, shame on me.
              • Partager sur Facebook
              • Partager sur Twitter
                8 juin 2012 à 12:37:53

                Citation : thelme

                j'avoue ne pas avoir regarder le code, shame on me.



                En effet. Shame on you. Dans son programme il utilise justement la bibliothèque Servo pour contrôler ses variateurs :lol:
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  8 juin 2012 à 15:09:10

                  En effet...

                  Le writeMicroseconds() ne fait pas la périodification du signal comme un simple write() ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 juin 2012 à 20:18:05

                    dans mes tests ca n'avait pas l'air, mais avec ou sans ça ne change rien, et j'utilisais write avant mais le signal de sortie a l'air moins précis (etrange ?).
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      8 juin 2012 à 23:38:56

                      Je viens de vérifier à l'oscilo, comme ça utilise les timers interne de l'AVR on a pas besoin de mettre une pause après.

                      J'essayerai de reproduire ce que tu veux faire demain.

                      oui c'est l’intérêt du writeMicro, plus de pas -> plus de précision.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 juin 2012 à 0:43:24

                        Ah ? j'avais pourtant testé à l'oscillo aussi et il a fallu que je rajoute les microsecondes manquantes pour répéter le signal :S j'ai du rater un réglage.

                        Merci de passer du temps dessus ! Je sais (d'expérience :p) que c'est très chronophage. Après si jamais vous ne trouvez rien ce n'est pas la peine de passer trop de temps a chercher, j'essayerai de me débrouiller avec autre chose.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 juin 2012 à 19:16:01

                          Mais pourquoi ne pas utiliser l'objet "Servo" comme proposé précédemment ? Je pense que tu règlerais tout tes soucis simplement... (puisque la commande que tu décris est exactement celle que fait un servo)
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Retrouvez moi sur mon blog et ma chaine Youtube !

                            9 juin 2012 à 22:47:55

                            Eskimon : j'utilise servo ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              9 juin 2012 à 23:16:50

                              Arf je me suis embrouillé ^^

                              Je viens d'aller faire un tour sur ton github et me demande : Pourquoi tu as les fichiers "Servo" dedans ? normalement ils sont cachés dans le dossier des librairies d'Arduino en natif (et donc pas besoin de se les balader)

                              Mais du coup je ne comprend pas, qu'est ce qui ne marche pas dans ce que tu veux faire ? Car la librairie Servo répond exactement aux exigences de ton variateur non et devrait fonctionner assez rapidement (en faisant juste une tite conversion "vitesse <-> angle") ?

                              Désolé si mes questions paraissent bête, j'ai eu une semaine fatiguante ^^
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Retrouvez moi sur mon blog et ma chaine Youtube !

                                9 juin 2012 à 23:53:57

                                Non non c'est moi qui vous remercie de vous intéresser à ce problème ;) n'hesitez pas a poser des questions !

                                j'ai les fichiers servo car il ne sont pas trouvé dans les autres fichiers .h, donc j'ai du les rajouter au projet comme ça.

                                Oui en théorie, dans la pratique le moteur fait comme s'il ne recevait rien.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 juin 2012 à 14:10:08

                                  Dans l'IDE Arduino, si tu cliques sur "Sketch / Import Libraries" tu trouves pas la lib Servo ?

                                  As tu un oscilloscope ? Si oui se serait bien de vérifier que tu as les bons timing sur la voie ou tu utilises le servo.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Retrouvez moi sur mon blog et ma chaine Youtube !

                                    10 juin 2012 à 15:21:19

                                    Si si, on peut facilement rajouter l'include, mais gcc ne trouve pas le fichier (et impossible de rajouter de -LD:\Arduino\lib par exemple avec cet IDE ...).

                                    Oui on a des bons oscilloscopes numériques au labo, et c'est normalement le bon timing puisque c'est presque exactement le même signal pour la radio et l'arduino ... mais j'ai peut être fait une erreur, je vérifierai lundi.

                                    EDIT:

                                    J'ai testé à l'oscillo, ça a l'air bon sans les pauses en effet, mais toujours pas de résultat pour le moteur :/

                                    Je me suis mal exprimé pour le fichier, les .h d'arduino ne sont pas trouvé seulement dans mes .h ;).

                                    Donc pour résumer, mon moteur fait 3 bips court (123) puis ne fait plus rien.
                                    En tant normal, branché sur la radio, il émet le (123) puis bip deux fois (pour confirmer l'autotest je crois) et fait un bip long pour dire que sa configuration est terminée.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      12 juin 2012 à 10:41:28

                                      Problème résolu, problème de masse.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        12 juin 2012 à 14:11:48

                                        Oui, problème de masse, j'ai rebranché la masse sur la masse de l'arduino et problème réglé :)

                                        (merci a ceux qui ont essayé et cherché au passage)
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Interface arduino entre variateur et radio

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown