INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
11.01.2021, 18:57
Beitrag #25
RE: SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
Wenn Du uns später sagst mit welchem Kabel Du welche Entfernung gemeistert hast, haben wir wieder einen Wert. Wink

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2021, 19:14
Beitrag #26
RE: SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
(11.01.2021 18:48)Tommy56 schrieb:  Das dürfte von zu vielen Faktoren abhängen, die die Leitungskapazität und die Störeinstrahlungen betreffen, als dass sich da ein Hersteller festlegen würde.

Hallo Tommy,
völlig klar, war auch mehr als joke gemeint.
Ich habe mit anderen Extender bisher schon gute Erfahrungen sammeln können.
Bei mit läuft eine Verbindung über 30m Telefonkabel (J-Y(St)Y) mit den P82B715 schon etliche Jahre problemlos.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.01.2021, 17:18 (Dieser Beitrag wurde zuletzt bearbeitet: 13.01.2021 17:24 von Kanka.)
Beitrag #27
RE: SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
Hallo Hallo,
Eben kam der Briefträger. Habe das Teil gleich mal verbaut und es funktioniert einwandfrei, habe einen Sensorl an einem alten USB 2 Verlängerungskabel (3.4 Meter). Evlt werde ich das Kabel auch nochmal durch ein längeres Austauschen wenn die Steuerung fertig ist& ich sie verbaue.

Habe mal ein Foto angehängt wie mein bisheriger, provisorischer Aufbau ausschaut.
Mein oszilloskop habe ich gerade leider verlegt - sobald das wieder auftaucht schaue ich mal mit und ohne IC am ende des langen Kabels.
Das Foto musste ich extern hochladen - habe das hier irgendwie gerade nicht hinbekommen.


[Bild: PXL-20210113-161511056.jpg]


LG
Maxim
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.01.2021, 18:17
Beitrag #28
RE: SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
Prima, dass es jetzt funktioniert und danke für die Rückmeldung.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2021, 13:15
Beitrag #29
RE: SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
Hallo Zusammen,
Bin gerade dabei an dem Code weiterzuarbeiten, Teile davon habe ich aus Foren/ Anleitungen etc.. Aktuell ist mein Problem, dass der Sketch irgendwie in dem Teil Lüftersteuerung nicht rechnet. Die Taupunkttemperatur bleibt immer bei 0.00, stehe aber gerade total auf dem Schlauch, was da schief läuft.

Gerne auch einfach nur ein Hinweis, welche Zeile ich mir ansehen soll, oder ein Link unter dem ich mich nochmal Schlaumachen kann! Smile

LG
Maxim

Code:
#include <Arduino.h>
#include <U8x8lib.h>
#include <Wire.h>


U8X8_SH1107_SEEED_128X128_HW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);  //Display Config Wichtig!

#define PinINLuefter 8
#define PinOUTLuefter 9
#define Hmax 55
#define Tmin 10
#define dT 5

boolean INLuefter = true;

float dp;
float TemperaturAUS;
float TemperaturIN;
float FeuchtigkeitAUS;
float FeuchtigkeitIN;

void setup(void)
{


  pinMode(PinINLuefter, HIGH);
  digitalWrite(PinINLuefter, OUTPUT);
  pinMode(PinOUTLuefter, HIGH);
  digitalWrite(PinOUTLuefter, OUTPUT);


#define INNEN_ADDR 0x29                                                            //Sensoren I2C Adressen
#define AUSSEN_ADDR 0x30

  u8x8.setI2CAddress(0x3C * 2);                                                    //DisplayAdresse *2
  u8x8.begin();                                                                    //Beginnt Kommunikation Via I2C


  Wire.begin();
  Serial.begin(9600);

}

void loop(void)
{

  u8x8.setFont(u8x8_font_chroma48medium8_r);
  u8x8.drawString(0, 5, "FeuchIN");
  u8x8.drawString(0, 2, "TempIN");

  u8x8.setFont(u8x8_font_chroma48medium8_r);
  u8x8.drawString(0, 13, "FeuchAUS");
  u8x8.drawString(0, 10, "TempAUS");

  double FeuchtigkeitIN;
  double TemperaturIN;

  Wire.beginTransmission(INNEN_ADDR);
  Wire.requestFrom(INNEN_ADDR, 4);                                                  //Fordert Daten an, 4 Bytes
  if (Wire.available() == 4) {                                                      //Wenn verfuegbar, liesst 4 Bytes
    int b1 = Wire.read();
    int b2 = Wire.read();
    int b3 = Wire.read();
    int b4 = Wire.read();
    Wire.endTransmission();

    delay(500);

    int rawFeuchtigkeitIN = b1 << 8 | b2;                                          //Umrechnung SensorDaten zu Celsius, Prozent
    rawFeuchtigkeitIN =  (rawFeuchtigkeitIN &= 0x3FFF);
    FeuchtigkeitIN = 100.0 / pow(2, 14) * rawFeuchtigkeitIN;

    b4 = (b4 >> 2);
    int rawTemperaturIN = b3 << 6 | b4;
    TemperaturIN = 165.0 / pow(2, 14) * rawTemperaturIN - 40;


    Serial.print(FeuchtigkeitIN);
    Serial.print("% - TemperaturIN: ");
    Serial.println(TemperaturIN);
    Serial.println(dp);



    u8x8.setFont(u8x8_font_chroma48medium8_r);
    u8x8.setCursor(10, 2);
    u8x8.print(TemperaturIN);
    u8x8.setCursor(10, 5);
    u8x8.print(FeuchtigkeitIN);
  }

  double FeuchtigkeitAUS;
  double TemperaturAUS;

  Wire.beginTransmission(AUSSEN_ADDR);
  Wire.requestFrom(AUSSEN_ADDR, 4);                                                  //Fordert Daten an, 4 Bytes
  if (Wire.available() == 4) {                                                      //Wenn verfuegbar, liesst 4 Bytes
    int b1 = Wire.read();
    int b2 = Wire.read();
    int b3 = Wire.read();
    int b4 = Wire.read();
    Wire.endTransmission();


    delay(1000);

    int rawFeuchtigkeitAUS = b1 << 8 | b2;                                          //Umrechnung SensorDaten zu Celsius, Prozent
    rawFeuchtigkeitAUS =  (rawFeuchtigkeitAUS &= 0x3FFF);
    FeuchtigkeitAUS = 100.0 / pow(2, 14) * rawFeuchtigkeitAUS;

    b4 = (b4 >> 2);
    int rawTemperaturAUS = b3 << 6 | b4;
    TemperaturAUS = 165.0 / pow(2, 14) * rawTemperaturAUS - 40;


    u8x8.setFont(u8x8_font_chroma48medium8_r);
    u8x8.setCursor(10, 10);
    u8x8.print(TemperaturAUS);
    u8x8.setCursor(10, 13);
    u8x8.print(FeuchtigkeitAUS);
  }
}

void Automatik()
{
  Regelung();  // Automatikregelung
  if (INLuefter)
  {
    digitalWrite(PinINLuefter, LOW); // Einschalten
    digitalWrite(PinOUTLuefter, LOW); // Einschalten
  } else {
    digitalWrite(PinOUTLuefter, HIGH); // Ausschalten
    digitalWrite(PinINLuefter, HIGH);  // Ausschalten
  }
}


void AUS()
{
  digitalWrite(PinOUTLuefter, HIGH); // Ausschalten
  digitalWrite(PinINLuefter, HIGH);  // Ausschalten
  INLuefter = false;
}


//******Lüftersteuerung ********************************************************
void Regelung() {
  // Formeln von hier https://www.wetterochs.de/wetter/feuchte.html
  float a, b;
  if (TemperaturAUS >= 0) {
    a = 7.5;
    b = 237.3;
  } else {            // kälter als 0°C
    a = 7.6;
    b = 240.7;
  }

  // Sättigungsdampfdruck in hPa
  float sgp = 6.1078 * pow(10, (a * TemperaturAUS) / (b + TemperaturAUS));

  // Dampfdruck in hPa
  float gp = (FeuchtigkeitAUS / 100) * sgp;

  float v = log10(gp / 6.1078);

  // Taupunkttemperatur in °C
  dp = (b * v) / (a - v);

  if ((dp - dT) < TemperaturIN) {
    INLuefter = true;
  } else {                                       // Feuchte außen zu hoch im Vergleich zu innen
    INLuefter = false;
  }
  if (FeuchtigkeitAUS > Hmax)  INLuefter = false;            // Feuchte außen zu hoch, absolut
  if (TemperaturAUS < Tmin)  INLuefter = false;            // Temperatur außen zu niedrig

}


[Bild: PXL-20210115-103641647.jpg]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2021, 13:28
Beitrag #30
RE: SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
Woran genau machst du fest, dass er nicht rechnet ?

Du kannst sicher deinen Fehler selbst finden, wenn du in diese Funktion ein paar serielle Ausgaben einbaust und dir anzeigen lässt, wo noch was funktioniert und wo nicht.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2021, 14:01
Beitrag #31
RE: SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
Hallo,

Danke für deine Antwort& Geduld mit meinem Amateur Gefrage!
Habe mir den Wert "Taupunkttemperatur/ dp" seriell ausgegeben, der bleibt immer bei 0, was ja nicht sein kann. Habe den Wert für die jeweiligen aktuellen Temperatur/ Feuchtigkeitswerte per Hand gegengerechnet.

Irgendwie sehe ich in der seriellen Ausgabe die Werte für Temperatur und feuchtigkeit nur, wenn das "Serial.print();" gleich nach dem Sensor auslesen kommt. Habe mir eine "Print Funktion" eingebaut via:

Code:
void Plotter () {
  Serial.print(FeuchtigkeitIN); Serial.print('\t');
  Serial.println(TemperaturIN); Serial.print('\t');

  Serial.print(FeuchtigkeitAUS); Serial.print('\t');
  Serial.println(TemperaturAUS); Serial.print('\t');

  Serial.print(dp); Serial.print('\t');
  Serial.println();
}

So sind ebenfalls alle werte bei 0. auch die Messwerte, als seien diese nur in dem Code Abschnitt, wo diese gemessen werden verfügbar und nicht für den gesamten Sketch. Das verstehe ich nicht genau ist es nicht so, dass wenn ich den Wert oben via float stehen habe, dass er für den ganzen Sketch verfügbar ist, an jeder Stelle?


Code:
Wire.beginTransmission(AUSSEN_ADDR);
  Wire.requestFrom(AUSSEN_ADDR, 4);                                                  //Fordert Daten an, 4 Bytes
  if (Wire.available() == 4) {                                                      //Wenn verfuegbar, liesst 4 Bytes
    int b1 = Wire.read();
    int b2 = Wire.read();
    int b3 = Wire.read();
    int b4 = Wire.read();
    Wire.endTransmission();


    delay(1000);

    int rawFeuchtigkeitAUS = b1 << 8 | b2;                                          //Umrechnung SensorDaten zu Celsius, Prozent
    rawFeuchtigkeitAUS =  (rawFeuchtigkeitAUS &= 0x3FFF);
    FeuchtigkeitAUS = 100.0 / pow(2, 14) * rawFeuchtigkeitAUS;

    b4 = (b4 >> 2);
    int rawTemperaturAUS = b3 << 6 | b4;
    TemperaturAUS = 165.0 / pow(2, 14) * rawTemperaturAUS - 40;


    u8x8.setFont(u8x8_font_chroma48medium8_r);
    u8x8.setCursor(10, 10);
    u8x8.print(TemperaturAUS);
    u8x8.setCursor(10, 13);
    u8x8.print(FeuchtigkeitAUS);

  }


LG
und schoenen Sonntag!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.01.2021, 14:08
Beitrag #32
RE: SH1107 Oled Display und Multiplexer Feuchtigkeitssteuerung
Habs geschafft! Das problem war, dass ich oben float stehen hatte (also global) unten in der "Messschleife" war noch ein
Code:
double FeuchtigkeitIN;
  double TemperaturIN;

drin, wodurch wohl das float von oben überschrieben wurde Smile

LG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Oled Wire Frequenz huber5093 3 148 21.01.2021 23:45
Letzter Beitrag: hotsystems
  OLED Bildschirm Problem JoeIsFame 79 1.675 04.01.2021 06:41
Letzter Beitrag: Bitklopfer
  2,3" monochorme 128x32 Display Thor Wallhall 39 894 26.12.2020 16:42
Letzter Beitrag: Tommy56
  Problem Arduino Mega und Nextion Touch Display pds14 9 764 28.10.2020 11:20
Letzter Beitrag: hotsystems
  Rotary Encoder und I2C Display gleichzeitig verwenden BenGroll 3 853 27.07.2020 10:23
Letzter Beitrag: hotsystems
Wink Arduino TFT Display MEGA 2560 Samsuino 48 17.009 23.07.2020 15:45
Letzter Beitrag: sam_217
  GPS-Logger-OLED-UNO 4711engel 84 5.183 18.07.2020 20:56
Letzter Beitrag: 4711engel
  OLED Display Phänomen Sulawesi 36 3.296 02.06.2020 13:06
Letzter Beitrag: Sulawesi
  7 Segment Display mit Rotary Encoder SA154 2 688 26.05.2020 13:40
Letzter Beitrag: MicroBahner
  4 Zeilen im Display Modul 0.69" IIC I2C, aber wie? Christian_Moba-Arduino 7 1.090 17.05.2020 13:12
Letzter Beitrag: Christian_Moba-Arduino

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste