Go Down

Topic: [RESOLU] Relais 5V pour signal servo (ex-Recopier l'état d'un PIN en temps réel) (Read 9495 times) previous topic - next topic

UniseV

Bonjour,

Est-il possible de "connecter" virtuelement une PIN d'entrée directement sur une PIN sortie, afin que la sortie soit une parfaite recopie de la PIN d'entrée en temps réel ?

J'aimerai développer un AutoPilot pour avion radio-commandés, mais quand il n'est pas activé, il doit simplement reproduire en temps réel le signal servo qu'il a en entrée, vers une sortie.

Sev
;)

EDIT : Ce post est une des questions de mon projet d'Autopilot pour avion RC
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

patg_

Bonjour,
Pas de "connexion" possible à ma connaissance et recopier du PWM en temps réel me semble hors de portée de l'Arduino.
Je pense qu'il vaudrait mieux passer par un by-pass externe à transistor ou autre, via une pin de commande.

En tout cas je suis assez intéressé par ton projet (j'ai quelques modèles réduits que je fais voler de temps en temps).
Mes Arduineries: http://breizhmakers.over-blog.com/

UniseV

Oui un vrai bypass serait interressant, mais il faudrait capter le signal quand-même.

J'avais imaginé dans ma caboche de non-electronicien, de commander des relais en sortie d'un registre à décalage, comme ça , on ne prend qu'une voie de l'arduino pour "commuter" les 4 servos...

Pour mon projet, je veux bien l'exposer quelque part, en Français mais ou ?

Pour l'instant il est partiellement ici & en anglais :
http://www.rcgroups.com/forums/showthread.php?t=1648040&page=2

Sev
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

patg_

Utiliser un relai pour des trames de servo qui si j'ai bonne mémoire durent dans les 20ms (quoique c'est peut-être pour toutes les voies), c'est pas vraiment envisageable.

Ce qu'il te faudrait c'est sortir le signal PWM de ta télécommande (via la prise de double-commande) ou via un récepteur HF (le signal à destination des servos) si tu te places côté réception, et l'envoyer à l'Arduino. J'ai d'ailleurs l'impression que tu te places côté récepteur?

Là t'as un by-pass à transistor qui soit renvoie ce signal sans traitement vers sa destination, soit le modifie au passage.

Je crois que c'est un peu sur ce principe que fonctionnent les gyroscopes pour hélico R/C par exemple.

J'ai un projet dans les cartons (à long terme car j'ai d'autres trucs en cours), qui vise à commander un avion R/C depuis un simulateur de vol via un Arduino. Il ne s'agit pas de le faire voler, mais de faire bouger ses gouvernes ainsi qu'une plateforme à 2 degrés de rotation sur laquelle il serait posé, à but éducatif.

Mes Arduineries: http://breizhmakers.over-blog.com/

skywodd

Bonjour,


Pas de "connexion" possible à ma connaissance et recopier du PWM en temps réel me semble hors de portée de l'Arduino.
Je pense qu'il vaudrait mieux passer par un by-pass externe à transistor ou autre, via une pin de commande.

+1
Pas de possibilité hardware de connecter en temps réel une broche à une autre.
Ce genre de chose est possible avec un FPGA ou un cpu ARM (-> DMA) mais pas sur une carte arduino.

La solution la plus viable est de faire un montage à base de transistor, ou mieux de mosfet, qui permettrai de relier ou non les deux broches.

Sinon une autre solution pourrait être d'utiliser un commutateur analogique.
Exemple avec un CD4067 : http://skyduino.wordpress.com/2011/08/20/test-analog-mux-4067-16-canaux/
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

UniseV

#5
Jun 26, 2012, 05:05 pm Last Edit: Jun 26, 2012, 05:16 pm by UniseV Reason: 1
Je détaille en image ce que j'entendais par des relais commandé par un registre à décalage :


Dans cette exemple, la PIN4 serait connecté à un registre à décalage, qui piloterait des "relais", pour commuter entre l'arrivée directe du récepteur (pilotage manuel) et les sorties de l'arduino (pilote automatique).

Est-ce électroniquement réalisable ?

Sev

EDIT : Skywodd, le commutateur analogique ne sera pas adapté, car le signal servo est un pseudo PWM
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

skywodd


Est-ce électroniquement réalisable ?

Avec 4 mosfet ça se fait sans probléme, pas besoin de relais ;)
Exemple : http://www.electronics-tutorials.ws/transistor/tran_7.html (tout en bas, le moteur -> ton signal vers les servo, V+ V- -> tes deux signaux sources)


EDIT : Skywodd, le commutateur analogique ne sera pas adapté, car le signal servo est un pseudo PWM

Et alors ? Un signal numérique (PWM ou autre) n'est rien d'autre qu'un signal analogique avec seulement deux états ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

al1fch

#7
Jun 26, 2012, 05:58 pm Last Edit: Jun 26, 2012, 06:26 pm by al1fch Reason: 1
UniseV, le schéma est tout à fait réalisable avec des commutateurs analogiques comme indiqué par skywodd, du moins si les courants traversants les inverseurs ne dépassent pas  quelques mA (signal servo sans doute OK)

Dans la famille 4051, 4052, 4053, 4066 ou 4067  le CD4053 ou HC4053 est tout indiqué avec ses 3 inverseurs gérables individuellement et permettrai sans aucune difficulté de reproduire fonctionnellement ton schéma.... pour un coût modique ! http://www.gotronic.fr/art-74hc4053-10119.htm
Dans ton cas il suffit de relier les 3 entrées A,B et C (pins 9, 10 et 11) pour inverser globalement les 3 inverseurs.
A,B et C à zéro -> ce sont les entrées x qui sont séléctionnées
A,B, et C à un, ce sont les entrées y qui sont sélectionnées

L'idée de registre à décalage par contre est surprenante, ou alors tu n'as pas tout dit ! ça ne parait pas du tout nécessaire pour piloter les inverseurs

UniseV



Est-ce électroniquement réalisable ?

Avec 4 mosfet ça se fait sans probléme, pas besoin de relais ;)
Exemple : http://www.electronics-tutorials.ws/transistor/tran_7.html (tout en bas, le moteur -> ton signal vers les servo, V+ V- -> tes deux signaux sources)


Ok, je vois bien l'exemple du moteur, il me reste à savoir si je peux bien mettre ce genre de circuit derrière le registre à décalage de mon kit snootlab, dans ce cas, 1 seul OUTPUT de mon Arduino pourrait commuter plusieurs servos.

mosfet ça veut bien dire transistor ?

Peut-être que je pourrais utiliser d'autres composants de mon kit snootlab du coup :
http://shop.snootlab.com/shields-snootlab/90-snootlab-starter-kit.html
Toutes ces petites puces grises m'intriguent... je ne connaissais que LED, resistances, switch et servo...



EDIT : Skywodd, le commutateur analogique ne sera pas adapté, car le signal servo est un pseudo PWM

Et alors ? Un signal numérique (PWM ou autre) n'est rien d'autre qu'un signal analogique avec seulement deux états ;)


Ce que je voulais dire, c'est que le commutateur analogique ne me parait pas adapté car je ne veux pas multiplexer dans le temps (vu que le signal servo se mesure dans le temps), pour moi c'est juste une fonction relais que je cherche (et je ne parle pas du composant).

Utiliser un MUX 16 voies pour basculer 2 voies de temps en temps ça me parait un peu similaire à utiliser un bazooka pour tuer une mouche...  :)
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

UniseV

#9
Jun 26, 2012, 06:05 pm Last Edit: Jun 26, 2012, 06:19 pm by UniseV Reason: 1

L'idée de registre à décalage par contre est surprenante, ou alors tu n'as pas tout dit ! ça ne parait pas du tout nécessaire pour piloter les inverseurs


L'idée du registre à décalage, c'était de piloter plusieurs circuit "inverseur" avec 1 PIN de l'arduino, dans mon exemple il n'y a que 2 sorties et 4 entrées, mais il pourrait y en avoir le double, mais je réalise en écrivant, qu'il faudrait plus de PIN que ce que j'avai imaginé pour alimenter le registre(4 PIN je crois...)... donc pour 2 inverseurs c'est pas interressant.

Effectivement ce que tu proposes a l'air tout à fait adapté !

Sev
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

Super_Cinci

Pourquoi ne pas utiliser la grande base de toute structure logique, le truc logique en soi : une porte logique. Comme son nom l'indique, c'est une porte... Je partirais sur un simple ampli ligne à sortie 3 états. genre des amplis bidirectionnels 8 bits 74HC243, 245, 645, 623, 449... ce sont vraiment les circuits les mieux placés, non? soit on les passe en ampli, soit on les désactive, ça ne demande qu'une pin d'arduino... Je propose du 74HC, car j'ai peur que la norme TTL  seule ne soit pas assez restrictive pour conserver des signaux corrects

Les mux analogiques n'ont pas une bande passante assez large pour passer un signal servo (c'est un signal carré, donc avec un spectre plutôt large).

Pourquoi faire simple quand on peut faire compliqué?

al1fch

#11
Jun 26, 2012, 06:41 pm Last Edit: Jun 26, 2012, 06:59 pm by al1fch Reason: 1
@SuperCinci
Bande Passante :  avec un 74C4053 on peut compter sur plusieurs dizaines de MHz dans un contact établi. (120MHZ sur un pdf). C'est tout à fait suffisant pour transmettre sans déformation perceptible un signal servo. (fondemental à 500Hz à tout casser, il faut aller très loin dans les harmoniques pour constater celles qui ne passent pas !)
Le basculement des inverseurs est , lui, un peut plus long , mais UniseV ne cherche pas à faire du multiplexage à fréquence élevée, mais juste à commuter de temps à autre...

Super_Cinci


@SuperCinci
(...) mais UniseV ne cherche pas à faire du multiplexage à fréquence élevée, mais juste à commuter de temps à autre...
Justement, alors pourquoi ne pas utiliser un composant spécialement prévu pour comme un ampli ligne (qui n'est autre qu'une porte ET) : le signal sur une entrée, la commande sur la pin "OE", si la commande est à "1", le signal servo se retrouve en sortie, si la commande est à "0", la sortie est "en l'air"... exactement le même fonctionnement qu'un relais, mais bien moins cher... et avec une seule pin de commande, on peut gérer 8 voies. on peut aussi imaginer un multiplexeur logique 4 x 2=>1, avec en entrée An le signal servo(n) et en Bn les sorties "servo" de l'arduino, la sortie du Mux Yn irait ensuite vers l'émetteur. avec un simple bit, on choisit d'envoyer soit les commandes originelles, soit les commandes "arduino".

Je ne vois vraiment pas l'intérêt d'utiliser un mux analogique ici, ça n'a aucun sens!

al1fch

Bonjour SuperCinci

Alors va pour un 74HC157, quadruple multiplexeur numérique 2 vers 1 qui, je comprend tout à fait, représente la réponse 'normale' au problème posé par UniseV  !
http://etronics.free.fr/dossiers/num/num20/multiple.htm
(Dans le contexte les signaux numériques à commuter passeraient, sans être défigurés, à travers un HC4053. Solution acceptable à mon avis , sinon idéale)

UniseV

#14
Jun 27, 2012, 04:15 pm Last Edit: Jun 27, 2012, 04:18 pm by UniseV Reason: 1
Bonjour,

Tout d'abord, merci pour vos réponses et votre implication, l'inconvénient du mux numérique, c'est que je ne peux basculer les canaux que tous ensembles, et il me parait étrange de traiter le signal servo comme un signal numérique... alors que c'est son "timing analogique" qui est important.

Je partirais donc plutôt vers un HC4053... qui me semble rassembler tout ce qu'il faut.
DATASHEET : http://www.datasheetcatalog.org/datasheets/90/84669_DS.pdf
A votre avis, peut-on se permettre de ne pas connecter la broche "ENABLE" ? Doit-on dans ce cas le mettre à la masse ?

Dans le cas ou on voudrait commuter 16 entrée sur 8 sorties, alors je mettrais bien un registre à décalage (j'y tien !!), pour alimenter les "channel select input"  :smiley-zipper:   :)

Sev
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

Go Up