หน้าเว็บ

วันอังคารที่ 30 กรกฎาคม พ.ศ. 2556

ตัวอย่างโค้ด SHT11(เซนเซอร์วัดค่าอุณหภูมิและความชื้น) กับ PIC18F2550





โมดูล SHT11

เป็นโมดูลวัดความชื้นสัมพัทธ์และอุณหภูมิจากบริษัท Sensirion (www.sensirion.com) มีขนาดเล็กและเพื่อความสะดวกในการใช้งานซึ่งมีคุณสมบัติทางเทคนิคดังนี้คะ
  • ทำหน้าที่เป็นทั้งตัววัดความชื้นและอุณหภูมิภายในตัวถังเดียวกัน
  • สามารถกำหนดความละเอียดของย่านการวัดได้
  • มีขนาดเล็กและกินพลังงานต่ำ ทำงานในย่านแรงดัน +2.4V ถึง+5.5V
  • เสถียรภาพในการทำงานสูง

ขาสัญญาณสำหรับสื่อสารข้อมูลของโมดูล SHT11

  • PIN  1  :  DATA หรือ Serial Data (SDA)
  • PIN  2   : NC (No connect)
  • PIN  3  :  CLOCK หรือ Serial Clock (SCK)
  • PIN  4  :  GND
  • PIN  5   : NC (No connect)
  • PIN  6  :  NC (No connect)
  • PIN  7  :  NC (No connect)
  • PIN  8  :  +5V 




ทดลองต่อวังจร SHT11 กับ PIC18F2550 เลยคะ

ทำการต่อวงจรตามรูปข้างล่างเลยค่า โดยการทำงานของวงจรที่เราทำขึ้นเราจะทำการอ่านค่าจากเซนเซอร์ จากนั้นนำมาแสดงที่ serial port  ทางคอมพิวเตอร์คะ ซึ่งโปรแกรมที่เราเขียนจะทำการอ่านค่าวนซ้ำทุก 1 วินาที




ขึ้นตอนต่อไป คือการเขียนโปรแกรม ผู้เขียนจะใช้ CCS C คอมไพเลอร์ร่วมกับ MPLAB IDE  ซึ่งในโค้ดข้างล่างเราต้องทำการ add library "sht1x.c" ซึ่ง library นี้ผู้เขียนได้ทำการแก้ไขจากไลบราลี่เดิมที่มีอยู่แล้ว โดยเพื่อนๆ สามารถดาวน์โหลดไลบราลี่ได้จากลิ้งนี้คะ (link here) เมื่อดาวน์โหลดมาแล้วให้เอาไปแทนไลบราลี่ตัวเดิมซึ่งอยูใน  "C:\Program Files (x86)\PICC\Drivers" จากนั้นเขียนโปรแกรมตามโค้ดข้างล่างเลยคะ



//******************************************************
//Project        : SHT11 Example
//Purpose        : Test SHT11
//Auther         : JUMP start innovation
//Email          : jumpstartinnovation@gmail.com
//Complier       : CCS.PCWH.v4.134
//Hardware       : PIC18F2550
//**********************************************************

#include <18f2550.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

// *** Device Specification ***
#fuses HS            // use Oscillator mode HS
#fuses NOWDT // doesn't use watch dog
#fuses NOLVP         // doesn't use Low Voltage for program
#fuses NOPROTECT     // No program detect

#use delay (clock=20M, crystal)
// use built-in function: delay_ms() & delay_us() by crytal 20MHz

#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stream=HOSTPC,errors)

// Assign pin for sht1x
#define sht_data_pin   PIN_B0
#define sht_clk_pin    PIN_B1
#include<sht1x.c>



/*******************************************************************************
*  Function prototypes
********************************************************************************/
void headle(void);

/***********************************************************************
 * FUNCTION:    headle
 * DESCRIPTION: Show headle title though rs232
 * PARAMETERS:  nothing
 * RETURNED:    nothing
 ***********************************************************************/
void headle(void){
                fprintf(HOSTPC,"\n\r******************************************************\n\r");
                fprintf(HOSTPC,"Project        : SHT11 Example\n\r");
                fprintf(HOSTPC,"Purpose        : Test SHT11\n\r");
                fprintf(HOSTPC,"Auther         : JUMP start innovation\n\r");
                fprintf(HOSTPC,"Email          : jumpstartinnovation@gmail.com\n\r");
                fprintf(HOSTPC,"Complier       : CCS.PCWH.v4.134\n\r");
                fprintf(HOSTPC,"Hardware       : PIC18F2550\n\r");
                fprintf(HOSTPC,"**********************************************************\n\r");
    }


/***********************************************************************
 * FUNCTION:    main
 * DESCRIPTION: main function
 * PARAMETERS:  nothing
 * RETURNED:    nothing
 ***********************************************************************/
void main(void){

        float truehumid;
        float restemp;
        
headle(); //show message output to serial port

        sht_init(); //Initial SHT11
        fprintf(HOSTPC,">> Initial SHT11 ... DONE\n\r");

        while(true){
                  sht_rd (restemp, truehumid);
                  fprintf(HOSTPC,"Temperature   :%2.1f\n\r",restemp);
                  fprintf(HOSTPC,"Humidity      :%2.1f\n\r", truehumid);
                  fprintf(HOSTPC,"------------------\n\r\n\r");
                  delay_ms(1000);

            }

        }


เมื่อทำการคอมไพล์เสร็จเรียบร้อยแล้ว ทดลองรันดูเลยคะ จะได้ผลตาม Video ข้างล่างคะ





เราสามารถนำไปประยุกต์ใช้ได้อย่างหลากหลายเช่น
  • ระบบ เปิด-ปิด สปริงเกอร์ ที่ใช้สำหรับควบคุมความชื้นโรงเพาะเห็ด
  • ใช้ความคุมการ เปิด-ปิด ฮิตเตอร์สำหรับห้องปิดเช่น ห้องซาวน่า เป็นต้น

คลิปวีดีโอข้างล่างเป็นการประยุกต์โดยจะทำการเตือนเมื่ออุณหภูมิและความชื้นเกินกว่าค่าที่ตั้งเอาไว้ โดยวงจรนี้จะต่อตัวเซนเซอร์สองตัว ซึ่งแยกทำงานกันแบบอิสระ




1 ความคิดเห็น:

  1. Salsa Verde Ceramic Cartilage Earrings
    Salsa Verde Ceramic Cartilage Earrings This titanium price per ounce item contains a number of mens titanium watches quality-quality Salsa Verde microtouch titanium Ceramic Piece Art. westcott titanium scissors Salsa apple watch aluminum vs titanium Verde Ceramic Brass $9.99 · ‎In stock

    ตอบลบ