Thông báo

Collapse
No announcement yet.

Mô hình Đo điều khiển nhiệt độ

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

  • Mô hình Đo điều khiển nhiệt độ

    Mô hình đo, điều khiển và giám sát nhiệt độ từ máy tính của mình đây.
    - Mạch đo nhiệt độ từ 00-120oC với độ chính xác 1oC, dùng cảm biến số, giao tiếp với vi điều khiển chỉ 1 dây duy nhất.
    - Khống chế nhiệt độ ở mức nhiệt độ phòng 30oC trở lên.
    - Hiển thị nhiệt độ khống chế, nhiệt độ thực, và trạng thái hoạt động các thiết bị lên LCD, và máy tính.
    - Thực hiện truyền thông nối tiếp, kết nối, giám sát thiết bị từ máy tính.
    - Mở rộng truyền thông , giám sát thiết bị bằng sóng RF.
    - Chip sử dụng: P89V51RD2. có chế độ PWM điều khiển động cơ.
    - Cảm biến nhiệt độ: DS18B20
    Video giao tiếp máy tính dùng VB6.

    Hình ảnh mo hình mình up sau, mạng chùa yếu was.
    Email:
    Phone: 0969 226 539

  • #2
    Hình ảnh đây:
    Click image for larger version

Name:	up1.JPG
Views:	1
Size:	49.1 KB
ID:	1378687

    Click image for larger version

Name:	up2.JPG
Views:	1
Size:	47.6 KB
ID:	1378688

    Click image for larger version

Name:	up3.JPG
Views:	1
Size:	53.5 KB
ID:	1378689

    Bạn nào muốn hốt luôn mô hình thii Liên hệ mình
    Email: vantrinh9290@gmail.com
    Email:
    Phone: 0969 226 539

    Comment


    • #3
      chia sẻ chương trình với sơ đồ mach cho moi người tham khảo đi ban ơi . Hay cái này ban quảng cáo sàn phầm z ?

      bán mô hình này bao nhiệu tiền ?

      Comment


      • #4
        Nguyên văn bởi vungtau88 Xem bài viết
        chia sẻ chương trình với sơ đồ mach cho moi người tham khảo đi ban ơi . Hay cái này ban quảng cáo sàn phầm z ?

        bán mô hình này bao nhiệu tiền ?
        Tùy bạn Thôi.
        Email:
        Phone: 0969 226 539

        Comment


        • #5
          Sơ đồ nguyên lý
          Click image for larger version

Name:	So do mach.jpg
Views:	1
Size:	84.0 KB
ID:	1378696
          hoặc
          http://www.mediafire.com/view/?adnto1bj6bqcai6
          Email:
          Phone: 0969 226 539

          Comment


          • #6
            Chương trình điều khiển
            /* ------------------- BO GIAO DUC VA DAO TAO -------------------------------
            ------------------- TRUONG DAI HOC DONG A --------------------------------
            ------------------------- KHOA DIEN --------------------------------------
            ------------ CHUONG TRINH DIEU KHIEN TOT NGIEP DAI HOC -------------------
            ------------ DE TAI: DO, DIEU KHIEN & GIAM SAT NHIET DO ------------------
            ------------ SVTH: VAN TRINH ------ ----------------------------------
            ------------ LOP : 11DHLTTD1A --------------------------------------------
            ------------ NIEN KHOA: 2011 - 2013 --------------------------------------
            ************************************************** ***********************/

            #include <P89V51Rx2.H>
            #define LCD P0
            #define ADC P2
            #define tat 1
            #define bat 0
            sbit DQ=P3^7;
            sbit EN=P1^2;
            sbit RS=P1^0;
            sbit RW=P1^1; //RW LCD
            sbit wr=P3^6; //WR ADC
            sbit den1=P1^7;
            sbit den2=P1^6;
            sbit den3=P1^5;
            sbit quat_pwm=P1^3;
            sbit quat=P1^4;
            sbit EN_DRF=P3^2;
            sbit SET_DRF=P3^3;
            unsigned char nhan,gui,gia_tri_ADC,nhiet_do_dat,nhiet_thuc;
            unsigned char c,x,t,chuc,dv,tram,trt,cht,dvt;
            bit che_do;
            int k,d,i;

            char code hang1_[]="DE TAI TOT NGHIEP DH";
            char code hang2_[]="DO; DK & GS NHIET DO";
            char code hang3_[]="GVHD: LE VIET VINH ";
            char code hang4_[]="SVTH: V.TRINH-D.HUY ";
            char code hang5_[]="NHIET DO THUC: oC";
            char code hang6_[]="NHIET DO DAT : oC";
            char code hang7_[]="DEN1 DEN2 DEN3 QUAT ";
            char code hien_thi1_[]=" ON ON ON OFF "; // DEN1, 2, 3 ON; QUAT OFF
            char code hien_thi2_[]=" ON ON OFF OFF "; // DEN1, 2, ON; DEN3, QUAT OFF
            char code hien_thi3_[]=" ON OFF OFF OFF "; // DEN1, ON; DEN2, DEN3, QUAT OFF
            char code hien_thi4_[]="OFF OFF OFF OFF "; // ON; DEN1, DEN2, DEN3, QUAT OFF
            char code hien_thi5_[]="OFF OFF OFF ON "; // QUAT ON; DEN1, DEN2, DEN3, OFF

            void khaibaotruyenthong()
            {
            TMOD = 0x20; // Timer 1 che do 2 (che do tu dong nap lai)
            TH1 = TL1 = -3; // Toc do baud 9600, Thach anh 11,0592 MHz
            TR1 = 1;
            IE = 0x90; // 10010000 cho phep ngat truyen thong
            SCON = 0x52; // Che do noi tiep
            }
            void ngat_truyen_thong(void) interrupt 4
            {
            if(TI==1) //Neu TI=1 thi da truyen du lieu xong
            {
            TI =0; //Xoa TI
            }
            if(RI==1) //Neu RI=1 thi da nhan du lieu xong,(lay du lieu tu SBUF ra)
            {
            RI = 0; //Xoa RI
            nhan = SBUF;
            if(nhan==2) che_do=1; //Co truyen thong
            else if(nhan==3) che_do=0; //Khong ket noi
            }
            }
            //============= Khoi tao che do PCA =============================//
            void khoi_tao_PWM()
            {
            CMOD = 0; // Chon xung Clock 1/2 Tm
            CCAPM0 = 0x42; // Cho phep PWM chan P1.3
            CR = 1; // Cho phep PCA hoat dong
            }
            /* ------------- Chuong trinh delay ------------------*/
            void delay(unsigned int ms)
            {
            unsigned int x,y;
            for(x=0;x<ms;x++)
            {
            for(y=0;y<500;y++){};
            }
            }

            /* ================ Chuong trinh cho modunl DRF ==================*
            //SET che do cho DRF
            void setting_DRF ()
            {
            EN_DRF=1; // cho modunl hoat dong
            SET_DRF=0;
            //delay(200);
            SET_DRF=1;
            delay(10);
            }
            // cho gia tri SBUF tai day
            void run_DRF()
            {
            SET_DRF=1; // vao che do setting
            delay(220);
            }
            *
            // cho du lieu vao SBUF tai day
            void run_DRF()
            {
            delay(200);
            SET_DRF=1;
            delay(10);
            }
            */
            void guilenh_LCD (unsigned char a)
            {
            delay(10);
            LCD=a;
            RS=0;
            RW=0;
            EN=1;
            EN=0;
            }
            void ghi_ky_tu_LCD(unsigned char b)
            {
            delay(10);
            LCD=b;
            RS=1;
            RW=0;
            EN=1;
            EN=0;
            }
            void khoitao_LCD() // Khoi tao LCD
            {
            delay(20);
            guilenh_LCD(0x38); // Khai bao Lcd 16*2
            guilenh_LCD(0x0C); // Bat hien thi, tat con tro
            guilenh_LCD(0x01); // Xoa man hinh hien thi

            guilenh_LCD(0x38); // Khai bao 2 lan Lcd 16*2 = LCD 20*04
            guilenh_LCD(0x0C); // Bat hien thi, tat con tro
            guilenh_LCD(0x01); // Xoa man hinh hien thi
            guilenh_LCD(0x80); // Dua con tro ve dau dong thu nhat
            }

            void doc_ADC() // Doc gia tri cua ADC
            {
            wr=0;
            delay(10);
            wr=1;
            delay(10);
            gia_tri_ADC = ADC;
            if(che_do==0) nhiet_do_dat = (gia_tri_ADC/2.55); // Gia tri nhiet do dat lay tu ADC
            else if (che_do==1) nhiet_do_dat = nhan; // Gia tri nhiet do dat nhan tu PC
            }

            /* =========== Chuyen doi gia tri ADC doc ve ==========*/
            void chuyendoi()
            {
            dv=nhiet_do_dat % 10;
            chuc=(nhiet_do_dat/10)%10;
            tram=(nhiet_do_dat/100)%10;
            }
            /* ========== Hien thi nhiet do dat = gia tri doc duoc cua ADC =========*/
            void hienthi_t_dat()
            {
            guilenh_LCD(0x0CF); // Vi tri 16 hang thu 2
            ghi_ky_tu_LCD(tram|0x30);
            ghi_ky_tu_LCD(chuc|0x30);
            ghi_ky_tu_LCD(dv|0x30);
            guilenh_LCD(0x0D2); // Vi tri 19 hang thu 2
            ghi_ky_tu_LCD ('o'); // Chong sai nhieu ky tu
            }
            /*=============== Delay cho DS18B20======================*/
            void delay_18B20(unsigned int i)
            {
            while(i--);
            }
            /* ================= Khoi tao DS18B20 ==================*/
            void khoitao_DS18B20(void)
            {
            unsigned char x=0;
            DQ = 1;
            delay_18B20(8);
            DQ = 0;
            delay_18B20(80);
            DQ = 1;
            delay_18B20(14);
            x=DQ;
            delay_18B20(20);
            }
            /* ================= Doc 1 bye tu DS18B20 ==================*/
            unsigned char Read_DS18B20(void)
            {
            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(4);
            }
            return(dat);
            }
            /* ================= Viet 1 bye tu DS18B20 ==================*/
            void Write_DS18B20(unsigned char dat)
            {
            unsigned char i=0;
            for (i=8; i>0; i--)
            {
            DQ = 0;
            DQ = dat&0x01;
            delay_18B20(5);
            DQ = 1;
            dat>>=1;
            }
            }
            /* ================= Doc nhiet do tu DS18B20 ==================*/
            void Read_Temp(void)
            {
            unsigned char a=0;
            unsigned char b=0;
            unsigned char t=0;
            int tt; // Nhiet do thuc
            khoitao_DS18B20();
            Write_DS18B20(0xCC); // Truy cap den bo nho ROM DS18B20
            Write_DS18B20(0x44); // Khoi dong qua trinh chuyen doi nhiet thanh so nhi phan

            delay_18B20(100);

            khoitao_DS18B20();
            Write_DS18B20(0xCC); // Truy cap lai bo nho ROM
            Write_DS18B20(0xBE); // Doc gia tri nhiet do sau khi chuyen doi tai bo nho nhap

            delay_18B20(100);

            a=Read_DS18B20();
            b=Read_DS18B20();
            nhiet_thuc=b<<4;
            nhiet_thuc+=(a&0xf0)>>4;
            tt=nhiet_thuc; // Chuyen nhiet thuc ve so nguyen roi goi len may tinh

            if(che_do==1) SBUF=tt;

            }
            /* ============ Chuyen doi gia tri nhiet do doc duoc DS18B20 ============*/
            void chuyen_doi_DS18B20()
            {
            dvt=nhiet_thuc % 10;
            cht=(nhiet_thuc/10)%10;
            trt=(nhiet_thuc/100)%10;
            }
            /* ================= Hien thi nhiet do tu DS18B20 len LCD ==================*/
            void hien_thi_DS18B20()
            {
            guilenh_LCD(0x8F); // vi tri 16 hang thu 1
            ghi_ky_tu_LCD(trt|0x30);
            ghi_ky_tu_LCD(cht|0x30);
            ghi_ky_tu_LCD(dvt|0x30);
            }

            void hienthi_lan1()
            {
            khoitao_LCD(); // Hien thi hang 1
            {
            for(c=0;c<20;c++)
            {
            ghi_ky_tu_LCD(hang1_[c]);
            }
            }
            guilenh_LCD(0xC0); // Hien thi hang 2
            {
            for(c=0;c<20;c++)
            {
            ghi_ky_tu_LCD(hang2_[c]);
            }
            }
            guilenh_LCD(0x94); // Hien thi hang 3
            {
            for(c=0;c<20;c++)
            {
            ghi_ky_tu_LCD(hang3_[c]);
            }
            }
            guilenh_LCD(0x0D4); // Hien thi hang 4
            {
            for(c=0;c<20;c++)
            {
            ghi_ky_tu_LCD(hang4_[c]);
            }
            }
            }
            void hienthi_lan2()
            {
            khoitao_LCD();
            {
            for(c=0;c<20;c++) // hien thi hang 1 lan 2
            {
            ghi_ky_tu_LCD(hang5_[c]);
            }
            }
            guilenh_LCD(0xC0); // hien thi hang 2 lan 2
            {
            for(c=0;c<20;c++)
            {
            ghi_ky_tu_LCD(hang6_[c]);
            }
            }
            guilenh_LCD(0x94); // hien thi hang 3 lan 2
            {
            for(c=0;c<20;c++)
            {
            ghi_ky_tu_LCD(hang7_[c]);
            }
            }
            }
            Email:
            Phone: 0969 226 539

            Comment


            • #7
              em có một số thắc mắc mong anh chị giải thích giúp em với (vì em chỉ mới học VĐK nên còn nhiều điều chưa rõ) :
              unsigned char Read_DS18B20(void)
              {
              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(4);
              }
              return(dat);
              }
              void Write_DS18B20(unsigned char dat)
              {
              unsigned char i=0;
              for (i=8; i>0; i--)
              {
              DQ = 0;
              DQ = dat&0x01;
              delay_18B20(5);
              DQ = 1;
              dat>>=1;
              }
              }
              void Read_Temp(void)
              {.
              .
              .
              .
              .
              nhiet_thuc+=(a&0xf0)>>4;
              if(che_do==1) SBUF=tt;
              anh chị giải thích giúp em những đoạn code màu đỏ giúp em với, nó có chức năng là gì ? SBUF là gì ?, cho một ví dụ củ thể thì tốt quá ạ !
              theo em được biết thì bản thân DS18b20 có ADC rồi ,nhưng em thấy đề tài này dùng thêm một con ADC nửa, vậy công dụng để làm gì ?
              Mong anh chị giúp em !

              Comment


              • #8
                Nguyên văn bởi mctrjnh Xem bài viết
                em có một số thắc mắc mong anh chị giải thích giúp em với (vì em chỉ mới học VĐK nên còn nhiều điều chưa rõ) :



                anh chị giải thích giúp em những đoạn code màu đỏ giúp em với, nó có chức năng là gì ? SBUF là gì ?, cho một ví dụ củ thể thì tốt quá ạ !
                theo em được biết thì bản thân DS18b20 có ADC rồi ,nhưng em thấy đề tài này dùng thêm một con ADC nửa, vậy công dụng để làm gì ?
                Mong anh chị giúp em !
                Các lệnh đó thì bạn đọc lại "phép toán và thao tác Bit" trong C bạn sẽ hiểu rõ hơn.
                SBUF là thanh ghi chưa giá trị truyền, nhận trong việc truyền thông.
                ADC dùng kết hợp với volume để điều chỉnh nhiệt độ đặt. ADC chuyển đổi điện áp từ volume thành giá trị từ 00->FFh. Khi tăng volume thì giá trị ADC tăng ==> nhiệt độ đặt tăng và ngược lại, để giảm nhiệt độ đặt thì chỉnh volume về min.
                Good luck!
                Email:
                Phone: 0969 226 539

                Comment


                • #9
                  Nguyên văn bởi vantrinh0902 Xem bài viết
                  Các lệnh đó thì bạn đọc lại "phép toán và thao tác Bit" trong C bạn sẽ hiểu rõ hơn.
                  SBUF là thanh ghi chưa giá trị truyền, nhận trong việc truyền thông.
                  ADC dùng kết hợp với volume để điều chỉnh nhiệt độ đặt. ADC chuyển đổi điện áp từ volume thành giá trị từ 00->FFh. Khi tăng volume thì giá trị ADC tăng ==> nhiệt độ đặt tăng và ngược lại, để giảm nhiệt độ đặt thì chỉnh volume về min.
                  Good luck!
                  Mình có thể đặt nhiệt độ bằng nút nhấn được không anh ? em nghĩ nhiệt độ đặt như một cái biến thôi, khi ta nhấn một nút để tăng hoặc giảm nhiệt độ thì biến đó tăng/giảm theo được không anh ?

                  Ah về băm xung mình có thể vẽ mạch như thế này được không anh (hình vẽ) ? chỉ cần quay 1 chiều thôi (tức không đổi chiều động quạt)Click image for larger version

Name:	mophong_pwm.png
Views:	1
Size:	16.4 KB
ID:	1378905

                  Comment


                  • #10
                    Nguyên văn bởi mctrjnh Xem bài viết
                    Mình có thể đặt nhiệt độ bằng nút nhấn được không anh ? em nghĩ nhiệt độ đặt như một cái biến thôi, khi ta nhấn một nút để tăng hoặc giảm nhiệt độ thì biến đó tăng/giảm theo được không anh ?

                    Ah về băm xung mình có thể vẽ mạch như thế này được không anh (hình vẽ) ? chỉ cần quay 1 chiều thôi (tức không đổi chiều động quạt)[ATTACH=CONFIG]66148[/ATTACH]
                    Đặt nhiệt độ bằng nút nhấn cũng dc thôi, nhưng khi tăng hoặc giảm thì phải giữ nút lâu hơn mình vặn volume.
                    PWM thì không nên dùng Tip (tần số đóng cắt của Tip nhỏ hơn IRF) mà khi dùng PWM thì tần số điện áp thay đổi rất (mịn). Vì thế mihf khuyên bạn nên dùng IRF, IRFP250, IRF540... Nên dùng Transistor kích cho Tip hay IRF vì dòng kích của chip nhỏ.
                    Good luck
                    Email:
                    Phone: 0969 226 539

                    Comment


                    • #11
                      Nguyên văn bởi vantrinh0902 Xem bài viết
                      Đặt nhiệt độ bằng nút nhấn cũng dc thôi, nhưng khi tăng hoặc giảm thì phải giữ nút lâu hơn mình vặn volume.
                      PWM thì không nên dùng Tip (tần số đóng cắt của Tip nhỏ hơn IRF) mà khi dùng PWM thì tần số điện áp thay đổi rất (mịn). Vì thế mihf khuyên bạn nên dùng IRF, IRFP250, IRF540... Nên dùng Transistor kích cho Tip hay IRF vì dòng kích của chip nhỏ.
                      Good luck
                      có thể giải thích nguyên lý làm việc trong đoạn code được không bạn.

                      Comment


                      • #12
                        Nguyên văn bởi huathanhlong Xem bài viết
                        có thể giải thích nguyên lý làm việc trong đoạn code được không bạn.
                        Bạn không hiểu đoạn nào chứ mình mình rỗi đâu mà giải thích hết chương trình.
                        Email:
                        Phone: 0969 226 539

                        Comment


                        • #13
                          Không huynh nào tậu cái này dùm mình cái, để cũng đẹp mà chật nhà was
                          Email:
                          Phone: 0969 226 539

                          Comment


                          • #14
                            bạn ơi,cho mình hỏi có phải trong bài code có cả phần code của thiết bị thu phát RF phải ko?nếu vậy sản phẩm của bạn có thể điều khiển từ xa bằng thiết bị RF phải ko?nếu điều khiển bằng RF thì kết quả bạn cho hiển thị lên máy tính hay LCD?cảm ơn bạn rất nhiều.

                            Comment


                            • #15
                              Bạn ơi,có phải trong code chưa có hàm main phải ko?và cách để các bóng đèn hoặc quạt sáng dần hoặc tắt dần là như thế nào hả bạn?thanks a lot.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X