Σελίδα 1 από 2 1 2 ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 1 έως 10 από 20

Θέμα: Θερμομετρο Ψυγειου με ds18b20 και LCD

  1. #1
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή Θερμομετρο Ψυγειου και χωρου με 4 ds18b20 και LCD

    Καλο μας μηνα καταρχην

    Ο γειτονας ειχε προβλημα με το ψυγειο του.
    Βαλαμε νεο χρονικο αλλα επρεπε να το παρακολουθεις συνεχεια να δεις αν θελει αποψυξη

    Οποτε εφτιαξα αυτο μαζι με τον γειτονα





    Στο αριστερο μερος της lcd εχουμε την θερμοκρασια απο την συντηρηση και την καταψυξη
    Στο δεξια μερος φαινεται η εσωτερικη και η εξωτερικη θερμοκρασια ( ο αισθητηρας δεν εχει τοποθετηθει ακομα)

    αν η θερμοκρασια συντηρησης ειναι κατω απο 7,50°C ( tempSintirisiLimit = 7.50 ) τοτε ειναι αποδεκτο και αναβει το πανω πρασινο led

    αν η θερμοκρασια καταψυξης ειναι κατω απο -10,00°C ( tempKatapsixiLimit = -10.0 ) τοτε ειναι αποδεκτο και αναβει το κατω πρασινο led

    αλλιως θα αναψει το αντιστοιχο κοκκινο led

    αν καποιο led αναβει επι 20 λεπτα τοτε θα ακουστει για ενα δευτερολεπτο το beeper

    αν παραμεινει αναμμενο για αλλη μια ωρα τοτε θα ξανακουστει για ενα δευτερολεπτο το beeper

    και παει λεγοντας, εως οτου επανελθει η θερμοκρασια εντος οριων

    επισης στελνει απο το Uart (Ic Pin 3) στα 9600 τα δευτερολεπτα τα οποια εχουν περασει απο την στιγμη που ξεκινησε το προγραμμα και τις 4 θερμιοκρασιες καπως ετσι

    250;5,56;-14,68;20,30;16,45
    οποτε ενα copy-paste στο notepad και αποθηκευση ως data.csv

    μετα το ανοιγουμε με το excel και εχουμε τις γραφικες για την καθε θερμοκρασια σε συναρτηση με τον χρονο

    καπως ετσι:



    *ειναι δυο στην συντηρηση και ενα στην καταψυξη

    ------------------------------------------------------------------------------

    εδω ειναι το σχηματικο


    ic pins:
    6 - ds18b20 data
    12 - lcd backlight
    13 - beeper
    23 - φωτοαντισταση
    24 -
    25 - πρασινο συντηρησης
    26 - πρασινο καταψυξης
    27 - κοκκινο συντηρησης
    28 - κοκκινο καταψυξης
    *ειχα stock atmega328P αλλα το προγραμμα ειναι μονο 11KB
    *στο Pin23 μπαινει φωτοαντισταση για να ρυθμιζει την φωτεινοτητα της LCD ωστε να μην ενοχλει αυτους που επισκεπτονται το ψυγειο τη νυχτα

    και το pcb:



    και εδω η διατρητη που εκανα εγω κοιτωντας το pcb





    τα Led μαζι με την φωτοαντισταση :





    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη herctrap : 02-04-11 στις 13:43

  2. 2 μέλη ευχαρίστησαν τον herctrap για αυτό το χρήσιμο μήνυμα:

    Hary Dee (12-10-11), minusplus (18-05-11)

  3. #2
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή

    και στο κουτι απο τα τροφοδοτικα βρηκα αυτο:





    το καλωδιο για τα θερμομετρα περασε μεσα απο το σωληνακι για την εξαγωγη των νερων απο την καταψυξη



    εκανε μια σταση στο στηριγμα για το πανω ραφι



    και εφυγε απο τον αεραγωγο για επανω (οταν αδειασει θα βαλω φωτγογραφια)

    τωρα το κουτι το εφτιαξε ο γειτονας απο κοντρα πλακε





    το πλαστικο θα κολληθει στην πλατη



    σκαψιμο για το πετσακι



    σκαψιμο για το μεντεσε (αν και ηθελε δυο)

    τωρα ολα αυτα θα ντυθουν με μονοκοτ στο επομενο ποστ

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη herctrap : 02-04-11 στις 13:41

  4. Ένα μέλος ευχαρίστησε τον herctrap για αυτό το χρήσιμο μήνυμα:

    Hary Dee (12-10-11)

  5. #3
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή









    κολληθηκε και το πλαστικο στην πλατη



    αν και το εκανε βιαστικα ειναι τελειο και πειρε μονο 15-20 λεπτα
    πολυ πιο γρηγορο απο το βαψιμο

    και μερικες ακομα

    εδω ειναι μετα την αποψυξη της καταψυξης:



    με μονοκοτ στερεωθηκε και η φωτοαντισταση:


    το ποστ εχει χωρο για μια ακομα:

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη herctrap : 01-04-11 στις 16:33

  6. Ένα μέλος ευχαρίστησε τον herctrap για αυτό το χρήσιμο μήνυμα:

    Hary Dee (12-10-11)

  7. #4
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή

    σχηματικο και board για το eagle μαζι με το hex:
    _1_Wire_thermometer_with_LCD.zip

    Fuses:
    low Fuse: E2
    High Fuse: D9
    Extended Fuse: FD
    και το Source Code: (Δυστιχως ακομα τα πολυπλοκα τα γραφω με τον compiler του Arduino)

    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <LiquidCrystal.h>

    //********** Hardware Parameters **********
    #define LightSensor A0
    #define Beeper 7
    #define Sensor 4
    #define LcdBackLight 6 // needs to be PWM
    #define GreenSintirisi A2
    #define RedSintirisi A4
    #define GreenKatapsixi A3
    #define RedKatapsixi A5
    #define LCD_RS 13
    #define LCD_E 14
    #define LCD_D4 9
    #define LCD_D5 10
    #define LCD_D6 11
    #define LCD_D7 8

    //********** Software Parameters **********
    #define IntroDelay 200
    #define HardwareIntroDelay 500
    #define IntroDelay 250
    #define HardwareIntroDelay 500
    #define LowVoltageRead 0
    #define HighVoltageRead 1023
    #define LowLcdBacklightPwmn 50
    #define HighLcdBacklightPwmn 255

    #define TEMPERATURE_PRECISION 12

    float tempSintirisiLimit = 7.50;
    float tempKatapsixiLimit = -10.0;

    float tempSintirisi;
    float tempKatapsixi;
    float tempExwteriki1;
    float tempExwteriki2;

    int beepCount;

    LiquidCrystal lcd(LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
    OneWire oneWire(Sensor);
    DallasTemperature sensors(&oneWire);
    DeviceAddress sintirisi, katapsixi, exwteriki1, exwteriki2;

    byte Top[8] = {
    B11111,
    B11111,
    B11111,
    B11111,
    B11111,
    B11111,
    B10001,
    B10001,
    };

    byte Bottom[8] = {
    B10001,
    B10001,
    B10001,
    B10001,
    B11111,
    B11111,
    B11111,
    B11111,
    };

    void setup()
    {
    pinMode(LightSensor,INPUT);
    pinMode(GreenSintirisi,OUTPUT);
    pinMode(RedSintirisi,OUTPUT);
    pinMode(GreenKatapsixi,OUTPUT);
    pinMode(RedKatapsixi,OUTPUT);
    pinMode(LcdBackLight,OUTPUT);
    pinMode(Beeper,OUTPUT);

    Serial.begin(9600);
    lcd.begin(16, 2);
    sensors.begin();

    lcd.createChar(0, Top);
    lcd.createChar(1, Bottom);

    sensors.setResolution(sintirisi, 12);
    sensors.setResolution(katapsixi, 12);
    sensors.setResolution(exwteriki1, 12);
    sensors.setResolution(exwteriki2, 12);

    sensors.getAddress(sintirisi, 0);
    sensors.getAddress(katapsixi, 1);
    sensors.getAddress(exwteriki1, 2);
    sensors.getAddress(exwteriki2, 3);

    HardwareIntro();

    Intro();

    Sensors_Info();

    lcd.clear();
    }

    void loop()
    {
    analogWrite(LcdBackLight,map(analogRead(LightSensor),LowVoltageRead,HighVoltageRead,HighL cdBacklightPwmn,LowLcdBacklightPwmn));
    GetTemps();
    printTemperature();
    Set_Leds_Alarm();
    Serial_output();
    delay(500);
    }

    void HardwareIntro()
    {
    digitalWrite(LcdBackLight,1);
    digitalWrite(GreenSintirisi,1);
    delay(HardwareIntroDelay);
    digitalWrite(LcdBackLight,0);
    digitalWrite(GreenSintirisi,0);
    digitalWrite(RedSintirisi,1);
    delay(HardwareIntroDelay);
    digitalWrite(LcdBackLight,1);
    digitalWrite(RedSintirisi,0);
    digitalWrite(RedKatapsixi,1);
    delay(HardwareIntroDelay);
    digitalWrite(LcdBackLight,0);
    digitalWrite(RedKatapsixi,0);
    digitalWrite(GreenKatapsixi,1);
    delay(HardwareIntroDelay);
    digitalWrite(LcdBackLight,1);
    digitalWrite(GreenKatapsixi,0);
    delay(HardwareIntroDelay);
    digitalWrite(GreenSintirisi,1);
    digitalWrite(RedSintirisi,1);
    digitalWrite(RedKatapsixi,1);
    digitalWrite(GreenKatapsixi,1);
    digitalWrite(Beeper,1);
    delay(HardwareIntroDelay);
    digitalWrite(GreenSintirisi,0);
    digitalWrite(RedSintirisi,0);
    digitalWrite(RedKatapsixi,0);
    digitalWrite(GreenKatapsixi,0);
    digitalWrite(Beeper,0);
    delay(HardwareIntroDelay);
    }

    void Intro()
    {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" Thermometer V1 ");
    delay(IntroDelay);
    lcd.setCursor(2, 1);
    lcd.print("b");
    delay(IntroDelay);
    lcd.print("y");
    lcd.print(" ");
    delay(IntroDelay);
    lcd.print("h");
    delay(IntroDelay);
    lcd.print("e");
    delay(IntroDelay);
    lcd.print("r");
    delay(IntroDelay);
    lcd.print("c");
    delay(IntroDelay);
    lcd.print("t");
    delay(IntroDelay);
    lcd.print("r");
    delay(IntroDelay);
    lcd.print("a");
    delay(IntroDelay);
    lcd.print("p");
    delay(IntroDelay);
    }

    void Sensors_Info()
    {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(sensors.getDeviceCount(), DEC);
    lcd.print(" Sensors Found");

    lcd.setCursor(0, 1);
    printAddress(sintirisi);
    delay(1000);
    lcd.setCursor(0, 1);
    printAddress(katapsixi);
    delay(1000);
    lcd.setCursor(0, 1);
    printAddress(exwteriki1);
    delay(1000);
    lcd.setCursor(0, 1);
    printAddress(exwteriki2);
    delay(1000);
    }

    void printAddress(DeviceAddress deviceAddress)
    {
    for (uint8_t i = 0; i < 8; i++)
    {
    if (deviceAddress[i] < 16) lcd.print("0");
    lcd.print(deviceAddress[i], HEX);
    }
    }

    void GetTemps()
    {
    sensors.requestTemperatures();
    tempSintirisi = sensors.getTempC(sintirisi);
    tempKatapsixi = sensors.getTempC(katapsixi);
    tempExwteriki1 = sensors.getTempC(exwteriki1);
    tempExwteriki2 = sensors.getTempC(exwteriki2);
    }

    void printTemperature()
    {
    lcd.setCursor(0, 0);
    lcd.print(tempSintirisi,2);
    lcd.print((char)B11011111);
    lcd.print("C ");
    lcd.setCursor(0, 1);
    lcd.print(tempKatapsixi,2);
    lcd.print((char)B11011111);
    lcd.print("C ");
    lcd.setCursor(9, 0);
    lcd.print(tempExwteriki1,2);
    lcd.print((char)B11011111);
    lcd.print("C ");
    lcd.setCursor(9, 1);
    lcd.print(tempExwteriki2,2);
    lcd.print((char)B11011111);
    lcd.print("C ");
    }

    void Set_Leds_Alarm()
    {
    if ( tempSintirisi < tempSintirisiLimit ){
    digitalWrite(GreenSintirisi,1);
    digitalWrite(RedSintirisi,0);
    }
    else
    {
    digitalWrite(GreenSintirisi,0);
    digitalWrite(RedSintirisi,1);
    }
    if ( tempKatapsixi < tempKatapsixiLimit ){
    digitalWrite(GreenKatapsixi,1);
    digitalWrite(RedKatapsixi,0);
    }
    else
    {
    digitalWrite(GreenKatapsixi,0);
    digitalWrite(RedKatapsixi,1);
    }

    if ( beepCount == 900 )digitalWrite(Beeper,HIGH);
    else digitalWrite(Beeper,LOW);

    if ( ( tempSintirisi > tempSintirisiLimit ) || ( tempKatapsixi > tempKatapsixiLimit ) ){
    beepCount++;
    }
    else{
    beepCount = 0;
    }
    if ( beepCount > 3599 ) beepCount = 0;
    }

    void Serial_output()
    {
    Serial.print((millis()/1000));
    Serial.print(";");
    Serial.print(int(tempSintirisi));
    Serial.print(",");
    Serial.print(int(( tempSintirisi - int(tempSintirisi) ) * 100));
    Serial.print(";");
    Serial.print(int(tempKatapsixi));
    Serial.print(",");
    Serial.print(int(( tempKatapsixi - int(tempKatapsixi) ) * 100));
    Serial.print(";");
    Serial.print(int(tempExwteriki1));
    Serial.print(",");
    Serial.print(int(( tempExwteriki1 - int(tempExwteriki1) ) * 100));
    Serial.print(";");
    Serial.print(int(tempExwteriki2));
    Serial.print(",");
    Serial.print(int(( tempExwteriki2 - int(tempExwteriki2) ) * 100));
    Serial.println();
    }
    απλα κατεβαζετε το arduino IDE απο εδω:
    http://arduino.cc/en/Main/Software

    και μετα κανετε αυτο

    για να μπορει να λειτουργησει ο uC σωστα στα 8MHz

    copy paste το source στον IDE

    κανετε οτι αλλαγες θελετε

    και κρατωντας πατημενο το Lshift παταμε το Verify (Play) στον IDE

    στο κατω μερος εχουμε το hex
    C:\Users\herctrap\AppData\Local\Temp\build32717139 78698056734.tmp\_1_Wire_thermometers_with_LCD.cpp. hex

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη herctrap : 02-04-11 στις 13:21

  8. Ένα μέλος ευχαρίστησε τον herctrap για αυτό το χρήσιμο μήνυμα:

    Hary Dee (12-10-11)

  9. #5
    Μέλος Το avatar του χρήστη ikaros1978
    Όνομα
    Βαγγελης
    Εγγραφή
    Dec 2007
    Περιοχή
    θεσσαλονικη
    Μηνύματα
    1.983

    Προεπιλογή

    Hρακλη ας πω το πρωτο μπραβο γιατι σιγουρα θα ακολουθησουν πολλα! πρακτικο ευκολο και ομορφο! ΜΠΡΑΒΟ

    0 Not allowed! Not allowed!

  10. #6
    Μέλος
    Όνομα
    ΘΥΜΙΟΣ
    Εγγραφή
    Nov 2008
    Περιοχή
    ΑΓΡΙΝΙΟ
    Μηνύματα
    348

    Προεπιλογή

    Μαλλον ξεχαστηκαν οι τιμες των υλικων...
    Ηρακλη φαινεται πως βιαστηκες αρκετα.....δεν φαινονται στο σχηματικο ουτε που συνδεονται τα αισθητηρια ουτε που συνδεονται τα led....για ξαναδεστα να μας πεις καθως κι αν ο κοντρολερ ειναι ο atmega8.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη ΘΥΜΙΟΣ : 01-04-11 στις 19:30

  11. #7
    Μέλος
    Εγγραφή
    Dec 2004
    Μηνύματα
    691

    Προεπιλογή

    καλησπερα μπραβο για την κατασκευη σου....!!!! Μηπως εχεις τον κωδικα σε .asm μορφη?

    0 Not allowed! Not allowed!

  12. #8
    Μέλος Το avatar του χρήστη XALOULIS90
    Όνομα
    ΑΣΤΕΡΙΟΣ
    Εγγραφή
    Apr 2010
    Περιοχή
    ΛΑΡΙΣΑ
    Μηνύματα
    213

    Προεπιλογή

    γαματος φιλε πολυ καλος.....μραβο.

    0 Not allowed! Not allowed!

  13. #9
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή

    σας ευχαριστω πολυ για τα καλα σας λογια

    δυστιχως δεν εχω το *.asm

    συμπληρωσα σημερα και μερικα στοιχεια ακομα

    οπως το source και το data logging μεσω της uart

    0 Not allowed! Not allowed!

  14. #10
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή

    ετσι ειναι με τα τρια θερμομετρα η εξοδος απο την uart


    0 Not allowed! Not allowed!

Σελίδα 1 από 2 1 2 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. DS18B20 & arduino
    By Διογένης in forum Γενικά
    Απαντήσεις: 11
    Τελευταίο Μήνυμα: 01-09-17, 19:35
  2. Θερμομετρο με τον ICL7136 και θερμιστορ
    By Galileo in forum Μικροελεγκτές
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 27-04-12, 20:48
  3. Απαντήσεις: 9
    Τελευταίο Μήνυμα: 11-06-11, 00:38
  4. Θερμομετρο με 7 Segment και LM35 ( atmega328 )
    By herctrap in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 10-01-11, 13:11
  5. Διπλο θερμομετρο και Ρολοϊ
    By Thanos10 in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 15
    Τελευταίο Μήνυμα: 13-12-09, 13:39

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας