Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| materiels:can:mcp3424 [2020/02/03 11:29] – [Convertisseur analogique numérique] philippe | materiels:can:mcp3424 [2025/06/19 19:29] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | [[materiels: | ||
| + | |||
| + | ===== Convertisseur analogique numérique ===== | ||
| + | [Mise à jour le 3/2/2020] | ||
| + | |||
| + | {{ : | ||
| + | ==== MCP3424 ==== | ||
| + | * //Source// : < | ||
| + | |||
| + | <callout type=" | ||
| + | |||
| + | * // | ||
| + | | ||
| + | * // | ||
| + | * Alimentation: | ||
| + | * Consommation en standby: 300 nA sous 5 Vcc | ||
| + | * Gain programmable PGA: x1, x2, x4 ou x8 | ||
| + | * Plage de mesure différentielle: | ||
| + | * Résolution programmable: | ||
| + | * Vitesse: 240, 60, 15 ou 3,75 mesures/ | ||
| + | * Erreur gain: 0,05 % (gain = 1 sous 18 bits) | ||
| + | * Erreur offset: 15 µV (gain = 1 sous 18 bits) | ||
| + | * Interface I2C: 0X68, 0X6A, 0X6C ou 0X6E (sélectionnable par dip-switch) | ||
| + | * Référence de tension interne: 2,048 Vcc ± 0,05% | ||
| + | * T° de service: -40 à +125 °C | ||
| + | * Dimensions: 27 x 16 x 12 mm | ||
| + | |||
| + | {{ : | ||
| + | * **Présentation** du circuit sur < | ||
| + | |||
| + | * // | ||
| + | |||
| + | * // | ||
| + | * // Bibliothèques à installer dans l'IDE : **MCP342x**// | ||
| + | * Sources sur < | ||
| + | * //Connexion à un shield// < | ||
| + | * //Un premier exemple pour tester le circuit// | ||
| + | |||
| + | {{ : | ||
| + | <code cpp *.cpp> | ||
| + | // Connexion à un capteur de température LM35 | ||
| + | |||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | // 0x68 est l' | ||
| + | uint8_t address = 0x68; | ||
| + | // Création de l' | ||
| + | MCP342x adc = MCP342x(address); | ||
| + | |||
| + | void setup(void) | ||
| + | { | ||
| + | // Initialisation de la console | ||
| + | Serial.begin(9600); | ||
| + | // Initialisation du bus I2C | ||
| + | Wire.begin(); | ||
| + | |||
| + | // Enable power for MCP342x (needed for FL100 shield only) | ||
| + | // | ||
| + | // | ||
| + | |||
| + | // Reset du circuit | ||
| + | MCP342x:: | ||
| + | delay(1); // MC342x nécessite 300us pour se paramétrer, | ||
| + | |||
| + | // Vérification de la présence du MCP342x | ||
| + | Wire.requestFrom(address, | ||
| + | if (!Wire.available()) | ||
| + | { | ||
| + | Serial.print(" | ||
| + | Serial.println(address, | ||
| + | while (1) | ||
| + | ; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void loop(void) | ||
| + | { | ||
| + | long value = 0, tension_mV = 0; | ||
| + | int gain, resolution; | ||
| + | MCP342x:: | ||
| + | // --------------------------------------------------------------------------------------- | ||
| + | // Déclenchement d'une conversion. La méthode convertAndRead() attend la fin de la conversion | ||
| + | // On passe les paramètres suivants à la fonction dans l' | ||
| + | // - canal : channel1, channel2, channel3 ou channel4 pour un MCP3424 | ||
| + | // - type de conversions : oneshot ou continous | ||
| + | // - résolution : resolution12, | ||
| + | // - gain : gain1, gain2, gain4 ou gain8 | ||
| + | // timeout = temps accordé à la transaction en ms (1000000 dans cet exemple !) | ||
| + | // A l' | ||
| + | // - value = gain * (2^résolution/ | ||
| + | // - status identifie la valeur du gain et de la résolution | ||
| + | // | gain | résolution | status | ||
| + | // | 1 | ||
| + | // | 2 | ||
| + | // | 4 | ||
| + | // | 8 | ||
| + | // | 1 | ||
| + | // etc. | ||
| + | // | 1 | ||
| + | // etc. | ||
| + | // | 1 | ||
| + | // etc. | ||
| + | // --------------------------------------------------------------------------------------- | ||
| + | // Conserver la valeur des trois derniers paramètres | ||
| + | uint8_t err = adc.convertAndRead(MCP342x:: | ||
| + | | ||
| + | | ||
| + | if (err) | ||
| + | { | ||
| + | Serial.print(" | ||
| + | Serial.println(err); | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | switch (status) | ||
| + | { | ||
| + | case 2: | ||
| + | gain = 4; | ||
| + | resolution = 12; | ||
| + | break; | ||
| + | case 6: | ||
| + | gain = 4; | ||
| + | resolution = 14; | ||
| + | break; | ||
| + | case 10: | ||
| + | gain = 4; | ||
| + | resolution = 16; | ||
| + | break; | ||
| + | case 14: | ||
| + | gain = 4; | ||
| + | resolution = 18; | ||
| + | break; | ||
| + | } | ||
| + | Serial.print(" | ||
| + | Serial.println(value); | ||
| + | Serial.print(" | ||
| + | tension_mV = value / (gain * pow(2, resolution - 12)); | ||
| + | Serial.print(tension_mV); | ||
| + | Serial.println(" | ||
| + | Serial.print(" | ||
| + | Serial.print(tension_mV / 10.0); | ||
| + | Serial.println(" | ||
| + | } | ||
| + | |||
| + | delay(1000); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | {{ : | ||
| + | <callout type=" | ||