LM35 Sıcaklık sorunu !!
  • Ev otomasyonu yapıyorum tüm bağlantıları yaptım herşey çalışıyor ancak bir tane röleyi yada servoyu çalıştırsam bile sıcaklık artıyor. Hiçbirşey çalışmıyorken sıcaklık doğru gösteriyor. Sorun nerede tam çözemedim. Kodlar ise şu şekilde;

    #include < SoftwareSerial.h>
    SoftwareSerial mySerial(10, 11);

    #include < Servo.h>
    Servo myservo;
    int pos = 0;

    float temperature;
    float voltage_rating;

    int temperaturePin = 0;

    int fan = 9;

    #define Lamp1 4
    #define Lamp2 5
    #define Lamp3 6
    #define Lamp4 7

    char val;
    String statusLamp1,statusLamp2,statusLamp3,statusLamp4;

    void setup() {
    Serial.begin(9600);
    pinMode(Lamp1,OUTPUT);
    pinMode(Lamp2,OUTPUT);
    pinMode(Lamp3,OUTPUT);
    pinMode(Lamp4,OUTPUT);
    pinMode(fan, OUTPUT);
    myservo.attach(3);
    mySerial.begin(9600);

    }

    void loop() {
    voltage_rating = analogRead(temperaturePin);
    voltage_rating = (voltage_rating/1023)*5000;
    temperature = voltage_rating/10.0;

    if (temperature<30)<br />{
    digitalWrite ( fan , LOW );
    }
    if (temperature>30){
    digitalWrite ( fan , HIGH );
    }
    Serial.print("temperature : ");
    Serial.print(temperature);
    Serial.println(" degree");

    delay(500);

    if( mySerial.available() >0 ) {
    val = mySerial.read();
    Serial.println(val);
    {
    while (Serial.available() > 0){
    }
    if( val == 'a' ) {
    digitalWrite(Lamp1,HIGH); statusLamp1="4"; }
    else if( val == 'b' ) {
    digitalWrite(Lamp2,HIGH); statusLamp2="5"; }
    else if( val == 'c' ) {
    digitalWrite(Lamp3,HIGH); statusLamp3="6"; }
    else if( val == 'd' ) {
    digitalWrite(Lamp4,HIGH); statusLamp4="7"; }
    else if( val == 'e' ) {
    digitalWrite(Lamp1,HIGH); statusLamp1="4";
    digitalWrite(Lamp2,HIGH); statusLamp2="5";
    digitalWrite(Lamp3,HIGH); statusLamp3="6";
    digitalWrite(Lamp4,HIGH); statusLamp4="7";
    }
    else if( val == 'f' ) {
    for(pos = 0; pos < 90; pos += 1) {
    myservo.write(pos);
    delay(5);
    }
    }
    //Lamp is off
    else if( val == 'A' ) {
    digitalWrite(Lamp1,LOW); statusLamp1="4"; }
    else if( val == 'B' ) {
    digitalWrite(Lamp2,LOW); statusLamp2="5"; }
    else if( val == 'C' ) {
    digitalWrite(Lamp3,LOW); statusLamp3="6"; }
    else if( val == 'D' ) {
    digitalWrite(Lamp4,LOW); statusLamp4="7"; }
    else if( val == 'E' ) {
    digitalWrite(Lamp1,LOW); statusLamp1="4";
    digitalWrite(Lamp2,LOW); statusLamp2="5";
    digitalWrite(Lamp3,LOW); statusLamp3="6";
    digitalWrite(Lamp4,LOW); statusLamp4="7";
    }
    else if( val == 'F' ) {
    for(pos = 90; pos>=0; pos-=1);
    myservo.write(pos);
    delay(5);
    }else if( val == 'G' )
    {
    delay(500);

    mySerial.println(statusLamp1+statusLamp2+statusLamp3+statusLamp4+"J"); //delay(500);

    val=' ';
    }

    }
    }}

  • kodlari incelemedim ama aklima gelen en olasi sorun akim problemi, arduinoyu yada kompanenetleri ayri-guclu (yuksek akimli) bir kaynaktan beslemeye calisin
  • lm35 dandık bır sensor verılen voltajdakı değişimler sensorun oluşturdugu degerleri çok etkılıyor. guclu bır besleme kullanın. role cektıgınde devreye ne sokuyorsanız gucunuzu dusuruyor ve hatalı calısmaya baslıyor sensor
  • lm35 pc den yani usb den beslendiğinde 23 derece gösteriyordu, pilden besleyinde 26 derece gösteriyordu, aradaki farka bak sen düşün, lm35 kullanma.
  • Hocam, bende lm35 kullanıyordum aynı problem bende de vardı. Onun yerine DS18B20 kullandım problem ortadan kalktı. Muhtemelen voltaj sorun oluyordu.
  • Dediğiniz gibi sensörü 18b20 işle değiştirdim sorun ortadan kalktı ama bu seferde bluetooth modulünden kontrol sağlayamıyorum. Kodlarda bir hata var sanırım ama ben çözemedim yardımcı olursanız sevinirim.

    #include < SoftwareSerial.h>
    SoftwareSerial mySerial(10, 11);

    #include < Servo.h>
    Servo myservo;
    int pos = 0;

    #include < OneWire.h>

    int DS18S20_Pin = 2;

    OneWire ds(DS18S20_Pin);

    int fan = 9;

    #define Lamp1 4
    #define Lamp2 5
    #define Lamp3 6
    #define Lamp4 7

    char val;
    String statusLamp1,statusLamp2,statusLamp3,statusLamp4;

    void setup() {
    Serial.begin(9600);
    pinMode(Lamp1,OUTPUT);
    pinMode(Lamp2,OUTPUT);
    pinMode(Lamp3,OUTPUT);
    pinMode(Lamp4,OUTPUT);
    pinMode(fan, OUTPUT);
    myservo.attach(3);
    mySerial.begin(9600);

    }

    void loop() {
    float temperature = getTemp();
    Serial.print("Degree: ");
    Serial.println(temperature);
    delay(1000);

    }

    float getTemp(){

    byte data[12];
    byte addr[8];

    if ( !ds.search(addr)) {
    ds.reset_search();
    return -1000;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44,1);

    byte present = ds.reset();
    ds.select(addr);
    ds.write(0xBE); // Read Scratchpad

    for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
    }

    ds.reset_search();

    byte MSB = data[1];
    byte LSB = data[0];

    float tempRead = ((MSB << 8) | LSB);<br /> float TemperatureSum = tempRead / 16;

    return TemperatureSum; Bu kısmı kaldırdığımda bluetooth u kullanabiliyorum ama sıcaklık -1000 gösteriyor sürekli.

    if( mySerial.available() >0 ) {
    val = mySerial.read();
    Serial.println(val);
    {
    while (Serial.available() > 0){
    }
    if( val == 'a' ) {
    digitalWrite(Lamp1,HIGH); statusLamp1="4"; }
    else if( val == 'b' ) {
    digitalWrite(Lamp2,HIGH); statusLamp2="5"; }
    else if( val == 'c' ) {
    digitalWrite(Lamp3,HIGH); statusLamp3="6"; }
    else if( val == 'd' ) {
    digitalWrite(Lamp4,HIGH); statusLamp4="7"; }
    else if( val == 'e' ) {
    digitalWrite(Lamp1,HIGH); statusLamp1="4";
    digitalWrite(Lamp2,HIGH); statusLamp2="5";
    digitalWrite(Lamp3,HIGH); statusLamp3="6";
    digitalWrite(Lamp4,HIGH); statusLamp4="7";
    }
    else if( val == 'f' ) {
    for(pos = 0; pos < 90; pos += 1) {
    myservo.write(pos);
    delay(5);
    }
    }
    //Lamp is off
    else if( val == 'A' ) {
    digitalWrite(Lamp1,LOW); statusLamp1="4"; }
    else if( val == 'B' ) {
    digitalWrite(Lamp2,LOW); statusLamp2="5"; }
    else if( val == 'C' ) {
    digitalWrite(Lamp3,LOW); statusLamp3="6"; }
    else if( val == 'D' ) {
    digitalWrite(Lamp4,LOW); statusLamp4="7"; }
    else if( val == 'E' ) {
    digitalWrite(Lamp1,LOW); statusLamp1="4";
    digitalWrite(Lamp2,LOW); statusLamp2="5";
    digitalWrite(Lamp3,LOW); statusLamp3="6";
    digitalWrite(Lamp4,LOW); statusLamp4="7";
    }
    else if( val == 'F' ) {
    for(pos = 90; pos>=0; pos-=1);
    myservo.write(pos);
    delay(5);
    }else if( val == 'G' )
    {
    delay(500);

    mySerial.println(statusLamp1+statusLamp2+statusLamp3+statusLamp4+"J"); //delay(500);

    val=' ';
    }
    }
    } }

  • Arkadaşlar lütfen yardım sorunu çözemiyorum..
  • hocam sen ilk projeye geri dön lm35 in önune bi tane, girişine ve çıkışına uygun kapasitör bağladığın lm7805i koy. servo, alıcıları başka kaynaktan besle (gndler ortak olmak şartı ile) role gibi alıcıları transistorle sur

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.