Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=signup Les demandes d'inscription sont révisées quotidiennement.

Menu principal

Convertir un signal PWM en CC

Démarré par fsgraph, Février 12, 2020, 06:24:41 PM

« précédent - suivant »

fsgraph

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

Yffig

#16
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

fsgraph

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 :

CitationJe 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


fsgraph

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  ;)

papyblue

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

fsgraph

Même sur A6 ou A7 ?
Aurai-je raté qqchose ...

papyblue

Sauf erreur de ma part, les broches analogiques peuvent aussi être utilisées en logique sur le NANO et sur l'ATTINY85.

fsgraph

Avec quel protocole ? Avec une seule patte ?

papyblue

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.

fsgraph

A6 et A7 sont uniquement des CAN ...
Je vois ne pas comment faire ?

papyblue

#25
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.

fsgraph

CitationIl 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 ...

papyblue

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

loulou31

Bonjour,
Avec un seul fil : protocole onewire?

Jean-Louis



fsgraph

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