Hallo Liebe Community,
ich habe mir für ein Projekt einen SHT85 Sensor von Sensirion zugelegt und möchte diesen über einen Arduino UNO auslesen. In der Vergangenheit habe ich bereits mit anderen Modellen von Sensirion gearbeitet und das hat auch fehlerfrei funktioniert.
Zu meinem Problem:
Ich habe eine Testschaltung mit dem Sensor und einem UNO aufgebaut und mir das Beispielprogramm von "Rob Tillaart" aufgespielt, jedoch geht es nicht weiter als über "void setup" hinaus.
Die Schaltung habe ich mehrfach überprüft (aber bei 4 Kabeln kann man sicher auch nicht so viel Falsch machen?!)
Hat jemand von euch eine Idee woran es liegen könnte.
Zur Hilfe hier der Code und ein Auszug aus dem Seriellen Monitor.
VG und Danke!
//
// FILE: SHT85_demo.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo
// URL: https://github.com/RobTillaart/SHT85
//
// TOPVIEW SHT85 (check datasheet)
// +-------+
// +-----\ | SDA 4 -----
// | +-+ ----+ GND 3 -----
// | +-+ ----+ +5V 2 -----
// +-----/ | SCL 1 -----
// +-------+
#include "SHT85.h"
#define SHT85_ADDRESS 0x44
uint32_t start;
uint32_t stop;
SHT85 sht;
void setup()
{
Serial.begin(115200);
//Serial.println(__FILE__);
Serial.print("SHT_LIB_VERSION: \t");
Serial.println(SHT_LIB_VERSION);
Wire.begin();
sht.begin(SHT85_ADDRESS);
Wire.setClock(100000);
uint16_t stat = sht.readStatus();
Serial.print(stat, HEX);
Serial.println();
}
void loop()
{
start = micros();
sht.read(); // default = true/fast slow = false
stop = micros();
Serial.print("\t");
Serial.print((stop - start) * 0.001);
Serial.print("\t");
Serial.print(sht.getTemperature(), 1);
Serial.print("\t");
Serial.println(sht.getHumidity(), 1);
delay(100);
}
// -- END OF FILE --
kolaha
March 10, 2022, 8:48am
2
hast du die Adresse überprüft?
Der I2C ist nicht / nicht richtig verdrahtet.
Las nen Scanner auf den I2C los.
#include<Wire.h>
void setup(){
Wire.begin();
Serial.begin(115200);
Serial.println("I2C Scanner ist bereit.");
Serial.println();
}
void loop() {
scanI2C(100000);
scanI2C(400000);
// scanI2C(1000000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
// scanI2C(3400000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
// scanI2C(5000000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
Serial.println("****************************");
Serial.println();
delay(3000);
}
void scanI2C(long frequency){
String normal = "standard mode (100 kHz):";
String fast = "fast mode (400 kHz):";
String fastPlus = "fast mode plus (1 MHz):";
String highSpeed = "high speed mode (3.4 MHz):";
String ultraSpeed = "ultra fast mode (5.0 MHz):";
String defaultStr = " !!!!! Unzulässige Frequenz !!!!!";
bool error = true;
bool addressFound = false;
Serial.print("Scanne im ");
switch(frequency){
case 100000:
Serial.println(normal);
break;
case 400000:
Serial.println(fast);
break;
case 1000000:
Serial.println(fastPlus);
break;
case 3400000:
Serial.println(highSpeed);
break;
case 5000000:
Serial.println(ultraSpeed);
break;
default:
Serial.println(defaultStr);
break;
}
Wire.setClock(frequency);
for(int i=1; i<128; i++){
Wire.beginTransmission(i);
error = Wire.endTransmission();
if(error == 0){
addressFound = true;
Serial.print("0x");
Serial.println(i,HEX);
}
}
if(!addressFound){
Serial.println("Keine Adresse erkannt");
}
Serial.println();
}
kolaha
March 10, 2022, 8:56am
4
Kriccemis:
SHT85
Das Modul hat keine Pullup Wiederstände. Du sollst sie selbst anhängen.
Also die Pull-Ups habe ich mit verbaut. Aber nochmals danke für den Hinweis.
Ich habe jetzt auch nochmal mit einem Multimeter akustisch die Verbindungen geprüft und habe da auch keinen Fehler gefunden.
Den Scanner habe ich auch getestet mit folgendem Ergebnis:
Da ist was auf dem Bus faul.
Das steckenbleiben kenn ich nur, wenn die Versorgungsspannung an den I2C-Teilnehmern fehlt.
uwefed
March 10, 2022, 10:07am
7
Ich kann Dir sagen man kann. Selbst schon gemacht.
Wo, (an welchen Pins) hast Du am UNO SCl und SDA angeschlossen?
Mach mal ein gutes Foto.
Grüße Uwe
Tut mir leid für dich schlechte Kabelwahl!
kolaha
March 10, 2022, 11:41am
9
Wenn auch nach zusammen löten nicht geht, dann Modul kaputt.
Ich habe auch zwei weitere auf den Adapter gesteckt, dass Problem bleibt bestehen.
Manchmnal bekomme ich auch für kurze Zeit etwas ausgegeben.
Aber nicht brauchbar.
fony
March 10, 2022, 2:57pm
11
Mach mal Foto von unten, und die Lötstellen. Es ist kaum zu glauben, außer man hat einmal + - vertauscht, auch nur kurz, dann ist er hinüber
uwefed
March 10, 2022, 6:05pm
12
Könnte ein Wackelkontakt in den Kabeln oder im Steckbrett sein.
Grüße Uwe
uwefed
March 10, 2022, 9:41pm
13
Möchtest Du es mal mit dieser Anleitung / Sketch / Bibliothek versucht?
https://create.arduino.cc/projecthub/sd9martins/sht85-arduino-temperature-and-humidity-sensor-6e727d
The Arduino programming language Reference, organized into Functions, Variable and Constant, and Structure keywords.
Grüße Uwe
uwefed:
mit dieser Anleitung
Wenn der I2C Scanner stecken bleibt - genauso wie das Example - ist was in der Versorgung faul.
Da ab und an ja anscheinend was geht, ist das ein reines Hardwareproblem auf Seiten des TO.
Also ich habe heute morgen nochmal einen neuen Adapter gelötet. Jetzt geht auch alles.
Vielen Dank nochmal für die zahlreichen Hilfestellungen.
VG
system
Closed
September 7, 2022, 7:57am
16
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.