Problème CNA de type MCP4725 microship

Bonjour à tous,
Je dois créer des capteurs sans fil seulement il faut faut que je garde les anciens qui me délivrent un signal 4-20mA. J'ai donc branché une résistance sur l'un des fils d'alimentation du capteur et je viens me brancher aux bornes de cette résistance pour ressortir un signal en tension. Ensuite, ce signal analogique entre par la broche A0 avant d'être converti en numérique grâce au CAN intégré a mon Arduino Uno.
Pour le sans fil, j'ai opté pour le Xbee. Tout se passe bien, le signal transite avec 115200 bauds de vitesse de transmission seulement à partir d'ici, un problème apparaît. Je dois ressortir ce signal sur un système d'acquisition qui ne lit que des entrées analogiques mais l'Arduino Uno ne possède pas de sorties analogiques (on oublie aussi les pwm, ça ne va pas). J'ai donc décidé de prendre un cna de ce type :

http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=MCP4725EV

mais je ne sais pas trop comment le câbler et surtout comment le programmer. Après plusieurs tentatives, je commence à ne plus avoir d'idées.

Ma question est simplement comment faire entrer l'information numérique qui vient de transiter par Xbee dans le convertisseur ?

Je vous fais passer aussi mon idée de cablage.

En vous remerciant d'avance de vos réponses.

Cordialement,

Ce CNA s'utilise avec une liaison I2C, soit 2 fils: une ligne de donnée (SDA) et une ligne d'horloge (SCL). + Alimentation

Pourquoi le PWM ne va pas?

Bonjour et merci de cette reponse si rapide,

Le PWM ne va pas car il f

Bonjour et merci de cette réponse si rapide,

Le PWM ne va pas car il faut la valeur moyenne pour obtenir un signal analogique or un filtre passe bas de type RC inclurait du retard que je ne peux pas me permettre. Est ce que vous auriez un schéma électrique et un morceau de code en rapport avec le CNA à proposer SVP parce que je désespère.

Merci d’avance

Bonjour

mais je ne sais pas trop comment le câbler et surtout comment le programmer. Après plusieurs tentatives, je commence à ne plus avoir d’idées.
… je désespère.

Vous avez le désespoir facile !!!
Quelques secondes de recherche (google ou autre…)avec les mots clefs “MCP4725 Arduino” permettent d’obtenir en bonne place un lien vers une page du site Adafruit concernant ce convertiseur : tutoriel , librairie et exemples, schéma de la carte Adafruit MCP4725…)
adafruit.PNG

J'ai déjà regardé ce site mais cela ne me dit pas comment envoyer une info numérique sur ce cna Ils ne le branchent que sur des broches d'entrées analogiques !

"ils ne le branchent que sur des broches d'entrées analogiques !"
Non, ils le branchent bien sur les broches SDA et SCL qui ,pour le micro Mega328 présent sur la carte Uno , se trouvent sur des pattes 'multifonctions' analogiques ou numériques selon le code utilisé. (analogique ou numériques I2C ou entrées numériques d'interruption)
sda scl.PNGuno I2C.PNG

La librairie Wire configure ces 2 broches en mode numérique dédié au bus I2C

Il n'y avait sans doute pas la place sur la carte imprimée pour écrire de manière lisible :
A4/SDA/INT12 et A5/SCL/INT13 pour exprimer les fonctions multiples de ces broches.

Faites confiance à Adafruit, c'est une chance pour vous d'avoir toute cette documentation détaillée fiable !!

sda scl.PNG

uno I2C.PNG

Si je comprends bien, il faut que j'envoie mon information numérique pour qu'elle aille dans le CNA par la broche A4 qui est elle -même relié au SDA du CNA ? (désolé si ce n'est pas clair mais c'est difficile d'expliquer un schéma électrique)

Envoyez les informations via le bus I2C, donc via les 2 broches SDA et SCL de l'Arduino reliées aux 2 broches SDA et SCL du CNA

Il parait nécessaire de se renseigner , avant tout, sur le fonctionnement du bus I2C
par exemple içi

J'ai fait le câblage et pour le programme, j'ai utilisé l'exemple de la bibliothèque "wire" slave sender mais rien ne se passe. Est ce que j'ai loupé quelque chose ?

Affirmatif !!
tu a pris un exemple sans rapport avec le circuit que tu veux piloter !!!

Pas étonnant si tu ne veux pas passer par la case 'comprendre les bases du bus I2C" , découvrir ce qui est ‘général’ , commun à tous les périphériques I2C et ce qui est ‘particulier’ à chacun d’eux !!!

->Prendre un exemple dans ceux venant avec la librairie adaptée au composant I2C particulier (après l’avoir installée sur le PC )

J’ai bien lu les bases de l’i2c seulement dans les exemples du MCP 4725 de chez Microchip, il n’y a pas exactement les mêmes lignes de codes que sur celui d’ADAFruit. Voici mon code que je n’arrive toujours pas à faire fonctionner. Si quelqu’un a une idée ou voit une erreur dans mon code.

// Code récepteur

// Définition des variables
#include <MCP4725.h> // bibliothèque DAC
MCP4725 dac(SDA, SCL);

int valeur; // Definition valeur reçue
const int led=13; // Defintion led

void setup() {

Serial.begin(115200); // Vitesse de transmission
pinMode(led,OUTPUT); // definiton led comme sortie
pinMode(resultat,OUTPUT); // Definition resultat comme sortie

dac.begin(0x62); // initialisation DAC
}

void loop() {

if(Serial.available()){
valeur=Serial.read(); // Lecture de la valeur reçu par Xbee
digitalWrite(led,HIGH); // Led allumé si la liaison est bonne

dac.setVoltage(valeur); // envoi dans le DAC

}
else digitalWrite(led,LOW); // led éteinte si la liaison est interrompue

}

ne pas oublier les bases ‘hardware’ du bus I2C !! (résistances de pull-up et parfois comme içi niveau logique a appliquer sur une ou plusieurs broches pour fixer l’adress I2C)

-les résistances de pull up sur SDA et SCL sont elles bien activées sur la carte de développement MIcrochip ? (…si c’et bien la carte dévaluation Michochip qui est utlisée correspondant à ce pdf)

-l’entrée A0 du MCP est-elle mise à l’état haut ou bas ? (changement d’adresse I2C)

-quel est le suffixe du MCP4725 présent sur la carte : A0, A1, A2 ou A3 ? (adresses I2C différentes)

L’exemple trianglewave d’Adafruit fonctionne-t-il ?

voir en début de cet exemple la valeur de l’adresse I2C en fonction du suffoice du DAC et de l’état de la broche A0

+Pour faciliter la lisibilité du code en favoriser l’examen du code par les intervenants du forum utiliser la balise code (içône </> à gauche du menu d’édition)

Bonsoir
j'ai lu le topic
Pourquoi ce choix d'un CAN en I²C ?

  • Déja "en main/approvisionné" ?
    Tu semble chercher "une reponse rapide" du CAN

perso , je me tournerais vers du MCP492X (MCP482X) en SPI

Bonjour,

-Il s'agit bien du mcp4725 décrit dans le pdf. Sur mon installation, il est branché seulement le 5v sur vcc, la masse sur gnd et ensuite A4 et A5 respectivement sur SDA et SCL.
-Ensuite, sur cette carte, il y a 2 cavaliers branché sur JP1 et JP2 que je n'ai pas touché ( ce sont eux qui permettent le changement d'adresse il me semble).
-Je pense donc que A0 est à l'état bas.
-En ce qui concerne le suffixe, je ne sais pas ce que c'est.
-Pour l'exemple trianglewave, je testerai demain pour voir si cela fonctionne.

Merci pour votre aide à tous,

Bonne soirée !

Donc ce n'est pas un MCP4725 'nu' qui et utlisé mais un MCP4725 monté sur une carte d'évaluation Microchip

cavaliers JP1 et JP2 en place = pull ups activés sur la carte Microchip, A0 à la masse (cf schéma de la page 22)

suffixe ? sans doute illisible sur la puce, Microchip produit des MCP4725 d'adresses I2C diverses :
MCP4725-A0 , MCP4725-A1, MCP4725- A2 et MCP4725-A3

-> La réference pour trouver ces informations est la notice technique des MCP4725 (adresses I2C décrites p27)

D'après le pdf de la carte d'évaluation Microchip pour ce convertisseur et les séquences envoyées à travers le boitier 'Pickit Serial' il apparait que l'adresse (sur 8 bits) est 0xC0. La puce en place serait donc un MCP4725-A0
Sur 7 bits (1 décalage à droite, 0cC0 devient 0x60 (pas 0x62 comme pour la carte Adafruit qui utilise probablementdes MCP4725-A1)

N.B En cas de doute persistant sur l'adresse I2C réelle il faudrait faire une recherche sur le forum pour trouver un sketch de scan du bus I2C (il a été à nouveau proposé récemment)

Bonjour,

J'ai fait un scan pour savoir mon adresse et il s'agit de 0x60 seulement toujours impossible de trouver où est l'erreur dans mon programme !

Bonjour

  1. Votre code est-il compilé sans erreur ?
  • si oui que donne la LED lors de la réception d’une donnée ?
  • si non quelle erreur apparait ?
  1. Quelle librairie est utilisée pour le MCP4725 ? lien SVP (un exemple fourni avec cette librairie a-t-il été testé ?)
  2. La bonne adresse I2C est-elle passée dans dac.begin() ?

Librairie alternative :
4) Que donne le programme trianglewave de la librairie MCP4725 d’Adafruit ? (si la sortie du DAC est observée au multimètre et non à l’oscilloscope ralentir la boucle)

Eviter de mettre tel quel du code dans les messages, insérer le code à l’aide des balises appropriées (icône </> dans le menu d’édition)

Re,

mon code est compilé sans erreur. Les leds Tx Rx clignotent 2 ou 3 fois en même temps pendant le téléversement. J’utilise la librairie de microship du mcp4725. Pour l’exemple trianglewave, le programme a l’air de fonctionner puisque dans le moniteur, il y a marqué “generate trianglewave” cependant je n’avais qu’un oscilloscope a disposition et aucun résultat sur celui-ci.

Merci de votre aide

  1. La bonne adresse I2C est-elle passée dans dac.begin() ?

0x60 ou 0x62 ??

cavaliers JP1 et JP2 tous les deux en place ?

Ya-t-il bien 5V sur la cosse de test VDD ?
carte.PNG

La carte dévaluation Microchip est elle neuve ou a t-elle déjà été utilisée (éventuellement maltraitée) auparavant ?