Show Posts
Pages: [1] 2 3 4
1  International / Français / Re: Capteurs de température, je suis maudit... on: October 13, 2013, 11:15:09 am
Désolé, j'aurais du effectivement préciser le câblage.
Oui, les GND sont bien reliés, puisque je me sers du +5 et du GND de l'arduino pour alimenter ma breadboard.  J'ai donc bien le +5 sur la broche 1, le GND sur la 3, et la 2 en sortie vers l'entrée analogique (boitier TO92)
L'arduino est lui alimenté par le port USB du PC.
2  International / Français / Capteurs de température, je suis maudit... on: October 13, 2013, 10:34:05 am
Bonjour,

Suite à mes mésaventures (résolues) avec le DS1631, j'ai décidé de monter en parallèle de ce dernier un capteur analogique, le MCP9700, afin de comparer les deux mesures.

http://ww1.microchip.com/downloads/en/DeviceDoc/21942e.pdf

Le MCP9700 est branché sur l'entrée analogique 0 de l'arduino, VCC et GND, suivant la datasheet ci-dessus.

Voilà le code :
Code:
  // MCP9700
  float analogique=0.0;
  analogique = ((float)analogRead(0) * 5.0 / 1024.0);
  analogique=analogique/0.01;
  Serial.print("Analogique : "); Serial.print(analogique); Serial.println("");

- Si je ne me trompe pas (encore...), la résolution du convertisseur A/N est de 10 bits pour 5V, donc 1024 pas, d'où la ligne 2 du code
- Le MCP a une résolution de 10mv/°C, d'où la ligne 3

Et là, j'obtiens des valeurs complètement aberrantes, très fluctuantes, oscillant entre 30 et 300. J'ai rajouté une capa de 100nF entre la sortie du capteur et le GND, même chose. J'ai essayé une autre entrée analogique, même chose.

Quelle bêtise le débutant que je suis a t-il encore fait ?

Merci d'avance
3  International / Français / Re: DS1631, impossible à utiliser on: October 13, 2013, 08:56:56 am
 smiley smiley smiley smiley smiley

YES !!! L'erreur venait bien de la division par deux de l'adresse I²C. Tout marche bien, merci à tous !

(Et promis, la prochaine fois, j'irai moins vite en besogne...)
4  International / Français / Re: DS1631, impossible à utiliser on: October 08, 2013, 01:40:52 pm
 smiley-kiss ok pour 0x48... Mais pas de changement... Voilà le code, c'est un exemple trouvé ici. J'essaie de comprendre mon erreur, mais sans succès... J'ai essayé d'autres exemples de code, même problème. Par contre, je suis bien d'accord que si le scanner trouve le slave, c'est qu'il y a bien un minimum de dialogue.

Code:
#include <Wire.h>

// PIN adresses are set to GND
#define DS1631_ADDR 0x48 >> 1

// SETUP
void setup(){
   
  // Setup Serial connection
  Serial.begin(9600);
  Serial.println("");
  Serial.println("-----------------------------------");
  Serial.println("DS1631 test: Temp. sensor");
  Serial.println("-----------------------------------");
  Serial.println("");
 
  Wire.begin();             // join I2C bus

  // Stop conversion to be able to modify "Access Config" Register
  Wire.beginTransmission(DS1631_ADDR);
  Wire.write((int)(0x22)); // Stop conversion
  Wire.endTransmission(); 
   
  // Read "Access Config" regsiter
  Wire.beginTransmission(DS1631_ADDR);
  Wire.write((int)(0xAC)); // @AC : Acces Config
  Wire.endTransmission();
  Wire.requestFrom(DS1631_ADDR,1); //Reade 1 byte
  Wire.available();
  int AC = Wire.read(); // receive a byte

  Serial.print("Acces Config (Before): "); Serial.print(AC);  Serial.println("");
   
  // WRITE into "Access Config" Register
  Wire.beginTransmission(DS1631_ADDR);
  Wire.write(0xAC); // @AC : Acces Config
  Wire.write(0x0C); // Continuous conversion & 12 bits resolution
  Wire.endTransmission();
   
  // READ "Access Config" register
  Wire.beginTransmission(DS1631_ADDR);
  Wire.write((int)(0xAC)); // @AC : Acces Config
  Wire.endTransmission();
  Wire.requestFrom(DS1631_ADDR,1);
  Wire.available();
  AC = Wire.read();

  Serial.print("Acces Config (AFTER): "); Serial.print(AC);  Serial.println("");
 
  // START conversion to get T°
  Wire.beginTransmission(DS1631_ADDR);
  Wire.write((int)(0x51)); // Start Conversion
  Wire.endTransmission();
}

// Main Loop
void loop(){
 
  //READ T°
  Wire.beginTransmission(DS1631_ADDR);
  Wire.write((int)(0xAA)); // @AA : Temperature
  Wire.endTransmission();
  Wire.requestFrom(DS1631_ADDR,2); // READ 2 bytes
  Wire.available(); // 1st byte
  int Th = Wire.read(); // receive a byte
  Wire.available(); // 2nd byte
  int Tl = Wire.read(); // receive a byte


  // T° processing
  if(Th>=0x80) //if sign bit is set, then temp is negative
  Th = Th - 256;
  int T_dec=(10*(100*(Tl/16)))/16; // decimal part of the T°

  // Display T° on "Serial Monitor"
  Serial.print("Temperature : ");
  Serial.print(Th);   Serial.print(".");
  if (T_dec<10)   Serial.print("0");
  if (T_dec<100)   Serial.print("0");
  Serial.print(T_dec);   Serial.print(" degC / ");
  Serial.print("Th register: "); Serial.print(Th);  Serial.print(" / ");
  Serial.print("Tl register: "); Serial.print(Tl);  Serial.println("");
 
  // Wait 1s before restart
  delay(1000);
}
5  International / Français / Re: DS1631, impossible à utiliser on: October 08, 2013, 12:04:27 pm
Bon, j'ai uploadé le programme de scan du bus I²C, il y a bien un slave en 0x84 :



Mais toujours pas possible de dialoguer avec. J'ai mis des 4k7, même chose. Il faut que je teste les tensions, mais bien sûr, plus de pile dans le metrix...  smiley-yell

Je collectionne...
6  International / Français / Re: DS1631, impossible à utiliser on: October 07, 2013, 05:31:46 am
Déjà merci pour vos réponses !

Mon DS1631 vient de chez maxim, c'est des échantillons gratuits que j'ai demandé.

http://www.maximintegrated.com/datasheet/index.mvp/id/3241

Je vais essayer avec des 4.7k et sans résistances, et je vais tester le programme de scan I²C. Je vous tiens au courant.
7  International / Français / [Résolu] DS1631, impossible à utiliser on: October 06, 2013, 05:14:44 am
Bonjour tout le monde

Je tente de faire marcher un DS1631 (capteur de T° en I²C de chez Maxim), et bien sûr, ça ne marche pas... ( Si ça marchait du premier coup, ça ne serait pas drôle...  smiley )

Je me suis basé sur le code suivant :
http://forum.arduino.cc/index.php/topic,14156.0.html
en adaptant les nouvelles fonctions de Wire.h : Wire.write à la place de Wire.send, et Wire.read à la place de Wire.receive

Ca compile et upload sans problème (Env 1.0.5, Arduino Duemilanove avec un AT328).

Au niveau du câblage du 1631
Br1 SDA sur Analog In 4
Br2 SCL sur Analog In 5
Br3 en l'air
Br4 GND
Br 5-6-7 GND
Br8 +5V

J'ai rajouté deux résistance de 1800 ohms entre SDA et SCL et le +5.

Le moniteur série me renvoie :
Access Config (Before): -1
Access Config (After): -1
Temperature : -1.000 degC / Th register: -1 / Tl register: -1
Temperature : -1.000 degC / Th register: -1 / Tl register: -1
Temperature : -1.000 degC / Th register: -1 / Tl register: -1
Temperature : -1.000 degC / Th register: -1 / Tl register: -1
...

C'est la première fois que je mets le nez dans l'I²C.

Que se passe t-il ? Un problème d'adresse du 1631 ? Il est clair qu'on n'arrive pas à discuter avec lui au vu des deux premières lignes de retour, mais pourquoi ?

Merci d'avance.
8  International / Français / Re: Entrée analogique, quelle longueur de câble ? on: October 04, 2013, 05:23:08 am
Pas de PB, j'ai du Cat 5 à la maison...

Merci à tous pour vos réponses !!!
9  International / Français / Re: Entrée analogique, quelle longueur de câble ? on: October 03, 2013, 05:33:05 am
Oui, tout à fait, je pensais bien coller une 2k série.
Et pour le blindage, pas de PB, je sais comment le brancher.

Par contre, avec de l'I²C, on peut espérer quelle longueur de câble ?
10  International / Français / Re: Entrée analogique, quelle longueur de câble ? on: September 30, 2013, 04:04:55 am
Merci M'sieur !!!  smiley

Je vais tester avec du câble blindé, en me basant sur les explications de la datasheet.
11  International / Français / [Résolu] Entrée analogique, quelle longueur de câble ? on: September 29, 2013, 10:19:31 am
Bonjour,

J'envisage de brancher un capteur de température MCP9700 ( http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en022289 ) sur une entrée analogique.

Jusqu'à quelle longueur de câble peut-on aller sans avoir trop de problème d'affaiblissement ? Il me faudrait 2m environ.

Sinon, je dois alors passer sur une solution avec un capteur I²C ?
12  International / Français / Re: lcd caractere chinois a la fin on: September 16, 2013, 06:06:32 am
Essaie d'ajouter un lcd.clear après le lcd.begin ?
13  International / Français / Re: Erreur au lancement de l'IDE on: September 16, 2013, 05:59:49 am
Alors que moi non, j'ai tout laissé d'origine.
14  International / Français / Re: (Important pour moi) Faire un sketch sur IDE,compiler,sans platine ARDUINO on: August 12, 2013, 03:26:14 am
Chez moi, ça fonctionne sans aucun problème :



Pas de carte branchée, et on peut compiler.
15  International / Français / Re: (Important pour moi) Faire un sketch sur IDE,compiler,sans platine ARDUINO on: August 11, 2013, 11:19:22 am
Il y a aussi le simulateur Virtual Breadboard :

http://www.virtualbreadboard.com/

Je n'ai pas testé les nouvelles versions, mais les anciennes étaient pas mal buggées... Tout ne fonctionnait pas.
Pages: [1] 2 3 4