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

Θέμα: Arduino για ελεγχο ξυλολεβητα

  1. #1
    Νέο Μέλος
    Όνομα
    Δημητρης
    Εγγραφή
    Sep 2009
    Περιοχή
    Χαλκιδικη
    Μηνύματα
    22

    Προεπιλογή Arduino για ελεγχο ξυλολεβητα

    Καλησπερα, ειναι η πρωτη αποπειρα να γραψω κωδικο για arduino γι αυτο παρακαλω να ειστε ιδιαιτερα επιεικεις.
    Προκειται για εναν ελεγκτη ξυλολεβητα με arduino uno, ασθητηρες θερμοκρασιας LM35, relay shield και lcd 2004.
    Αναλογα με τις θερμοκρασιες των αισθητηριων λειτουργουν ο ανεμιστηρας και ο κυκλοφορητης του λεβητα αλλα και
    ο κυκλοφορητης που ζεσταινει το boiler χρησης με νερο απο τον λεβητα. Για λογους ασφαλειας υπαρχει υδροστατης
    που ελεγχει απευθειας τον κυκλοφορητη, καθως και μπουτον για τον εξαερισμο για την απαγωγη καπνου απο το λεβητoστασιο.
    Παρακαλω τη βοηθεια σας για τη σωστη συνταξη του κωδικα καθως και την συναρτηση AND η οποια ξερω οτι ειναι λαθος
    οπως την εβαλα, απλα το εκανα για να δειξω τη λειτουργια. Εγραψα πρωτα τα βασικα για να παω μετα στην lcd κ.α. Ευχαριστω.



    int Klev = 2; // κυκλοφορητης του λεβητα
    int Blev = 4; // ανεμιστηρας του λεβητα
    int Kboi = 7; // κυκλοφορητης του boiler
    int Fun = 8; // εξαερισμος
    int ButtonFun = 12; // button για εξαερισμο
    int TempLev = A1; // θερμοκρασια λεβητα
    int TempBoi = A2; // θερμοκρασια boiler
    int TempBuf = A3; // θερμοκρασια buffer

    void setup() {
    pinMode(Klev, OUTPUT);
    pinMode(Blev, OUTPUT);
    pinMode(Kboi, OUTPUT);
    pinMode(Fun, OUTPUT);
    pinMode(ButtonFun, INPUT);
    digitalWrite(ButtonFun, HIGH);
    pinMode(TempLev, INPUT);
    pinMode(TempBoi, INPUT);
    pinMode(TempBuf, INPUT);
    }
    void loop()
    { if (analogRead(TempLev) < 65); // read sensor θερμοκρασια λεβητα if <65C
    }
    {digitalWrite(BLev, HIGH);} //turn ανεμιστηρας του λεβητα ON
    else
    {
    digitalWrite(BLev, LOW); //turn ανεμιστηρας του λεβητα OFF
    }
    {
    if (analogRead(TempLev) > 63); and (analogRead(TempBuf) > 60); // read sensor θερμοκρασια λεβητα if <63C AND sensor from Buffer > 60C
    {
    digitalWrite(BLev, HIGH); // turn ανεμιστηρας του λεβητα ON
    delay(60000); // wait for one minute
    digitalWrite(BLev, LOW); // turn ανεμιστηρας του λεβητα OFF
    delay(300000); // wait for five minutes
    }

    { if (analogRead(TempLev) > 40; // read sensor θερμοκρασια λεβητα > 40C
    }
    {digitalWrite(KLev, HIGH);} //turn κυκλοφορητης του λεβητα ON
    else
    {
    digitalWrite(KLev, LOW); //turn κυκλοφορητης του λεβητα OFF
    }
    {
    if (analogRead(TempBoi) < 55); // read θερμοκρασια boiler <55C
    }
    {digitalWrite(KBoi, HIGH);} //turn κυκλοφορητης του boiler ON
    else
    {
    digitalWrite(KBoi, LOW); //turn κυκλοφορητης του boiler OFF
    }
    {
    if (analogRead(TempLev) > 50); // read θερμοκρασια boiler >50C
    }
    {digitalWrite(KBoi, HIGH);} //turn κυκλοφορητης του boiler ON
    else
    {
    digitalWrite(KBoi, LOW); //turn κυκλοφορητης του boiler OFF
    }
    {
    int ButtonState = digitalWrite(ButtonFun, HIGH); //read button
    if (ButtonState = HIGH); //button on
    {digitalWrite(Fun, HIGH)}; //turn fun on
    delay(120000); //stay for 2min on
    }

    0 Not allowed! Not allowed!

  2. #2
    Μέλος Το avatar του χρήστη gsouf
    Όνομα
    Γιώργος
    Εγγραφή
    Mar 2010
    Περιοχή
    Α.Πατησια
    Μηνύματα
    487

    Προεπιλογή

    Αν ο κωδικας ειναι γραμμενος ετσι ακριβως και δεν εχει γινει κανα λαθος απο κοπυ παιστ το μονο που εκτειλειται ειναι το πρωταο if πρεπει να προσεξεις τις αγκυλες σου

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    σε περίπτωση που η θερμοκρασία ειναι στο όριο της αλλαγής , ο κυκλοφορητής με τι συχνότητα θα ανοιγοκλείνει ?

    0 Not allowed! Not allowed!

  4. #4
    Μέλος Το avatar του χρήστη dalai
    Όνομα
    Νίκος
    Εγγραφή
    Mar 2004
    Περιοχή
    Ξανθη
    Μηνύματα
    1.309

    Προεπιλογή

    πρεπει να βαλεις υστερηση στα κατοφλια των θερμοκρασιων.αλλιως τα ρελε θα κανουν ανοιγοκλεισιματα και τελικα θα καουν
    να ενα παραδειγμα με 0,4 C υστερηση
    if (tempC < (50-0.2) {
    digitalWrite(heater, HIGH);
    }
    else if (tempC < (50+0.2) {
    digitalWrite(heater, LOW);
    }
    Για να στο διευκρινισω ,οταν π.χ. η θερμοκρασια θα ειναι 50,1 το ρελε θα παραμεινει στην προηγουμενη κατασταση εως οτου φτασει στους 50,2 οπου θα ανοιξει το ρελε και θα κλεισει η θερμανση.Μετα θα περιμενει ανοιχτο εως οτου πεσει κατω απο τους 48,8 οπου και θα κλεισει το ρελε και θα ξεκινησει η θερμανση

    0 Not allowed! Not allowed!
    "Αν εισαι ηλεκτρονικος, μπορεις να κανεις τα παντα!!"

  5. #5
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    833

    Προεπιλογή

    η if (analogRead(TempLev) > 63); and (analogRead(TempBuf) > 60); δεν πρέπει να γίνει έτσι
    if ((analogRead(TempLev) > 63) && (analogRead(TempBuf) > 60))
    {

    } ή κάνω λάθος!Διορθώστε με.

    0 Not allowed! Not allowed!

  6. #6
    Μέλος Το avatar του χρήστη Gant
    Εγγραφή
    Oct 2005
    Περιοχή
    D
    Μηνύματα
    234

    Προεπιλογή

    1 . Το ζεύγος από αγκύλες πριν και μετά το if δεν χρειάζεται
    2 . Το ελληνικό ερωτηματικό μετά το if δεν χρειάζεται
    3 . Το ButtonFun ως είσοδος δεν παίρνει digitalWrite

    Ξαναγράψε των κώδικα και συνεχίζουμε ...

    0 Not allowed! Not allowed!

  7. #7
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    Κανονικα πρέπει να βαλεις ψηφιακό φίλτρο στο κώδικα σου γιατί το ad έχει θόρυβο , ένα spike δεν το σώζει ή υστέρηση , τουλάχιστον βάλει ένα ιντεραπτ με χρόνο μερικά sec ώστε να αλλάζει κατάσταση ή ηλεκτροβανα κάθε μερικά sec ίσως και ένα λεπτό θα έλεγα

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη picdev : 22-11-15 στις 17:42

  8. #8
    Νέο Μέλος
    Όνομα
    Δημητρης
    Εγγραφή
    Sep 2009
    Περιοχή
    Χαλκιδικη
    Μηνύματα
    22

    Προεπιλογή

    Ευχαριστω για τις επισημανσεις, η βοηθεια σας ειναι πολυτιμη. Τωρα εγραψα παλι τον κωδικα με τη βοηθεια σας.
    Φιλε picdev νομιζω οτι οσα γραφει ο dalai απαντανε στο ερωτημα σου, οσο αφορα το τελευταιο σου post επιτρεψε μου να μην καταλαβαινω λεξη!
    Αραγε γιατι να γραψω (65-0.2) και οχι 64,8?


    int Klev = 2; // κυκλοφορητης του λεβητα
    int Blev = 4; // ανεμιστηρας του λεβητα
    int Kboi = 7; // κυκλοφορητης του boiler
    int Fun = 8; // εξαερισμος
    int ButtonFun = 12; // button για εξαερισμο
    int TempLev = A1; // θερμοκρασια λεβητα
    int TempBoi = A2; // θερμοκρασια boiler
    int TempBuf = A3; // θερμοκρασια buffer
    int ButtonFun = 0;

    void setup() {
    pinMode(Klev, OUTPUT);
    pinMode(Blev, OUTPUT);
    pinMode(Kboi, OUTPUT);
    pinMode(Fun, OUTPUT);
    pinMode(ButtonFun, INPUT);
    pinMode(TempLev, INPUT);
    pinMode(TempBoi, INPUT);
    pinMode(TempBuf, INPUT);
    }
    void loop()
    if (analogRead(TempLev) < (65-0.2) // read sensor θερμοκρασια λεβητα if <65C
    {digitalWrite(BLev, HIGH);} //turn ανεμιστηρας του λεβητα ON
    else if (analogRead(TempLev) > (65+0.2)
    {digitalWrite(BLev, LOW);} //turn ανεμιστηρας του λεβητα OFF

    if ((analogRead(TempLev) > 63) && (analogRead(TempBuf) > 60)); // read sensor θερμοκρασια λεβητα if <63C AND sensor from Buffer > 60C
    {digitalWrite(BLev, HIGH);} // turn ανεμιστηρας του λεβητα ON
    {delay(60000);} // wait for one minute
    {digitalWrite(BLev, LOW);} // turn ανεμιστηρας του λεβητα OFF
    {delay(300000);} // wait for five minutes


    if (analogRead(TempLev) > (40+0.2) // read sensor θερμοκρασια λεβητα > 40C
    {digitalWrite(KLev, HIGH);} //turn κυκλοφορητης του λεβητα ON
    else if (analogRead(TempLev) < (40-0.2)
    {digitalWrite(KLev, LOW);} //turn κυκλοφορητης του λεβητα OFF

    if (analogRead(TempBoi) < (55-0.2) // read θερμοκρασια boiler <55C
    {digitalWrite(KBoi, HIGH);} //turn κυκλοφορητης του boiler ON
    else if (analogRead(TempBoi) > (55+0.2)
    {digitalWrite(KBoi, LOW);} //turn κυκλοφορητης του boiler OFF

    if (analogRead(TempLev) > (50+0.2) // read θερμοκρασια boiler >50C
    {digitalWrite(KBoi, HIGH);} //turn κυκλοφορητης του boiler ON
    else if (analogRead(TempLev) < (50-0.2)
    {digitalWrite(KBoi, LOW);} //turn κυκλοφορητης του boiler OFF

    ButtonState = digitalWrite(ButtonFun); //read button
    if (ButtonState = HIGH) //button on
    {digitalWrite(Fun, HIGH)}; //turn fun on
    {delay(120000);} //stay for 2min on

    0 Not allowed! Not allowed!

  9. #9
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    833

    Προεπιλογή

    Αν η θερμοκρασία λέβητα είναι > 63 και θερμοκρασια buffer > 60,εκτελούνται οι παρακάτω εντολές!!
    {digitalWrite(BLev, HIGH);} // turn ανεμιστηρας του λεβητα ON
    {delay(60000);} // wait for one minute
    {digitalWrite(BLev, LOW);} // turn ανεμιστηρας του λεβητα OFF
    {delay(300000);} // wait for five minutes

    Αυτό εννοείς
    ;Αν ναι οι αγκύλες πρέπει να γινουν μόνο 2..

    {
    digitalWrite(BLev, HIGH); // turn ανεμιστηρας του λεβητα ON

    delay(60000); // wait for one minute
    digitalWrite(BLev, LOW); // turn ανεμιστηρας του λεβητα OFF
    delay(300000); // wait for five minutes
    }



    Το ίδιο ισχύει και εδώ.
    if (ButtonState = HIGH) //button on
    {digitalWrite(Fun, HIGH)}; //turn fun on
    {delay(120000);} //stay for 2min on

    if (ButtonState = HIGH) //button on
    {
    digitalWrite(Fun, HIGH)}; //turn fun on

    delay(120000); //stay for 2min on
    }





    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη andreasmon : 23-11-15 στις 15:35

  10. #10
    Μέλος
    Όνομα
    Aνδρέας
    Εγγραφή
    Jan 2010
    Περιοχή
    Πάτρα
    Μηνύματα
    833

    Προεπιλογή

    επίσης πως καταλαβαίνει η TempLev -θερμοκρασία λέβητα ότι διαβάζει π.χ 65 βαθμούς κελσίου; Σου λείπει κώδικας.

    0 Not allowed! Not allowed!

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

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

  1. uv λαμπα για ελεγχο καταστασης σε μητρικη
    By cards44 in forum Όργανα & Εξοπλισμός
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 24-04-17, 15:27
  2. αναζητηση ξυλολεβητα
    By ts0gl1s in forum Γενική Συζήτηση
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 07-09-13, 06:57
  3. Συσκευη για ελεγχο ac τασης.
    By ΓΙΑΝΝΗΣ 456 in forum Ηλεκτρονικά
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 17-04-13, 10:28
  4. ΚΥΚΛΩΜΑ ΓΙΑ ΕΛΕΓΧΟ ΤΩΝ ΜΠΟΥΖΙ!
    By DiagExpert in forum Κυκλώματα για Auto & Moto
    Απαντήσεις: 34
    Τελευταίο Μήνυμα: 10-01-12, 14:33
  5. Απλο κυκλωμα για ελεγχο θερμοκρασιας.
    By Billll in forum Αυτοματισμοί
    Απαντήσεις: 10
    Τελευταίο Μήνυμα: 12-10-11, 18:48

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

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