LM35 liefert falsche werten, wenn ENC28J60 oder qc1602a angeschlossen sind.

Guten Tag,
ich bin ein newbie in bereich Arduino und uC. Daher verzeiht mir bitte meine "dämliche" fragen :slight_smile:

Diese Woche habe ich mir ein Arduino Mega Kit gekauft und habe mich sofort ans basteln versucht.

Als ein hello world programm wollte ich das der Temperatur sensor LM35 die werte an ein php script schickt.

Dafür habe ich
LM35
QC1602
enc28j60
und 50k Poti verwendet

Meine Schaltung sieht so aus. wie im Attachment (im Fritzing Programm habe ich den enc28j60 leider nicht gefunden.)

Und das Sketch sieht bei mir so aus (noch ohne ein post request)

#include <SPI.h>
#include <UIPEthernet.h>
#include <LiquidCrystal.h>

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,11,11);
EthernetServer server(80);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
String HTTP_req;          
int LM35 = A0;
float SensorValue = 0;
float temperatur = 0;
float temp;
void setup()
{
  Ethernet.begin(mac, ip);  
  server.begin();           
  Serial.begin(9600);       
  lcd.begin(16, 2);
  lcd.print("hello, world!");
}

void loop()
{
  delay(1000);
  SensorValue = analogRead(LM35);
  temp = (5.0 * analogRead(LM35) * 100.0) / 1024;
  lcd.clear();
  lcd.print(temp);
  EthernetClient client = server.available();  
  if (client) {  
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {   
        char c = client.read(); 
        HTTP_req += c;  /
        if (c == '\n' && currentLineIsBlank) {
          client.println(F("HTTP/1.1 200 OK"));
          client.println(F("Content-Type: text/html"));
          client.println(F("Connection: close"));
          client.println();
          client.println(F("<!DOCTYPE html>"));
          client.println(F("<html>"));
          client.println(F("<head>"));
          client.println(F("<title>Temp</title>"));
          client.println(F("</head>"));
          client.println(F("<body>"));
          client.println(F("<h1>"));
          client.print(temp);
          client.print("</h1>");
          client.println(F("</body>"));
          client.println(F("</html>"));
          Serial.println(HTTP_req);
          HTTP_req = "";    
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      } 
    } 
    delay(1);      
    client.stop(); 
  } 
}

Allerdings habe ich ein Problem.
Sobald ich den ENC28J60 mit strom versorge, sehe ich Fantasie werte auf dem Display. Der Sensor meint ich habe 40 oder mehr grad im Raum.
Ohne den ENC28J60 funktioniert der Sernsor wie immer.
Wo genau habe ich ein Fehler gemacht? Die Kabel habe ich noch mal alle überprüft.

LM 35 neigt auch schon mal sich aufzuschwingen pack mal einen 100nF Kondensator an Out gegen Masse und einen 5-10kOhm Widerstand parrallel zum Kondensator dann könnte das Ergebniss besser sein.
Gruß
DerDani

Das Ethernetshield verbraucht einiges an Strom. Dadurch bricht die Versorgungsspannung leicht ein. Da die Versorgungsspannung 5V als Referenzspannung genommen wird hast Du einen Fehler in der Auswertung der Spannung des LM35.
temp = (5.0 * analogRead(LM35) * 100.0) / 1024;
Du kannst die internen 1,1V Referenzspannung nehmen oder mittels secret voltmeter die Versorgungsspannung messen und den Fehler korrigieren.

http://code.google.com/p/tinkerit/wiki/SecretVoltmeter

Grüße Uwe

Stimmt Uwe mit der internen 1,1V Refrence kannst du mit dem LM35 0-110°C messen.
Kondensator würde ich trotzdem machen (in manchen Besielen im Datahsheet zu sehen).
Gruß
Der Dani

Vielen Dank für die Antworten.
Leider habe ich momentan keine Kondensatoren, sondern nur das was beim Kit dabei war.

AnalogReference SecretVoltmeter funktionieren auch.
Allerdings habe ich gemerkt. Dass die Hintergrundbeleuchtung bei dem lc display auch schuld an den werdet hat.
Sobald die Hintergrundbeleuchtung aus ist, zeigt es wieder niedrigere werte an.

vivianmeally:
Vielen Dank für die Antworten.
Leider habe ich momentan keine Kondensatoren, sondern nur das was beim Kit dabei war.

AnalogReference SecretVoltmeter funktionieren auch.
Allerdings habe ich gemerkt. Dass die Hintergrundbeleuchtung bei dem lc display auch schuld an den werdet hat.
Sobald die Hintergrundbeleuchtung aus ist, zeigt es wieder niedrigere werte an.

Also ist es ein Problem einer Spannungsänderun durch einen Höheren Verbrauch.
Grüße Uwe