Pages: 1 2 [3] 4   Go Down
Author Topic: Projet: Station meteo  (Read 11368 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Réponse à Mattmouthe

Pour pouvoir t'aider, peux-tu m'indiquer le type de photo-résistance.
Quel est ton schéma de montage ? Quel tension ? donne le plus de détails possible.
J'essaierai de voir ce que je peux faire.

Merci
A+
Cordialement


Logged

France
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

On travaille sur du 9V (pile) et avec une photo-résistance:
Diamètre : 4,1 mm
Epaisseur capteur : 18 mm
Ecartement entre pattes : 2,5 mm
Longueur : 36 mm
Resistance : 20 à 100 Kohms à 10 lux
Temps de réponse : 20 ms
Pic de sensibilité spectrale : 550 nm
Tension maximale : 150 Volts à 0 lux
Puissance : 100 mW (à 25°C)

Sinon, pour le schéma de montage, je suis entrain de réfléchir mais je sais pas trop comment le faire!
Je pense faire des test dehors et en fonction des valeurs qu'on a en Volt, afficher sur un écran LCD par exemple ensoleillé. C'est pour ne pas faire la conversion volt-->lumens
Je te remercie
Mattmouthe
« Last Edit: March 14, 2012, 11:43:26 am by Mattmouthe » Logged


Le zèle a tué plus d'hommes que la paresse.

Proverbe corse

Offline Offline
Edison Member
*
Karma: 9
Posts: 1642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bon je viens de commander ceci http://www.baroland.com/indexlink.php?id=leguide&rub=sm&gad=CJnp4akCEggN1G2ST_3pJRjR66P_AyCp3o4T&page=p1140.html
je connais ce matos pour avoir la station depuis quelques années chez moi, fiable et précis.
je pourrais donc comparer avec ma station pour faire les réglages smiley-wink
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote

Interessant, quelle différence avec http://www.baroland.com/indexlink.php?id=leguide&rub=sm&gad=CJnp4akCEggN1G2ST_3pJRjR66P_AyCp3o4T&page=p1140.html ?

++
Logged

Offline Offline
Edison Member
*
Karma: 9
Posts: 1642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

y a pas de différence, c'est le même lien  smiley-mr-green
simplement, tu peux prendre soit l'anémo, soit le pluvio, par contre pas de ref pour commander l'anémo à hélice, dommage, car avec celui ci, tu prends vraiment le vent dans la direction sans avoir de perturbations créées par le toit par exemple smiley-wink
je vais démonter mon boitier rf pour voir le nombre de fils, car j'ai un doute, 2 - 3 - 4 fils, je sais plus.
par contre, attention, il y a un pointage a faire avec la girouette smiley-wink, une petite fleche indiquant le nord de mémoire, sinon, c'est la misère.
je dois avoir le schéma interne, ayant été revendeur de ces stations.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir, Mattmouthe,

Je suppose que la photorésistance est du type LDR03.
La résistance des photorésistance varie certes en fonction de l'éclairement : elle est à 1000 kilo-ohms dans l'obscurité, mais 1 ou 2 kilo-ohms à 1000 lux. Malheureusement cette variation n'est pas proportionnelle, elle n'est pas linéaire.

Par ailleurs une photorésistance n'est pas un générateur de courant, ce n'est qu'une résistance. Pour pouvoir l'utiliser il faut l'intégrer dans un montage qui permette de mesurer une tension au borne d'une résistance, comme un diviseur de tension : résistance de 10 k-ohms + LDR

Par ailleurs l'entrée analogique d'un Arduino est limitée à 5V

A mon avis utiliser une photorésistance pour mesurer un éclairement c'est très difficile, très aléatoire. Avec une photorésistance, la conversion de la tension en lux, c'est un casse-tête.

Personnellement pour mesurer le rayonnement solaire j'utilise une vraie sonde solaire : RG100 de Solems.
Par contre, tu trouveras aussi ton bonheur chez Hobby-Boards : http://www.hobby-boards.com/catalog/product_info.php?cPath=22&products_id=82

A+
Henri
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
y a pas de différence, c'est le même lien  

C'est bien, je voulais voir si tu suivais !  smiley-grin smiley-grin
En  fait ce n'est pas la même page mais le lien est identique. La différence est qu'ils ne sont pas fait pour les mêmes stations.
Quelle est la technologie de ces capteurs, comment vas tu les interfacer avec l'arduino ?

A+
Logged

France
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je pensais justement pour éviter la conversion de regarder à midi en plein soleil ce que donne comme mesure la photo-résistance. Après au alentour de 6h regarder ce que ça donne... et ainsi de suite pour tous les temps que je veux avoir dans mon affichage. c'est à dire:
  • nuageux
  • ensoleillé
  • couvert
  • nuit
  • pas de mesure
C'est pas très pro, mais pour ce que je veux faire ça suffit!
Est ce que tu penses que ça va marcher?
Logged


Le zèle a tué plus d'hommes que la paresse.

Proverbe corse

Offline Offline
Edison Member
*
Karma: 9
Posts: 1642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
y a pas de différence, c'est le même lien  

C'est bien, je voulais voir si tu suivais !  smiley-grin smiley-grin
En  fait ce n'est pas la même page mais le lien est identique. La différence est qu'ils ne sont pas fait pour les mêmes stations.
Quelle est la technologie de ces capteurs, comment vas tu les interfacer avec l'arduino ?

A+


j'ai pas retrouvé la doc encore, je sécurisais le server d'un pote.
de mémoire, la girouette travaille par secteur, il y a 3 rangées de "contacts" en demi lune, et un aimant sur la girouette, le calcul se fait à partir de ca.
pour l'anémo, c'est un capteur comme sur les vélo avec un aimant, donc par impulsion.
je vais démonter mon bloc anemo/girouette pour vérifier, depuis le temps que c'est sur le toit, une vérif s'impose de toute facon, je prendrais des photos si je peux les démonter.
Logged

Offline Offline
Edison Member
*
Karma: 9
Posts: 1642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
je viens de recevoir l'anémo/giro TX20 ce matin.
par contre après pas mal de recherches, je suis tomber sur le cablage dans la partie espagnole.
mais ne parlant pas la langue de don diego de la vegas, j'aurais besoin de quelques explications sur les branchements et code.
ca se passe ici http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1284720711/0

je pige un peu le cablage, mais j'ai de gros doutes
Code:
Tx-20 <-------------------------> Arduino
1 - serial I/O - Resistenza 8K - Pin Digitale
2 - VCC 3.3v ------------------- 3.3V
3 - Reg. CE   -(to gnd)-\
4 - GND        ------------+----- GND
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
je viens de recevoir l'anémo/giro TX20 ce matin.
par contre après pas mal de recherches, je suis tomber sur le cablage dans la partie espagnole.
mais ne parlant pas la langue de don diego de la vegas, j'aurais besoin de quelques explications sur les branchements et code.
ca se passe ici http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1284720711/0

je pige un peu le cablage, mais j'ai de gros doutes
Code:
Tx-20 <-------------------------> Arduino
1 - serial I/O - Resistenza 8K - Pin Digitale
2 - VCC 3.3v ------------------- 3.3V
3 - Reg. CE   -(to gnd)-\
4 - GND        ------------+----- GND

qu'est ce qui te perturbe ?  smiley-mr-green
le 3 ?
Logged

Offline Offline
Edison Member
*
Karma: 9
Posts: 1642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Artouste, toujours dans les trucs loufoques smiley

déjà le 1 pour moi je verrais ca sur la 3 ou 5-6-9-10-11, me trompes je?
et oui le 3 car sur la station normale, rien n'est relié à la terre.

ce qui nous donnerait en fait
tx20-----------------arduino
1----------------------R 8K sur la 3
2----------------------3.3v
3----------------------GND arduino
4----------------------idem
Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4175
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Artouste, toujours dans les trucs loufoques smiley

déjà le 1 pour moi je verrais ca sur la 3 ou 5-6-9-10-11, me trompes je?
et oui le 3 car sur la station normale, rien n'est relié à la terre.

ce qui nous donnerait en fait
tx20-----------------arduino
1----------------------R 8K sur la 3
2----------------------3.3v
3----------------------GND arduino
4----------------------idem

de ce que j'ai compris
pour le 1 c'est code dependant (voir ton pin sur ton arduino qui reçoit les données selon le programme, pour la 8K c'est pas critique =4.7 ou 10 K ça fera la "rue michel  smiley-mr-green )
pour le 3 c'est juste un "enable"  (activation/autorisation de sortir des data) par tirage au GND )

d’après ce que j'ai compris , l'anemo est conçu à l'origine pour être connecté derrière un autre équipement "propriétaire"
le 3 est surement utilisé dans cet équipement pour sélectionner le dispositif à ecouter.



« Last Edit: March 17, 2012, 07:42:17 am by Artouste » Logged

Offline Offline
Edison Member
*
Karma: 9
Posts: 1642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

après pas mal de tests hier et quelques heures d'efferalgan, jamais les même datas ???????
si je connecte la 4 à la masse, ca coupe tout, plus de datas???????
j'ai bien trouvé un code sur le forum, mais pas le résultat escompté.

le code en question qui me parait zarbi en plus, sachant que si le DTR n'est  pas relié à GND l'émission data se fait toutes les 2s (cf : http://www.john.geek.nz/2011/07/la-crosse-tx20-anemometer-communication-protocol/)

Code:
int dataPin = 2;
int bitlenght = -1;
char data[41];
 
 
void setup() {
  Serial.begin(9600);
  Serial.print("\n\nInitializing...\n");
  Serial.print("startpin:");
  Serial.println(digitalRead(dataPin));
  pinMode(dataPin, INPUT);
}

void loop() {
  collectdata3();
  delay(1000);   
}


int collectdata3(void){
   if (bitlenght <0){
      bitlenght = 1220;//getbitlenght2();

   }
 
  pinMode(dataPin, OUTPUT);

  digitalWrite(dataPin, HIGH);
  delay(100);
  digitalWrite(dataPin, LOW );
  delay(500);
  pinMode(dataPin, INPUT);


  while(digitalRead(dataPin) == LOW){
  } 
  //wait slave start signal
  while(digitalRead(dataPin) == HIGH){
  }
  while(digitalRead(dataPin) == LOW){
  }
 


 

  for (int i=0 ; i<42 ; i++){

    data[i] = (digitalRead(dataPin) == LOW)? 48 : 49 ;
    delayMicroseconds(bitlenght);
  }

  showdatasimple();
  return 0;
}


void showdatasimple(){
  Serial.println("");

//HEAD
  for (int i =0 ; i< 5 ; i++){
    Serial.print( ((data[i] == 48)? 0 : 1) );
  }
 
  Serial.print(" ");
 
//WINDDIR
  for (int i =5 ; i< 9 ; i++){
    Serial.print( ((data[i] == 48)? 0 : 1) );
  }
 

 
  Serial.print(" ");
 
//WIND SPEED
  for (int i =9 ; i< 18 ; i++){
    Serial.print( ((data[i] == 48)? 0 : 1) );
  }
 
  Serial.print(" ");
 
//WIND SPEED+3
  for (int i =18 ; i< 21 ; i++){
    Serial.print( ((data[i] == 48)? 0 : 1) );
  } 
 
  Serial.print(" ");
 
  //CC
  for (int i =21 ; i< 25 ; i++){
    Serial.print( ((data[i] == 48)? 0 : 1) );
  }
 
  Serial.print(" ");
 
  //WIND DIR  NEGATEIVE
  for (int i =25 ; i< 29 ; i++){
    Serial.print( ((data[i] == 48)? 0 : 1) );
  }
 
    Serial.print(" ");
 
  //WIND SPEED NEGATIVE
  for (int i =29 ; i< 38 ; i++){
    Serial.print( ((data[i] == 48)? 0 : 1) );
  }
   
   Serial.print(" ");
   
    //WIND SPEED NEGATIVE+3
  for (int i =38 ; i< 41 ; i++){                  //BUG A MON AVIS 41 au lieu de 42
    Serial.print( ((data[i] == 48)? 0 : 1) );
  }
}
Logged

Offline Offline
Edison Member
*
Karma: 9
Posts: 1642
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
un petit up sur l'anemo/girouette avec un TX23
depuis ce matin, je me bats, mais je tiens le bon bout, reste a trouver le moyen de récupérer la vitesse de l'anémo.
donc pour ceux que ca pourrait intéresser voici le code, fait de bric et de broc, mais qui affiche bien la direction (N,NNE,ENE,etc...)

Code:
void delay2(unsigned long ms);
int collectdata(void);
void showdatasimple();
int dataPin = 2;
int bitlenght = -1;
char data[41];
String Wind_Direction;
int DTR=8;

void setup() {
  Serial.begin(9600);
  Serial.print("\n\nInitializing...\n");
  Serial.print("Data Pin: ");
  Serial.println(digitalRead(dataPin));
  pinMode(dataPin, INPUT);
  pinMode(DTR, OUTPUT);
 
 
}

void delay2(unsigned long ms){
unsigned long start = micros();
while (micros() - start <= ms);
}

void loop() {
  collectdata();
    pinMode(DTR, INPUT);
  digitalWrite(DTR, HIGH);
delay(100);
  digitalWrite(DTR, LOW);
    delay(1400);   
  pinMode(DTR, OUTPUT);
 
}


int collectdata(void){
   if (bitlenght <0){
      bitlenght = 1230;//getbitlenght2() 1230;
   }
 
  pinMode(dataPin, OUTPUT);
  digitalWrite(dataPin, HIGH);
   // digitalWrite(DTR, HIGH);
  delay(5);
 
  digitalWrite(dataPin, LOW );
   // digitalWrite(DTR, LOW );
  delay(500);
   
  pinMode(dataPin, INPUT);

  while(digitalRead(dataPin) == LOW){

  } 
  while(digitalRead(dataPin) == HIGH){

  }
  while(digitalRead(dataPin) == LOW){

  }
 
  for (int i=0 ; i<42 ; i++){

    data[i] = (digitalRead(dataPin) == LOW)? 41 : 42 ;
    delay2(bitlenght);
  }

  showdatasimple();
  return 0;
}

void showdatasimple(){
  Serial.println("");
 
  String Wind_Dir_PatternStr = "b";
  String Wind_Dir_DescStr = "";
  for (int i =8 ; i> 4 ; i--){
    Wind_Dir_PatternStr += ((data[i] == 41)? 0 : 1);
  }

  Serial.print(Wind_Dir_PatternStr);
  Serial.print(" = ");
 
  if (Wind_Dir_PatternStr == "b0000") { Serial.print("N"); }
  if (Wind_Dir_PatternStr == "b0001") {Serial.print("NNE");}
  if (Wind_Dir_PatternStr == "b0010") { Serial.print("NE"); }
  if (Wind_Dir_PatternStr == "b0011") { Serial.print("ENE"); }
  if (Wind_Dir_PatternStr == "b0100") { Serial.print("E"); }
  if (Wind_Dir_PatternStr == "b0101") { Serial.print("ESE"); }
  if (Wind_Dir_PatternStr == "b0110") { Serial.print("SE");}
  if (Wind_Dir_PatternStr == "b0111") { Serial.print("SSE"); }
  if (Wind_Dir_PatternStr == "b1000") { Serial.print("S"); }
  if (Wind_Dir_PatternStr == "b1001") { Serial.print("SSO");}
  if (Wind_Dir_PatternStr == "b1010") {Serial.print("SO");}
  if (Wind_Dir_PatternStr == "b1011") { Serial.print("OSO"); }
  if (Wind_Dir_PatternStr == "b1100") { Serial.print("O"); }
  if (Wind_Dir_PatternStr == "b1101") { Serial.print("ONO"); }
  if (Wind_Dir_PatternStr == "b1110") { Serial.print("NO"); }
  if (Wind_Dir_PatternStr == "b1111") { Serial.print("NNO");}

  Serial.println(Wind_Dir_DescStr);
 

  Serial.println("");

//HEAD
  for (int i =0 ; i< 5 ; i++){
    Serial.print( ((data[i] == 41)? 0 : 1) );
  }
 
  Serial.print(" ");
 
//WINDDIR
  for (int i =5 ; i< 9 ; i++){
    Serial.print( ((data[i] == 41)? 0 : 1) );
  }
 

 
  Serial.print(" ");
 
//WIND SPEED
  for (int i =9 ; i< 18 ; i++){
    Serial.print( ((data[i] == 41)? 0 : 1) );
  }
 
  Serial.print(" ");
 
//WIND SPEED+3
  for (int i =18 ; i< 21 ; i++){
    Serial.print( ((data[i] == 41)? 0 : 1) );
  } 
 
  Serial.print(" ");
 
  //CC
  for (int i =21 ; i< 25 ; i++){
    Serial.print( ((data[i] == 41)? 0 : 1) );
  }
 
  Serial.print(" ");
 
  //WIND DIR  NEGATEIVE
  for (int i =25 ; i< 29 ; i++){
    Serial.print( ((data[i] == 41)? 0 : 1) );
  }
 
    Serial.print(" ");
 
  //WIND SPEED NEGATIVE
  for (int i =29 ; i< 38 ; i++){
    Serial.print( ((data[i] == 41)? 0 : 1) );
  }
   
   Serial.print(" ");
   
    //WIND SPEED NEGATIVE+3
  for (int i =38 ; i< 41 ; i++){
    Serial.print( ((data[i] == 41)? 0 : 1) );
  }
}




ce qui donne sur la console
Code:
11011 0001 000000000 000 0001 1110 111111111 111

b0000 = N



11011 0000 000000000 000 0000 1111 111111111 111

b0001 = NNE



11011 1000 000000000 000 1000 0111 111111111 111

b0010 = NE



11011 0100 000000000 000 0100 1011 111111111 111

b0011 = ENE



11011 1100 000000000 000 1100 0011 111111111 111

b0100 = E



11011 0010 000000000 000 0010 1101 111111111 111

b0111 = SSE



11011 1110 000000000 000 1110 0001 111111111 111

b1100 = O



11011 0011 000000000 000 0011 1100 111111111 111

b0000 = N



11011 0000 000000000 000 0000 1111 111111111 111
Logged

Pages: 1 2 [3] 4   Go Up
Jump to: