Demande conseil choix CNA

Bonjour

J'ai évoqué un peu plus haut les potentiometres numériques comme solution parmi d'autres pour piloter une entrée 0-10V de variateur de fréquence avec une carte à base d'ATMega328, comme exposé au message #1

Microchip et Analog Device font des potentiometres numlérique dits 'haute tension', dont la partie poteniometre peut fonctionner au dessus de 10V

Un DS3502 par exemple , 10kOhm, 7 bits, I2C non volatile possède une partie potentiometre supportant jusqu'à 15,5V

Adafruit le propose sous forme de module : https://cdn-learn.adafruit.com/downloads/pdf/ds3502-i2c-potentiometer.pdf

C’est aussi une bonne solution si on choisi une valeur ohmique adaptée au montage.

Pour cela il faut connaitre l’impedance d’entrée des circuits "qui chargent” le ou les potentiomètres .

Merci à tous pour vos réponses, j'ai pris donc le temps d'analyser tout cela.
Pour répondre à @68tjs l'impédance d'entrée de l'exemple de var que je souhaite commander en 0-10V est > 30k

En résumé donc :
1- La solution de création d'un 0-10V par MLI + transistor + alimentation 10V me semble la plus modulable (en cas de changement d'alim par exemple) et facile à réaliser. Avec en plus une résolution de 0.04V, qui me permettra de faire plus tard des projets demandant plus de finesse...

un schéma simple au post 10 du lien montre bien comment faire.
Mais pour cette solution, pensez-vous qu'un simple pont diviseur de tension (à partir du 24V que je souhaite utiliser) suffirait à donner un 10V assez stable au transistor ? Ou alors faut-il que je prévois obligatoirement un convertisseur DCDC 24-> 10V pour celà ?

est-ce quand même nécessaire d'utiliser un AOP en sortie de transistor ? Si oui, pourquoi ? Pour être sur que quelque soit la charge à piloter, la tension de commande reste stable ?

2 - La solution réseau R-2R est super intéressante, mais pour un gain de place sur le PCB et surtout pour utiliser le moins de sorties possible, je partirai plutôt sur un module MCP en i2C qui me permettra aussi de gagner du temps en terme de temps de soudure des composants et ne pas me soucier des précautions à prendre que vous avez cité comme faire attention aux ecarts de valeurs en résistances...
Le DS3502 proposé par @al1fch est très intéressant ! Pas besoin d'AOP, il peut directement délivrer les 0-10V que je souhaite.
@68tjs la charge, donc l'entrée variateur tu veux dire ? > 30k comme je disais, est-ce que celà irait ?
J'ai encore un peu de mal à prendre en compte les impedances des charges que je souhaite piloter, peux-tu stp donner un exemple de calcul qui montre qu'une charge d'impédance inédaquate peut foirer un montage ?

Pour ma culture personnelle, avez vous des exemples d'application qui requiert plus de résolution ? 0.001V par exemple ?

Merci pour vos précieuses contributions, j'ai encore pas mal à reflechir....

Question de débutant : Pourquoi la MLI, appliqué directement sur un AOP en montage inverseur, en choisissant les résistances qu'il faut, ne suffirait pas à convertir le 0-5V de la MLI en 0-10V ? (AOP aliménté en 24V)
LM358DT par exemple ?
AOP ou transistor ? Transistor si la charge consomme beaucoup de courant j'imagine ?

Transistor parce que c'est plus simple.
AOP parce qu'il y a moins de paramètre dont il faut se méfier.


En haut le schéma équivalent dit de "Thevenin" d'un montage en émetteur ou source commune.
La résistance de collecteur ou de drain se retrouve en série avec une source de tension idéale.
Conséquence : il se forme un pont diviseur entre la résistance R10 et la charge.
Si la charge n'est pas 10 ou 20 fois supérieure à la résistance de collecteur il y aura atténuation, donc erreur sur la tension envoyée.

Image du bas
Utilisation d'un potentiomètre.
=> la charge se retrouve en parallèle avec une partie du potentiomètre.
Avec les valeurs du schéma :

  • a vide le curseur du potentiomètre délivrera V/2.
  • chargé par 2k, Rpont_2 et R? se retrouvent en parallèle et la sortie du pont délivrera V/3.

Il faut toujours considérer l'ensemble du schéma et toujours s’il y a adaptation du generateur avec le recepteur.
Si tu dis que les entrées font 30k il ne faudrait pas que la résistance de de collecteur ou du potentiomètre soit supérieure à 3 k maximum (erreur de 10%).

AOP
L'impédance d'entrée d'un AOP est énorme et celle de sortie est quasiment nulle.
Avec un AOP tu n'aura pas de soucis d'adaptation des impédances.

La discussion a été profitable et je pense que la solution se dirige vers un dac suivi d'un AOP, enfin je pense que c'est ce je ferais.

Si tu as déjà implanté un atmega328p je n'ajoute rien, si ce n'est pas le cas ne prend pas exemple sur Arduino surtout si tu comptes te servir des mesures analogiques ou alors pour voir l'exemple à ne pas suivre avec l'implantation de la piste Aref.
Perso je prendrai un module nano ou mini-pro tout fait.
Ils sont très corrects, implanter un micro n'est pas aussi facile qu'il peut y paraitre, surtout côté cablage du quartz.

Question prix en achetant le micro par 10 pièces, tu ne pourra jamais rivaliser avec ceux qui les achêtent par 100 000 ou plus.

Super ! Merci beaucoup @68tjs pour ces explications, c'est très clair, je comprends bien mieux !

Si dans l'absolu on ne met pas du tout de résistance alors, on créerait un court circuit dans le transistor, donc une résistance de 10ohms serait donc idéal ? erreur de 0.03% ? ça fonctionne ou c'est irréalisable dans la pratique ?

l'AOP semble être donc mieux approprié lorsqu'on souhaite facilement avoir une tension stable sans avoir besoin de ce soucier de la charge à alimenter alors.
N'ayant jamais utilisé d'AOP, quels sont les paramètres les plus importants à regarder, en dehors des tensions min et max d'alimentation et d'entrées ? Donc mon cas, avec une MLI oscillant à x Hz, quel paramètre permet de savoir que l'AOP suivra la cadence ?
De mémoire, j'ai vu passer que pour un transistor MOSFET, on parle de 400kHz et moins pour un bipolaire

Pour amplifier du continu il y a les tensions de dechet dont il faut se méfier.
En mono tension il faut que l’entrée puisse descendre le plus près de la masse.
En sortie il faut que la sortie aille tutoyer le Vcc.

La solution basique est de prenre un rail to rail, plus cher.

Mais on peut affiner.
Le vénérable lm358, qui n’est pas qualifié rail to rail, peut quand même descendre à moins de 10 mV de la masse (il fait mieux que des rail to rail bien plus cher).

Côté sortie il est moins performant, il reste toujours bloquer a Vcc- 1,5V.

Ce n’est pas genant dans ton cas : il suffit de faire Vcc = 12 ou 15 V.

De quelle entrée parles-tu ? L'entrée d'un AOP ? mon niveau ne me permet pas de comprendre ce que tu veux dire. Peux-tu me donner plus précision stp

Tout bien reflechi @5_cylindres @al1fch @vileroi @68tjs , je vais donc partir sur la solution MLI + AOP + filtrage, pour garder un maximum de flexibilité.

Sur le schéma de principe que je viens de faire, ayant bien lu dans vos commentaires qu'il fallait un côté filtrage, comment l'intégrér au schéma ? Est-ce par exemple un simple condo electrolytique de 47uF à mettre en sortie de l'AOP en amont et parallèle de la charge ?

Merci

Bonjour,
court-circuit

image

Cela fait une constante de temps de 0,5s

Plus la constante de temps est importante, plus le signal est continu, mais il faut avec 10kΩ 1,5s entre le moment ou le MIL change et la tension de sortie se stabilise. Si c'est pour un moteur, cela permet un arrêt ou un démarrage plus doux. Si ce temps est X fois trop long, on peut diviser la valeur de la résistance par X, ou celle du condensateur par X.

Si on veut 256 pas entre 0V et 10V, avec un micro qui tourne à 16MHz, on peut travailler à 60kHz, question filtrage on est tranquille.

Rail to rail : on parle des rails d'alimentation masse et Vcc
Un ampli rail to rail accepte des niveaux sur les entrées + et - qui peuvent être compris entre 0V à +Vcc et est capable de donner en sortie des niveaux eux aussi compris entre 0 V et + Vcc

Le LM358 n'est pas rail +, il n'est que rail -
En entrée il faut que la tension ne dépasse pas Vcc- 2 V => vu que tu multiplie par deux cela ne se produira jamais
En entrée il peut s'approcher de la masse à moins de 10 mV => aucun soucis tu aura un gain de 2.

En sortie la tension ne pourra pas dépasser Vcc - 2V sous 5V, sous 30V c'est un peu plus,
Comme tu disposes de 15 V, tu n'auras pas de soucis pour atteindre 10 V.
Elle ne pourra pas descendre en dessous de 20 mV.

Mais ce n'est pas le seul AOP qui convient : c'est celui que j'employais :grin:, il en existe des plus modernes et plus performants.

Filtrage :
Filtrage RC
Si la fréquence de la MLI est d'environ 64 kHz, la fréquence de coupure du filtre devrait être choisie en dessous de 1 kHz pour avoir un filtrage sufisant

Le filtre est à placer sur l'entrée non inverseuse de l'AOP.
Ce schéma : (R= 10k et C = 100nF)
image

Donne une courbe de réponse :
image

La fréquence de coupure est d'environ 150 Hz.

PS : pour modifier la fréquence de la MLI il ne faut pas toucher au timer 0 qui est utilisé pour les fonctions de temps : delay, millis etc.

Merci pour vos explications, c'est très clair, sauf :
Pouvez-m'expliquer svp la règle pour choisir une bonne fréquence de MLI ? J'aurai tendance à croire que plus on est rapide, plus la tension de sortie est précise...

Aussi, en calculant la fréquence de coupure, j'obtiens 0.34Hz pour le filtre proposé par @vileroi et 159Hz pour celui de @68tjs

Quelle est donc la règle pour choisir le mieux entre 0.34 ou 159Hz ou même 500Hz ? La fréquence de coupure doit être le plus proche possible de quoi ?

Il sort d'où le 1 khz ? :laughing: et s'il faut être en dessous de 1khz, choisir entre 500hZ et 1hz, quel est le mieux et pourquoi ?

Le 1 kHz sort de 40 années d’électronique analogique :grinning:.

Un peu plus technique :
Preambule : on parle de signaux sinusidaux. Dans sinus(x.t), x est un angle exprimé en radians (=> 2*PI radians = 360°).
Les calculs mathématiques ne connaisent pas les degrés :woozy_face:
Pour relier a la frequence on utilise w= 2*PI*f.
W est appelé la pulsation.
L’unité de la pulsation est des radians par seconde (rd/s).
V= sinus(2*PI*F*t).

On peut indifféremment parler de fréquence ou de pulsation, il faut juste se rappeler qu’il y a un rapport 2.PI entre les deux.

Retour au filtre RC passe bas du schéma.
Sa pulsation de coupure est wo = 1/R*C

Quand on raisonne en tension, pour un filtre passe bas RC, à la pulsation de coupure l’affaiblissement n’est que de 6 dB, soit un affaiblissement de 2.
Au dela de la pulsation de coupure la pente est de 20 dB par décade (voir la courbe que j’ai joint au message précédent).

Il faut donc choisir pour le filtre une fréquence de coupure inférieure aux frequences que l’on veut éliminer.

Pour être totalement transparant je n’ai fait aucun calcul préalable, j’ai activé mon pifomètre ”étalonné ” et j’ai toujours sous la main un simulateur analogique (Kicad + Spice).
Mon pifomètre m’a fait penser que pour commencer R = 10k et C = 100nF qui sont des valeurs très courantes devraient faire l’affaire et ce n’est pas trop mal tombé.

C’est ca l’analogique : l’expérience c’est beaucoup d’années de plantage dont on a tiré profit.

40 années d'ana, wow. On a beaucoup de chance que les autres et toi soient là pour aider et partager vos savoirs gratuitement sur le forum, merci en tout cas pour cela :slight_smile:

Mais tu ne reponds pas aux questions très importantes pour moi :slight_smile :

  • ici, pour un MLI de 64khz, c'est uniquement par expérience qu'on sait qu'il faut éliminer toute fréquence supérieur à 1 khz ?
  • Pourquoi choisir un MLI à 64 khz et pas beaucoup plus ?
  • Pour le 1khz, est-ce que je dois retenir qu'être en dessous de 1khz est par "expérience" suffisant pour du 64khz, ou 1khz peut être choisi aussi pour des MLI de fréquences bien supérieure ?

J'imagine pour que pour être sure qu'un filtre est réellement efficace pour une fréquence de MLI donné, il faudrait utiliser un analyseur de spectre ?

On peut faire une MLI avec un circuit extérieur (cher) ou utiliser les ressource que nous offre l'Atmega328. Je ne sais pas quelle sera le fréquence du micro utilisé, mais je vais partir de 16MHZ.
Pour faire le MLI, on utilise un compteur. Par exemple pour avoir une MLI à10% et si on veut 256 niveaux différents, on part avec le compteur à 0 et on met une sortie à HIGH. quand le compteur arrive à 25, on repasse la sortie à LOW. Quand on arrive à 256, le compteur repasse à 0 et la sortie à HIGH. Le compteur va compter à la fréquence du quartz (on ne peut pas plus) soit à 16 MHZ.

Si on veut 256 niveaux possibles de MLI (équivalent d'un CNA 8 bits), il faut compter jusqu'à 256 et la fréquence du MLI sera de 16MHz/256 soit 62,5kHz. On ne peut pas travailler pus rapidement, on peut par contre compter du 8MHz ou moins, ce qui ne présente aucun avantage.

Si on veut plus de précision, par exemple 1024 niveaux, on ne pourra plus travailler qu'à 16kHz...

Si on veut 128 niveaux, on peut travailler à 125kHz

Pourquoi choisir 256 niveaux et pas 250 ou une autre valeur? Simplement parce que le compteur 2 est un compteur 8 bits, et que c'est facile. En info, on aime bien les puissances de 2, mais ce n'est pas du tout une obligation.

Si 256 niveaux est un bon compromis, cela nous donne 62kHz.

Un filtre, notamment un simple RC, ne peut pas éliminer les fréquences. Il les atténuent simplement, mais dans la pratique atténuer de 60dB va faire que le signal sera de l'ordre de grandeur du bruit. On pourait mettre un filtre plus efficace (deux résistances et deux condensateurs) mais cela complique pour un gain trop faible.

Pour moi, plus on coupe bas, mieux c'est pour le signal de sortie, plus on coupe haut plus le système réagira rapidement. Si on commande derrière un moteur et qu'on a 10kΩ/47µF, il faudra 1 à 2 seconde pour passer de 0V à 10V. Cela va limiter la monté en vitesse du moteur, ce qui peut être bénéfique (ou pas). Si c'était pour de l'éclairage, j'aurais dit qu'il faut couper plus haut.
Maintenant couper à 1kHz, filtre moins bien, mais a-t-on besoin que la monté de 0V à 10V puisse se faire en 2ms ou pas?
Pour avoir un signal à peu près correct, il faut couper à une fréquence 100 fois moins (environ), d'où cette base classique de 10kHz.

si on pouvait travailler à 160MHz sur 256 niveaux, on pourrait travailler à 600kHz et couper à 10kHz...

Bonjour,

C'est une affaire de compromis (comme souvent en électronique). Plus la fréquence de coupure sera basse moins tu auras d'ondulation résiduelle, mais plus ton signal sera retardé. A toi de choisir.

Tu peux voir l'ondulation résiduelle avec un oscilloscope.

+1

et un scope numérique actuel peut donner une représentation accecpable du spectre pour les fréquences dont il est question ici :wink:

  1. ce n'est pas 64 kHz la fréquence de récurence max de la MLI d'un 328p mais 62,5 KHz.
    Fréquence horloge = 16 MHz, nombre de pas = 256 == => 16 MHz / 256 = 62,5 kHz
    Désolé erreur de ma part :grinning:
    C'est la fréquence de récurrence la plus élevée que peut faire un atmega328p "cloqué" par une horloge à 16 MHz.
    Si son horloge était 20 MHz, valeur max garantie, la MLI max serait à 78 kHz.

  2. la courbe de filtrage que j'ai joint est quand même parlante. Tu vois bien que plus la fréquence de coupure fo (ou la pulsation wo) est éloignée de la fréquence à filtrer, meilleur est l'affaiblissement.
    A quoi cela serve que je me décarcasse à faire des simulations :grinning: !
    -20 dB en tension, c'est diviser par 10, +20 dB c'est multiplier par 10
    -40 dB en tension, c'est divisé par 100.
    -60 dB en tension, c'est diviser par 1000
    Bel = logarithme décimaux

  3. J'ajoute qu'il n'est pas interdit de parcourir la datasheet du microcontroleur.
    Je ne sais pas comment vous pouvez utiliser un circuit intégré (un micro est un circuit intégré) sans au minimum parcourir les gros titres de sa datasheet. Cela dépasse mon entendement.
    La doc utile ce n'est pas la pub arduino, c'est la datasheet du microcontroleur.

  4. J'ajoute que quand on découvre le filtrage, il n'est pas interdit de regarder quelques documents qui parlent de filtrage,
    Acquérir un vernis, même très fin, sur le filtrage facilite quand même le travail.

Attention, c'est vrai si on veut un MLI avec 256 niveaux. Si on se contente de 32 niveaux (0,5V de résolution sur 10V), on peut monter 8 fois plus haut. Mais dans le cas présent, cela m'a pas un gros intérêt.