Création d'une carte fille de conversion de niveau TTL pour les Arduino Giga et Due

Bonjour à tous.

Je suis en train de bosser un sujet qui concerne les cartes Arduino Giga et Due.

Ce sont en soit d'excellentes cartes, mais qui ont, selon moi, un défaut majeur. Elles sont sur une logique 0/3.3V alors que beaucoup de mes projets utilisent des composants 0/5V. il n'est pas rare aussi que je commence mes projets avec des Uno ou Mega, et que je me retrouve bloqué par cette histoire de tension sur les bornes si j'évolue vers les cartes Giga et Due.

Alors en regardant les cartes d'interface de Seeed Studio pour arduino, j'ai commencé à réfléchir à réaliser une carte fille qui permettrait aussi de repasser sur des niveaux TTL.

Pour l'instant, je suis à réfléchir aux composants à utiliser selon les besoins:

  • Pins GPIO, UART et SPI: TXS0108EPW
  • I2C: PCA9306
  • Entrées analogiques: Pont de résistances 3.3k - 6.8k

Qu'en pensez vous ? Est-ce que ce choix vous parait pertinent ? Vous serait-il utile ?

Bonjour,

Tout d'abord, j'ai cherché "TWS0108EPW" je n'ai rien trouvé!

C'est quoi STP?

Si c'est pertinent?
Oui, biensur.

Si c'est utile?
Sûrement, et même "évidemment que c'est utile!".
Mais perso, je suis arrivé à m'en passer jusqu'à présent pour mes petits usages perso,

1 Like

Oups, TXS0108EPWR

Encore une ânerie d'internet !
Surement pas passer aux niveaux TTL :

Niveaux logiques TTL Vcc = 5 V CMOS Vdd = 5 V
Niveau bas Entre 0 V et 0,8V Entre 0V et 30% de Vdd, soit < 1,5 V
Niveau haut Entre 2 V et Vcc Entre 70% de Vdd et Vdd, soit > 3,5 V

TTL n'est pas une classe de tension d'alimentation, c'est une classe de niveaux logiques qui datent du Moyen Âge de l'électronique numérique et qui sont incompatibles avec les CI d'aujourd'hui
Oublie ce terme TTL et parle uniquement de niveau 5 V ou 3,3 V d'amplitude

Voici le schema des convertisseurs, à titre provisoire.

Anerie ou pas, le problème pour moi reste le même: Utiliser des composants fonctionnant du des logiques 0-5V sur un microcontrolleur n'acceptant que 0-3.3V n'est pas une solution d'avenir.

Perso j'en utilise des déjà fabriquées

par exemple chez Adafruit ou chez sparkfun

Si vous cherchez "Logic Level Shifter", vous en trouverez à 4 ou 8 canaux et des no names en Asie pour trois fois rien.

1 Like

Bonjour,

Ca casse la baraque!
Comme dirait les d'jeunes.

Mais c'est tellement simple.

Pour les entrées analogique je pense qu’il faut réfléchir un peu au besoin.

Si vous avez des capteurs qui envoient une information codée entre 0 et 5V et que vous voulez lire cela sur une carte dont l’ADC ne prend que l’intervalle 0-3.3V alors il faut faire une réduction de tension.

Le simple pont diviseur avec 2 résistance est fonctionnel mais il me semble que ça peut introduire du bruit thermique (lié à la valeur des résistances), être sensible aux perturbations électromagnétiques (surtout si les résistances ont des valeurs élevées).

Cela peut aussi réduire la précision de la mesure si l’impédance d’entrée du circuit suivant n’est pas suffisamment élevée, car un courant de charge peut modifier la tension de sortie.

Et pour une meilleure précision, il faut utiliser des résistances à faible tolérance (1 % ou moins) et, idéalement, appairées si le rapport doit être exact.

Si l’entrée varie à haute fréquence, un pont diviseur de tension peut être affecté par les capacités parasites des résistances et des pistes du circuit, ce qui crée des atténuations ou des déphasages. Les résistances de grande valeur amplifient ces effets capacitifs, réduisant la bande passante et dégradant la réponse en fréquence.

Bref - c’est pas forcément le top pour la précision et si c’est ce qu’on recherche un amplificateur opérationnel rail-to-rail de haute précision configuré avec un gain réglé précisément par des résistances à faible tolérance (0,1 % ou mieux) serait sans doute mieux…

Mais cela reste pénible et compliqué à déployer et régler, donc à part l’adaptation des niveaux logiques pour lesquels j’utilise les cartes pré-citées si j’ai besoin d’analogique j’achète un capteur fait pour cela ou j’en trouve un qui parle en SPI ou I2C ou UART au lieu de l’analogique.

1 Like

C’est une annerie, un point c’est tout.
Dire niveau TTL pour une tension d’alimentation ne signifie rien.

Je ne t’ai pas reproché cet usage , je t’ai uniquement averti que c’est une annerie d’internet et je t’ai expliqué pourquoi.

Il va falloir que tu te fasses a l’abandon du 5 V,
Le 3,3 V actuel n’est que provisoire, la prochaine étape (qui commence) est le 2,5 V puis ce sera le tour du 1,8 V, c’est déjà décidé.

En attendant pour passer de signaux de 5 V d’amplitude à des signaux de 3,3 V d’amplitude, comme J-M-L te l’a dit, il y a des modules tout faits, soit en éléments discrets, soit avec un circuit intégré spécialisé.

J’espère que tu acceptera cette mise en garde sans te vexer : attention en cas d’utilisation de signaux I2C tous les translateurs de niveaux n’y sont pas adaptés.

Les signaux I2C sont spéciaux avec la charge de collecteur obligatoirement extérieure aux circuits intégrés et obligatoirement commune a tous les accès I2C.
Il faut que le module translateur de niveaux ”transmette l’acces” à cette charge.

Bonjour,

Je pense qu'on avait compris que @blakesnake ne prétend que à faire une carte fille "grand public" avec juste des performances moyennes et acceptables en général.

Appelez cela une ânerie si vous voulez, ce n'est pas le terme technique approprié (puisque vous êtes sensible aux définitions techniques).

Quand à la conversion analogique/numérique, on avait de toute façon compris, en lisant les trés pertinentes explications techniques des pros, que de toutes façons il ne fallait pas s'attendre au Top du Top avec une carte Arduino (pb de routage et autres...) donc autant dans ce cas faire appelle à un vrais module de conversion analogique/digitale si c'est nécessaire.

Sinon, le pont diviseur, ça reste une solution technique moyennement performante et suffisante pour la moyenne des projets.

Bref, ce projet n'est pas vraiment une ânerie.

Mais perso, je n'en vois pas d'utilité pour moi.

2 Likes

En aucun cas, il n'a prétendu que le projet de @blakesnake est une annerie

D'un autre coté personne n'a prétendue cela.

Pourquoi manipuler les propos de @68tjs pour lui faire dire d'autre chose que ce qu'il a dit vraiment :frowning:
Je ne comprend pas ton acharnement?

Je m'attendais à cela de ta part :woozy_face:
Ok il ne l'a pas dit.

Ce n'est pas une réponse à J-M-L mais à @jef59
J-M-L je voulais te demander si les circuits intégrés que tu as montré sont utilisables en I2C car j'ai lu que ce n'était pas le cas de tous ceux qui existent.
Pour être utilisable en I2C il faut émuler une fonction collecteur ouvert pour respecter le OU cablé de l'I2C

Réponse à Jeff59
Sur quel ton répondre à cette interprétation totalement fausse ?
Je vais éviter les polémiques et rester sur un ton neutre.

Qui a dit que le projet est une ânerie ?
Personne.

Qui a dit que quand il existait des cartes modules toutes faites, c'était plus simple de les utiliser : J-M-L et moi.
Sous-entendu : il y a suffisamment de choses à faire par ailleurs, inutile de s'embêter pour faire moins bien et pour plus cher que ce qui existe.
Nous n'avons jamais dit que c'était une erreur de réinventer la roue, nous n'avons donné qu'un avis.

Qui a dit qu'employer "TTL" pour désigner des circuits délivrant des signaux d'amplitude 5 V est une ânerie ?
Moi et je persiste à dénoncer les erreurs que propage internet.

Toutes les explications ont déjà été données pour ceux qui veulent bien faire l'effort de comprendre ce qu'ils lisent.

Reprenons :

Niveau TTL bas : inférieur à 0,8 V
Niveau TTL haut : à partir de 2 V
Zone indéterminée : entre 0,8 V et 2 V

CMOS Alim 5 V
Niveau CMOS bas : inférieur à 0,3 x Vdd, soit < 1,5 V,
Niveau CMOS haut : supérieur à 0,7 x Vdd, soit > 3,5 V
Zone indéterminée entre 1,5 V et 3,5 V,

CMOS Alim 3,3 V
Niveau CMOS bas : inférieur à 0,3 x Vdd, soit < 1 V
Niveau CMOS haut : supérieur à 0,7 x Vdd, soit > 2,3 V
Zone indéterminée entre 1 V et 2,3 V,

Que dit la datasheet de l'atmega328P
Vdd = 5 V
E/S numériques en mode numérique classique : seuil à 2,5V (~Vcc/2)
C'est-à-dire qu'une sortie haute TTL à 2V est dans la norme TTL, mais qu'elle sera comprise par une carte UNO comme un niveau bas.

Pire, le seuil de 2,5 V (Vcc/2) de la Uno/Nano n'est valable pour les E/S en mode numérique classique, mais quand A4 et A5 passent en mode en I2C le seuil n'est plus Vdd/2, mais le seuil CMOS
J'en parle avec d'autant plus de force que je me suis fait avoir !

Peut-on toujours dire que TTL ne veut rien dire de très, très précis ?

Remarque : doit-on dire Vcc ou Vdd ?
Ce n'est pas vraiment important, mais autant savoir d'où cela vient.

Ce qui devait être une convention est :
Techno bipolaire : Vcc et Vee (cc comme collecteur, ee comme émetteur)
Techno FET : Vdd et Vss (dd comme drain, ss comme source)

Souvent, mais ce n'est pas systématique, VEE ou VSS sont connectés à Gnd et appelés Gnd.

Je ne sais pas

j’ai eu les deux entre les mains et on avait fait de l’I2C si je me souviens bien, mais sans doute avec qu’un seul composant sur ce bus.

Le montage simple à deux transistors mosFet est compatible.
Par contre les résistances de 10 k sont un peu trop fortes à mon avis, 4,7 k serait mieux.

Je ne fais plus grand-chose et solution de feignasse, j'ai banni les composants et micro 5 V.

Dans l'I2C je ne me rappelle plus si pour répondre à une interrogation du maitre, l'esclave doit faire une prise de ligne ou si le maitre maintient la ligne active.

S'il y a une prise de ligne de la part de l'esclave et que cela fonctionnait dans tes tests il y a bien fonctionnement normal du OU câblé.

Mon interprétation à moi, c'est cela et rien que cela:

Pour le reste, vous le savez trés bien je pense, même si vos explications et précisions techniques sont trés complêtes et précises, je pense que environ 2/3 des projets realisés par le grand public, et qui fonctionnent, n'en tiennent pas compte.

Même les meilleures conseils n'empêcheront personnes d'essayer de réinventer la roue, voir d'aller droit dans le mur.

Donc que TTL ou autres soit une ânerie, comme dirait l'autre, "la terre peut être ronde ou plate, elle tourne quand même.".

Alors si vous vous offusquez à chaque fois que @terwal me fait passer pour un vilain canard, on est pas sortit.

Bon, je tourne cette page.

Bonne continuation @blakesnake, si ton envie te dit "fais le", alors fais ta carte fille.

Oula je ne te fais passer pour aucun animaux de la basse court ou sauvage, mon petit lapin :slight_smile:
J'indique seulement que ce que tu dis n'est pas la réalité des propos tenu.
J'ajoute que je pense que tu ferais mieux passer tes idées si ce n'était pas le cas.

Surement, mais cela est-il si grave, si certains dont je fais partie, surement en grande infériorité sont très intéressé par les points techniques donné par @68tjs ou d'autre comme @J-M-L, @al1fch, @vileroi , voir même @jef59 et il y en a beaucoup d'autre.
@blakesnake prendra les informations technique et les conseils qui l'intéresse.
Il sait maintenant dans quel cadre il peut utiliser le terme TTL et qu'il existe déjà des modules proches de ce qu'il veut faire.
Libre à lui de continuer son projet car il y voit un intérêt, formateur, pratique ou autre.

Moi, j'aurais en plus tendance à conseiller de réinventer la roue, si on dispose du temps, car c'est très formateur :slight_smile:

Bonjour,

J'aurais pus écrire la même chose à propos de tes tiens et ceux d'autres personnes ici sur ce sujet.

Et un combat de coqs de plus ……