Cảm Biến Độ Ẩm HS1101

Thảo luận trong 'Cảm Biến Nhiệt Độ Và Độ Ẩm' bắt đầu bởi tung.lvan, 2 Tháng mười một 2012.

Users Viewing Thread (Users: 0, Guests: 0)

  1. anhbk

    anhbk New Member

    Tiền:
    $1
    anh ơi cho em hỏi cấp nguồn Vcc cho cảm biến là cấp bao nhiêu V anh
  2. Mai chấn Duy

    Mai chấn Duy New Member

    Tiền:
    $37
    bác có thể giải thích cụ thể hơn về các hàm trong project được không ak.
    và nếu có project và code hoàn chỉnh thì các bác có thể share cho anh em học hỏi được không ak.em chân thành cảm ơn
  3. Mai chấn Duy

    Mai chấn Duy New Member

    Tiền:
    $37
    Các bác có project nào chỉ đo tần số ,nhưng mà tần số là số thực không ak
  4. Mai chấn Duy

    Mai chấn Duy New Member

    Tiền:
    $37
    thắc mắc một chút là:
    em dùng linh kiện như sau:(vì 49.9k,576k,909k mua không được)
    R4=56k
    R2=560k

    thì nếu chẳng hạn độ ẩm bằng 50%
    thì tính ra tần số sẽ là:

    F=1/(50*(56000+2*560000)*ln2)=2.45E-8

    thì lấy đâu ra tần số là kHz vậy mấy bác.
    Hay là em sai chỗ nào.Nếu bác nào thấy chỗ sai chỉ cho em với

    và mấy bác ở MinhHa có mấy con trở
    49.9k,576k,909k không em mua ít
  5. nhan09153064

    nhan09153064 New Member

    Tiền:
    $3
    cho mình hỏi HS1101 có đo được độ ẩm đất không?
  6. dan.nvan

    dan.nvan Nhóm MCU

    Tiền:
    $23,347
    - Chào bạn
    * Mình chưa thử con này đo độ ẩm đất, nhưng theo mình là không được
    * HS1101 hoạt động theo nguyên tắc biến dung, khi độ ẩm môi trường thay đổi, làm lớp điện mối giữa 2 bản cực của HS1101 biến đổi. Điều này làm cho điện dung của nó biến thiên
    * Khi ở trong môi trường đất, HS1101 rất dễ bị độ ẩm của đất làm cho nó bị động nước, điều này dẫn đến nó đo không được chính xác.
    ==> Nhìn chung bạn có thể tự kiểm chứng rồi thông tin cho mọi người
    Ô Mai Chua Kay and tranhoang_ht like this.
  7. dan.nvan

    dan.nvan Nhóm MCU

    Tiền:
    $23,347
    Chào bạn
    - Mình gửi bạn file excel, bảng tra tần số. Em điền giá trị điện trở bạn vào rồi, bạn xem nha. Bạn có thể dùng bẳng đó để tra tần số với những giá trị điện trở khác nhau Đăng ký hoặc đăng nhập để thấy Link -  Ủng hộ bài viết bằng nút " Thích"
  8. BanLinhKien.Vn

    BanLinhKien.Vn Nhóm MCU

    Chào bạn!
    Đo độ ẩm của đất bạn có thể dùng loại như hình này:
    CB Do Do Am.jpg
    Module này có tác dụng:
    Cảnh báo độ ẩm của đất để tưới hoặc bơm nước tự động.
    Tín hiệu trả về của nó dạng ADC hoặc số ( Dùng LM393)
    Bạn có thể tham khảo trên trang chủ ( Coming Soon..)
    Ô Mai Chua Kay thích bài này.
  9. Mai chấn Duy

    Mai chấn Duy New Member

    Tiền:
    $37
    cảm ơn anh nhiều.mà cho em hỏi
    Hình như là anh Dân học Công Nghiệp phải không ak?
  10. dan.nvan

    dan.nvan Nhóm MCU

    Tiền:
    $23,347
    Anh học Bách Khoa, K47. Sao em lại hỏi vậy, thấy anh giống người nào ah
  11. Mai chấn Duy

    Mai chấn Duy New Member

    Tiền:
    $37
    vâng em nhầm anh với anh Dân học CN Hà Nội ak
  12. nhan09153064

    nhan09153064 New Member

    Tiền:
    $3
    em cam on anh nhieu
  13. nhan09153064

    nhan09153064 New Member

    Tiền:
    $3
    cho e hoi con cam bien do am SHY co đo được độ ẩm đất k j a?
  14. spk_lionking

    spk_lionking New Member

    Tiền:
    $374
    Chào mọi người, mình đang làm về mạch đo nhiệt độ - độ ẩm dùng DS18B20 và HS1101. Mình đang vướng tại đoạn code đo độ ẩm, vì sau khi so sánh tần số đo được với giá trị trong mảng, nó không trả về vị trí của phần tử. Hiển thị ra toàn kết quả "trên trời". Mong các bạn giúp đỡ
    Mã:
    #include<REGX52.H>
    #include<stdio.h>
     
    #define RS P2_0
    #define RW P2_1       
    #define EN P2_2
    #define LCD_PORT P1
    #define DQ P2_6
     
    /////////khai bao bien toan cuc/////////////////
    //unsigned char temp;
    //unsigned char k;
    unsigned int tanso;
    unsigned int code f[]={7410,7392,7374,7357,7340,7323,7307,7290,7274,7259,7243,7228,7213,7198,7183,7169,7155,7140,7127,7113,7099,7086,7072,7059,7046,7033,7020,7007,6995,6982,6969,6957,6945,6932,6920,6908,6896,6884,6872,6860,6848,6836,6824,6812,6800,6788,6776,6764,6752,6740,6728,6716,6704,6692,6680,6668,6656,6643,6631,6619,6606,6594,6581,6568,6556,6543,6530,6517,6504,6491,6477,6464,6450,6437,6423,6409,6395,6381,6367,6352,6338,6323,6309,6294,6279,6264,6248,6233,6217,6202,6186,6170,6154,6137,6121,6104,6087,6053,6036,6019};
     
    ////////cac ham de lay/////////////////////////
    void delay_ms(unsigned int Time)
    {
        unsigned int i,j;
        for(i=0;i<Time;i++)
        {
            for(j=0;j<125;j++);
        }
    }
     
    void delay_us(unsigned int Time)
    {
        unsigned int i,j;
        for(i=0;i<Time;i++)
        {
            for(j=0;j<2;j++);
        }
    }
     
    void delay_18B20(unsigned char x)
    {
      unsigned char i;
      for(i=0;i<x;i++);
    }
    ///////////////////////////////////////////////
     
    ////////cac ham ve LCD 20X4////////////////////
     
    void LCDWriteCmd(unsigned char c)    //CT con ghi lenh len LCD
    {
    RS=0;
    RW=0;
    LCD_PORT=c;
    EN=1;
    EN=0;
    delay_ms(5);
    }
     
    void LCDWriteData(unsigned char c)    //CT con ghi du lieu tu LCD
    {
    RS=1;
    RW=0;
    LCD_PORT=c;
    EN=1;
    EN=0;
    delay_ms(5);
    }
     
    void LCD_init()          // Khoi tao LCD
    {
    delay_ms(15);
    LCDWriteCmd(0x38);
    LCDWriteCmd(0x38);
    LCDWriteCmd(0x0C);
    LCDWriteCmd(0x01);     
    }
     
    void LCD_clear()    //xoa man hinh LCD
    {
    LCDWriteCmd(0x01);
    }
     
    void LCD_home()        //dua con tro ve dau dong 1
    {
    LCDWriteCmd(0x80);
    }
     
    void LCD_putstr(unsigned char *s)    //ghi 1 chuoi len LCD
    {
    while (*s)
    {
      LCDWriteData(*s);
      s++;
    }
    }
    /////////////////////////////////////////////////////////////////
     
    ////////cac ham ve DS18B20//////////////////////////////////////
     
    void Init_DS18B20()      //ham khoi tao DS18B20
    {
        unsigned char x=0;
        DQ = 1;
        delay_18B20(8);
        DQ = 0;
        delay_18B20(80);
        DQ = 1;
        delay_18B20(14);
        x=DQ;
        delay_18B20(20);
       
    }
     
    unsigned char ReadOneChar()  //ham doc 1 byte vao DS18B20
    {
        unsigned char i=0;
        unsigned char dat = 0;
        for (i=8;i>0;i--)
        {
            DQ = 0;
            dat>>=1;
            DQ = 1;
            if(DQ)
            dat|=0x80;
            delay_18B20(5);
        }
        return(dat);
    }
     
    void WriteOneChar(unsigned char dat) //ham viet 1 byte vao DS18B20
    {
        unsigned char i=0;
        for (i=8; i>0; i--)
        {
            DQ = 0;
            DQ = dat&0x01;
            delay_18B20(5);
            DQ = 1;
            dat>>=1;
        }
    }
     
    unsigned char ReadTemp()
    {
        unsigned char a=0;
        unsigned char b=0;
        unsigned char temp=0;
        EA=0;
        Init_DS18B20();
        WriteOneChar(0xCC);
        WriteOneChar(0x44);
        delay_ms(100);
       
        Init_DS18B20();
        WriteOneChar(0xCC);
        WriteOneChar(0xBE);
        delay_ms(100);
     
        a=ReadOneChar();
        b=ReadOneChar();
        Init_DS18B20();
        temp=(b<<4)|(a>>4);
        return(temp);
        EA=1;
    }
    ////////////////////////////////////////////////////////
     
    ////////ham ve HS1101//////////////////////////////////
    void ngat_trantimer0() interrupt 1   
    {    unsigned int Time;
        TH0=0xFC;
        TL0=0x2B;
        Time++;
        if(Time==1000)                                     
        {
            Time=0;                                          // dinh thoi 1s
            TR1=0;
            tanso=(((TH1&0x00ff)<<8)|(TL1&0x00ff));          //tan so bang so xung dem duoc trong 1s
            TH1=0;
            TL1=0;
            TR1=1;
        }
        TF0=0;   
    }
     
    unsigned char humid()
    {    unsigned char k;
        while(tanso<f[k])
        {
            k++;
        }
        return(k);
       
    }     
    //////////////////////////////////////////////////
     
    ////////ham main/////////////////////////////////
     
    void main()
    {
        float Nhiet_Do;
        unsigned char do_am;
        unsigned char Lcd_Buff[5];
        unsigned char Lcd_Buff1[5];
        TMOD=0x51;    //timer 0-16bit, counter 1-16bit
        IE=0x82;    //thiet lap ngat timer 0
        TR0=1;
        LCD_init();   
        LCD_clear();
        LCD_home();
        LCD_putstr("DO AN MON HOC 2");
        LCDWriteCmd(0xC0);
        LCD_putstr("DO NHIET DO & DO AM");
        LCDWriteCmd(0x94);
        LCD_putstr("NHIET DO:");
        LCDWriteCmd(0xD4);
        LCD_putstr("DO AM:");
        delay_ms(50);
        while(1)
            {   
                do_am=humid();
                sprintf(Lcd_Buff1,"%3.0d",do_am);
                LCDWriteCmd(0xDC);
                LCD_putstr(Lcd_Buff1);
                delay_ms(300);
           
                Nhiet_Do = ReadTemp();       
                //sprintf(Lcd_Buff,"NHIET DO: %2.0f oC",Nhiet_Do);
                sprintf(Lcd_Buff,"%.0f",Nhiet_Do);
                LCDWriteCmd(0x9D);
                LCD_putstr(Lcd_Buff);
                delay_ms(300);
     
                //do_am=humid();
                //sprintf(Lcd_Buff,"DO AM: %2.0d",vitrf);
                //do_am=humid();
               
            }
    }
     
    
    Dưới đây là file mô phỏng + code

    Các file đính kèm:

    • CODE.rar
      Kích thước:
      74.6 KB
      Đọc:
      70
  15. spk_lionking

    spk_lionking New Member

    Tiền:
    $374
    hok có bác nào giúp mình à
  16. DHThang

    DHThang New Member

    Tiền:
    $284
    Xin lỗi Vì Spam
  17. DHThang

    DHThang New Member

    Tiền:
    $284
    Xin lỗi Vì Spam
  18. tranhoang_ht

    tranhoang_ht New Member

    Tiền:
    $2
    Nhờ các bác trong diễn đang giúp đỡ em tí, e làm luận văn gần hết hạn rồi mà cái Cảm biến chưa biết thế nào (e làm mô hình sấy).
    Em dùng CB nhiệt độ ổn định nhiệt độ, CB độ ẩm đặt giá trị cho nó, khi độ ẩm đạt giá trị đặt thì nó đưa tín hiệu tác động (VD 13%). Có bác nào biết cách xử lí tín hiệu để con CB độ ẩm tác động ko? (chẳng hạn như nó đưa tín hiệu tới role). CB nhiệt độ và độ ẩm e có thể dùng chung luôn đc ko? Nhiệt độ e ổn định khoảng 40 deg C - độ ẩm 13% vậy mình xài con nào là vừa các bác?
    Mong các bác giúp đỡ!
  19. tranhoang_ht

    tranhoang_ht New Member

    Tiền:
    $2
    Nhờ các bác trong diễn đang giúp đỡ em tí, e làm luận văn gần hết hạn rồi mà cái Cảm biến chưa biết thế nào (e làm mô hình sấy).
    Em dùng CB nhiệt độ ổn định nhiệt độ, CB độ ẩm đặt giá trị cho nó, khi độ ẩm đạt giá trị đặt thì nó đưa tín hiệu tác động (VD 13%). Có bác nào biết cách xử lí tín hiệu để con CB độ ẩm tác động ko? (chẳng hạn như nó đưa tín hiệu tới role). CB nhiệt độ và độ ẩm e có thể dùng chung luôn đc ko? Nhiệt độ e ổn định khoảng 40 deg C - độ ẩm 13% vậy mình xài con nào là vừa các bác?
    Mong các bác giúp đỡ!
  20. khánh thân

    khánh thân New Member

    Tiền:
    $9
    thật là khổ cho bạn quá, hỏi mãi mà không ai trả lời :D
    mình có một vài gợi ý đây, hi vọng có thể giúp đỡ bạn phần nào.
    về thuật toán, sau khi bạn đọc xong nhiệt độ và độ ẩm, hiển thị lên lcd hay led 7 thanh xong rồi, bạn xuống hàng viết thêm dòng này nếu như bạn cần cả nhiệt độ và độ ẩm cùng bằng giá trị được set:
    if((nhiet_do>=40)&&(do_am>=13)) tin_hieu=1;
    else tin_hieu=0;
    còn bạn cần từng cái một, hoặc nhiệt độ hoặc độ âm đến ngưỡng thì:
    if(nhiet_do>=40) tin_hieu1=1;
    else tin_hieu1=0;
    if(do_am>=13) tin_hieu2=1;
    else tin_hieu2=0;
    còn đây là phần cứng:
    Đăng ký hoặc đăng nhập để thấy Link -  Ủng hộ bài viết bằng nút " Thích"

Chia sẻ trang này