Pages: [1] 2 3 ... 6   Go Down
Author Topic: [RESOLU] Relais 5V pour signal servo (ex-Recopier l'état d'un PIN en temps réel)  (Read 8278 times)
0 Members and 1 Guest are viewing this topic.
Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 366
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
 smiley-wink

EDIT : Ce post est une des questions de mon projet d'Autopilot pour avion RC
« Last Edit: August 18, 2012, 07:58:14 am by UniseV » Logged

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 !

Rennes
Online Online
Sr. Member
****
Karma: 1
Posts: 313
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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).
Logged


Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 366
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

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 !

Rennes
Online Online
Sr. Member
****
Karma: 1
Posts: 313
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged


France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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/
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 366
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: June 26, 2012, 10:16:13 am by UniseV » Logged

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 !

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Est-ce électroniquement réalisable ?
Avec 4 mosfet ça se fait sans probléme, pas besoin de relais smiley-wink
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 smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


* 4053.png (24.83 KB, 535x337 - viewed 40 times.)

* commande simultanée3 inverseurs.png (19.71 KB, 493x223 - viewed 28 times.)

* triple inverseur.png (21.83 KB, 543x477 - viewed 28 times.)
« Last Edit: June 26, 2012, 11:26:27 am by al1fch » Logged

Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 366
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Est-ce électroniquement réalisable ?
Avec 4 mosfet ça se fait sans probléme, pas besoin de relais smiley-wink
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 smiley-wink

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...  smiley
Logged

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 !

Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 366
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: June 26, 2012, 11:19:39 am by UniseV » Logged

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 !

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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é?
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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...


* BP HC4053.png (31.47 KB, 667x279 - viewed 26 times.)
« Last Edit: June 26, 2012, 11:59:14 am by al1fch » Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@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!
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Logged

Paris
Offline Offline
Sr. Member
****
Karma: 2
Posts: 366
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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   smiley

Sev
« Last Edit: June 27, 2012, 09:18:28 am by UniseV » Logged

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 !

Pages: [1] 2 3 ... 6   Go Up
Jump to: