Nhờ giúp đỡ con DS18B20 luôn đọc 127 độ

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • phucphan
    Thành viên mới
    • Nov 2013
    • 4

    #1

    Nhờ giúp đỡ con DS18B20 luôn đọc 127 độ

    Như chủ đề ạ. Em làm mạch dùng 18B20 đọc nhiệt độ, mô phỏng thì chạy bình thường nhưng vào mạch thật thì luôn hiện 127 độ.
    Em dùng codeVision:
    lcd_init(16);
    ds18b20_init(T,0,0,DS18B20_12BIT_RES);
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("TIME:\n ");
    i2c_init();
    rtc_init(3,0,0);
    while (1)
    {
    // Place your code here
    rtc_get_time(&h,&m,&s);
    sprintf(LCD_Buffer,"%2d:%2d:%2d",h,m,s);
    lcd_gotoxy(8,0);
    lcd_puts(LCD_Buffer);
    Tem=ds18b20_temperature(T);
    sprintf(LCD_Buffer,"TEMP: %2d^C",Tem);
    lcd_gotoxy(0,1);
    lcd_puts(LCD_Buffer);

    }
    }
    P/s: Ko phải do mạch sai đâu ạ, vì em thử code khác lập trình bằng Winavr thì chạy bình thường.
  • vuhapassall
    Thành viên tích cực
    • Jan 2008
    • 185

    #2
    bạn xem cái hàm này đã đúng chưa, các đáp ứng thời gian đúng chưa ? ds18b20_temperature(T); phần cứng thì trở kéo, nguồn cho ds1820 đã ổn chưa ? đo xung ở chân data của ds1820 xem có xung không ? và có đáp ứng reset ko ?

    Comment

    • phucphan
      Thành viên mới
      • Nov 2013
      • 4

      #3
      Cảm ơn bác trả lời, bác cho em hỏi đo xung chân data như thế nào ạ ?

      Comment

      • vuhapassall
        Thành viên tích cực
        • Jan 2008
        • 185

        #4
        Bạn đọc kỹ datasheet của ds1820, nó có các đáp ứng xung: reset, bit0, bit1, ack, command, data. Đầu tiên là kiểm tra xem nó có respone cái xung reset không đã.

        Comment

        • phucphan
          Thành viên mới
          • Nov 2013
          • 4

          #5
          Có bác ạ. Reset được 18B20 bác ạ. Em kiểm tra datasheet rồi. Em cắm dây chuẩn. Dùng đúng trở treo 4.7k. Ko biết sao nữa. hix

          Comment

          • quangtn82
            Thành viên tích cực
            • Nov 2009
            • 259

            #6
            Nguyên văn bởi phucphan Xem bài viết
            Như chủ đề ạ. Em làm mạch dùng 18B20 đọc nhiệt độ, mô phỏng thì chạy bình thường nhưng vào mạch thật thì luôn hiện 127 độ.
            Em dùng codeVision:
            lcd_init(16);
            ds18b20_init(T,0,0,DS18B20_12BIT_RES);
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_putsf("TIME:\n ");
            i2c_init();
            rtc_init(3,0,0);
            while (1)
            {
            // Place your code here
            rtc_get_time(&h,&m,&s);
            sprintf(LCD_Buffer,"%2d:%2d:%2d",h,m,s);
            lcd_gotoxy(8,0);
            lcd_puts(LCD_Buffer);
            Tem=ds18b20_temperature(T);
            sprintf(LCD_Buffer,"TEMP: %2d^C",Tem);
            lcd_gotoxy(0,1);
            lcd_puts(LCD_Buffer);

            }
            }
            P/s: Ko phải do mạch sai đâu ạ, vì em thử code khác lập trình bằng Winavr thì chạy bình thường.
            Hình như thiếu hàm w1_init() trước hàm ds18b20_init() thì phải

            Comment

            • vuhapassall
              Thành viên tích cực
              • Jan 2008
              • 185

              #7
              đã sửa được chưa bạn?

              Comment

              • phucphan
                Thành viên mới
                • Nov 2013
                • 4

                #8
                Cảm ơn bác chu đáo, nhưng mãi em ko sửa được ? Có khi em xem lại phần cứng xem sao. Vì code này đơn giản và khá phổ biến, nhiều thằng bạn em chạy code này mạch của nó ko bị sao. Haizzzzz

                Comment

                • yamailuk
                  Thành viên tích cực
                  • Nov 2010
                  • 105

                  #9
                  Nguyên văn bởi phucphan Xem bài viết
                  Cảm ơn bác chu đáo, nhưng mãi em ko sửa được ? Có khi em xem lại phần cứng xem sao. Vì code này đơn giản và khá phổ biến, nhiều thằng bạn em chạy code này mạch của nó ko bị sao. Haizzzzz
                  Có khả năng là do thạch anh đó

                  Comment

                  • vuhapassall
                    Thành viên tích cực
                    • Jan 2008
                    • 185

                    #10
                    Có khi cắm ngược ds1820 cháy mất rồi chăng? mình cũng có chú ds1820 mặc dù có đáp ứng reset nhưng ko trả lại data (toàn 0xFF) do cắm ngược GND -VCC . Nói về bán modul nhiệt đo nhiệt ds18b20 thì mình cũng có, đo từ -55 đến 125 phân giải 0.1 * . Ngoài ra còn nhiều chức năng khác như điều khiển PID, on/off, set nhiệt độ...

                    Comment

                    Về tác giả

                    Collapse

                    phucphan Tìm hiểu thêm về phucphan

                    Bài viết mới nhất

                    Collapse

                    Đang tải...