Aller au contenu


Photo
- - - - -

transformation signal carré en signal continu


34 réponses à ce sujet

#1 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 16 mars 2012 - 11:00

Bonjour;
la question que je vais vous poser l'a déjà été ici mais n'ayant pas obtenu de réponse, je tente ma chance sur ce forum.
J'ai à la sortie d'un TSOP un signal continu de 5V quand je ne détecte rien et un signal carré de environ 833Hz à 50% de cycle (pas vraiment en fait mais a peu près...)
Ce que je voudrais c'est avoir en sortie un signal haut si rien n'est détecté et bas si le beam IR est détecté... Je pourrais alors inverser ce signal avec un 4069 et j'aurais quelque chose de propre!
Mais je ne sais pas du tout comment m'y prendre pour passer d'un signal carré à un signal bas, tout en pouvant repasser en signal haut si l'entrée est continue.

je ne sais pas si j'ai été clair donc voici un schéma ;) :

traitement signal tsop.jpg


Si vous avez une solution ne réclamant pas de µcontrôleurs, je suis toute ouïe :)
Merci beaucoup!
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#2 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 16 mars 2012 - 11:44

Hello ! Tu as besoin que ton système soit très réactif ?? Parce que sinon, je t'aurais bien proposé un filtre passe-bas RC pour moyenner la tension du signal puis un comparateur type LM311 afin de comparé cette tension à un seuil. Ainsi, si tu as une tension continue, le seuil est dépassé et la sortie est à l'état haut. Si la tension est carré, le filtre moyennera le signal et la tension moyenné sera inférieur au seuil. Du coup, la sortie sera à l'état bas.

Après, si tu dois être réactif (genre 10ms max), cette technique sera un poil délicat à mettre en place (dans le choix du filtre RC surtout en fait...)
Par contre, tu t'en fous d'être précis (que tu autorises 20ms de réactivité ou plus), alors normalement cette technique est simple et efficace.

++
Black Templar

Mon site internet : http://ferdinandpiette.com/


#3 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 17 mars 2012 - 12:02

Merci beaucoup pour ta réponse, je n'ai pas besoin de moins de 20ms de reactivité, c'est pour un systeme dd recharge autonome...
Je vais prendre mes renseignements sur tout ça (ça me fera reviser la physique en plus :P )
un filtre passe bas en gros ça transforme un signal type pwm en signal continu correspondant à la tension moyenne?
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#4 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 17 mars 2012 - 12:21

un filtre passe bas en gros ça transforme un signal type pwm en signal continu correspondant à la tension moyenne?

Un filtre passe bas, ça laisse passé les basses fréquences et ça atténue les hautes.

Donc avec une fréquence de coupure assez basse (comparé à la fréquence de ton signal), oui.
Ta fréquence de coupure, c'est 1/(2piRC).
Ici, ton signal est à 800Hz, dois donc prendre une fréquence de coupure inférieure
Par exemple, pour fc = 100Hz (avec 3.3kohm et 447nF), ton condensateur se chargera ou se déchargera complétement en 8ms. Comme ton signal carré ne reste que 600µs dans le même état (haut ou bas), la capa n'aura pas le temps de se charger ou de se décharger complétement. Du coup, la tension de la capa sera la tension plus ou moins moyenné.

Si t'as un oscillateur carré et un oscillo, je t'invite à faire l'expérience :)

++
Black Templar

Mon site internet : http://ferdinandpiette.com/


#5 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 17 mars 2012 - 12:22

Ooops... double post -_-"

Mon site internet : http://ferdinandpiette.com/


#6 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 17 mars 2012 - 12:40

Vraiment merci pour ton aide, je pense avoir réussi!
voici ce que j'ai fait (simu avec Yenka):
filtre passe bas.JPG


Je n'ai pas vraiment fait de calculs, je l'ai fait au tâtonnement. J’espère que les petites oscillations de la tension moyennée ne perturberont pas le comparateur...
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#7 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 17 mars 2012 - 12:53

Si tu met ton comparateur à 3.5V par exemple, il n'y aura pas de problèmes.

Par contre, tes valeurs de composants sont un peu exotiques !
Avec 15ohm, ton signal devra te fournir pas mal de courant pour charger le condensateur !
Et 1mF pour la capa, c'est énorme ! On utilise ce genre de capa pour lisser des grosses puissances.

Pour avoir les mêmes résultats, mais avec des valeurs plus classiques, essaye les couples 1500ohm/10microFarad ou encore 15kohm/1microfarad

++
Black Templar


PS : perso, j'aurais pris un truc du genre 10kohm et 220nanoFarad


EDIT : dis moi, c'est pour alimenter une led ton montage ?? Car si c'est le cas, il vaut mieux passer par un transistor !! En effet, alimenter une led grâce à un signal provenant d'un capteur, ce n'est pas top (ce n'est même pas bien du tout) car ce n'est tout simplement pas fait pour ça ! Le capteur n'est pas assez puissant pour driver une LED !

Mon site internet : http://ferdinandpiette.com/


#8 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 17 mars 2012 - 02:38

nan nan, c'est juste un montage permettant de détecter un balise IR, la sortie ira donc dans ma arduino!

J'ai essayé les valeurs que tu m'as conseillé, mais ça n'a pas l'air de marcher:

R=10kO, C=220nF:
test2.JPG
ça ne marche pas du tout

R=1.5K, C=10µF:
test1.JPG
là ça va à peu près mais les variations sont un peu grandes et les tensions très petites...

R=15k, C=1µF:
test3.JPG
ça ne marche pas non plus...

j'ai regardé un peu sur le net mais je n'arrive pas trop à comprendre comment déterminer Fc (je crois que c'est la fréquence à partir de laquelle on atténue, c'est ça?). Toutes les infos que je trouve concernent des signaux sinusoïdaux et pour le filtrage d'un PWM je trouve des montages à base d'ampli-op...
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#9 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 17 mars 2012 - 03:38

Hello !

Je ne sais pas ce que c'est comme simulateur, mais il n'a pas l'air de bien fonctionner !
J'ai refais la simu avec mes valeurs (10k et 220nF) et ça marche bien.

sim.png

j'ai regardé un peu sur le net mais je n'arrive pas trop à comprendre comment déterminer Fc (je crois que c'est la fréquence à partir de laquelle on atténue, c'est ça?). Toutes les infos que je trouve concernent des signaux sinusoïdaux et pour le filtrage d'un PWM je trouve des montages à base d'ampli-op...

Les signaux sinusoïdaux ou quelconque, c'est la même chose. (De toute façon, tout signal peut être considéré comme une somme de sinus/cosinus !)
Les montages à ampli-op, je suppose que ce sont aussi des passes-bas ?? Donc ça revient au même aussi.
Enfin, tu as bien compris, Fc, c'est bien la fréquence à laquelle l'atténuation se produit. Dans notre cas, fc vaut 1/(2.pi.R.C)

Pour voir les choses d'un autre angle, on peut regarder ça en terme de charge/décharge d'un condensateur. RC représente la constante de temps du filtre. On sait que le condensateur est chargé à 5 fois RC.
Donc si 1/(5.R.C) > 2.f_alim, alors le condensateur aura le temps de se décharger et de se charger à chaque période ton signal pwm ! Ce que l'on ne veut pas. Il faut donc prendre une constante de temps plus grande pour que le condensateur se charge plus lentement.
Avec mes valeurs, on a une constante RC qui vaut 2.2ms. Le condensateur sera chargé au max au bout de 11ms. Or ton signal PWM est à 800Hz. Ton signal passe de l'état bas à l'état haut et inversement tous les 0.6ms
11ms >> 0.6ms, tout va bien.
Plus RC augmente et plus ton signal est bien lissé, mais plus tu perds en réactivité ! Tout est une histoire de compromis :)

Mon site internet : http://ferdinandpiette.com/


#10 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 17 mars 2012 - 06:05

Salut!
tout d'abord merci pour tes explications, elles sont claires et détaillées, c'est tout ce qu'il me faut ! J'ai utilisé Yenka pour la simulation car Proteus ne marche plus, il m'affiche une erreur à la simulation dès que mon schéma comporte un oscilloscope ou un autre appareil de mesure --'

Si chez toi ça marche, c'est que c'est bon ; j'utiliserai ces valeurs.

Je testerai tout ça au lycée quand j'aurai un oscilloscope et je te dirai.

Encore merci pour tout !

PS : qu'est-ce que tu utilises, toi, pour la simulation, MPlab ? Spice? Apparemment c'est Spice; j'ai un peu de mal à l'utiliser... tu pourrais me passer le code de ton circuit stp?

EDIT: d'après ton schéma, on a environ 8ms de temps de réaction et on règle Vseuil à 4V, c'est ça?
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#11 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 17 mars 2012 - 06:43

PS : qu'est-ce que tu utilises, toi, pour la simulation, MPlab ?

Non, j'utilisais SIMetrix avant, mais je viens de découvrir LTSpice qui à l'air juste surpuissant !


EDIT: d'après ton schéma, on a environ 8ms de temps de réaction et on règle Vseuil à 4V, c'est ça?

En fait, 8ms, c'est le temps de charge ou de décharge complète du condensateur.
Si on se contente de regarder le schéma et si on prend une tension de seuil de 4V, dès que le signal passera de 5V à un signal PWM, la réponse s'effectuera en un peu plus d'une miliseconde. (le temps qu'il faut pour que la tension de sortie soit complétement sous les 4V.)


J'ai refais une simu où tu passe d'un signal d'entrée 5V à une PWM puis de nouveau à 5V pour que tu comprennes bien ce qu'il se passe.
Tu vois en fait qu'il y a 2 temps de réaction : tr1 et tr2. Les deux sont inférieurs à 8ms !
Si tu avais pris une tension de seuil à 4.9V (ce qu'il ne faut pas faire !), tu aurais eu tr1 très petit et tr2 un peu inférieur à 8ms :)

rc.png

Dans cette simu, il y a un petit problème (qui n'est est pas vraiment un en fait ^^), c'est que les oscillations font repasser une fois la tension de sortie au dessus de la tension seuil de 4V ! De ce fait, tu pourrais croire que le signal est repassé à une tension continue de 5V alors qu'on est toujours en PWM.
Tu as 3 solutions pour résoudre ce problème :
- Augmenter le couple RC, ce qui augmentera ton temps de réaction, mais réduira les oscillations.
- Augmenter la tension seuil afin que la première oscillation ne repasse pas au dessus de celle-ci. Ton temps de réaction moyen sera le même.
- Au moment où tu compares ta tension de sortie à la tension de seuil, tu peux mettre en place un Trigger de Smith qui est un comparateur à seuil : si la tension passe en dessous d'un certain seuil, alors tu bascules au niveau bas, maintenant, s'il passe au dessus d'un second seuil plus important que le premier, tu rebascules au niveau haut ! Ainsi, si tu as de petites oscillations, celles-ci ne te feront pas basculer inopinément. Si tu utilises un microcontroleur, c'est super simple à programmer (il faut définir deux seuils au lieu d'un (exemple 3.8 et 4.2V)). Si tu utilises un comparateur type LM311, c'est aussi très simple, il faut que tu fasses une rétroaction positives à l'aide de deux résistances. (ce sont les résistances qui déterminent tes seuils).


++
Black Templar


EDIT : voila le code :

Version 4
SHEET 1 880 680
WIRE 48 96 48 80
WIRE 112 96 48 96
WIRE 240 96 240 80
WIRE 240 96 192 96
WIRE 48 144 48 96
WIRE 240 160 240 96
WIRE 48 256 48 224
WIRE 144 256 48 256
WIRE 240 256 240 224
WIRE 240 256 144 256
WIRE 144 272 144 256
FLAG 144 272 0
FLAG 240 80 out
FLAG 48 80 in
SYMBOL res 208 80 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R1
SYMATTR Value 10k
SYMBOL cap 224 160 R0
SYMATTR InstName C1
SYMATTR Value 220n
SYMBOL voltage 48 128 R0
WINDOW 3 -105 183 Left 2
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
SYMATTR InstName V1
SYMATTR Value PULSE(5 0 1 1n 1n 625u 1.25m 8)
TEXT -58 332 Left 2 !.tran 0 1.02 0.997

Mon site internet : http://ferdinandpiette.com/


#12 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 17 mars 2012 - 11:34

Bonjour (enfin bonne nuit plutôt :P)
j'ai téléchargé LTspice et refais le schéma car je ne trouvais pas où copier le texte ^^ mais c'est vrai que ce logiciel est génial, je n'ai eu aucun soucis... Le seul truc qu'il lui manque c'est peut-être des bibliothèques en plus.
voici une capture d'écran; j'ai augmenté C à 330nF parceque le temps de réaction dont j'ai besoin n'est pas à la ms près et que la solution du trigger de Schmitt me parait un peu lourde...
filtre passe bas final.JPG


vraiment merci, tu m'as beaucoup aidé!
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#13 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 18 mars 2012 - 06:58

Parfait

j'ai téléchargé LTspice et refais le schéma car je ne trouvais pas où copier le texte ^^

Tu mets le code dans un fichier, tu lui donnes l'extension .asc et tu l'ouvres avec ltspice :)

Mon site internet : http://ferdinandpiette.com/


#14 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 21 mars 2012 - 10:53

Il eut été plus simple de mettre un monostable "re triggerable" (un CD4528) réglé sur une période légérement supérieure à celle du 833Hz. A chaque front du signal carré d'entrée, le monostable passe à 1 et ne retombe que si il n'est plus relancé. la détection est donc très rapide (dés le premier front) et l'absence est elle aussi détectée très vite (sensiblement une période)
On reste alors avec des signaux logiques.
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#15 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 21 mars 2012 - 11:00

Il eut été plus simple de mettre un monostable "re triggerable" (un CD4528) réglé sur une période légérement supérieure à celle du 833Hz. A chaque front du signal carré d'entrée, le monostable passe à 1 et ne retombe que si il n'est plus relancé. la détection est donc très rapide (dés le premier front) et l'absence est elle aussi détectée très vite (sensiblement une période)
On reste alors avec des signaux logiques.
le monostable doit pouvoir aussi se faire avec un 555
De plus:extrait du datasheet 1738
After each burst which is between 10 cycles and 70 cycles a gap time of at least 14 cycles is neccessary.
donc il ne faut pas générer continuellement le signal de commande des leds
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#16 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 22 mars 2012 - 07:31

Je n'ai pas très bien compris la methode du monostable, désolé...
Par contre le signal de commande des LEDs n'est pas émis continuellement: il y a 600µs de pause et 600µs de signal haut (voir ici)
Je veux bien (si c'est possible) deux/trois explications sur ta solution :)


EDIT: ça y est, j'ai compris: un monostable c'est une temporisation donc si je met une tempo un poil plus lente que mon signal bas le monostable se réactivera avant la fin. il faudra donc attendre cette tempo complète pour la réactivation... Pas bête! ;)

Merci!
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#17 hmnrobots

hmnrobots

    Habitué

  • Membres
  • PipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 22 mars 2012 - 09:45

pour preciser : ton monostable passe à l'état haut dés qu'il recoit une impulsion de déclenchement; disons que tu le calibbre pour qu'il reste à l'état haut pendant 1.1ms;
Si tu envoie un signal à 1 Khz (1ms) sur l'enrée de déclenchement du monostable redéclenchable alors toutes les 1ms il repart pour 1,1ms donc tant que le signal à 1 Khz est présent le monostable reste à 1.
Si le signal 1 Khz s'arrête, alors le monostable n'est pas redecleché est retombe à 0 après 1,1ms.
La détection est donc très rapide et fournit directement un signal logique

Bien sur, il est possible de reproduire ceci par programme
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#18 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 22 mars 2012 - 10:26

Pas bête du tout ! J'aime beaucoup !

Si on regarde bien, le principe est assez similaire : C'est aussi basé sur un filtre RC qui détermine le temps de bascule et ça rajoute des composants autour (composant qui remplace le comparateur) !

Mon site internet : http://ferdinandpiette.com/


#19 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 22 mars 2012 - 10:31

je vais voir si j'ai ça dans ma réserve de CI :)
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#20 swolf

swolf

    Membre passionné

  • Membres
  • PipPipPip
  • 626 messages
  • Gender:Male

Posté 22 mars 2012 - 11:08

youpi! j'ai trouvé un sn74123n; ça devrait faire l'affaire, non?

datasheet: http://pdf1.alldatas.../SN74123N3.html

EDIT: il faudra que je mette une porte NON entre la sortie du TSOP et l'entrée du monostable nan?
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users