Arduino Uno R3 Akvaryum Ph + Derece

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek

    hocam merhaba.

    Anladığım kadarı ile sistem basamak basamak çalışıyor.

    lcd.setCursor(0, 0); bu kodda Cursor'ı 0. satır, 0. haneye koy demiş.

    lcd.print("pH Val:"); sonra git o cursondan sonra bunları yaz demiş. Toplamda boşlukta dahil 7 tane sembol var.

    lcd.setCursor(8, 0); sonra Cursor'u 8. haneye koymuş

    lcd.print(ph_act); sonra ph değerini yazdırmış.

     

    Sende şey yapabilirsin, bilmiyorum çalışır mı denemen lazım hocam (:

    lcd.setCursor(0, 1); 0. hane 1. satır.

    lcd.print("°C Val:"); Celcius sembolu iste. O yuvarlak calismayabilir. Denemen lazım yine (:

    lcd.setCursor(8, 1); Sıradan cursoru kaydırdım işte.

    lcd.print(temp); Sıcaklık değişkenin temp diye anladım ama hatalı da olabilirim.

     

    Bu üstteki kodlar işini görür bence


    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    risk53
    risk53's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    Bu ph olayı ile alâkalı benimde bir sorunum var.

    Her şeyi doğruca ayarladım ph değerlerini bardaklara 4-7-10 ph sıvılarını koyarak doğru şekilde alıyorum.

    Ama aynı sistemi götürüp 1500 litre su bulunan içinde Resistans ve Dagıç Su Pompası olan tanka koyunca değerler sapıtıyor.

    1 - Dalgıç Su pompası elektrik kaçırıyor olabilirmi ?

    2- Resistans Elektrik Kaçırıyor olabilirmi ?

    3- Kullandığım ph probunun ölçebileceği max. su miktarı olabilirmi ?

    Dalgıç su pompası ve Resistansa gelen kabloları tamamen elktrikten kesip denedim yinede değerler bozuluyor.

    Sebebi ne olabilir.

     


    #....
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tekuna
    tekuna's avatar
    Kayıt Tarihi: 21/Nisan/2008
    Erkek

    En sonunda halletim, çalışan malzeme resimdeki gibi sadece DS18S20 derece sensörü 4.7 kohm direnç ile anakart 2 ye bağlı, yani ph sensör üzerinde değil, kod ekte akvaryumcu arkadaşlara hayırlı olsun..

     

     

    #include <Wire.h>
    #include <OneWire.h>
    #include <LiquidCrystal_I2C.h>

    int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

    //Temperature chip i/o
    OneWire ds(DS18S20_Pin); // on digital pin 2

    LiquidCrystal_I2C lcd(0x27, 16, 2);

    float calibration_value = 21.34;
    int phval = 0;
    unsigned long int avgval;
    int buffer_arr[10],temp;
    void setup()
    {
    Serial.begin(9600);
    lcd.init();
    lcd.begin(16, 2);
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print(" Akvaryum ");
    lcd.setCursor(0, 1);
    lcd.print(" pH + Derece ");
    delay(2000);
    lcd.clear();
    }
    void loop() {
    for(int i=0;i<10;i++)
    {
    buffer_arr[i]=analogRead(A0);
    delay(30);
    }
    for(int i=0;i<9;i++)
    {
    for(int j=i+1;j<10;j++)
    {
    if(buffer_arr[i]>buffer_arr[j])
    {
    temp=buffer_arr[i];
    buffer_arr[i]=buffer_arr[j];
    buffer_arr[j]=temp;
    }
    }
    }
    avgval=0;
    for(int i=2;i<8;i++)
    avgval+=buffer_arr[i];
    float volt=(float)avgval*5.0/1024/6;
    float ph_act = -5.70 * volt + calibration_value;
    lcd.setCursor(0, 0);
    lcd.print("pH Val:");
    lcd.setCursor(8, 0);
    lcd.print(ph_act);
    delay(1000);

    {
    float Temp = getTemp();
    Serial.println(Temp);
    lcd.setCursor(0, 1);
    lcd.print("Temp : ");
    lcd.print(Temp);
    delay(100); //just here to slow down the output so it is easier to read

    }
    }


    float getTemp(){
    //returns the temperature from one DS18S20 in DEG Celsius

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

    if ( !ds.search(addr)) {
    //no more sensors on chain, reset search
    ds.reset_search();
    return -1000;
    }

    if ( OneWire::crc8( addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    return -1000;
    }

    if ( addr[0] != 0x10 && addr[0] != 0x28) {
    Serial.print("Device is not recognized");
    return -1000;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44,1); // start conversion, with parasite power on at the end

    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); //using two's compliment
    float TempSum = tempRead / 16;

    return TempSum;

    }

     


    Türk Genci; Devrimlerin ve Cumhuriyetin sahibi ve bekçisidir....
Toplam Hit: 1851 Toplam Mesaj: 14
arduino uno r3 akvaryum