Arduino Leonardo, signaux sur ponts diviseurs

Bonjour,
je débute avec les Arduino mais j'ai déjà de l'expérience en programmation, principalement sur du matériel Renesas.

Je vous expose mon problème/étonnement:

Sur un arduino Leonardo, je veux utiliser le SPI pour commander un écran fonctionnant avec des signaux de 3.3V.
J'opte pour passer par un simple pont diviseur de tension. Le souci, c'est que mes signaux parfaitement carrés de 5V deviennent des charges et décharges de cellules RC(Resistance Condensateur), et non de scréneaux de 3.3V !?! :fearful: et donc rendent inutilisable les signaux. :~

Pour vérifier si ca se répète ailleurs que sur le SPI, je branche mon pont diviseur de tension sur une autre pin que je fais bagotter, et même constatation!

Je réduis fortement les valeurs des résistancse pour faire baisser le temps de la cellule RC créée, et les créneaux deviennent plus lisibles et se rapprochent d'un signal carré. Normal, car la constante de charge a été diminué par 200( En gros les résistance de 470k et 220k du pont diviseur passent à des résistance de 2.2k et 1k).

Quelqu'un a une explication à cette constatation?
Je suis très étonné car cela oblige de baisser la fréquence des signaux et malgré tous les montages volants que je fais au quotidien, c'est la premiere fois que je fois ça!

Merci de vos lumières

Tu dois avoir une capacité parasite quelque part . Tu branches ça sans fil sur une breadboard ?
Quelle fréquence de signaux ?

C'est peut être ton instrument de mesure qui perturbe le signal.
Sinon perturbation électromagnétique ou ton câble est trop long.
Tu dis visualiser les signaux, t'es tu pluguer entre la masse et ton point de test ?

Sortie correctement configurée en sortie ?

En espérant t'avoir aidé

Clément

Pour m'affranchir au maximum des parasites j'ai relié les deux résistances entre elles directement, et un bout de fils à chaque extrémité pour pouvoir directement les brancher dans les headers du Leonardo.
Et la sonde de l'oscilloscope sur le point milieu.
Le cable utilisé est un cable que j'utilise tous les jours et avec lequel je n'ai jamais eu de problème. D'ailleurs le signal 5V est correcte , pris entre le premier fil et la resistance.
Le SPI tourne à 4MHz et pour le test en direct, je fais juste une mise à 1 de la pin, suivi immédiatement du mise à 0. Et je boucle.
Pour ce test je me suis branché sur la pin 2.

En ce qui concerne l'oscilloscope, ce n'est pas lui le fautif car c'est du matos pro étalonné.
Les masses sont bien connectées.
Et les sorties en sorties :slight_smile:

Donc je suis vraiment sceptique....

Pro ou pas, ton oscillo présente une impédance capacitive indiquée en général dessus. Fais le calcul de la constante de temps, tu verras que c'est pas rien...

Je suis sûr qu'en virant l'oscillo, le montage marche! :wink: Je l'ai déjà vérifié sur des montages audio, alors sur du 4MHz... :~

J'aprouve totalement les remarques de Christian et de Super Cinci.

  • tu as obligatoirement de la capa parasite et j'ajoute que tu as aussi de l'inductance parasite avec les longueurs de connexion. Tu formes donc un circuit RLC.
  • Attention aux sondes d'oscillo ! Il faut utiliser une sonde atténuatrice (généralement par 10) pour masquer la capacité d'entrée de l'oscilloscope. Entrer directement sur un oscillo est réservé aux mesures adaptées 50 ohms.

Quelques pistes :
Si pour le pont tu as mis des résistances de 220k et 470 k le schéma équivalent du pont est une résistance de 220k//470k = 150k (application directe du théorème de Thévenin).
Pour l'inductance on compte 10nH/cm pour un fil rectiligne et dans l'air.
Si le fil fait une boucle, selon : la forme de la boucle, sa surface et le couplage éventuel avec d'autres boucles, on peut changer d'unité et passer des nano henry au micro ou au centaines de micro henry.
Nota : deux boucles face à face forment un mauvais transformateur mais hélas un très bon perturbateur -> a éviter comme la peste.

En résumé il faut baisser la valeur des résistances du pont comme tu as fait et torsader les fils de liaison (masse avec actif) pour diminuer la boucle et donc l'inductance parasite de liaison.
Quant à la capacité parasite il n'y a malheureusement pas grand chose à faire pour la diminuer.

Si après avoir rigidifié et stabilisé le câblage tu as encore des soucis pour utiliser des fréquences élevées en ISP tu peux tenter d'utiliser les éléments parasites en constituant un filtre en PI. C'est une solution très souvent utilisée dans le matériel professionnel : quand on ne peut pas éliminer on intègre dans un schéma plus complexe..
Par exemple dans ton cas tu as le schéma suivant :
---------Rp-------Lp----|------- |
Cp
----------------------|----------

Tu pourrait essayer un schéma comme ci dessous -> C1 est ajouté pour terminer le filtre en PI.
----|----Rp---------Lp----|-------
C1 Cp
----|-----------------------|--------

NB : pour le calcul du filtre on considère que l'on a deux demi filtres face à face
---|-------L/2----- ----L/2------|-------
C C
------|-------------- ----------------|----------
Fc=1/(2PIracine(L/2C))

Ca c'est la théorie, mais comme dans la pratique on est incapable de mesurer Lp et Cp on essaye différentes valeur de C1. La valeur de C1 est comprise entre quelques picofarad et quelques dizaines de pF

Pourquoi de pas passer par un adaptateur de bus style ST2378E ? C'est fait pour, même si ça rajoute un composant en plus

Impédances élevées et "hautes" fréquence ne font pas bon ménage.
Je dirais que tes résistances sont 100x trop élevées pour ta fréquence de travail.

Bonjour les copains,
Pour ma part je ne suis pas totalement persuadé que ce soit l'oscilloscope qui dégrade à ce point les signaux. J'ai souvent analysé des signaux de 10Mhz réputés carrés. Il y avait bien des effets d'oscillation sur les fronts, ou d'intégration par capacités parasites, mais c'étaient les circuits qui en étaient la cause, pas mon synchroscope.
Quelle est la vitesse de transmission maximale que tu désires faire passer ?
Pour ma part, j'ai été confronté à un problème similaire. je devais faire chutter une signal carré de 10Mhz de 5Vcc à 3Vcc. Je me suis contenté d'utiliser un petit transistor NPN pour petits signaux. Entre +Vcc et son collecteur j'avais mis une résistance de l'ordre de 1k. Entre l'emetteur et la masse une d'environ 1,5k. C'est l'ordre de grandeur. La sortie se faisait entre emetteur et masse. La base était attaquée par mon signal d'horloge par une 4,7k. Les signaux en sorties restaient presque carrés.
Ce n'est certainement pas la panacée, mais c'est déjà une piste de recherche.

Avec une source de 150k (470k en parallèle avec 220k) et une capa d'entrée du scope de l'ordre de 100pF (cas d'une sonde par 1) la fréquence de coupure est autour de 10kHz
Avec une sonde par x10 la capa d'entrée descend vers les 10pF ce qui coupe encore à 100kHz
Je persiste a dire que le pont diviseur utilise des résistances de valeurs 100x trop élevées pour la fréquence de travail.

Bonjour à tous et merci à tous pour vos réponses.

Je n'ai pas répondu tout de suite car j'ai voulu faire des tests par moi même.

fdufnews, j'aimerai bien que tu me redonne la théorie au sujet des impédances et des fréquences, ou un lien?
Merci à 68tjs pour ce rappel sur les capacités parasites.

Donc, je vous rappele que mon circuit ne fonctionnait pas, et c'est en branchant l'oscilloscope que j'ai vu qu'il y avait des perturbations. Et non l'inverse.
J'ai fait le test avec des resistance de 220k,470k, 10k,20k et pour finir avec un montage fonctionnel avec des résistances de 1k et 2k, ce qui rejoint la théorie de fdufnews.

Je vous ai mis en pièce joint la photo du montage que j'ai fait ce matin,juste pour prendre des mesures. il y a la carte Leonardo, la sonde d'oscillo et les tracés obtenus.

Les créneaux sont de 0V à 5V, fréquence de 20MHz, 1V/div, 0.2us/div
le code étant:

void setup(void)
{
  pinMode(2,OUTPUT);
}

void loop(void)
{
  digitalWrite(2,HIGH);
  digitalWrite(2,LOW);
}

La tension prise au point milieu: 1V/div, 0.2us/div

La sonde est une x10,12pF,500MHz

Avec les résistances de 477k et 220k:
J'ai suivi les conseils de 68tjs, et effectivement en faisant le théoreme de thevenin, on a Vet=(477/(220+477))Ve
avec Ve mes créneaux 5V.

Ret=(477.103x220.103)/(477.103+220.103)=152k

En prenant le point de charge à t=4.7us, et Vmilieu=3V,
j'obtiens un taux RC de 2.2451.10-6 s,
Si on prent C de l'oscillo à 12pF, effectivement on retombe sur un R de 187k, proche du Ret.

Ma conclusion, c'est que fdufnews doit avoir raison sur la taille de l'impédance en fonction de la fréquence du signal, par contre j'aimerai bien un rappel de la theorie stp :wink:

Et en voulant vérifier le circuit avec un oscillo, j'ai amené un autre problème comme l'a deviné 68tjs.

J'ai donc remplacé les résistances par des 1k et 2.2k, et mon écran fonctionne.

Pour ceux qui me demandent pourquoi ce choix technique? et bien c'était lep lus simple à mettre en oeuvre sur un espace réduit et à moindre couts :slight_smile:

Merci à tous

Leonardo.jpg

Sonde.jpg

Oscillo.jpg

Juste pour info, voici la carte créée en pièce jointe.
Je vais peut etre me motiver à rédiger un suivi avec photos et schéma et tout, si ca peut en motiver à se lancer :slight_smile:

Sachant que l'écran n'est qu'une partie de l'ensemble final.

ecran.jpg

face.jpg

dos.jpg

Bonjour,
A vue de nez, tu utilises des broches femelle de 3mm de profondeur. As-tu également acheté les males en 3mm ? Si oui, où ça ? Ou bien sont-elles déjà intégrées à l'écran ?

Le RC forme un filtre passe-bas dont la fréquence de coupure à -3dB est F0=1/(2pir*c).

j'ai pris comme élément perturbateur la capa d'entrée de l'oscilloscope mais si tu n'as pas l'oscillo tu trouves à la place la capa apportée par ton câblage et par l'entrée du circuit connecté sur la ligne.
Ci-dessous la réponse à un échelon passant de 5V à 0V pour un circuit RC
R=150k
C=100pF
La pleine échelle en abscisse c'est 100µs. Tu vois qu'avec ces valeurs il faut 20µs pour passer de 5V à environ 1.5V. Ce qui est très loin des 4MHz (250ns)

3Sigma:
Tu parles des connecteurs 'tulipe'?
L'écran avait déjà ses connecteurs males, car tu leurs fait traverser le rétroéclairage, et j'ai juste eu à les connecter à mes barettes tulipes.

fdufnews:
Ok merci, oui donc en fait c'est juste par rapport aux capa parasites. Je pensais que c'était encore autre chose. Je me suis demandé si il fallait un courant minimum en sortie sur les pins de l'Arduino pour un fonctionnement correcte.
Merci

fdufnews:
Avec une source de 150k (470k en parallèle avec 220k) et une capa d'entrée du scope de l'ordre de 100pF (cas d'une sonde par 1) la fréquence de coupure est autour de 10kHz
Avec une sonde par x10 la capa d'entrée descend vers les 10pF ce qui coupe encore à 100kHz
Je persiste a dire que le pont diviseur utilise des résistances de valeurs 100x trop élevées pour la fréquence de travail.

Tu as totalement raison, je n'avais pas prêté attention aux valeurs si élevées des résistances du pont diviseur.