lape
  LAPE e-log  ELOG logo
Message ID: 98     Entry time: Thu Jun 13 19:25:41 2013
Author: Saullo 
Type: Configuration 
Category: Aividades do LAPE 
Subject: Arduino + LabView + Sensor SHT15 

Hoje foi feita a tomada de dados do sensor SHT15 usando o arduino, para ter os dados em um arquivo, foi usado o programa "Gobetwino".

 

http://playground.arduino.cc/Interfacing/GoBetwino

http://www.mikmo.dk/gobetwino.html

 

foi feito um software em labview para gerenciar os dados do arquivo.

 

 

 

 

Attachment 1: Gobetwino.rar  1.209 MB
Attachment 2: sht15.ino  3 kB  | Hide | Hide all
//Based of the wiring code at http://wiring.org.co/learning/basics/humiditytemperaturesht15.html

int SHT_clockPin = 9;  // pin used for clock
int SHT_dataPin  = 8;  // pin used for data
char buffer[5];

void setup(){
  Serial.begin(9600); // open serial at 9600 bps
  
  //Serial.print("#S|SAVEDATE|[");
  //Serial.print("Temperature(C)   Humidade(%)  ");
  //Serial.println("]#");
  
  
}

void loop(){
  //these can take a bit to get the values (100ms or so)
  //float temperature = getTemperature();
  //float humidity = getHumidity();
  char temperature = getTemperature();
  char humidity = getHumidity();


  Serial.print("#S|SAVEDATE|[");
//  Serial.print("  ");
  Serial.print(itoa((temperature), buffer, 10));
  Serial.print("\t");
  Serial.print(itoa((humidity), buffer, 10));
  Serial.println("]#");
  
//  Serial.print(temperature);
//  Serial.print("  ");
//  Serial.println(humidity);

}

float getTemperature(){
  //Return Temperature in Celsius
  SHT_sendCommand(B00000011, SHT_dataPin, SHT_clockPin);
  SHT_waitForResult(SHT_dataPin);

  int val = SHT_getData(SHT_dataPin, SHT_clockPin);
  SHT_skipCrc(SHT_dataPin, SHT_clockPin);
  return (float)val * 0.01 - 40; //convert to celsius
}

float getHumidity(){
  //Return  Relative Humidity
  SHT_sendCommand(B00000101, SHT_dataPin, SHT_clockPin);
  SHT_waitForResult(SHT_dataPin);
  int val = SHT_getData(SHT_dataPin, SHT_clockPin);
  SHT_skipCrc(SHT_dataPin, SHT_clockPin);
  return -4.0 + 0.0405 * val + -0.0000028 * val * val; 
}


void SHT_sendCommand(int command, int dataPin, int clockPin){
  // send a command to the SHTx sensor
  // transmission start
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  digitalWrite(dataPin, HIGH);
  digitalWrite(clockPin, HIGH);
  digitalWrite(dataPin, LOW);
  digitalWrite(clockPin, LOW);
  digitalWrite(clockPin, HIGH);
  digitalWrite(dataPin, HIGH);
  digitalWrite(clockPin, LOW);

  // shift out the command (the 3 MSB are address and must be 000, the last 5 bits are the command)
  shiftOut(dataPin, clockPin, MSBFIRST, command);

  // verify we get the right ACK
  digitalWrite(clockPin, HIGH);
  pinMode(dataPin, INPUT);

  if (digitalRead(dataPin)) Serial.println("ACK error 0");
  digitalWrite(clockPin, LOW);
  if (!digitalRead(dataPin)) Serial.println("ACK error 1");
}


void SHT_waitForResult(int dataPin){
  // wait for the SHTx answer
  pinMode(dataPin, INPUT);

  int ack; //acknowledgement

  //need to wait up to 2 seconds for the value
  for (int i = 0; i < 1000; ++i){
    delay(2);
    ack = digitalRead(dataPin);
    if (ack == LOW) break;
  }

  if (ack == HIGH) Serial.println("ACK error 2");
}

int SHT_getData(int dataPin, int clockPin){
  // get data from the SHTx sensor

  // get the MSB (most significant bits)
  pinMode(dataPin, INPUT);
  pinMode(clockPin, OUTPUT);
  byte MSB = shiftIn(dataPin, clockPin, MSBFIRST);

  // send the required ACK
  pinMode(dataPin, OUTPUT);
  digitalWrite(dataPin, HIGH);
  digitalWrite(dataPin, LOW);
  digitalWrite(clockPin, HIGH);
  digitalWrite(clockPin, LOW);

  // get the LSB (less significant bits)
  pinMode(dataPin, INPUT);
  byte LSB = shiftIn(dataPin, clockPin, MSBFIRST);
  return ((MSB << 8) | LSB); //combine bits
}

void SHT_skipCrc(int dataPin, int clockPin){
  // skip CRC data from the SHTx sensor
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  digitalWrite(dataPin, HIGH);
  digitalWrite(clockPin, HIGH);
  digitalWrite(clockPin, LOW);
}


Attachment 3: labview_arduino_sensor.vi  16 kB
ELOG V2.9.2-2455