• Du musst dich registrieren, bevor du Beiträge verfassen kannst. Klicke auf Jetzt registrieren!, um den Registrierungsprozess zu starten. Registrierte User surfen werbefrei, können Suchen durchführen und sehen die volle Darstellung des Forums mit vielen anderen Unterforen!!!

WLAN Thermometer Micro

Für die Werte der Widerstände und Kondensatoren am ADC und dem IC selbst kannst du auch einfach in den Schaltplan der Mini schauen:
http://www.grillsportverein.de/forum/threads/wlan-thermometer-mini.250253/
@ hat das ja alles super dokumentiert. :thumb2:

Der R17 gehört zum Tiefpassfilter (zusammen mit den Kondensatoren am Versorgungseingang des ADC), welcher die externe Referenzspannung an der Mini ersetzt. Je nachdem wie deine Versorgungsspannung aussieht, brauchst du den oder nicht bzw. kannst ihn anpassen, kommt auch auf deine gewünscht Genauigkeit der Temperaturanzeige an. An meinem Probeaufbau habe ich derzeit weder Tiefpass noch externe Referenzspannung und ich seh den Einfluss hochfrequenter Störungen nur dann, wenn kein Fühler in der Buchse eingesteckt ist.
 
Hallo...

Den Plan vom Mini habe tatsaechlich sogar schon als Vergleich herangezogen, aber aus irgendeinem Grund hatte ich da einen groben Denkfehler. Klar, das sollte gehen. Danke fuer den Hinweis.

Im Mini sind auch die beiden Kondensatoren vor dem ADC, da sind das jeweils 100nF. Ein Widerstand der R17 entsprechen wuerde ist da nicht, deshalb fragte ich. Wenn man den weglassen kann: um so besser. :-)


Ciao,
Asbest.
 
Die beiden Kondensatoren am ADC sind Stützkondensatoren für den IC, die solltest du auch einbauen, zusammen mit R17 (und den anderen Widerständen am ADC, glaub ich) wird daraus auch noch ein Tiefpass. Da ich selbst noch nicht mit einem R17 an der Schaltung gearbeitet habe, verät dir @grosseruser ja vll noch seine Konstellation aus R17 und C9/10. Grundsätzlich findest du im Netz aber auch Informationen zu "Tiefpass ADC".
 
Als R17 verwende ich 470 Ohm, der Wert ist aber eher unkritisch. Das wird erst wenn man mit PWM einen Ausgang ansteuert wichtig. Sollte es in so einem Fall zu Störungen kommen, gilt für Widerstand und Kondensator "Viel hilft Viel". :)
Ich bin im moment mit einem anderen Projekt beschäftigt, einer LED-Aquariumbeleuchtung die über eine Weboberfläche bedient wird. Dummerweise dachte ich, dass es eine einfache Sache und schnell erledigt ist...
 
Danke, ich plane den dann einfach mal mit 470 Ohm ein. Schaden kann's ja nicht.

Meinen Aquariencomputer habe ich schon vor ein paar Jahren gebaut, da war Arduino noch keine Option. Das ist noch ein ATmega 644. Leider war LED-Beleuchtung da auch noch keine Option, deshalb steht irgendwann auch da ein Neubau an... aber dann vermutlich auf Basis eines Raspberries...
 
Bin gerade erst aus einem längeren Urlaub zurück. Hatte mir in der Zwischenzeit ein paar neue ESP zum Spielen schicken und eine neue Paltine zum Rumprobieren fertigen lassen:

WP_20160622_001.jpg


Die Komponenten auf der Platine können entweder von einem ESP201 oder einem Pi angesteuert werden. Erweiterbar ist die Platine um ein SD-Karten-Modul und einen RTC. An der Platine anschließbar sind Temperaturfühler, Potis, Drehschalter und das Nextion-Display. Des Weiteren habe ich die IOs des ESP durch Portexpander erweitert.

Im Moment bin ich aber noch am Zusammenlöten wie man sieht.

WP_20160622_003 - Kopie.jpg

WP_20160622_005.jpg


Das Ganze dient mir erstmal als Plattform um etwas mehr mit dem ESP rumspielen zu können. Falls jemand Interesse am Basteln hat, ich hab noch 2-3 Platinen übrig. Ist aber wirklich nur was für Bastler.

Gruß
Steffen
 

Anhänge

  • WP_20160622_001.jpg
    WP_20160622_001.jpg
    145,7 KB · Aufrufe: 1.143
  • WP_20160622_003 - Kopie.jpg
    WP_20160622_003 - Kopie.jpg
    178,3 KB · Aufrufe: 1.107
  • WP_20160622_005.jpg
    WP_20160622_005.jpg
    134,4 KB · Aufrufe: 1.113
Schreib mir deine Adresse per PN, dann schicke ich dir eine zu. Wenn ich dazu komme, schick ich dir auch noch eine Reichelt-Bestelliste mit den wichtigsten Teilen, falls du so Grundmaterial wie Widerstände, Transistoren, Leisten und Dioden nicht eh zu Hause hast.
 
Firmwareupdate per Webinterface (oder direkt per Internet)

Servus @grosseruser, hast du vielleicht eine Quelle für mich, wie sich ein Online-Firmwareupdate des ESP durchführen lässt? Würde mich demnächst gern etwas mit dem Thema beschäftigen.
Wie läuft es ansonsten mit der Micro?
 
Nutzt du NodeMCU als Firmware? Falls ja, mach es lieber per Hand. Online hat das bei mir zumindest noch nie funktioniert.
Nimm den NodeMCU-Flasher und schon hast du in wenigen Sekunden eine aktuelle Basis.
 
Ok, unter Arduino IDE wird es schwer. Oder versuch mal, bei einem fahrenden Auto die Reifen zu wechseln;)
Dafür ist der Kram einfach zu einfach gestrickt. Und günstig dazu:D
 
Hallo an alle Tüftler!

Seit Wochen arbeite ich an der selben Lösung wie ihr ohne zu merken, dass es euch gibt.
:suchet:

Leider will es bei mir einfach nicht klappen den MCP3208 über SPI und dem ESP8266-07 an zu sprechen.

Über einen Arduino klappt es ohne Probleme. Ich denke also das meine Schaltung funktioniert.

Könntet ihr euren aktuellen Code mit mir teilen?
Ich denke wie ihr, das der ESP besser für die Aufgabe geeignet sein sollte als ein überdimensionierter RPI.

Mir reichen die Funktionen Thermometer, Summer und Display. Wobei letzteres nicht unbedingt sein muss. Das Thermometer könnte die Daten auch per MQTT an meine Haussteuerung senden.

Danke und weiter so!

:gs-rulez:

Gruß,
Marco
 
Könntet ihr euren aktuellen Code mit mir teilen?

Ich habe dir mal einen Auszug aus meinem Code bzgl. der Temperaturmessung angehängt. SS für den SPI am MCP ist GiPO 15. Den Timer kannst du auch raus nehmen, in dem du die Abfrage in die loop() übernimmst. Da mein Code immer voller wird, find ich die Timer aber sehr angenehm um den Ablauf zu steuern. Wahrscheinlich musst du dir die "SimpleTimer"-Library noch runterladen. Ich hoffe ich habe beim kürzen nichts wichtiges rausgeworfen. Falls es nicht läuft, kannst du mir auch mal deinen Code schicken, vll entdecke ich den Fehler.


Code:
/* ESP mit MCP3208
* 
*/
// ------------------------------------------------
// LIBRARIES laden

#include <ESP8266WiFi.h>        
#include <SPI.h>                // Kommunikation mit ADW
#include <SimpleTimer.h>        // Ablaufsteuerung

// ------------------------------------------------
// TIMER
SimpleTimer timer;

// -------------------------------------
// VARIABLES
#define ADCPin  15
float tem[5] = {0,0,0,0,0};


// ------------------------------------------------
void setup() {

  delay(10);

  // MCP3208
  pinMode(ADCPin, OUTPUT);  // ADW
  digitalWrite(ADCPin,HIGH);

  SPI.begin();
  Serial.begin(9600);
  timer.setInterval(2000, shortReading);     // Temperaturen
 
}

// ------------------------------------------------

void loop() {
 
  timer.run();

}


// -------------------------------------------------------------------------------
// Temperaturmessungen am ADC und LM
void shortReading() {
 
  tem[0] = calcT(readCH(0),4);
  tem[1] = calcT(readCH(1),1);
  tem[2] = calcT(readCH(2),1);
  tem[3] = calcT(readCH(3),1);
 
  Serial.println(getTemp());
}


// -----------------------------------------------------------------
// ADC auslesen
int readCH(int CHANNEL)
{
  int msb;
  int lsb;

  //Channel must be from 0 to 7 for MCP3208
  //uint16_t
  int commandBytes = B00000100;         //Start bit
  commandBytes |= (1<<1);   //Config mode bit for this channel
  commandBytes  = (commandBytes<<8);     
  commandBytes |= (CHANNEL<<6);       //3 bits of channel number

  digitalWrite(ADCPin,LOW);
 
    SPI.transfer((commandBytes>>8) & 0xff);   //send data

    msb = SPI.transfer((byte)commandBytes & 0xff) & B00001111;
    lsb = SPI.transfer(0x00);
   
  digitalWrite(ADCPin,HIGH);;
 
  // cast before shiting the byte
  return ((int) msb) <<8 | lsb;

}

// -----------------------------------------------------------------
// Temperaturen berechnen
float calcT(uint32_t r, uint32_t typ){
  float Rt = 0;
  float Rmess = 47;
  float v = 0;
  float erg = 0;
  float a = 0.00334519;
  float b = 0.000243825;
  float c = 0.00000261726;
  float Rn = 220;
 
  if (typ==1){ // Maverik
    Rn = 1000;
    a = 0.003358;
    b = 0.0002242;
    c = 0.00000261;
  }else if (typ==2){ // Fantast-Neu
    a = 0.00334519;
    b = 0.000243825;
    c = 0.00000261726;
    Rn = 220;
  }else if (typ==4){ // NTC 5k
    Rn = 5;
    a = 0.00335389;
    b = 0.00025756;
    c = 0.0000025024; 
  }
 
  Rt = Rmess*((4096.0/(4096-r)) - 1);
  v = log(Rt/Rn);
  erg = (1/(a + b*v + c*v*v)) - 273;
  return (erg>-10)?erg:0x00;

}

// -------------------------------------------------------------------------------
String getTemp(){

  String te = "T:";
  te += String(tem[0],1);
  te +=":";
  te += String(tem[1],1);
  te +=":";
  te += String(tem[2],1);
  te +=":";
  te += String(tem[3],1);
  te +=":";

  return(te);
 
}
 
Hey super danke für den Code!

Scheinbar habe ich bei der Verkabelung ein Problem oder der Chip ist durchgebrannt. Muss das ganze noch mal neu aufbauen und mit nem Arduino auf Funktion testen.
 
Ich verzweifel...mit einem Arduino bekomme ich bei gleicher Schaltung die Werte gelesen. Der ESP will einfach nicht.
Ich habe in meiner Zeichnung GPIO15 genommen. Probiert habe ich aber mit 16 und 15 (Code natürlich geändert).

Hast Du noch eine Idee?

Grüße,
Marco

ESP8266 MCP3208 2016-07-13.PNG
 

Anhänge

  • ESP8266 MCP3208 2016-07-13.PNG
    ESP8266 MCP3208 2016-07-13.PNG
    25,7 KB · Aufrufe: 1.171
  • ESPMCP-Target.zip
    ESPMCP-Target.zip
    7,9 KB · Aufrufe: 171
Zurück
Oben Unten