Arduino positionneur de volets
5 participants
Le MCR 01: notre passion partagée :: Construction :: Pendant la construction et l'évolution de votre MCR :: Divers
Page 1 sur 1
Arduino positionneur de volets
Bonjour à tous
Je fais appel aux spécialistes de l'Arduino présents sur ce forum. Pour l'ULM d'un ami (Storm), j'ai le projet de développer un positionneur de volets. L'idée est d'utiliser un sélecteur rotatif à 3 positions (genre guitare électrique) pour transmettre la consigne à un Arduino Nano :
Je me pose plusieurs questions :
- l'Arduino peut-il recevoir une consigne permanente et non une brève impulsion ?
- mieux vaut-il câbler le sélecteur en mode logique positive, en mode logique négative ou bien encore en mode input pullup ?
Bons vols à tous
François
Je fais appel aux spécialistes de l'Arduino présents sur ce forum. Pour l'ULM d'un ami (Storm), j'ai le projet de développer un positionneur de volets. L'idée est d'utiliser un sélecteur rotatif à 3 positions (genre guitare électrique) pour transmettre la consigne à un Arduino Nano :
Je me pose plusieurs questions :
- l'Arduino peut-il recevoir une consigne permanente et non une brève impulsion ?
- mieux vaut-il câbler le sélecteur en mode logique positive, en mode logique négative ou bien encore en mode input pullup ?
Bons vols à tous
François
FJ- Nombre de messages : 151
Localisation : Beaune
Constr./proprio. :
Date d'inscription : 20/01/2010
Re: Arduino positionneur de volets
Bonjour François et à tous,
Je te réponds sans prétendre au statut de spécialiste. Disons que j'ai à peu près réussi à faire faire à l'ARDUINO ce dont j'avais besoin .... et que j'ai des besoins modestes.
Pour ton cas, qui est dans la catégorie des besoins modestes ,tu peux employer la solution la plus simple (ton schéma de droite). Depuis une version assez récente de l'IDE de l'ARDUINO on peut configurer les entrées digitales en mode INPUT PULL UP (ce qui active les résistances PULL UP internes). Voir ICI
Pour les employer, il suffit de les mettre à la masse pour avoir un LOW, si elle sont "en l'air" on a un HIGHT.
Cela ne dispense pas de faire la petite manip "anti rebond" ...
Dans ta boucle principale (void loop() ) tu détecteras le changement de position de ton sélecteur afin d'activer la fonction qui va bien pour positionner les volets en fonction.
Pour avoir la position des volets, tu peux employer un potentiomètre multi-tours à fil. Je n'ai pas de référence en tête, mais si Alain lit ce fil, il pourra te donner la référence de celui qu'il emploie et qui convient parfaitement ...
Cette façon de procéder est simple, robuste et souple car elle permet d'ajuster les différentes positions des volets par soft. Des fins de courses (micro-contact) pour les positions extrêmes, placés "en sécurité" dans le circuit de commande des relais, peuvent ne pas être inutiles ...
Michel
Je te réponds sans prétendre au statut de spécialiste. Disons que j'ai à peu près réussi à faire faire à l'ARDUINO ce dont j'avais besoin .... et que j'ai des besoins modestes.
Pour ton cas, qui est dans la catégorie des besoins modestes ,tu peux employer la solution la plus simple (ton schéma de droite). Depuis une version assez récente de l'IDE de l'ARDUINO on peut configurer les entrées digitales en mode INPUT PULL UP (ce qui active les résistances PULL UP internes). Voir ICI
Pour les employer, il suffit de les mettre à la masse pour avoir un LOW, si elle sont "en l'air" on a un HIGHT.
Cela ne dispense pas de faire la petite manip "anti rebond" ...
Dans ta boucle principale (void loop() ) tu détecteras le changement de position de ton sélecteur afin d'activer la fonction qui va bien pour positionner les volets en fonction.
Pour avoir la position des volets, tu peux employer un potentiomètre multi-tours à fil. Je n'ai pas de référence en tête, mais si Alain lit ce fil, il pourra te donner la référence de celui qu'il emploie et qui convient parfaitement ...
Cette façon de procéder est simple, robuste et souple car elle permet d'ajuster les différentes positions des volets par soft. Des fins de courses (micro-contact) pour les positions extrêmes, placés "en sécurité" dans le circuit de commande des relais, peuvent ne pas être inutiles ...
Michel
RIAZUELO- Nombre de messages : 1314
Localisation : CHOLET LFOU
Constr./proprio. : Constructeur VLA F-PMTR
Date d'inscription : 23/07/2009
Commande de volets avec répétiteur !
Michel Colomban dirait: ça sert à quoi ?
Et jean Delemontez dirait: si il n'y a pas: ça ne pèse pas, ça ne coûte pas et donc ne peut tomber en panne !
J' ai suivi cette méthode avec repères colorés sur les volets que je n'utilise qu'à l'atterrissage.
Genre parpaings du maçon : 1 parpaing rouge : 10°
+2 " " : 20°
+3 " " : 30°
Voilà, je suis en dehors du sujet, mais je peux ajuster à la dde à 5° près, environ avec une cde électrique de roof feu de toiture
utilisée dans les bts industriels déjà utilisée sur l' "Océanair" .D' autres utilisent une visseuse dévisseuse ça marche aussi trés bien.
Bons vols à tous, moi j' attend que mon train gauche se consolide après une prothèse totale du genou .
Et jean Delemontez dirait: si il n'y a pas: ça ne pèse pas, ça ne coûte pas et donc ne peut tomber en panne !
J' ai suivi cette méthode avec repères colorés sur les volets que je n'utilise qu'à l'atterrissage.
Genre parpaings du maçon : 1 parpaing rouge : 10°
+2 " " : 20°
+3 " " : 30°
Voilà, je suis en dehors du sujet, mais je peux ajuster à la dde à 5° près, environ avec une cde électrique de roof feu de toiture
utilisée dans les bts industriels déjà utilisée sur l' "Océanair" .D' autres utilisent une visseuse dévisseuse ça marche aussi trés bien.
Bons vols à tous, moi j' attend que mon train gauche se consolide après une prothèse totale du genou .
alphacharly- Nombre de messages : 139
Age : 83
Localisation : la rochelle 17000
Constr./proprio. : construction amateur ulm
Date d'inscription : 26/04/2011
Re: Arduino positionneur de volets
Bonjour Michel et à tous
Merci pour ta réponse. Peux-tu préciser ce qu'est le rebond ? D'autre part, le vérin est équipé d'un potentiomètre (linéaire). Si celui se révélait pas assez fiable, j'installerais un potentiomètre rotatif comme l'avait décrit Alain dans ce post.
Je compte utiliser un module 2 relais déjà assemblé. Ceci présente l'avantage d'avoir tous les composants périphériques intégrés (optocoupleurs, diode de bouclage ...)
Ne pouvant accéder au circuit de commande, je compte placer les switchs de fin de course sur le circuit de puissance :
Merci pour ta réponse. Peux-tu préciser ce qu'est le rebond ? D'autre part, le vérin est équipé d'un potentiomètre (linéaire). Si celui se révélait pas assez fiable, j'installerais un potentiomètre rotatif comme l'avait décrit Alain dans ce post.
Je compte utiliser un module 2 relais déjà assemblé. Ceci présente l'avantage d'avoir tous les composants périphériques intégrés (optocoupleurs, diode de bouclage ...)
Ne pouvant accéder au circuit de commande, je compte placer les switchs de fin de course sur le circuit de puissance :
FJ- Nombre de messages : 151
Localisation : Beaune
Constr./proprio. :
Date d'inscription : 20/01/2010
Re: Arduino positionneur de volets
Bonjour François et à tous,
Tout cela me parait parfait ...
Assure-toi que les entrées opto-coupleur sont bien en niveau TTL (0-5V). Le moteur du vérin est certainement plus performant que les moteurs (historiques) des volets de nos MCR et doit "tirer" 2 A au maximum. Les micro-swithes de fin de course doivent faire l'affaire sans pb. Le potentiomètre intégré a toutes les chances d'être plus fiable qu'un système rapporté !
As-tu regardé du coté d'un pont en H intégré à la place des relais ?
Quand on établi ou coupe un contact mécanique, il peut se produire une suite rapide d'ouvertures/fermetures avant l'établissement (ou la coupure) du contact. Cela ne perturbe pas un moteur ou une ampoule, mais cela peut tromper un programme qui "scanne" une entrée dans une boucle rapide.
Pour contrer cela, on peut procéder de la façon suivante :
Si on cherche à détecter un passage de 1 à 0 (mise à la masse d'une entrée), on met une boucle qui fait des lectures et dont on sort au bout de 10 lectures (ou plus) successives de 0. Dans ce cas on considère que l'entrée a bien basculé de 1 à 0. On sort prématurément de cette boucle dès qu'une valeur 1 est détectée, pour continuer l'exécution de la boucle principale.
Avec ton montage, tu peux choisir d'utiliser les micro-switches en sécurité (juste au delà de la course normale) ou comme fin de course "normaux". Dans ce dernier cas, il faut que le programme détecte l'arrêt du moteur (la tension du potentiomètre reste fixe malgré l'ordre de marche) pour faire retomber le relais concerné.
Dernière remarque, tu devrais mettre un fusible distinct pour chaque relais. Avec un seul fusible, en cas d'incident, tu condamnes les deux sens de marche
Michel
PS : alphacharly pose une question redoutable ! A quoi ça sert ? peut entrainer le questionneur sur des terrains inattendus
Te rends-tu compte de toutes les merveilles (pour l'esprit !) dont tu te prives en te contentant de trois coup de peinture rouge ?
Plus sérieusement, une commande de volets avec positionnement automatique est un facteur de sécurité. On peut admettre que généralement, on a tous son temps pour sortir les volets. Dans le cas d'une remise de gaz un peu chaude, ce n'est pas forcément le cas ...
Tout cela me parait parfait ...
Assure-toi que les entrées opto-coupleur sont bien en niveau TTL (0-5V). Le moteur du vérin est certainement plus performant que les moteurs (historiques) des volets de nos MCR et doit "tirer" 2 A au maximum. Les micro-swithes de fin de course doivent faire l'affaire sans pb. Le potentiomètre intégré a toutes les chances d'être plus fiable qu'un système rapporté !
As-tu regardé du coté d'un pont en H intégré à la place des relais ?
Quand on établi ou coupe un contact mécanique, il peut se produire une suite rapide d'ouvertures/fermetures avant l'établissement (ou la coupure) du contact. Cela ne perturbe pas un moteur ou une ampoule, mais cela peut tromper un programme qui "scanne" une entrée dans une boucle rapide.
Pour contrer cela, on peut procéder de la façon suivante :
Si on cherche à détecter un passage de 1 à 0 (mise à la masse d'une entrée), on met une boucle qui fait des lectures et dont on sort au bout de 10 lectures (ou plus) successives de 0. Dans ce cas on considère que l'entrée a bien basculé de 1 à 0. On sort prématurément de cette boucle dès qu'une valeur 1 est détectée, pour continuer l'exécution de la boucle principale.
Avec ton montage, tu peux choisir d'utiliser les micro-switches en sécurité (juste au delà de la course normale) ou comme fin de course "normaux". Dans ce dernier cas, il faut que le programme détecte l'arrêt du moteur (la tension du potentiomètre reste fixe malgré l'ordre de marche) pour faire retomber le relais concerné.
Dernière remarque, tu devrais mettre un fusible distinct pour chaque relais. Avec un seul fusible, en cas d'incident, tu condamnes les deux sens de marche
Michel
PS : alphacharly pose une question redoutable ! A quoi ça sert ? peut entrainer le questionneur sur des terrains inattendus
Te rends-tu compte de toutes les merveilles (pour l'esprit !) dont tu te prives en te contentant de trois coup de peinture rouge ?
Plus sérieusement, une commande de volets avec positionnement automatique est un facteur de sécurité. On peut admettre que généralement, on a tous son temps pour sortir les volets. Dans le cas d'une remise de gaz un peu chaude, ce n'est pas forcément le cas ...
RIAZUELO- Nombre de messages : 1314
Localisation : CHOLET LFOU
Constr./proprio. : Constructeur VLA F-PMTR
Date d'inscription : 23/07/2009
Re: Arduino positionneur de volets
Bonjour à tous,
L'ARDUINO UNO R3 semble être capable de digérer une tension d'alim comprise entre 6 et 20V.
Donc, avec une protection OVM, ça devrait marcher sans rien de plus.
Pour tous ceux qui alimentent leur ARDUINO de cette manière (donc sans alim dédiée), avez-vous rencontré des problèmes de fonctionnement ?
Emmanuel
L'ARDUINO UNO R3 semble être capable de digérer une tension d'alim comprise entre 6 et 20V.
Donc, avec une protection OVM, ça devrait marcher sans rien de plus.
Pour tous ceux qui alimentent leur ARDUINO de cette manière (donc sans alim dédiée), avez-vous rencontré des problèmes de fonctionnement ?
Emmanuel
Emmanuel76- Nombre de messages : 87
Age : 46
Localisation : Normandie
Constr./proprio. : Constructeur MCR01 ULC n°423
Date d'inscription : 23/05/2014
Re: Arduino positionneur de volets
Bonjour Emmanuel et à tous,
J'ai oublié de relever cet aspect de la question.
Effectivement, l'alimentation de l'ARDUINO peut être réalisée sans pb avec la tension de bord. Du fait de mon montage avec E-BUS, j'ai 13,6 V (14,2 V du régulateur - 0,6 V de la diode qui alimente le BUS), je n'ai pas constaté le moindre inconvénient depuis plusieurs années.
Et comme c'est plus simple ...
Si on veut vraiment avoir la conscience tranquille, on peut mettre 2 ou 3 diodes en série pour se rapprocher de 12 V.
Michel
J'ai oublié de relever cet aspect de la question.
Effectivement, l'alimentation de l'ARDUINO peut être réalisée sans pb avec la tension de bord. Du fait de mon montage avec E-BUS, j'ai 13,6 V (14,2 V du régulateur - 0,6 V de la diode qui alimente le BUS), je n'ai pas constaté le moindre inconvénient depuis plusieurs années.
Et comme c'est plus simple ...
Si on veut vraiment avoir la conscience tranquille, on peut mettre 2 ou 3 diodes en série pour se rapprocher de 12 V.
Michel
RIAZUELO- Nombre de messages : 1314
Localisation : CHOLET LFOU
Constr./proprio. : Constructeur VLA F-PMTR
Date d'inscription : 23/07/2009
Re: Arduino positionneur de volets
Bonjour à tous les Arduiniens,
Une petite question qui rejoint le sujet du trim d'aileron :
Je souhaite pouvoir afficher la position du servo de trim d'aileron sur mon EFIS : il faut pour celà lui donner à manger un signal compris entre 0 et disons 12V (ça peut être moins, par exemple 5V, c'est configurable), variable selon la position dudit servo.
Comment faire ça grâce à l'Arduino ?
(et sans aller se brancher directement sur le potentiomètre à l'intérieur du servo, trop facile !)
Emmanuel
Une petite question qui rejoint le sujet du trim d'aileron :
Je souhaite pouvoir afficher la position du servo de trim d'aileron sur mon EFIS : il faut pour celà lui donner à manger un signal compris entre 0 et disons 12V (ça peut être moins, par exemple 5V, c'est configurable), variable selon la position dudit servo.
Comment faire ça grâce à l'Arduino ?
(et sans aller se brancher directement sur le potentiomètre à l'intérieur du servo, trop facile !)
Emmanuel
Emmanuel76- Nombre de messages : 87
Age : 46
Localisation : Normandie
Constr./proprio. : Constructeur MCR01 ULC n°423
Date d'inscription : 23/05/2014
Re: Arduino positionneur de volets
Bonjour Emmanuel et à tous,
Aller chercher la tension aux bornes du potentiomètre n'est pas forcément le plus simple ...
Générer une tension de 0 à 5V via une sortie PWM est certainement plus facile.
Je pense que tu commandes ton servo avec la bibliothèque qui va bien. Tu envoies donc une commande correspondant à la position en degré du bras du servo, de 0 à 180.
Tu connais les positions que tu considères comme extrêmes, par exemple 45 et 135 pour un débattement de +- 45°.
Tu convertis ta valeur de commande vers une valeur qui vaudra 0 si la commande est de 45 et qui vaudra 1023 si la commande vaut 135 (elle ne sera jamais supérieure, c'est ta butée soft)
Exemple pour une commande de 100 : 1024/90*(100-45) = 625
C'est 625 qui te servira pour ta commande PWM. Pour que l'EFIS n'ai pas le hoquet, il faut prévoir un filtrage avec un petit réseau résistance/condensateur ...
YAPLUKA ...
Michel
Aller chercher la tension aux bornes du potentiomètre n'est pas forcément le plus simple ...
Générer une tension de 0 à 5V via une sortie PWM est certainement plus facile.
Je pense que tu commandes ton servo avec la bibliothèque qui va bien. Tu envoies donc une commande correspondant à la position en degré du bras du servo, de 0 à 180.
Tu connais les positions que tu considères comme extrêmes, par exemple 45 et 135 pour un débattement de +- 45°.
Tu convertis ta valeur de commande vers une valeur qui vaudra 0 si la commande est de 45 et qui vaudra 1023 si la commande vaut 135 (elle ne sera jamais supérieure, c'est ta butée soft)
Exemple pour une commande de 100 : 1024/90*(100-45) = 625
C'est 625 qui te servira pour ta commande PWM. Pour que l'EFIS n'ai pas le hoquet, il faut prévoir un filtrage avec un petit réseau résistance/condensateur ...
YAPLUKA ...
Michel
RIAZUELO- Nombre de messages : 1314
Localisation : CHOLET LFOU
Constr./proprio. : Constructeur VLA F-PMTR
Date d'inscription : 23/07/2009
Re: Arduino positionneur de volets
Il faut utiliser la commande analogwrite. voir ici:http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.AnalogWriteEmmanuel76 a écrit:Bonjour à tous les Arduiniens,
Une petite question qui rejoint le sujet du trim d'aileron :
Je souhaite pouvoir afficher la position du servo de trim d'aileron sur mon EFIS : il faut pour celà lui donner à manger un signal compris entre 0 et disons 12V (ça peut être moins, par exemple 5V, c'est configurable), variable selon la position dudit servo.
Comment faire ça grâce à l'Arduino ?
(et sans aller se brancher directement sur le potentiomètre à l'intérieur du servo, trop facile !)
Emmanuel
A+
Re: Arduino positionneur de volets
Bonjour à tous
l'utilisation d'un potentiomètre digital est peut être une alternative intéressante à la génération d'un signal PWM ensuite convertit par un dac (convertisseur digital vers analogique)
a+
François
l'utilisation d'un potentiomètre digital est peut être une alternative intéressante à la génération d'un signal PWM ensuite convertit par un dac (convertisseur digital vers analogique)
a+
François
FJ- Nombre de messages : 151
Localisation : Beaune
Constr./proprio. :
Date d'inscription : 20/01/2010
Re: Arduino positionneur de volets
Bonjour à tous,
C'est bien la fonction analogWrite(pin, value) qui permet de générer le signal PWM. Contrairement à ce que j'ai écrit, value varie de 0 à 255 et non de 0 à 1023.
La formule devient (pour 100 degrés) : value=256/90*(100-45)=156
Je serais étonné que l'EFIS traite directement ce signal...
L'impédance d'entrée de l'EFIS est probablement élevée, je partirais sur 5 à 10 kilo-ohm pour la résistance du réseau RC intégrateur...
Pour la valeur de la capacité, il faut essayer. Avec un oscilloscope, c'est facile.
François, oui, on peut générer le PWM de diverses façons, mais avec un ARDUINO, c'est tellement plus souple. Et on peut lui faire faire plein d'autres trucs ☺️
Michel
C'est bien la fonction analogWrite(pin, value) qui permet de générer le signal PWM. Contrairement à ce que j'ai écrit, value varie de 0 à 255 et non de 0 à 1023.
La formule devient (pour 100 degrés) : value=256/90*(100-45)=156
Je serais étonné que l'EFIS traite directement ce signal...
L'impédance d'entrée de l'EFIS est probablement élevée, je partirais sur 5 à 10 kilo-ohm pour la résistance du réseau RC intégrateur...
Pour la valeur de la capacité, il faut essayer. Avec un oscilloscope, c'est facile.
François, oui, on peut générer le PWM de diverses façons, mais avec un ARDUINO, c'est tellement plus souple. Et on peut lui faire faire plein d'autres trucs ☺️
Michel
RIAZUELO- Nombre de messages : 1314
Localisation : CHOLET LFOU
Constr./proprio. : Constructeur VLA F-PMTR
Date d'inscription : 23/07/2009
Re: Arduino positionneur de volets
Bonjour à tous,
Merci à tous de vos conseils qui ont permi de m'aiguiller vers la bonne commande Arduino.
Quant au réseau RC, il va falloir que je sorte ma calculatrice et mon oscillo !
Mais bon ça me paraît désormais accessible et réalisable... je partagerai avec vous la réussite (ou non) de l'opération.
Emmanuel
En effet, dans un élan de créativité sans précédent, j'ai fait un copier-coller du code mondialement reconnu // by Michel RIAZUELO March 2013 !RIAZUELO a écrit:Je pense que tu commandes ton servo avec la bibliothèque qui va bien.
Effectivement, tout réside dans le YAPLUKA !!RIAZUELO a écrit:YAPLUKA ...
Merci à tous de vos conseils qui ont permi de m'aiguiller vers la bonne commande Arduino.
Quant au réseau RC, il va falloir que je sorte ma calculatrice et mon oscillo !
Mais bon ça me paraît désormais accessible et réalisable... je partagerai avec vous la réussite (ou non) de l'opération.
Emmanuel
Emmanuel76- Nombre de messages : 87
Age : 46
Localisation : Normandie
Constr./proprio. : Constructeur MCR01 ULC n°423
Date d'inscription : 23/05/2014
Re: Arduino positionneur de volets
Bonjour Emmanuel,
Tu as oublié de remercier Michael RINOTT, qui a été l'inspirateur du code ☺️
Chacun sa petite pierre, c'est le principe...
Michel
Tu as oublié de remercier Michael RINOTT, qui a été l'inspirateur du code ☺️
Chacun sa petite pierre, c'est le principe...
Michel
RIAZUELO- Nombre de messages : 1314
Localisation : CHOLET LFOU
Constr./proprio. : Constructeur VLA F-PMTR
Date d'inscription : 23/07/2009
Sujets similaires
» Trim d'aileron : gadget ou nécessité ?
» Programmation Arduino pour trim d'aileron: Problème pour se connecter
» Fuel flow FF1-MGL-red-cube et affichage instable : une place pour l'Arduino ?
» Volets 4S et VP-X
» commande de volets
» Programmation Arduino pour trim d'aileron: Problème pour se connecter
» Fuel flow FF1-MGL-red-cube et affichage instable : une place pour l'Arduino ?
» Volets 4S et VP-X
» commande de volets
Le MCR 01: notre passion partagée :: Construction :: Pendant la construction et l'évolution de votre MCR :: Divers
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum