Thông báo

Collapse
No announcement yet.

pic16F876A và DS18B20

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • pic16F876A và DS18B20

    Tôi chia sẻ tài liệu này cho bà con mà tôi đã và đang làm.
    cái này là dùng pic16F876A để đo nhiệt độ dùng DS18B20.

    có thể gắn vào board từ một đến 10 con DS18B20 và hiển thị trên màn hình lcd 20x2. Dùng RS232 để gửi nhiệt độ để hiển thị trên màn hình của PC.

    Trong schematic có dùng con PIC16F876A, DS18B20, lcd 20x2 alphanumeric, MAX233, LM7805, RTC DS1307...

    tôi dùng kit này để điều khiển máy sưởi và quạt trong phòng.
    nhiệt độ có thể chỉnh bằng 3 nút nhấn trên kit
    khi lò sưởi hoặc quạt bật lên điều có thể hiển thị trên lcd 20x2

    chượng trình có hex file để nạp cho chip và source code đã viết dùng Pro Picbasic.
    con pic16F876A có dùng bootloader.

    cái này tôi đã đưa lên mạng trên trang MEL PICBASIC Forum - MELabs PICBASIC từ năm 2008.

    to be continue....
    Last edited by KVLV; 27-09-2011, 13:49.
    Mãi đi tìm vàng.

  • #2
    có cái schematic này xem đỡ nha.
    tài liệu như là source code và bootloader tôi sẽ up lên sau.
    Attached Files
    Mãi đi tìm vàng.

    Comment


    • #3
      Chương trình này dùng chip PIC16F876A. Chương trình này tôi đã thử với mạch thật và chạy tốt. Mạch thật của tôi là PCB board 2 mặt tự làm ở nhà.
      1. Dùng tinybootloader, kéo về từ Tiny PIC bootloader, nên kéo tinybld198. http://www.etc.ugal.ro/cchiculita/so...tinybld198.zip
      2. Nạp chíp của bạn với chương trình tinybld_16F876A_20MHz_115200.HEX, để dùng cho bootloader
      3. Chạy tinybootloader, baud 115200, và nạp chương trình 876A0610.HEX
      4. Mở Terminal tab của tinybootloader (baud=19200) để có thể thấy con chip gửi nhiệt độ và thời gian đã đọc.
      5. Khi chương chạy trên con pic, sẽ hiện thị trên LCD 20x2 nhiệt độ và thời gian. Sau chừng 2 phút thì nó sẽ tắt backlight của LCD, nhấn nút OK bật lên backlight.

      Chương trình 876A0610.pbp dùng PicBasic Pro 2.60. Tôi đã thử với các chip 16F876, 16F886, 18F2620 chạy ngon lành nhưng phải recompile. Những chương trình này tôi không sẽ không đưa lên. Nếu bạn đã làm được những gì tôi đưa lên ở đây thì bạn có thể làm chạy được trên những chip mà tôi vừa nêu (pin compatible với 16F876A).

      Nếu bạn muốn có picbasic pro thì search trên trang hxxp://www.sonsivri.com/forum/index.php thay xx bằng tt

      File PBP_Manual_0609_260.zip là sách hướng dẫn của Picbasic pro, chỉ toàn là Anh Văn.
      Attached Files
      Last edited by KVLV; 29-09-2011, 10:35.
      Mãi đi tìm vàng.

      Comment


      • #4
        có 2 tấm hình xem chơi chụp hồi mới viết chương trình (prototype).
        Click image for larger version

Name:	CIMG0220a.jpg
Views:	1
Size:	561.4 KB
ID:	1351144

        Click image for larger version

Name:	CIMG0229b.jpg
Views:	1
Size:	483.4 KB
ID:	1351145
        Last edited by KVLV; 29-09-2011, 12:05.
        Mãi đi tìm vàng.

        Comment


        • #5
          2 tấm hình này khi làm mạch thật
          tôi có mấy version, hông biết bản này số mấy.
          pcb hoàn toàn làm tại nhà bằng phương pháp in ủi. thật ra tôi không "ủi" bằng bàn ủi (bàn là) mà dùng máy ép nhựa để "ủi" board của mình. máy ép nhựa mà bạn thấy dùng để bọc giấy tờ ấy.

          mặt trước
          Click image for larger version

Name:	CIMG0356.JPG
Views:	1
Size:	551.3 KB
ID:	1351175
          mặt sau
          Click image for larger version

Name:	CIMG0352.JPG
Views:	1
Size:	577.9 KB
ID:	1351176
          Mãi đi tìm vàng.

          Comment


          • #6
            Đây là đoạn code để chỉnh RTC (chỉnh giờ con DS1307). trong RTC876A.zip có:

            1. dùng tinybootloader để load chương trình này (RTC876A.HEX)

            2. RTC876A.pbp là source code viết bằng Picbasic pro

            khi chạy chương trình, trên LCD sẽ hiển thị

            12:29:51PM
            Sat Oct 01 2011

            Muốn chỉnh RTC thì reset con pic bằng nút RESET, rồi nhấn nút trừ (-), trên màn LCD sẽ hiện thị cách sử dụng.
            nút trừ (-) luôn chỉnh ngược,
            nút cộng (+) luôn cộng thêm
            nút OK là đồng ý
            Attached Files
            Last edited by KVLV; 02-10-2011, 08:38.
            Mãi đi tìm vàng.

            Comment


            • #7
              còn đây là schematic và pcb layout
              chú ý là tôi dùng chíp dán cho mấy con trở (tại vì làm board ở nhà nên không thích khoan lổ và cũng vì lý do này mà mấy lổ con chip đều nhỏ).

              và đây là cách làm mấy cái cảm biến nhiệt DS18B20. (tôi thì mua của người ta làm sẵn).
              Click image for larger version

Name:	DS18B20Sensor.jpg
Views:	1
Size:	66.6 KB
ID:	1351179

              vì diễn đàn không cho up file quá lớn nên tôi phải zip nó lại. trong zip file là 1 pdf file.

              Cảm ơn đã xem luồn này... Have Fun!
              Last edited by KVLV; 02-10-2011, 08:38.
              Mãi đi tìm vàng.

              Comment


              • #8
                Đây là thư viện schematic và pcb cho Alti*um 10.x dùng cho sơ đồ và board mà tôi đã đưa lên. Nói trước là mấy cái pad lớn và lổ nhỏ tại vì tôi đã đổi cho dễ khi làm board bằng phương pháp ủi. Các bạn có thể đổi lại theo ý mình muốn. không có 3D.

                Trong file Thermostat041088.zip có Thermostat0410.8.8.SCHLIB và THERMOSTAT0410.8.81.PcbLib
                Attached Files
                Mãi đi tìm vàng.

                Comment


                • #9
                  còn đây là mạch mô phỏng chạy trong Prote*us 7.7 khi tôi mới bắt đầu "phá" chuơng trình này.
                  khi mới chạy thì nhiệt độ có thể hiển thị không đúng, qua tua/vòng >2 thì có thể đúng.
                  chương trình mô phỏng chơi cho vui chứ tôi thì thường làm mạch thật.

                  trong 876aProteus77.zip có 876a.DSN, 876Aproteus.hex

                  Click image for larger version

Name:	876aDS18b20.gif
Views:	1
Size:	49.9 KB
ID:	1351614
                  Mãi đi tìm vàng.

                  Comment


                  • #10
                    bac KVLV có thể hướng dẫn em cách đọc nhiều con ds18b20 , thanks
                    Đời không như mình nghĩ. phải tranh thủ thôi ***********

                    Comment


                    • #11
                      còn đây là mạch mô phỏng chạy trong Prote*us 7.7 khi tôi mới bắt đầu "phá" chuơng trình này.
                      khi mới chạy thì nhiệt độ có thể hiển thị không đúng, qua tua/vòng >2 thì có thể đúng.
                      chương trình mô phỏng chơi cho vui chứ tôi thì thường làm mạch thật.

                      trong 876aProteus77.zip có 876a.DSN, 876Aproteus.hex
                      cho em xin luon mã nguồn luôn bác, bác giúp cho trót luôn.
                      Đời không như mình nghĩ. phải tranh thủ thôi ***********

                      Comment


                      • #12
                        Nguyên văn bởi chairman_t Xem bài viết
                        cho em xin luon mã nguồn luôn bác, bác giúp cho trót luôn.
                        chương trình tôi viết bằng ngôn ngữ picbasic pro.
                        Attached Files
                        Mãi đi tìm vàng.

                        Comment


                        • #13
                          Nguyên văn bởi chairman_t Xem bài viết
                          bac KVLV có thể hướng dẫn em cách đọc nhiều con ds18b20 , thanks
                          bạn có thể tham khảo code của tôi xem các thuật toán.
                          ở đây tôi xin tóm tắc ngắn gọn mà tôi hiểu, vì chương trình này tôi viết lâu rồi nên tôi không nhớ rõ chi tiết lắm.

                          đại khái là: con DS18B20 có 64 bit số thứ tự (mật mã). chương trình khi mới bắt đầu thì nó tìm mấy con cảm biến này, rồi giữ serial của mỗi con ds18b20 vào trong ram của con pic16F876A. Sau khi đọc xong thì nó lấy mã (serial #) từ trong RAm rồi ra lệnh cho con cảm biến nào có số giống trong ram đọc nhiệt độ.

                          nhớ tham khảo code của tôi, không hiểu chỗ nào thì hỏi.
                          Last edited by KVLV; 01-11-2011, 14:04.
                          Mãi đi tìm vàng.

                          Comment


                          • #14
                            em không viết bằng picbasic nên đọc rồi nhưng khó hiểu thiệt,em muốn hỏi là việc master tìm địa chỉ của các con cảm biến này thì em thấy trong tài liệu không bày cách. theo em được biết khi sản xuất thì mỗi con sẽ được khắc địa chỉ khác nhau bằng laze.
                            nên em thắc khi mình gửi lệnh đọc địa chỉ thì tất cả các con đều nhận, rồi gửi cùng lần nên biết cái nào là của con nào.
                            tóm lại bác có thể chỉ em cách lấy địa chỉ của chúng(em làm thử 2 con cảm biến thôi), thanks
                            Đời không như mình nghĩ. phải tranh thủ thôi ***********

                            Comment


                            • #15
                              Nguyên văn bởi chairman_t Xem bài viết
                              em không viết bằng picbasic nên đọc rồi nhưng khó hiểu thiệt,em muốn hỏi là việc master tìm địa chỉ của các con cảm biến này thì em thấy trong tài liệu không bày cách. theo em được biết khi sản xuất thì mỗi con sẽ được khắc địa chỉ khác nhau bằng laze.
                              nên em thắc khi mình gửi lệnh đọc địa chỉ thì tất cả các con đều nhận, rồi gửi cùng lần nên biết cái nào là của con nào.
                              tóm lại bác có thể chỉ em cách lấy địa chỉ của chúng(em làm thử 2 con cảm biến thôi), thanks
                              chương trình tôi viết có thể nhận biết từ 1 đến 10 con ds18b20.
                              muốn biết số của con nào thì gắn vào lần lượt từ con một, dán nhãn số cho nó, xong hết rồi thì gắn 1 lượt tất cả vào.
                              trên hiển thị có hiện ra T1: ##### , t2:#####. những số này cũng có thể hiện lên trên terminal trên windows.

                              bạn nên đọc lại từ post số 1 của thread này để hiểu rõ cách làm.

                              Code:
                               
                              T1: 286CDE0F0100006D
                              T2: 2866480F01000089
                              T3: 282E260F010000EE
                              T4: 280D840F010000B1
                              T5: 28A7B20F0100003A
                              Found 5 DOW(s).
                              DOW RAM Echo
                              T1: 286CDE0F0100006D
                              T2: 2866480F01000089
                              T3: 282E260F010000EE
                              T4: 280D840F010000B1
                              T5: 28A7B20F0100003A
                              Mãi đi tìm vàng.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X