Bonsoir à tous.
J'aimerais, sur un PCB personnalisé à base d'atmega328, integrer un CI pour pouvoir avoir une sortie analogique, dans le but de piloter des variateurs de fréquences, sortie 0-10V étant le plus répandu que j'ai pu voir de ma petite expérience en utilisation de variateurs.
En faisant quelques recherches, j'ai vu que le MCP4725 semblait adéquat pour celà, d'autant plus qu'il se pilote avec de l'I2C
Pouvez-vous me conseiller sur le choix d'un CAN qui soit fiable, abordable et facile à piloter ?
Dans le titre du fil je viens de remplacer CAN par CNA , tu es en recherche de Conversion Numérique Analogique CAN CNA ou DAC pour les anglosaxons.
Le MCP4725 me parait un bonne solution si une résolution de 12 bits convient , La tension de sortie sera entre 0 et 5V , un AOP et qq composants passifs permettront d'obtenir l'intervalle [0 ; 10V] Voir içi ce qui a été mis en sortie des CNA
Un potentiometre numérique sur bus I2C pourrai éventuellement faire l'affaire comme CNA 'rustique'
non, attention, ce sont des contraires !
CAN = Convertisseur Analogique vers Numérique ;
DAC = Digital to Analog Converter = Convertisseur Numérique vers Analogique.
Bonsoir, ok, je pensais que CAN etait universel autant pour moi ^^
Pour la résolution, je ne m'étais pas posé la question, mais un réglage tous les 0.5V me parait bien.
Mais pour être sur de faire le bon choix, dans quel exemple de cas, pourrait-on avoir besoin d'une grande résolution ? (supérieur à 12 bits)
Dans mon cas où je souhaite uniquement piloter un var de fréquence qui servira à piloter des moteurs asynchrones, j'ai l'impression qu'une résolution de 0.5V est très largement sufisant.
Merci pour le lien, mais n'existe t'il de CI qui ont juste besoin en entrée de PWM pour sortir directement du 0-10V ? Histoire d'éviter si possible de passer par un montage avec plusieurs composants séparés ?
Bonsoir @5_cylindres
J'ai édité le titre du fil pour remplacer par CNA le 'CAN' qui figurait initialement , pus un peu plus loin j'ai buggé et n'ai pas pris le temps nécessaire de la relecture
n'existe t'il de CI qui ont juste besoin en entrée de PWM pour sortir directement du 0-10V
perso , comme ça , je n'en vois pas il faut assembler quelques composants simples pour passer d'un PWM à une tension continue sur l'intervalle [0 : 10V]
salut @dfgh :
j'avais bien compris, puisque la suite de ton explication était correcte, c'est juste que ''pour ceux qui ne savent pas encore'' et qui liront ta réponse il peut y avoir confusion : corrige ton message#2, même après coup, ça évitera les incompréhensions.
encore une fois : pas grave, ça m'arrive aussi souvent, un ''bug de doigt au clavier'' est assez fréquent !
J'évite , par principe, de modifier mes messages passés (hors fautes d'orthographes ou faute de frappe), ici je vais faire apparaître la correction à côté de l'erreur , le fil de discussion gardera sa cohérence
On peut passer du PWM à l'analogique en utilisant un passe bas. Mais dans le cas présent Avec une résolution de 0,5V sur une plage de 10V, cela passe avec un convertisseur 6 bits, qui peut être réalisé avec un réseau de résistances R/2R si il y a 6 broches de libres. Il faut quand même un AOP pour monter jusqu'à 10V. Et comme on a le port PB qui permet d'avoir les 6 bits, une écriture dans PORTB de la valeur donne directement la tension voulue. Quoi de plus simple?
le module MCP... est déjà tout prêt pour env. 7 euros :
pourquoi se faire ''déféquer'' à créer un montage avec un AOP-rail-to-rail et un réseau R-2R ? (et en plus il y a économie d' E/S, pas que de pognon)
maintenant, c'est vrai que pour la beauté de la chose je préfère le réseau R-2R + AOP en tampon, ou la MLI (PWM pour les anglophones) + filtrage + AOP tampon ... mais le choix économique/pratique est vite fait ...
Si le PCB est maison, c'est pas forcément plus compliqué de mettre un réseau R/2R. D'autant plus qu'il me semble que le MCP4725 ne sort pas en 0/10V non plus. Dans les deux cas, il faut un AOP
Maintenant mon but est de donner plusieurs solutions, mais c'est @tonynyny qui choisira.
j'ai bien écrit que mes solutions préférées sont ... les moins économiques, si l'on considère le tarif du module face à celui d'un bon AOP.
mais comme tu l'exprimes, le choix définitif reviendra à @tonynyny , en fonction de ses besoins (série ou pas ?) et de ses ''goûts'' en matière de solution(s) : mon but n'était pas d'imposer la mienne (je ne l'ai jamais fait contrairement à d'autres), mais simplement de mettre le doigt sur les aspects ''solution de facilité'' disponibles ... je ne suis pas le décideur dans ce sujet ...
@vileroi ; merci pour la réponse, j'avais effectivement vu ce type de solution. Ce qui me derange sur ça, c'est de devoir utiliser 6 sorties TOR, il ne m'en restera pas assez pour le reste des fonctions que je souhaite.
@5_cylindres, l'idée d'utiliser un MCP pour un reseau R/2R, via I2C alors je suppose, me semble convenir. Mais comment dans ce cas le lier à un AOP pour avoir les 0-10V ?
Ma très faible expérience ne me permet pas d'imaginer la solution ^^
je suis finalement allé lire les caractéristiques du MCP... (j'aurai dû le faire avant !)
effectivement, avec une alim en 5,5V maxi tu n'auras jamais les 10V que tu recherches en sortie :
donc on en revient à l'une ou l'autre des solutions proposées par @vileroi, c-à-d le réseau R-2R piloté par plusieurs sorties, suivi d'un tampon à base d'AOP, ou l'utilisation d'un signal unique en MLI (PWM), avec filtrage et tampon (encore !), mais il te faut de toute façon l'alim qui va bien pour les 10V ...
c'est un choix à faire, en fonction de tes besoins : la MLI+filtrage va introduire un ''retard'' (dû au filtrage) que n'aura pas le réseau R-2R, mais elle te permettra de n'utiliser qu'une sortie.
il va, de toute façon, te falloir une alim adaptée (tu veux 10 V).
la balle est dans ton camp, ''fais ton choix, camarade''.
J'ajoute mon grain de sel sur la solution MLI.
Par défaut la configuration à la sauce Arduino fait de la MLI à 900 Hz sur timer 0 et 2 et à 450 Hz sur timer 1.
Le filtrage est assez coton à faire à 900 Hz, je ne parle même pas de 450 Hz.
Mais l'atmega328p peut faire de la MLI a 64 kHz, le filtrage sera grandement simplifié.
Il existe des bibliothèques pour changer la fréquence de la MLI.
On peut aussi très simplement regarder dans la datasheet les registres qu'il faut modifier.
Quel que soit le principe que tu choisiras (le mcp est pas mal) pour passer à un signal de 5 à 10V il faudra une alim 10 ou 12 V (12 V sera plus facile à trouver et c'est plus facile de baisser que d'augmenter (deux diodes en série ça fait perdre 1,6 V).
Si tu choisis la MLI, si le circuit que tu raccordes est à relative haute impédance ( ?) pour passer de 5V à 10 V un simple transistor bipolaire ou MOSFET monté en émetteur(source) commun conviendra avec 1k ou 10 k dans le collecteur(drain).
Dans ton bilan financier il faut aussi prendre en compte la surface du circuit imprimé.
Les offres d'entrée de gamme sont très alléchantes mais dès que l'on passe a une surface plus grande la facture peut vite monter.
Un mcp prendra moins de mm2 qu'un r/2r.
Si tu choisis R/2R rappelles toi ce que j'ai dit : une seule valeur et un seul lot de commande.
Astuce : il est très facile de souder une résistance CMS sur une autre.
Perso je ne prendrais que la valeur pour 2R, pour faire 1R je souderais deux 2R l'une sur l'autre.
je ne pensais même pas aux fonctions ''Arduino'' (et @vileroi certainement pas non plus) mais à des écritures directes en registres, de façon à ''maîtriser'' la fréquence et minimiser les problèmes dus au filtrage.
c'est la règle (et le truc à savoir) : dans un même lot de composants les valeurs ne fluctuent que très peu, on peut même avoir des R d'exactement la même valeur (à un poil de cul près) sur un lot de + de 10k pcs ! même si elles sont toutes à 20% de la valeur nominale !
après : préférer la valeur 1R ou 2R ? si tu prends 1R il faut souder en série, c'est chiant et ça prend 2x + de place, si tu prends 2R tu les mets en // (soudées l'une sur l'autre) comme préconisé par @68tjs et ''du coup'' (c'est notre surnom actuel chez nos cousins de ''la Belle Province'') ça ne prend que la place d'1 composant, mais c'est plus ch...t à câbler sur le C.I.
ce serait ma solution préférée, avec un bon tampon en sortie, meilleure que la MLI (plus précise et rapide en tout cas) mais en utilisant plus de sorties, forcément.
d'ailleurs : pour une résolution de 0,5V sur un maxi de 10V il suffit de 5 bits ... pas 6
le CNA qui va psser du numérique à une valeur analogique 0/5V
le passage de 0/5V à 0/10V
pour le point 1) il y a trois solutions, MLI, MCP et R/2R, chacune avec leurs avantages et leur désavantages:
MCP -> coût plus élevé? Place sur le circuit plus grande? Utilisation d'une bibliothèque pour envoyer les données (du code que l'on ne voit pas forcément).
MIL -> code à se faire soi même pas trivial ou bibliothèque. Très économique
R/2R -> Ecriture directe, code minuscule, mais utilisation de 5 sorties. Faible résolution non modifiable par la suite. Possible sur 5 bits. Note: les réseaux R/2R existent en un seul composant.
Dans tous les cas il faut un ampli derrière. Ce n'est pas parce que le MCP ne sort qu'en 0/5V qu'il faut l'éliminer, les deux autres solutions sont dan le même cas.
Pour moi, il faut une 12V. Avec une alim 10V on a du mal à avoir une sortie à 10V. En partant d'un signal 0/5V, et en mettant un ampli de gain 2 derrière, même avec une alim 24V, on n'aura que 10V max en sortie. Et un AOP classique (économique, facile à trouver) ne peut pas fournir une tension égale à son alimentation.
Je n'ai pas précisé, mais le PCB personnalité aura une alimentation 24V (convertisseur DC/DC pour alimenter le uC). Cela devrait donc faciliter les choses ?