IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Intégration de softpwm avec arduino leonardo


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 7
    Par défaut Intégration de softpwm avec arduino leonardo
    Bonjour
    J'ecris car j'essaye d'aider sur le dev d'un systeme de control de moteur pour des objectives pour le cinema.

    https://www.motiondogs.com/wireless-...-base-kit.html

    Le systeme est ecrit en arduino leonard et controle un "stepper motor".

    Le code source est dispo en open source:
    https://github.com/MotionDogs/Lenzhound-1.x

    Le probleme est que le "stepper motor" est bruyant et n'est pas tres puissance, donc mon projet est d'adapter ce systeme vers des moteurs servo plus puissant.

    J'ai eu des longues discussion avec le fabriquant sur comment cablé un controlleur moteur DC sur leur carte mere et meme eu la preuve que ca peux marcher
    http://forum.motiondogs.com/t/using-...-motors/230/31

    Pour faire cette adaptation,il est sugéré d'intergrer Softpwm dans leur code source, tester avec le moteur que j'ai et trouvé les meilleurs "settings".
    Probleme : je ne connais rien en cpp.

    J'ai du mal a savoir si ce projet est difficile ou pas donc je cherche quelqu'un qui puisse me pister.
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    j'avoue ne pas avoir tout compris...

    Le systeme est ecrit en arduino leonardo et controle un "stepper motor".
    Ce que je vois dans les liens que tu nous indiques, un système avec une télécommande et un moteur pour contrôler les objectifs.
    Mais le système original intègre une carte Leonardo ? Ou c'est celui que tu es en train de réaliser ?
    En passant, Arduino Leonardo n'est pas un langage



    Le probleme est que le "stepper motor" est bruyant et n'est pas tres puissance, donc mon projet est d'adapter ce systeme vers des moteurs servo plus puissant.
    J'ai eu des longues discussion avec le fabriquant sur comment cablé un controlleur moteur DC sur leur carte mere et meme eu la preuve que ca peux marcher
    là c'est encore plus confus : le dispositif de base intègre un moteur pas à pas (stepper motor comme tu nous l'indiques) et tu souhaites le remplacer par un moteur DC ? Tu es sûr que tu ne veux pas remplacer le moteur actuel par un autre moteur pas à pas ? Car un moteur DC n'est pas un moteur pas à pas !


    Moi je vois ton problème comme ceci : si le moteur pas à pas actuel n'a pas assez de puissance on le remplace par un moteur pas à pas plus puissant (en modifiant aussi l'alimentation et l'électronique). Du coup, je ne vois pas trop ce que vient faire Leonardo dans ce projet.

    Peux-tu éclairer nos lanternes ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 7
    Par défaut
    Merci beaucoup pour votre reponse.
    Le but est d'adapter le systeme du moteur d'origine "pas à pas" à ce moteur numerique .
    http://heden-engineering.com/products/motors/m26ve_1/
    qui est beaucoup plus puissance, plus precis, moins lourd et plus silencieux.

    Pour faire ca, il y a la carte de reception de la telecommande "Motion Dogs DB1 Receiver"
    https://forum.developpez.be/images/attach/jpg.gif
    , qui est un Arduino Leonardo adapté,
    https://github.com/MotionDogs/Lenzhound-1.x
    qui est branché sur une carte Cytron 13A, 5-25V Single DC Motor Controller
    http://www.robotshop.com/en/cytron-1...ontroller.html
    puis cablé a un connecteur Lemo 7 points.
    https://forum.developpez.be/images/attach/pdf.gif
    Pour faire fonctionner ce systeme, j'ai besoin de "traduire" les instructions de la telecommande vers le Cytron 13A, 5-25V Single DC Motor Controller. A priori, c'est possible a travers la librarie SoftPWM,
    https://www.pjrc.com/teensy/td_libs_SoftPWM.html
    https://code.google.com/archive/p/ro...mentation.wiki

    Ce que je cherche à faire est d'integrer le SoftPWM libraire dans le code existant et ouvrir les 'pins' pour controller la carte Cytron 13A, 5-25V Single DC Motor Controller pour voir si SoftPWM est assez puissant.
    Sinon, chercher un autre librarie mieux adapté.
    Merci encoreNom : db1pinout.jpg
Affichages : 384
Taille : 199,4 Ko
    Images attachées Images attachées

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    ok Je comprends mieux tout ça.

    Leonardo ou plus précisément l'ATMega 32U dispose d'entrées / sorties numériques et quelques unes de ces E/S peuvent être configurées en sorties PWM (c'est un signal carré de fréquence fixe dont le rapport cyclique varie). Le microcontrôleur dispose aussi d'entrées analogiques (notées de A0 à A5 sur les Leonardo) qui peuvent être également configurée en E/S numériques. Mais ce ne sont pas des sorties PWM.

    Dans ton cas, si le fabricant a utilisé la même nomenclature qu'Arduino, il a donc utilisé les voies A0-A5 (curieux choix dans ce cas ) comme sorties PWM pour piloter ton moteur. Or ces voies ne sont pas des voies PWM, problème que peut corriger la bibliothèque SoftPWM.

    Mais si je reviens sur ce que tu as écris :
    Pour faire fonctionner ce systeme, j'ai besoin de "traduire" les instructions de la telecommande vers le Cytron 13A, 5-25V Single DC Motor Controller. A priori, c'est possible a travers la librarie SoftPWM,
    cette bibliothèque ne fait pas ce que tu dis... Elle te permettra de piloter la carte Cytron, c'est tout. En aucun cas, elle ne te permettra de "traduire" les instructions provenant de la télécommande. Pour comprendre :

    Télécommande (émetteur) --------------> Récepteur (Motion Dogs DB1 Receiver) ----------------> SoftPWM -----------> Cytron -------> moteur

    Or ce qu'il te manque c'est au niveau du récepteur, et c'est lui qui va traduire les commandes. En fonction de ces commandes tu vas appeler les fonctions de SoftPWM qui vont piloter ta carte Cytron.


    je cherche à faire est d'integrer le SoftPWM libraire dans le code existant
    Franchement ce n'est pas une mince affaire, il faut analyser tout le projet Lenzhound pour pouvoir intégrer cette bibliothèque.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 7
    Par défaut
    Merci beaucoup pour cette synthese. C'est tout a fait ca.
    Donc, ca semble etre compliqué. Est ce que vous avez une idée ou je puisse me former ? Est ce que vous connaissez des groupes enthuiaste Arduino sur Paris?
    Merci encore

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Si je prends le contenu du dossier Rxr du projet.

    • macros.h :
      comme son nom l'indique, ce fichier contient des macros. Mais ce qui est intéressant, c'est qu'il contient aussi les adresses du matériel. Deux pins sur les registres F pour l'antenne, et 6 pins pour le contrôleur du moteur répartis sur les ports B, C et D.
      Pour comprendre comment fonctionnent ces macros, il faut aussi regarder le fichier principal du projet, Rxr.ino.
      Je ne peux pas dire à quoi correspondent les voies MS1 et MS2, il faut regarder la doc. Avec ce fichier, tu peux savoir comment brancher ton contrôleur de moteur (la carte Cytron) sur la carte de commande.
    • motor.cpp :
      contient les fonctions du moteur : marche, arrêt, direction. Il faut prêter une attention particulière à la fonction pulse_ motor() : cette fonction envoie juste 1 pulse (un SET puis un CLR). Ce détail est important pour la suite...
    • motorcontroller.cpp :
      appelle les fonctions définies dans motor.cpp. Quant aux fonction de motorcontroller, elles sont appelée dans le fichier principal du projet, Rxr.ino
    • receiver.cpp
      récupère les données reçues.
    • Rxr.ino :
      dans ce fichier sont intégrées toutes les fonctions ci-dessus. On pourra remarquer dans la fonction setup() ces deux lignes de code
      Code c : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
        Timer1.initialize();
      Timer1.attachInterrupt(TimerISR, kPeriod);
      La fonction TimerISR qui appelle motor_controller.Run(); est attachée à l'interruption du Timer1. Ce qui veut dire qu'à chaque période kPeriod on envoie 1 pulse au moteur. C'est elle qui fait tourner ton moteur en envoyant des impulsions à une période fixe au contrôleur du moteur pas à pas.
      Infos : http://playground.arduino.cc/Code/Timer1
    Je n'ai pas passé en revue toutes les fonctions mais grosso-modo, voilà le fonctionnement du programme, si je ne me suis pas trompé .


    Mais je me pose plusieurs questions :
    - le moteur pas à pas a combien de fils (je penche pour 4 fils) ?
    - quel est le composant attaché au radiateur dans la seconde photo ?
    - as-tu une datatsheet complète sur cette carte Motion Dogs ?
    - as-tu essayé de connecter la carte Cytron sur la carte réceptrice ? Car a priori, si je me base sur les schémas que tu as donné, seuls trois voies sont connectées au lieu de 5.
    - je me demande si ce code peut fonctionner, moyennant quelques modifications, avec un moteur DC, mais sans intégrer SoftPWM. Car la différence majeure dans ton moteur pas à pas et le moteur DC est le nombre de bobines à piloter, les deux moteurs fonctionnant en PWM.

Discussions similaires

  1. Intégration de JasperReports avec ApEx
    Par TiteTalou dans le forum Jasper
    Réponses: 1
    Dernier message: 08/07/2008, 00h32
  2. Réponses: 1
    Dernier message: 12/05/2008, 12h14
  3. [CR 2008]Intégration de CR avec visual studio 2008
    Par bcgetpause dans le forum SDK
    Réponses: 0
    Dernier message: 02/05/2008, 09h42
  4. Intégration Office Communicator avec SharePoint
    Par ghaziabassi dans le forum SharePoint
    Réponses: 2
    Dernier message: 21/04/2008, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo