Forum Électro-Bidouilleur

Sections => Discussion Générale d'Électronique => Discussion démarrée par: fsgraph le Février 12, 2020, 06:24:41 pm

Titre: Convertir un signal PWM en CC
Posté par: fsgraph le Février 12, 2020, 06:24:41 pm
Bonjour,
Çà  fait un bout de temps que je me demande comment faire ça simplement et assez proprement  ???
Le problème est de convertir un signal PWM sortant d'un Arduino Nano en 5V pour le lire sur une entrée analogique d'un autre Arduino ATTiny85 en 5V.
Par assez propre j'entend qu'il soit possible d'avoir assez peu d’oscillation du signal converti pour avoir une lecture analogique qui varie assez peu.
J'ai été plein d'espoir après la vidéo sur les potars numériques ... Mais non ...
Je n'ai pas trouvé de CI ou mini-module qui ne soit pas une usine à  gaz qui fasse le job, du moins avec mes mots clés de recherche ...
A court d'idée je viens vers vous des fois qu'une solution simple et assez propre existe  ::)
V
Frédéric
Titre: Re : Convertir un signal PWM en CC
Posté par: kamill le Février 12, 2020, 07:57:05 pm
Bonjour,

Un simple filtre RC suffit.
Mais pourquoi convertir le signal en analogique? Il suffit de décoder le pwm avec l'attiny
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Février 13, 2020, 08:55:59 am
Bonjour et merci pour la réponse.
En fait le PWM vient de ATTiny85 et la lecture doit etre faite par un Nano. Le probleme est que seul A6 et A7 sont dispos or ils ne peuvent utiliser ni PulseIn() ni une bibliothèque de lecture de fréquence ...
C'est là  que je sèche ...
La solution peut etre materielle avec une convertion PWM en CC ... Et là  je sais pas faire ...
Ou logiciel en faisant une capture de fréquence par une entrée analogique ... Çà  non plus je ne sais pas faire ...
V
Frédéric
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Février 13, 2020, 12:42:07 pm
Bonjour fsgraph,

Pour apporter une réponse précise, il faudrait quantifier les "peu d'oscillations" et "qui varie assez peu". La première solution qui vient à  l'esprit c'est celle proposée par kamill en filtrant le signal issu du PWM on obtient une tension continue dont l'ondulation sera fonction du filtrage. Le filtrage à  l'inconvénient d'apporter un retard ce qui peut poser un problème dans un asservissement. Si la fréquence du PWM est faible (par rapport à  celle du processeur) il est possible de déclencher des interruptions sur les fronts montants et descendants et de mesurer le rapport cyclique. Enfin l'information peut peut-être véhiculée entre les deux cartes par un autre moyen que le PWM par analogique ou numérique.

PB
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Février 13, 2020, 01:30:53 pm
Précision importante je pense : Les 1023 valeurs que peut donner le CAN 10 bits de l'Arduino Nano sont très larges,  64 serait largement suffisantes soit les 6 bits forts, les 4 faibles n'étant pas lus ils pourraient absorter les fluctuations d'oscillations résiduelles soit pas de 5mV à— 16 soit 80mV.
Je ne sais pas si mon raisonnement est juste (???), mais ça sous-entend qu'il faut un CNA ayant des oscillations résiduelles inférieures à  80 mV ...
Un filtre peut-il faire ça sur le PWM ?
Ça me dépasse ces histoires de filtres ...
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Février 13, 2020, 01:36:32 pm
Et je suis coincé avec 2 entrées analogiques uniquement ...
Je vois pas d'autre solution ...
La latence du système n'a pas d'importance, l'important etant de faire passer une 50aine d'infos différentes.
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Février 13, 2020, 03:43:21 pm
Le filtrage du PWM peut être très facilement simulé sous LTSpice, un simple RC devrait faire l'affaire.
Si l'ondulation doit être faible, avec deux RC, cela permet de la réduire sans allonger trop le retard.
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Février 14, 2020, 04:52:33 pm
Bonjour,
Merci pour la réponse PapyBlue.
J'ai regardé sur le web des filtres adaptés au PWM et je suis tombé sur un schéma de Sonelec mais pour un signal de 10v.
J'ai plusieurs questions :
Comment l'adapter à  un signal de 5v ?
Comment savoir l'amplitude de l'oscillation résiduelle ?
V
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Février 14, 2020, 05:13:59 pm
Une autre question :
La fréquence du pwm est fixé à  500 Hz sur l'Arduino, c'est le rapport cyclique qui varie.
Dans ce cas le filtre doit être dimensionné comment ?
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Février 14, 2020, 07:33:55 pm
Bonjour fsgraph,
Je ne peux t'apporter la solution toute faite car cette semaine je suis loin de mon pc.
Je te conseille vivement d'utiliser ltspice pour tester les différentes combinaisons avec N cellules RC.
5v ou 10 v, cela ne change rien dans le principe.
PB
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 21, 2020, 11:35:53 pm
Hello,

Etant confiné ... On reprend les vieux projets ...
J'ai trouvé un schéma de Sonelec à  base d'un OP mais la tension d'entrée est de 12v et la sortie de 0 à  10V ...
Comment re-calcule-t-on les valeurs 'J1 arrive d'un PWM arduino / J3 est en 5v et J2 doit être lu par un arduino ?

(https://www.sonelec-musique.com/images2/electronique_conv_pwm_tension_001.gif)

Le re-calcul des valeurs est une suggestion que j'avais fait pour une petite vidéo au patron ...

Fait attention à  vous et bon électrobidouillage !

V

FS
Titre: Re : Convertir un signal PWM en CC
Posté par: kamill le Mars 22, 2020, 08:37:26 am
Vu l'impédance d'entrée d'une pin arduino qui doit être du même ordre que celle d'un ampli op, il est absolument inutile de mettre un ampli op.
Tu peux mettre uniquement R1 C1.
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Mars 22, 2020, 10:35:20 am
Bonjour à  tous,

L'ampli op n'est pas inutile, il sert à  isoler la première cellule RC de la seconde pour avoir au final un second ordre. Pour un PWM, le filtre idéal doit avoir la pente la plus raide possible pour supprimer l'ondulation résiduelle sans réduire la bande passante du signal utile. Il est possible de ne pas mettre d'ampli op mais le calcul devient plus complexe et surtout l'impédance d'une cellule N+1 doit être grande par rapport à  celle de la cellule N pour influencer le moins possible celle-ci. Sinon un pont diviseur permet de changer l'échelle de sortie, là  aussi, avec une impédance suffisamment grande pour ne pas modifier le filtrage ou bien modifier le gain de l'ampli op et mettre une zener en protection sur la sortie.

Bonne journée en confinement ..
Titre: Re : Convertir un signal PWM en CC
Posté par: Ayobo le Mars 22, 2020, 11:17:44 am
Bonjour,

L'AOP est monté en suiveur d'après la légende, permet t'il de faire adaptation d'impédance entre les deux filtre RC passif du 1er ordre (dont ensemble donne finalement un filtre passif du second ordre (monté en cascade) ?
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Mars 22, 2020, 03:08:48 pm
C'est un peu cela, l'ampli op ayant une grande impédance d'entrée et une faible de sortie. Le filtre n'est pas passif qu'il fait appel à  un amplificateur.
PB
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 24, 2020, 10:24:53 pm
Hello,

Une bonne explication sur l'intégration PWM donnée pas Eskimon ici :

https://eskimon.fr/tuto-arduino-403-et-les-sorties-analogiques-enfin-presque

Si j'ai bien suivi, l'AOP n'est pas correctement câble car il est ici en ampli alors qu'il devrait être en suiveur de tension ...

Apparemment il n'est pas rail to rail, mais où est marqué le drop sur le datasheet ?

http://www.ti.com/lit/ds/symlink/lm358-n.pdf

Et dernière question, dans ce cas quel référence prendre comme AOP ?

Je trouve étrange de ne pas trouver de schéma pour faire communiquer 2 Arduino par PWM to CAN, ça permet de balayer pas mal de cas quand on a pas d'autre solution ... Mauvaise idée ? Code trop lourd ? Pas académique  ?

Merci pour les explications.

V

Frédéric
Titre: Re : Convertir un signal PWM en CC
Posté par: Yffig le Mars 25, 2020, 01:51:38 pm
Bonjour Frédéric,

Oui, en effet, le 358 n'est pas "Rail to Rail output" (il l'est cependant en Input vis à  vis de -V (=0V dans le cas présent) grâce à  sa paire différentielle PNP en entrée).
Si tu veux l'alimenter en 0/+5V, tu dois rester dans sa partie linéaire... par ex, en fixant ta "tension de référence" à  "2.048V" et  respecter ce facteur d'échelle sur son entrée par un diviseur résistif. Alors pour un DC en entrée de 50% tu devras obtenir une valeur de 1023 sur l'ADC 10 bits du contrôleur.

De toutes manières, aucun AmpOp défini comme"Rail to Rail Out"ne donne très exactement Vout= +Valim dès lors que tu lui demandes un peu de courant en sortie puisqu'il y a toujours un composant actif entre +Valim et Out.
Si tu voulais rester avec Vin=+5V, il te faudra alimenter le 358 par, disons, +7V au moins (à  voir sur la datasheet).

Que le montage original 358 puisse nécessiter un gain > 1 par réglage n'est un pb en soi.

Yffig
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 27, 2020, 01:23:07 pm
Hello,

Si je comprend bien, et c'est pas gagné, la plage du 358 est resserré ...
Comme je n'ai qu'une petite centaine de cas différents à  passer d'un arduino à  l'autre ça devrait aller car il y a potentiellement 1024 valeurs ...

Pratiquement ça donne :
Un filtre RC en entrée ---> 10KR/1µF ça le fait pour un signal carré de 490Hz ?
Un AOP en suiveur ---> Out sur E- pour ~5V en entré et ~5V en sortie ?
Un filtre RC en lissage ---> 1KR/10µF pour avoir pas trop d'ondulation résiduelles ?

Je ne sais pas (encore ... j'essaie) faire de simulation ...

Sinon je repose la question :

Citer
Je trouve étrange de ne pas trouver de schéma pour faire communiquer 2 Arduino par PWM to CAN, ça permet de balayer pas mal de cas quand on a pas d'autre solution ... Mauvaise idée ? Code trop lourd ? Pas académique  ?

Merci d'avance.

V

Frédéric

Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 27, 2020, 01:33:16 pm
Petite explication sur les trucs à  passer d'un Arduino à  l'autre :

Ce sont des valeurs de 1 à  64 donc l'idée de faire un tableau ou une formule de correspondance entre la valeur et la tension obtenue après intégration RC du PWM (qui correspond à  16 x la valeur) puis lissage RC et enfin lecture analogique sur un CAN l'Arduino qui reçoit ...

Voilà , rien de bien transcendant, mais bien chiant quand on n'a plus d'entrée dispo  ;)
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Mars 27, 2020, 02:00:16 pm
Bonjour fsgraph,

Pourquoi s'acharner à  passer par de l'analogique une information qui peut transiter en numérique sur 1 seul fil entre les 2 arduino ?

PB
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 27, 2020, 03:40:49 pm
Même sur A6 ou A7 ?
Aurai-je raté qqchose ...
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Mars 27, 2020, 08:06:44 pm
Sauf erreur de ma part, les broches analogiques peuvent aussi être utilisées en logique sur le NANO et sur l'ATTINY85.
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 27, 2020, 11:01:24 pm
Avec quel protocole ? Avec une seule patte ?
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Mars 28, 2020, 10:56:26 am
Bonjour fsgraph,

Tout est possible, cela peut être une liaison asynchrone, cela peut être du PWM en mesurant la largeur de l'impulsion côté réception, cela peut être non standard c'est juste une question d'imagination...


Bonne journée.
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 28, 2020, 06:42:32 pm
A6 et A7 sont uniquement des CAN ...
Je vois ne pas comment faire ?
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Mars 28, 2020, 08:14:00 pm
Bonsoir,
je me suis surement un peu avancé  :-[ , je me suis basé sur la datasheet ATmel ci jointe qui laissait croire que A6 et A7 étaient aussi digital. Il semble que ce ne soit pas le cas. La carte Nano c'est celle qui reçoit l'info alors ?

Il est cependant possible de lire un signal numérique avec un convertisseur analogique, il faut juste échantillonner à  la bonne vitesse. En première estimation, il doit être possible de transférer 6 bits ( 64 valeurs) à  une cadence de 1 KHz maximum.
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 29, 2020, 12:17:33 pm
Citer
Il est cependant possible de lire un signal numérique avec un convertisseur analogique, il faut juste échantillonner à  la bonne vitesse. En première estimation, il doit être possible de transférer 6 bits ( 64 valeurs) à  une cadence de 1 KHz maximum.

Je dois avouer que ça me dépasse ...
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Mars 29, 2020, 01:13:00 pm
L'idée est toute simple : le convertisseur 10 bits sait différentier 1024 valeurs donc il sait différentier deux valeurs (un niveau haut et un niveau bas).Si on prend le poids fort, il est bien à  0 pour un niveau logique bas et à  1 pour un niveau logique haut. Le signal pourra être lu à  une cadence qui dépend du convertisseur et de la charge CPU, l'idéal est une fréquence de lecture fixe sous interruption. Cette fréquence doit être choisie pour ne rater aucun bit du signal entrant. Le protocole peut être quelconque mais il vaut mieux choisir quelque chose de simple à  décoder. la trame peut par exemple est constituée d'un motif de synchro suivi des bits de données ( le motif de synchro ne doit pas pouvoir être fait avec une donnée particulière). J'avoue que ce n'est pas une solution "plug & play" , il y a peut-être des solutions de ce genre sur le net, je n'ai pas fait de recherches.
PB
Titre: Re : Convertir un signal PWM en CC
Posté par: loulou31 le Mars 29, 2020, 01:19:39 pm
Bonjour,
Avec un seul fil : protocole onewire?

Jean-Louis


Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 30, 2020, 10:21:19 am
Bonjour,

Le OneWire nécessite une broche numérique, toute les broches analogiques des Nano peuvent être déclarées en numériques sauf ... A6 et A7  :-\

V
FS
Titre: Re : Re : Convertir un signal PWM en CC
Posté par: fsgraph le Mars 30, 2020, 10:24:47 am
L'idée est toute simple : le convertisseur 10 bits sait différentier 1024 valeurs donc il sait différentier deux valeurs (un niveau haut et un niveau bas).Si on prend le poids fort, il est bien à  0 pour un niveau logique bas et à  1 pour un niveau logique haut. Le signal pourra être lu à  une cadence qui dépend du convertisseur et de la charge CPU, l'idéal est une fréquence de lecture fixe sous interruption. Cette fréquence doit être choisie pour ne rater aucun bit du signal entrant. Le protocole peut être quelconque mais il vaut mieux choisir quelque chose de simple à  décoder. la trame peut par exemple est constituée d'un motif de synchro suivi des bits de données ( le motif de synchro ne doit pas pouvoir être fait avec une donnée particulière). J'avoue que ce n'est pas une solution "plug & play" , il y a peut-être des solutions de ce genre sur le net, je n'ai pas fait de recherches.
PB

Merci pour la réponse mais j'ai bien peur que le code me dépasse ...

Je vais tenter de voir les oscillations que donne le montage avec AOP avec un DSO ... Je n'ai pas d'oscillo mais vu la fréquence ça devrait le faire ...

V

FS
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Mars 31, 2020, 07:36:44 pm
Bonjour Fsgraph,

Pour illustrer ma suggestion de solution, j'ai réalisé le montage avec une carte ATtiny85 envoyant une information logique (sur 6 bits) et une carte Uno recevant cette information sur une entrée analogique. J'ai fait simple et rapide donc ce n'est pas optimisé au niveau vitesse, c'est juste pour montrer le principe.

PB
Titre: Re : Convertir un signal PWM en CC
Posté par: fsgraph le Avril 16, 2020, 09:31:28 pm
Hello,

Me revoilou ... Après être venu à  bout du Covid19 je vais bien venir à  bout ce CNA ...
Merci Papyblue pour le boulot je vais tenter de comprendre ...
Et faites gaffe à  vous car je peux vous dire que ce virus c'est du costaud et qu'il met sévèrement à  plat ... Si ce n'est les pieds devant ...
V
Titre: Re : Convertir un signal PWM en CC
Posté par: papyblue le Avril 17, 2020, 09:13:44 am
Bonjour fsgraph,

Je te souhaite un bon rétablissement. Si tu as des questions sur la solution proposée ,n'hésites pas.

PB