Hướng Dẫn Đo nhiệt độ bằng MF58

Thảo luận trong 'Thông Báo - Nội Quy' bắt đầu bởi tranbac211, 14 Tháng hai 2016.

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

Lượt xem: 1,860

  1. tranbac211

    tranbac211 New Member

  2. Phan Dung Liem

    Phan Dung Liem Thành Viên Nổi bật

    Chọn áp tham chiếu Vref rồi tính bảng giá trị ADC theo Vref và bảng điện trở tương ứng.
    upload_2016-2-15_7-53-58.png
    Áp tham chiếu Vref=5000mV. R14=10K (chọn điện trở có độ chính xác cao nhất), ADC 10 bit.
    Vi=Vref*Rntc/(R14+Rntc)=5000*Rntc/(10K+Rntc) (mV).
    ADC=1023*Vi/Vref
    Bạn lưu các giá trị ADC vào 1 mảng để tra.
    Với cách tính trước này sẽ dễ dàng lưu trữ và giúp vi điều khiển xử lý nhanh hơn vì không phải tính toán nhiều với số thực.
    tranbac211 thích bài này.
  3. tranbac211

    tranbac211 New Member

    quy đổi ra nhiệt độ như thế nào nhỉ ? em ngu quá bác ơi.
  4. Dukebk.dt7

    Dukebk.dt7 Admin

    Đầu tiên bạn tính ra giá trị trở của MF58 dựa vào công thức phân áp. Sau đó đối chiếu với bảng giá trị (có ở trên website) rồi quy đổi ra giá trị nhiệt độ thôi bạn.
  5. quang.dt7bk

    quang.dt7bk Admin

    Chào bạn!
    Bạn chú ý quan sát bảng giá trị giữa nhiệt độ và điện trở của dây nhiệt trong link sau:
    Từ bảng điện trở và cách mắc trong hình của anh Phan Dang Liem, bạn tính ra ứng với mỗi giá trị điện trở (đại diện cho 1 mốc nhiệt độ) thì giá trị ADC tính tay bằng bao nhiêu. Sau đó bạn lưu toàn bộ giá trị ADC bạn tính tay vào 1 mảng, mảng này có thể nói là mảng giá trị ADC chuẩn đại diện cho dải nhiệt độ bạn cần.
    Khi đo thì bạn đọc ADC (được tính như của anh Phan Dang Liem) và so sánh với mảng ADC chuẩn. nằm trong khoảng nào thì quy ra nhiệt độ tương ứng. ^^
  6. taihung

    taihung New Member

    Bạn có thể tham khảo dự án đang làm dở của mình, dùng mf58 đo nhiệt độ và hiển thị qua 3 led 7 thanh, có mô phỏng đầy đủ. Đặc biệt sử dụng phương pháp chia đôi để tra bảng nhằm nâng cao tốc độ tra.
    Thiết kế sơ bộ:
    [​IMG]
    Các bạn có thể download sourcode và mô phỏng tại:
    https://sites.google.com/site/tudon...osteggincubator-moduledieukhienloaptrunggiare
    tranbac211 thích bài này.
  7. tranbac211

    tranbac211 New Member

    như vậy chỉ hiển đo được phần nguyên đúng ko bác?
  8. quang.dt7bk

    quang.dt7bk Admin

    Mình cũng làm con MF58 rồi, khi sử dụng con này mình chỉ nhận được dải giá trị nhiệt độ nguyên thôi chứ không được đến phần thập phân như DS18b20... :)
  9. tranbac211

    tranbac211 New Member

    con ds18b20 thì hay bị cái lỗi hiển thị 85. nhất là khi có sử dụng timer bác ak ?
  10. Phan Dung Liem

    Phan Dung Liem Thành Viên Nổi bật

    Timer thuộc ngắt ưu tiên nên khi đang đọc ds18b20 mà xảy ra ngắt thì dữ liệu đọc bị sai thôi!
  11. taihung

    taihung New Member

    Nếu muốn chính xác hơn cũng được, trước tiên phải chọn Mf58 cấp 1%, nguồn tham chiếu cấp sai số < 2%, điện trở phân áp sai số 1%.
    Khó chuyển sang float và fraction vì adc của pic & stm8s chỉ có 10bit, độ phân giải thấp nên không dùng.
    Nếu chuyển sang dòng 16bit hoặc 32 bit thì có thể tính ln(x) và kiểu dữ liệu float luôn cho nhàn.
    .
    Mình vẫn khuyến cáo nên dùng số nguyên, còn cố thì vẫn được một số sau dấu phảy.
  12. taihung

    taihung New Member

    Nếu chạy như bình thường thì chờ db18b20 convert xong với 10bit kết quả thì phải chờ >100ms, quá lâu.
    Để tránh sai kết quả bạn nên check CRC8bit, đồng thời cũng xác định sự hiện diện của cảm biến.
    check CRC8 sai, đọc lại. Cứ để ngắt bình thường.
  13. tranbac211

    tranbac211 New Member

    e đang lắp thiết bị kiểm soát nhiệt độ và độ ẩm. các bác cho e hỏi là mình lên lắp độ ẩm riêng, nhiệt độ riêng hay dùng con cảm biến nhiệt độ độ ẩm chung. vd dht11,dht21,dht22.
    theo các bác con nào ổn định và chính xác hơn?
  14. quang.dt7bk

    quang.dt7bk Admin

    - Vấn đề này còn tùy thuộc vào sai số về nhiệt độ và độ ẩm mà bạn cho phép là bao nhiêu %.
    - Nếu bạn dùng chung cùng 1 con thì việc code giao tiếp sẽ đơn giản hơn so với việc bạn dùng 2 cảm biến với 2 chuẩn giao tiếp khác nhau.
  15. tranbac211

    tranbac211 New Member

    nhưng khi dùng chung 1 con như vậy thì có ảnh hưởng gì ko ?
    vì giá trị nhiệt độ và độ ẩm sau khi đo được e sẽ tách ra điều khiển nhiệt riêng, ẩm riêng
  16. quang.dt7bk

    quang.dt7bk Admin

    Dùng chung không ảnh hưởng gì bạn nhé, giá trị nhiệt độ và độ ẩm bạn đọc riêng ra thì bạn điều khiển độc lập được mà :)
  17. halinh

    halinh New Member

    ad cho hỏi muuoons dọc cả giá trị phần thập hân thì làm như nào ạ
  18. halinh

    halinh New Member

    a cho e hỏi cái số 1023 là giá trị gì ạ cảm ơn a
  19. Phan Dung Liem

    Phan Dung Liem Thành Viên Nổi bật

    ADC 10bit sẽ có giá trị chạy từ 0:2^10-1 tức 0:1023. 1023 là giá trị max của bộ adc
    halinh thích bài này.
  20. halinh

    halinh New Member

    Vâng cảm ơn a .e chưa biêt cách lưu giá trị vi và so sánh với adc để đưa ra giá trị nhiệt đô. Và muốn đọc ca giá trị phân thập phân nữa a chỉ với . Chân thành cảm ơn !

Chia sẻ trang này

Lên trên