اطلاعیه

Collapse
No announcement yet.

راهنمایی در مورد راه اندازی ماژول max6675(ترموکوپل)

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راهنمایی در مورد راه اندازی ماژول max6675(ترموکوپل)

    سلام دوستان
    کسی تا حالا تونسته با avr و زبان سی، دما رو از ماژول max6675 دریافت کنه؟؟
    میشه یه نمونه کد قرار بدید؟؟
    ممنون میشم از کمکتون
    سُبُّوحٌ قُدُّوسٌ رَبُّ الْمَلَائِکَةِ وَ الرُّوحِ

    (SMART DESIGN....(POWERFUL & QUICK

    موفقیت اتفاقی نیست......بابای پولدار میخواد

    #2
    پاسخ : راهنمایی در مورد راه اندازی ماژول max6675(ترموکوپل)

    [code=c]
    #define SCK 5 //SCK (serial clock) pin number
    #define CS 2 //CS (chip select) pin number
    #define SO 4 //SO (serial out, also MISO) pin number

    #define SCK_Port PORTB //SCK port name
    #define CS_Port PORTB //CS port name
    #define SO_Pin PINB //SO pin name
    #define SO_Port PORTB //so pin name

    #define SCK_DDR DDRB //SCK DDR name
    #define CS_DDR DDRB //CS DDR name
    #define SO_DDR DDRB //SO DDR name



    int gettemp(void);
    void init_6675(void);
    //char getTC(void);

    int gettemp(void){ //Temperatur holen.
    char bite = 0, bitnr = 12; //Variablen
    char foo1 = 0;
    int so_data = 0;

    CS_Port &= ~(1 << CS);
    for(foo1 = 0 ; foo1 < 16 ; foo1++){
    bite = 15 - foo1;
    SCK_Port |= (1 << SCK);
    if((bite <= 14) && (bite >= 3)){
    if((SO_Pin & (1 << SO))){ //WENN SO 1 ist, dann...
    bitnr--; //zählen wir runter...
    so_data |= (1 << bitnr); // und schieben eine 1 an bit x
    }else{ //WENN dem NICHT so ist, dann...
    bitnr--; //zählen wir runter...
    so_data &= ~(1 << bitnr); //und schieben eine 0 an bit x
    }
    }else{ //weis au nimmer, was das soll.
    bitnr = 12;
    }
    SCK_Port &= ~(1 << SCK); //SCK LO
    }
    CS_Port |= (1 << CS);
    return so_data*0.25; //Das ist doch mal was ;D
    }


    // getTC() returns 0 if Thermocouple is not connected, 255 if thermocuple is connected
    // (to enable this feature T- must be connected to GND)
    //char getTC(void){ //Temperatur holen. //Variablen
    // char TC = 0;
    // char foo1 = 0;
    // CS_Port &= ~(1 << CS); //Chip select anlegen
    // for(foo1 = 0 ; foo1 < 16 ; foo1++){ //16 Bits einlesen //Die Aktuelle Bitnr berechnen.
    // SCK_Port |= (1 << SCK); //SCK hi
    // if(foo1 == 2){ //das 3. bit ist für uns relevant.
    // if((SO_Pin & (1 << SO))){ //WENN SO 1 ist, dann...
    // TC = 0;
    // }else{ //WENN dem NICHT so ist, dann...
    // TC = 255;
    // }
    // }
    // SCK_Port &= ~(1 << SCK); //SCK LO
    // }
    // CS_Port |= (1 << CS); //CS HI //Alles auf Standardkonfig.
    // return TC; //Das ist doch mal was ;D
    //}
    //

    //Initiates the MAX6675 and IO-pins
    void init_6675(void){ //AVR initialisieren

    SO_DDR &= ~(1 << SO);
    CS_DDR |= (1 << CS);
    SCK_DDR |= (1 << SCK); //IOs setzen

    SO_Port |= (1<<SO); //Pullups an. (Wichtig für MAX6675, der kann nicht anders, hab ich festgestellt...

    CS_Port |= (1 << CS); //CS HI //Alles auf Standardkonfig.
    SCK_Port &= ~(1 << SCK); //SCK LO
    }



    [/code]

    100% جواب میده

    دیدگاه


      #3
      پاسخ : راهنمایی در مورد راه اندازی ماژول max6675(ترموکوپل)

      نوشته اصلی توسط sepehr63 نمایش پست ها
      [code=c]
      #define SCK 5 //SCK (serial clock) pin number
      #define CS 2 //CS (chip select) pin number
      #define SO 4 //SO (serial out, also MISO) pin number

      #define SCK_Port PORTB //SCK port name
      #define CS_Port PORTB //CS port name
      #define SO_Pin PINB //SO pin name
      #define SO_Port PORTB //so pin name

      #define SCK_DDR DDRB //SCK DDR name
      #define CS_DDR DDRB //CS DDR name
      #define SO_DDR DDRB //SO DDR name



      int gettemp(void);
      void init_6675(void);
      //char getTC(void);

      int gettemp(void){ //Temperatur holen.
      char bite = 0, bitnr = 12; //Variablen
      char foo1 = 0;
      int so_data = 0;

      CS_Port &= ~(1 << CS);
      for(foo1 = 0 ; foo1 < 16 ; foo1++){
      bite = 15 - foo1;
      SCK_Port |= (1 << SCK);
      if((bite <= 14) && (bite >= 3)){
      if((SO_Pin & (1 << SO))){ //WENN SO 1 ist, dann...
      bitnr--; //zählen wir runter...
      so_data |= (1 << bitnr); // und schieben eine 1 an bit x
      }else{ //WENN dem NICHT so ist, dann...
      bitnr--; //zählen wir runter...
      so_data &= ~(1 << bitnr); //und schieben eine 0 an bit x
      }
      }else{ //weis au nimmer, was das soll.
      bitnr = 12;
      }
      SCK_Port &= ~(1 << SCK); //SCK LO
      }
      CS_Port |= (1 << CS);
      return so_data*0.25; //Das ist doch mal was ;D
      }


      // getTC() returns 0 if Thermocouple is not connected, 255 if thermocuple is connected
      // (to enable this feature T- must be connected to GND)
      //char getTC(void){ //Temperatur holen. //Variablen
      // char TC = 0;
      // char foo1 = 0;
      // CS_Port &= ~(1 << CS); //Chip select anlegen
      // for(foo1 = 0 ; foo1 < 16 ; foo1++){ //16 Bits einlesen //Die Aktuelle Bitnr berechnen.
      // SCK_Port |= (1 << SCK); //SCK hi
      // if(foo1 == 2){ //das 3. bit ist für uns relevant.
      // if((SO_Pin & (1 << SO))){ //WENN SO 1 ist, dann...
      // TC = 0;
      // }else{ //WENN dem NICHT so ist, dann...
      // TC = 255;
      // }
      // }
      // SCK_Port &= ~(1 << SCK); //SCK LO
      // }
      // CS_Port |= (1 << CS); //CS HI //Alles auf Standardkonfig.
      // return TC; //Das ist doch mal was ;D
      //}
      //

      //Initiates the MAX6675 and IO-pins
      void init_6675(void){ //AVR initialisieren

      SO_DDR &= ~(1 << SO);
      CS_DDR |= (1 << CS);
      SCK_DDR |= (1 << SCK); //IOs setzen

      SO_Port |= (1<<SO); //Pullups an. (Wichtig für MAX6675, der kann nicht anders, hab ich festgestellt...

      CS_Port |= (1 << CS); //CS HI //Alles auf Standardkonfig.
      SCK_Port &= ~(1 << SCK); //SCK LO
      }



      [/code]

      100% جواب میده
      سلام . ببخشید میشه روند کد رو توضیح بدین ؟

      دیدگاه

      لطفا صبر کنید...
      X