Réalisation d'un pont diviseur de tension

Un lieu pour discuter des composants et de leur utilisation. Un passage obligé si vous devez interfacer votre Raspberry Pi avec le monde extérieur. On y trouvera aussi les cartes type commande de moteur pas à pas, continu, servo...

Modérateurs : Francois, smba38

Répondre
spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Réalisation d'un pont diviseur de tension

Message par spourre » mer. 12 avr. 2017 18:43

Pinhapple a écrit :Alors si j'ai bien compris, la sortie est en TTL. ;)

Je suis toujours avec mon pont diviseur de 5 V -> 3,3 V, qui fonctionne exactement comme je le souhaite avec mon Arduino : lecture des fronts montants du signal A et affichage du nombre d'impulsions écoulées, et lecture des fronts montants du signal B avec remise à zéro du compteur précédemment cité à chaque nouveau tour.

En revanche, j'ai un souci dès que je quitte l'Arduino pour lire en sortie du radar : le signal A est lu convenablement et j'arrive à compter chaque impulsion, mais le signal B me renvoie une énorme quantité de valeurs à chaque instant au lieu d'une impulsion toutes les quatre secondes. En regardant le signal à l'oscilloscope, je me suis rendu compte que les états hauts et bas des signaux n'étaient pas "lisses", mais qu'il y avait beaucoup de parasites sur le signal, du coup j'ai l'impression que je lis les fronts montants de chaque parasite. Y aurait-il un moyen d'augmenter la tension de déclenchement des fronts montants sur les GPIO ?

Autre petit tracas : plutôt que d'avoir environ 3,3 V en sortie de mon pont diviseur, je mesure 2,6 V à l'oscilloscope. Comment expliquer cet écart ? Peut-il avoir une influence sur mes lectures de fronts montants ?
Il me semble me souvenir avoir lourdement insisté sur le caractère pollué de l'environnement de la plateforme radar et avoir expliqué que c'est certainement cela qui justifiait la liaison différentielle, mieux protégée conter le bruit.
Comment récupères-tu le signal du radar ? Sur quels fils, avec quelle masse de référence ?

Pour le pont diviseur, la tension mesurée est juste suffisante pour être interprétée comme un niveau logique 1. Je ne pense pas que les 50 k du GPIO (valeur souvent avancée sur Internet et mesurée par Bud) expliquent cet effondrement.
Pour lever le doute, tu peux isoler ton pont diviseur du Raspberry, mettre une résistance de 50 K en // pour simuler la présence du Raspberry et mesurer au scope, pour voir ce qui se passe.
Ca pourrait être un problème de constante de temps RC (capa répartie du câble, ...) compte tenu de la faible durée du front (ce n'est pas pour rien que les sondes d'oscilloscope, qui sont en fait des diviseur de tension, sont compensées en fréquence avec une capa ajustable).

Si le problème persiste, il faudra envisager un décodeur différentiel ==> TTL (ou CMOS) ou de régénérer un signal propre avec un trigger de Schmitt (déjà mentionné).

Sylvain

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Réalisation d'un pont diviseur de tension

Message par Bud Spencer » mer. 12 avr. 2017 21:53

La chute de tension ‘théorique’ supplémentaire occasionnée par résistance de pull-down interne (~50k) est négligeable avec une résistance de 3.3K sur le talon du diviseur. Mathématiquement, cela diminue la valeur du talon à résistance de ~3.1K ce qui abaisse la tension ‘out’ du pont de tout au plus 100mV pour une tension d’entrée de 5V. Par contre, si le pont n’est plus de 1.7k/3.3k mais de 17k/33k comme je l’avais préconisé pour réduire la charge, cela change tout. La résistance de pull-down a dans ce cas beaucoup plus d’incidence. La tension de sortie serait de ~2.7v (suffisante) mais l’immunité aux parasites bien moins bonne tout comme tu l’avais très justement précisé (peut être l'explication de résultats 'étranges' à l'oscillo).

Voilà donc un bon petit exercice d’électronique de base pour notre ami Pinhapple. Le but pourrait consister à mettre en œuvre un (ou plusieurs) aop et éventuellement un trigger de Schmitt de façon à avoir un signal ‘exemplaire’ sur les entrées du Pi et cela, quelles que soit les impédances d’entré et de sortie. Cela pourrait je pense grandement valoriser la note globale du projet (si j’avais à le noter en tout cas) ;)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Pinhapple
Raspinaute
Messages : 125
Enregistré le : jeu. 23 févr. 2017 15:53
Localisation : Rouen

Re: Réalisation d'un pont diviseur de tension

Message par Pinhapple » jeu. 13 avr. 2017 09:54

spourre a écrit :Comment récupères-tu le signal du radar ? Sur quels fils, avec quelle masse de référence ?
J'ai un câble série 9 broches + 1 masse que j'ai coupé pour n'utiliser que 2 broches en sortie : signal A positif (broche 1) et signal B positif (broche 2). La masse est un fil torsadé à part, non-gainé, et relié à la carcasse métallique de la prise DB9. J'ai donc d'un côté une prise DB9 mâle à brancher sur le radar, et en sortie deux broches et une masse qui vont passer dans mon pont diviseur puis dans le RPi.
spourre a écrit :Pour le pont diviseur, la tension mesurée est juste suffisante pour être interprétée comme un niveau logique 1. Je ne pense pas que les 50 k du GPIO (valeur souvent avancée sur Internet et mesurée par Bud) expliquent cet effondrement.
Oui, j'ai comparé avec tes indications des 1/3 et 2/3 et on a bien 2,6 V > 2/3 * 3,3 V = 2,2 V. Concernant la hauteur des parasites, il faudra que je mesure ça à l'oscillo aujourd'hui afin de voir si ceux-ci ne dépassent pas 1/3 * 3,3 V = 1,1 V ; de mémoire il me semble que non, ça paraissait bien plus faible sur l'écran de l'oscillo.
spourre a écrit :Pour lever le doute, tu peux isoler ton pont diviseur du Raspberry, mettre une résistance de 50 K en // pour simuler la présence du Raspberry et mesurer au scope, pour voir ce qui se passe.
Euh, je ne comprends pas trop comment mettre les resistances... Je les mets en parallèle de quoi ? A quoi relier mes fils de signaux ? J'ai tenté un schéma, avec ce que j'ai actuellement avec le RPi en haut.
montage3.png
montage3.png (8.6 Kio) Vu 6041 fois
De plus, je n'ai à disposition que des 47 kΩ et des 56 kΩ. Lesquelles préférer ?
spourre a écrit :Si le problème persiste, il faudra envisager un décodeur différentiel ==> TTL (ou CMOS) ou de régénérer un signal propre avec un trigger de Schmitt (déjà mentionné).
Je me renseigne déjà sur les triggers de Schmitt, c'est amusant et intéressant comme fonctionnement ! Ai-je besoin d'un composant dédié, ou est-ce que je peux en faire un moi-même à base d'autres composants ?
Bud Spencer a écrit :Par contre, si le pont n’est plus de 1.7k/3.3k mais de 17k/33k comme je l’avais préconisé pour réduire la charge, cela change tout. La résistance de pull-down a dans ce cas beaucoup plus d’incidence. La tension de sortie serait de ~2.7v (suffisante) mais l’immunité aux parasites bien moins bonne tout comme tu l’avais très justement précisé (peut être l'explication de résultats 'étranges' à l'oscillo).
J'ai fait comme tu as conseillé et ai remplacé les résistances par leur valeur * 10. Mettre les résistances prévues initialement pourrait corriger le problème ?
Bud Spencer a écrit :Voilà donc un bon petit exercice d’électronique de base pour notre ami Pinhapple. Le but pourrait consister à mettre en œuvre un (ou plusieurs) aop et éventuellement un trigger de Schmitt de façon à avoir un signal ‘exemplaire’ sur les entrées du Pi et cela, quelles que soit les impédances d’entré et de sortie. Cela pourrait je pense grandement valoriser la note globale du projet (si j’avais à le noter en tout cas) ;)
Dans tous les cas je me pencherai sur les triggers de Schmitt, au moins dans un cadre personnel, car je trouve ces systèmes intéressants ! Rien que pour le plaisir de bidouiller et d'apprendre, je serai amener à manipuler un peu de ça ! ;)

Une nouvelle fois, un grand merci à vous !
  • RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
  • Arduino Mega, Uno, Nano
  • Freescale FRDM KL25Z

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Réalisation d'un pont diviseur de tension

Message par spourre » jeu. 13 avr. 2017 11:14

Pinhapple a écrit : ...
J'ai un câble série 9 broches + 1 masse que j'ai coupé pour n'utiliser que 2 broches en sortie : signal A positif (broche 1) et signal B positif (broche 2). La masse est un fil torsadé à part, non-gainé, et relié à la carcasse métallique de la prise DB9. J'ai donc d'un côté une prise DB9 mâle à brancher sur le radar, et en sortie deux broches et une masse qui vont passer dans mon pont diviseur puis dans le RPi.
...
OK pour la reprise de masse sur le châssis du RADAR. C'est OK si on est certain que toutes les masses, électrique et signaux , sont communes ce qui n'est pas une certitude (il peut y avoir une partie de l'électronique isolée galvaniquement).
De la liaison différentielle, tu n'utilises, à chaque fois, qu'un seul fil de la paire (que tu désignes signal positif. C'est une approche expérimentale dont j'avais déjà souligné le risque (perte de l'immunité aux parasites). mais qui peut être tentée sans risque. Par contre, as-tu bien respecté l' appairage des fils d'un même signal ? En clair, ton câble série est-il bien prévu pour une utilisation différentielle ? C'est un point que j'avais déjà souligné (de mémoire, en donnant l'exemple d'un câble Ethernet). Le fait que la paire soit torsadée participe à la protection contre les signaux parasites.
Pinhapple a écrit : ...
Oui, j'ai comparé avec tes indications des 1/3 et 2/3 et on a bien 2,6 V > 2/3 * 3,3 V = 2,2 V. Concernant la hauteur des parasites, il faudra que je mesure ça à l'oscillo aujourd'hui afin de voir si ceux-ci ne dépassent pas 1/3 * 3,3 V = 1,1 V ; de mémoire il me semble que non, ça paraissait bien plus faible sur l'écran de l'oscillo.
...
Sans aller jusqu'à évoquer le principe d'incertitude de Heisenberg, il faut bien avoir présent à l'esprit que "mesurer, c'est se tromper" :ugeek:
Pour analyser et interpréter correctement une mesure, il faut savoir ce que l'on mesure et avec quoi on le mesure.
Un oscilloscope analogique est un très bon voltmètre crête, sans inertie, non sensible au facteur de forme du signal...
Sur un signal tel que celui que tu veux vérifier, pulse étroit à faible fréquence de récurrence, il devrait, être idéalement, équipé d'une double base de temps et d'un retard au déclenchement..
1.1V (en CMOS) est le début de la zone d'incertitude. Au dessus, jusqu'à 2.2V, tu ne peux rien supposé. La forme du front est aussi importante (déjà dit).
Pinhapple a écrit : ...
Euh, je ne comprends pas trop comment mettre les resistances... Je les mets en parallèle de quoi ? A quoi relier mes fils de signaux ? J'ai tenté un schéma, avec ce que j'ai actuellement avec le RPi en haut.
montage3.png
...
De plus, je n'ai à disposition que des 47 kΩ et des 56 kΩ. Lesquelles préférer ?
...
J'ai fait comme tu as conseillé et ai remplacé les résistances par leur valeur * 10. Mettre les résistances prévues initialement pourrait corriger le problème ?
...
Les résistances remplacent le port du GPIO. Elles se mettent donc, pour chaque signal, entre la sortie du pont diviseur et la masse (ton 2 ème schéma est incorrect car la résistance est shuntée par le fil)..
47 ou 56 K, sauf si tu as des résistances à 1 %, c'est pareil.
Bud avais fait une réponse juste, basée sur la consommation électrique. J'avais apporté une nuance basée sur l'immunité aux parasites et la bande passante (constante RC déjà évoquée).
Revenir aux valeurs initiales pourrait améliorer le comportement du montage.
Pinhapple a écrit : ...
Dans tous les cas je me pencherai sur les triggers de Schmitt, au moins dans un cadre personnel, car je trouve ces systèmes intéressants ! Rien que pour le plaisir de bidouiller et d'apprendre, je serai amener à manipuler un peu de ça ! ;)
...
Tu peux faire un récepteur différentiel à base d'AOP (solution déjà mentionnée) ou avoir recours à un circuit dédié (déjà mentionné) ou mettre un trigger de Schmitt (déjà évoqué).
Ce sont des montages basiques qui participeront à ta culture générale électronique.

Je m’aperçois, en rédigeant cette réponse, que beaucoup de problèmes (et leurs solutions) ont déjà été évoqués.
Il faut acquérir une méthode pour trier, classer, archiver et retrouver l'information utile. Dans ces métiers, il faut beaucoup lire (Revues, Internet, livres (si si) ). On ne peut pas tout mémoriser mais il faut savoir retrouver l'information utile, au moment utile (déjà mentionné :mrgreen: :mrgreen: ).

Sylvain

Pinhapple
Raspinaute
Messages : 125
Enregistré le : jeu. 23 févr. 2017 15:53
Localisation : Rouen

Re: Réalisation d'un pont diviseur de tension

Message par Pinhapple » jeu. 13 avr. 2017 11:52

spourre a écrit :Par contre, as-tu bien respecté l' appairage des fils d'un même signal ? En clair, ton câble série est-il bien prévu pour une utilisation différentielle ? C'est un point que j'avais déjà souligné (de mémoire, en donnant l'exemple d'un câble Ethernet). Le fait que la paire soit torsadée participe à la protection contre les signaux parasites.
Je ne sais pas, mais à voir l'aspect des fils qui dépassent un peu de la gaine plastique, je dirais que non.
spourre a écrit :Les résistances remplacent le port du GPIO. Elles se mettent donc, pour chaque signal, entre la sortie du pont diviseur et la masse (ton 2 ème schéma est incorrect car la résistance est shuntée par le fil)..
Ok c'est noté, je vais tester ça sur breadboard déjà. Effectivement, je ne mesurerais rien avec le deuxième schéma...
spourre a écrit :47 ou 56 K, sauf si tu as des résistances à 1 %, c'est pareil.
5 % de tolérance, donc 47 kΩ ce sera.
spourre a écrit :Revenir aux valeurs initiales pourrait améliorer le comportement du montage.
Du coup si je pousse le truc plus loin, pourquoi ne pas descendre encore les valeurs, avec par exemple 180 et 330 Ω ? Que se passerait-il ? (Curiosité, curiosité...)
spourre a écrit :Je m’aperçois, en rédigeant cette réponse, que beaucoup de problèmes (et leurs solutions) ont déjà été évoqués.
Il faut acquérir une méthode pour trier, classer, archiver et retrouver l'information utile. Dans ces métiers, il faut beaucoup lire (Revues, Internet, livres (si si) ). On ne peut pas tout mémoriser mais il faut savoir retrouver l'information utile, au moment utile (déjà mentionné :mrgreen: :mrgreen: ).
Hé hé, je note déjà beaucoup de choses ! ;)
Comme l'électronique est un domaine que je suis loin de maîtriser, je n'ai pas encore les réflexes me permettant de penser à une solution, même déjà évoquée, lorsque je rencontre un problème. Mon maximum actuellement serait "J'ai besoin de réduire une tension ? J'utilise un pont diviseur de tension !", mais rien ne me vient pour l'instant à l'esprit avec les problèmes que j'évoque ici ! :D
  • RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
  • Arduino Mega, Uno, Nano
  • Freescale FRDM KL25Z

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Réalisation d'un pont diviseur de tension

Message par Bud Spencer » jeu. 13 avr. 2017 18:12

En fait c’est exactement les mêmes problèmes que l’on a avec les codeurs incrémentaux en automatisme et il y a fort à parier que c’est d’un truc comme ça que proviennent tes signaux sauf que tu n’utilises pas le second axe de rotation qui délivre un signal en quadrature du fait que le sens de rotation est pour toi toujours le même. Ton signal B n’est autre que l’axe Z du codeur qui ne donne qu’une impulsion par tour. Il y a des circuits spécialisés pour ça, mais ils ne sont pas forcément bon marché. A titre perso (donc économique), j’ai souvent bricolé avec ce genre de truc et je m’en sortais toujours avec quelques aop pour transformer les signaux et de simple bascules pour la détection du sens de rotation.
Pinhapple a écrit :Du coup si je pousse le truc plus loin, pourquoi ne pas descendre encore les valeurs, avec par exemple 180 et 330 Ω ? Que se passerait-il ? (Curiosité, curiosité...)
Dans l’absolu, réduire la valeur des résistances du pont va à l’inverse de ce qu’il faudrait faire. En fait dans un system idéal, la résistance vue par le générateur (ici ton radar) devrait être la plus élevée possible de façon à avoir le moins d'incidence possible sur le signal. On en est resté au diviseur de tension parce que la solution est simple à comprendre et à mettre en œuvre, mais ça reste du bricolage, surtout dans ce type de cas d'application. En tâtonnant les valeurs du pont tu vas peut-être trouver un compromis entre charge et parasite, mais dis-toi qu’une simple modification de la longueur du câble entre le codeur et l’entrée du PI pourrait tout à fait à elle seule remettre en cause le fonctionnement.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Pinhapple
Raspinaute
Messages : 125
Enregistré le : jeu. 23 févr. 2017 15:53
Localisation : Rouen

Re: Réalisation d'un pont diviseur de tension

Message par Pinhapple » ven. 14 avr. 2017 09:31

Bud Spencer a écrit :il y a fort à parier que c’est d’un truc comme ça que proviennent tes signaux sauf que tu n’utilises pas le second axe de rotation qui délivre un signal en quadrature du fait que le sens de rotation est pour toi toujours le même. Ton signal B n’est autre que l’axe Z du codeur qui ne donne qu’une impulsion par tour.
C'est ça ! ;)
Bud Spencer a écrit :Dans l’absolu, réduire la valeur des résistances du pont va à l’inverse de ce qu’il faudrait faire.
Même si je repasse aux valeurs prévues initialement ? Pour citer spourre : "Revenir aux valeurs initiales pourrait améliorer le comportement du montage."
Bud Spencer a écrit :En tâtonnant les valeurs du pont tu vas peut-être trouver un compromis entre charge et parasite, mais dis-toi qu’une simple modification de la longueur du câble entre le codeur et l’entrée du PI pourrait tout à fait à elle seule remettre en cause le fonctionnement.
Je vais retourner faire quelques tests à l'oscillo, avec mon pont diviseur + câble soudé, mais aussi avec mon pont diviseur expérimental encore sur sa breadboard avec ses fils plus courts, afin de voir si j'arrive à isoler ce qui ne va pas, voir si une configuration paraît meilleure qu'une autre.
  • RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
  • Arduino Mega, Uno, Nano
  • Freescale FRDM KL25Z

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Réalisation d'un pont diviseur de tension

Message par Bud Spencer » ven. 14 avr. 2017 13:29

Pinhapple a écrit :Même si je repasse aux valeurs prévues initialement ?
Bien sur. Le fait de réduire la résistance globale du pont va forcément réduire aussi la sensibilité aux parasites et peut être que se sera suffisant pour avoir des signaux utilisables. Néanmoins, je te rappelle que d’après tes premiers oscillogrammes ou tu utilisais déjà des valeurs faibles de résistances pour ton diviseur, tu avais déjà du parasitage sur ton signal B.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Réalisation d'un pont diviseur de tension

Message par spourre » ven. 14 avr. 2017 14:01

Bud Spencer a écrit :
Bien sur. Le fait de réduire la résistance globale du pont va forcément réduire aussi la sensibilité aux parasites et peut être que se sera suffisant pour avoir des signaux utilisables. Néanmoins, je te rappelle que d’après tes premiers oscillogrammes ou tu utilisais déjà des valeurs faibles de résistances pour ton diviseur, tu avais déjà du parasitage sur ton signal B.
C'est un problème de densité d'énergie. Raisonnons par l’absurde en regardant ce qui se passe aux limites:

1) Si on met une résistance). nulle (un court-circuit), on n'arrivera jamais à faire changer le GPIO d'état.
2) Si on met une résistance infinie, la moindre impulsion parasite peut faire basculer (c'est employé depuis des lustres pour faire un contact sensitif

La bonne solution est entre les 2 (et aussi le compromis consommation au repos). En toute rigueur, compte tenu de la liaison différentielle, il faudrait respecter l'adaptation d'impédance et la symétrie du câble (j'en ai déjà parlé avec un exemple concret de liaison T2 :ugeek: ).

Nota: Il me semble que le spikes dont tu parles étaient mesuréees sur le signal généré par l'arduino.

Sylvain

Pinhapple
Raspinaute
Messages : 125
Enregistré le : jeu. 23 févr. 2017 15:53
Localisation : Rouen

Re: Réalisation d'un pont diviseur de tension

Message par Pinhapple » mar. 18 avr. 2017 13:12

Bud Spencer a écrit :tu avais déjà du parasitage sur ton signal B.
spourre a écrit :Nota: Il me semble que le spikes dont tu parles étaient mesuréees sur le signal généré par l'arduino.
En effet, mais avec mon Arduino qui génère un signal similaire à celui du radar.

J'ai fait quelques tests avec l'oscillo sur le radar : en sortie du radar pour l'état bas, la tension vaut environ 1,2 V ; pour l'état haut, la tension vaut environ 4,5 V. En sortie de mon pont diviseur, la tension pour l'état bas vaut environ 0,75 V ; et environ 2,9 V pour l'état haut.

Ces tensions sont dans les grandeurs 1/3 et 2/3 données précédemment par Sylvain, donc je dirais qu'à priori le problème ne vient pas d'un état bas trop haut en tension. De plus, j'ai tortillé mon câble dans tous les sens et fait quelques boucles, sans changer grand chose aux courbes affichées sur l'oscillo, j'en déduis que je peux également mettre le câble hors de cause.

Mais du coup, j'ai du mal à comprendre pourquoi mon signal A est lu et interprété correctement par mon soft, alors que c'est la foire pour le signal B, sachant que ces deux signaux ont des impulsions de même durée (environ 125 µs), des états bas et hauts de même tension (respectivement 0,75 V et 2,9 V en entrée des GPIO), et les mêmes "parasites" sur les états bas et hauts.

Pour donner une idée, schéma de comparaison de ce que je vois à l'oscillo avec mon Arduino (en haut) et avec le radar (en bas) :
oscillo2.png
oscillo2.png (6.22 Kio) Vu 5988 fois
J'ai fait léger avec le bruit, c'est très très serré en réalité.
  • RPi 3 + LibreELEC / RPi 3 + RetroPie / RPi B+ + Sense HAT ou Framboisedorf ou module caméra
  • Arduino Mega, Uno, Nano
  • Freescale FRDM KL25Z

Répondre

Retourner vers « L'électronique et le Raspberry Pi »