Εμφάνιση αποτελεσμάτων : 1 έως 5 από 5

Θέμα: ARDUINO UNO CONTROLLER PELLET BURNER

  1. #1
    Μέλος Το avatar του χρήστη nikolaras
    Όνομα
    Νίκος
    Εγγραφή
    Jun 2009
    Περιοχή
    Τρίκαλα
    Μηνύματα
    358

    Προεπιλογή ARDUINO UNO CONTROLLER PELLET BURNER

    Χρόνια πολλά σε όλους.
    Σκέφτομαι να αγοράσω έναν ARDUINO UNO και να τον προγραμματίσω για controller σε λέβητα pellet.
    Επειδή είμαι πολύ αρχάριος σε προγραμματισμό, λέτε να τα καταφέρω; Επίσης η επιλογή του συγκεκριμένου ελεγκτή είναι εφικτή για αυτά που χρειάζομαι (θα τα περιγράψω παρακάτω);
    Η επιλογή έγινε περισσότερο λόγου του σχετικά χαμηλού κόστους του όλου project (μοτερ, ρελέ κλπ υπάρχουν ήδη).
    Χρειάζομαι τις εξής λειτουργίες:
    1. Ρίψη πέλλετ μέσω μοτέρ - κοχλία για 3 δευτερόλεπτα περίπου ώστε να αρχίσει η έναυση.
    2. Εναρξη έναυσης μέσω αντίστασης και λίγης ποσότητας αέρα
    3. Ενεργοποίηση αισθητήρα φωτός, όταν πάρει φωτιά το πέλλετ. (επανεκκίνηση σε περίπτωση που δεν πάρει φωτιά το πέλλετ, 3 προσπάθειες συνολικά).Ο αισθητήρας θα λειτουργεί και σαν διακόπτης σε περίπτωση που σβήσει χωρίς λόγο η φωτιά.
    4. Εναρξη κανονικής λειτουργίας με ρυθμιζόμενη ρίψη πέλλετ και αέρα καύσης (αυτή τη στιγμή δουλεύει κανονικά με ένα 555).
    5. Ενεργοποίηση αισθητήρα θερμοκρασίας καυσαερίων (για λόγους ασφάλειας υπερθέρμανσης)
    6. έλεγχος ανεξέλεγκτης ρίψης πέλλετ σε περίπτωση βλάβης.
    7. Λειτουργία καθαρισμού (ενεργοποίηση σε πλήρη ισχύ του ανεμιστήρα κάθε 10 λεπτά 5 δεύτερα) και αυτό δουλεύει κανονικά τώρα με 555.
    8. Ελεγχος κυκλοφορητή σε επιλεγμένη θερμοκρασία, επίσης απενεργοποίηση του συστήματος σε περίπτωση υπερθέρμανσης του νερού.
    Αυτά θυμάμαι για την ώρα.
    Πως το βλέπετε; Ευχαριστώ....

    0 Not allowed! Not allowed!

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

    Προεπιλογή

    το arduino ειναι πολυ ευκολο στο προγραματισμο (αν φυσικα το μελετησεις λιγο ). Αν οτι θες το μετατρεψεις σε ταση (ειτε μεταβαλομενη ειτε σημα ON-Off) τοτε σιγουρα θα τα καταφερεις . Ο μονος περιορισμος ειναι το πληθος των εισοδων-εξοδων. Αλλα θα το προσαρμοσεις στις αναγκες σου

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

  3. #3
    Μέλος Το avatar του χρήστη firewalker
    Όνομα
    Αλέξανδρος
    Εγγραφή
    Mar 2009
    Περιοχή
    Μαγνησία
    Μηνύματα
    442

    Προεπιλογή

    Είναι εφικτό. Ίσως σε περιορίζει λίγο η χρήση της γλώσσας του Arduino. Σαν συσκευή όμως μπορείς να την χρησιμοποιήσεις. Αν δεν σου φτάσουν τα I/O μπορείς να βάλεις κάποιον i2c/SPI port expander για λιγότερο κρίσιμα I/O (π.χ. lcd display).

    Το παρακάτω με πλακέτα Arduino είναι, και "καθαρή" C όμως.

    http://alexkaltsas.wordpress.com/201...pellet-burner/


    0 Not allowed! Not allowed!
    Γίνε ρεαλιστής, μείνε ονειροπόλος ...

  4. #4
    Μέλος
    Όνομα
    Μιχάλης
    Εγγραφή
    Dec 2003
    Περιοχή
    Athens
    Μηνύματα
    392

    Προεπιλογή

    Εγω μεχρι στιγμης εχω φτιαξει τον κωδικα σε Arduino . Τα δυο προβληματα που αντιμετωπιζω μεχρι τωρα ειναι πως θα εισαγω την λειτουργια του καθαρισμου του καυστηρα οταν ξεκιναει και πως θα φορτωσω τα pellet στην αρχη . Δεν εχει και τις φοβερες λειτουργιες οπως μενου η διαχειριση κυκλοφοριτη γιατι ο δικος μου κυκλοφοριτης ειναι αυτοελενχομενος. Ο κωδικας ειναι αυτος οποιος μπορει ας βοηθησει.

    #include <LiquidCrystal.h>

    const int BLOWER = 11 ;
    const int IGNITER = 10;
    const int RELAY = 9;
    const int FEEDER = 8 ;


    LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
    const int LDR = 0; //analog pin to which LDR is connected, here we set it to 0 so it means A0
    int roomthermo;
    int boilthermo = 15;
    int LDRValue = 0; //that’s a variable to store LDR values
    int light_sensitivity = 500; //This is the approx value of light surrounding your LDR
    int LED = 13;
    int base;
    int threshold = 100;






    void setup() {
    roomthermo = 15;
    pinMode(roomthermo, INPUT_PULLUP);
    boilthermo = 12;
    pinMode (boilthermo, INPUT_PULLUP);
    pinMode(IGNITER, OUTPUT);
    pinMode(BLOWER, OUTPUT);
    pinMode(FEEDER, OUTPUT);
    pinMode(RELAY, OUTPUT);
    pinMode(13, OUTPUT);
    digitalWrite(IGNITER, HIGH);
    digitalWrite(BLOWER, HIGH);
    digitalWrite(FEEDER, HIGH);
    digitalWrite(RELAY, HIGH);
    }




    void loop()




    { if (digitalRead(roomthermo) == LOW)
    { digitalWrite(IGNITER, HIGH);
    digitalWrite(BLOWER, HIGH);
    digitalWrite(FEEDER, HIGH);
    digitalWrite(RELAY, HIGH);
    lcd.clear();
    lcd.print ("ANAMONH");
    delay (10);
    }
    else
    {
    LDRValue = analogRead(LDR); //reads the ldr’s value through LDR
    delay(50); //This is the speed by which LDR sends value to arduino
    if (LDRValue < light_sensitivity)
    {

    digitalWrite(IGNITER, LOW);
    digitalWrite(BLOWER, HIGH);
    lcd.clear();
    lcd.print ("oxi fotia");
    delay(1000);


    }
    else
    {

    digitalWrite(IGNITER, HIGH);
    digitalWrite(BLOWER, LOW);
    { lcd.clear();
    lcd.print ("fotia");
    delay(1000);


    if (digitalRead(boilthermo) == HIGH)
    { lcd.clear();
    lcd.print ("HIGH HEAT");


    digitalWrite(FEEDER, LOW); // Turns ON Relays 4
    delay(2000); // Wait 2 seconds
    digitalWrite(FEEDER, HIGH);


    }


    else
    {
    lcd.clear();
    lcd.print ("Low HEAT");


    digitalWrite(FEEDER, LOW); // Turns ON Relays 4
    delay(8000); // Wait 2 seconds
    digitalWrite(FEEDER, HIGH);
    delay(8000);
    }
    }


    }
    }
    }




    void clean()
    {
    lcd.clear();
    lcd.print ("Katharismos");
    digitalWrite(BLOWER, LOW);
    delay (10000);
    lcd.clear();
    lcd.print ("Telos Katharisma");
    digitalWrite(BLOWER, HIGH);
    delay (10000);
    }


    0 Not allowed! Not allowed!

  5. #5
    Μέλος
    Όνομα
    Μιχάλης
    Εγγραφή
    Dec 2003
    Περιοχή
    Athens
    Μηνύματα
    392

    Προεπιλογή

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

    Κώδικας:
    #include <LiquidCrystal.h>
    
    
    const int BLOWER = 11  ;
    const int IGNITER = 10;
    const int RELAY = 9;
    const int FEEDER = 8 ;
    
    
    LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
    const int LDR = 0;     //analog pin to which LDR is connected, here we set it to 0 so it means A0
    int tempPin = A3;
    int roomthermo = 16; //room thermostat for shuting down the pellet controler
    int boilthermo = 15; //boiler thermostat
    int LDRValue = 0;      //that’s a variable to store LDR values
    int light_sensitivity = 500;    //This is the approx value of light surrounding your LDR
    int threshold = 100;
    float temp;
    
    
    
    
    void setup() {
      lcd.print ("Pellet Burner");
      temp = analogRead(tempPin);
      temp = temp * 0.48828125;
      pinMode(roomthermo, INPUT_PULLUP);
      pinMode (boilthermo, INPUT_PULLUP);
      pinMode(IGNITER, OUTPUT);
      pinMode(BLOWER, OUTPUT);
      pinMode(FEEDER, OUTPUT);
      pinMode(RELAY, OUTPUT);
      digitalWrite(IGNITER, HIGH);
      digitalWrite(RELAY, HIGH);
      digitalWrite(BLOWER, HIGH);
      digitalWrite(FEEDER, LOW);
      delay(10000);
      digitalWrite(FEEDER, HIGH);
    
    
    }
    
    
    
    
    void loop()
    
    
    
    
    
    
    {
      if ((digitalRead(roomthermo) == LOW) || (digitalRead(boilthermo) == LOW))
        standby();
    
    
      else
      {
        LDRValue = analogRead(LDR);      //reads the ldr’s value through LDR
        delay(50);        //This is the speed by which LDR sends value to arduino
        if (LDRValue < light_sensitivity)
        {
    
    
          lcd.clear();
          lcd.print ("oxi fotia");
          digitalWrite(IGNITER, LOW);
          digitalWrite(BLOWER, HIGH);
    
    
        }
        else
        { if (temp < 60) {
    
    
            lcd.clear();
            lcd.print ("HIGH HEAT");
            digitalWrite(IGNITER, HIGH);
            digitalWrite(BLOWER, LOW);
            digitalWrite(FEEDER, LOW);
            delay(2000);
            digitalWrite(FEEDER, HIGH);
            delay(8000);
    
    
          } else {
            lcd.clear();
            lcd.print ("LOW HEAT");
            digitalWrite(IGNITER, HIGH);
            digitalWrite(BLOWER, LOW);
            digitalWrite(FEEDER, LOW);
            delay(2000);
            digitalWrite(FEEDER, HIGH);
            delay(10000);
          }
    
    
        }
      }
    }
    
    
    void standby()
    {
      digitalWrite(IGNITER, HIGH);
      digitalWrite(BLOWER, HIGH);
      digitalWrite(FEEDER, HIGH);
      digitalWrite(RELAY, HIGH);
      lcd.clear();
      lcd.print ("ANAMONH");
      delay (1000);
    }

    0 Not allowed! Not allowed!

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

  1. ARDUINO UNO
    By electricalgian in forum Ηλεκτρονικά
    Απαντήσεις: 9
    Τελευταίο Μήνυμα: 16-11-16, 03:01
  2. Arduino-UNO-R3-ATMEGA16U2
    By takhs764 in forum Μικροελεγκτές
    Απαντήσεις: 14
    Τελευταίο Μήνυμα: 04-10-15, 12:38
  3. arduino uno
    By ssakiss1 in forum Μικροελεγκτές
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 23-01-14, 13:54
  4. arduino uno
    By kourtidisp in forum Μικροελεγκτές
    Απαντήσεις: 15
    Τελευταίο Μήνυμα: 07-01-14, 18:08
  5. Pellet burner meter
    By fark in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 13
    Τελευταίο Μήνυμα: 12-09-12, 11:42

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

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