Thông báo

Collapse
No announcement yet.

Bộ đo và khống chế nhiệt độ

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

  • #16
    Giúp em với các bác ơi! Đề tài của em cũng như thế, nhưng khác là: thiết kế bộ đo và khống chế nhiệt độ. nhiệt độ đo được được hiển thị bằng LCD, nhiệt độ cần khống chế được đặt bằng phím nhấn, thao tác khống chế được mô phỏng bằng 3 led với 3 màu khác nhau. Sai số cho phép là +/-1độ C. em đã làm mạch in rồi nhưng ko hiểu sao ko chạy. em post lên các bác tham khảo và chỉnh sửa giúp em với.
    Đây là chương trình nạp của em!

    #include <reg52.h>
    #include <stdio.h>

    void Init_LCD(void); // Cai dat LCD
    void W_ctr_8bit(char); // Dua tu dien khien toi LCD
    void W_data_8bit(char); // Hien thi ki tu len LCD
    void Delay_1kcyc(void); // Tre 1000 chu ki, 1ms
    void delay(unsigned long int d); // Tre d chu ki
    void ad_convert(void); // Doc ADC

    sbit LCD_RS = P1^0; // RS LCD
    sbit LCD_E = P1^2; // ENABLE LCD
    sbit LCD_RW = P1^1; // RW LCD
    sbit INTR = P3^5; // INTR ADC
    sbit RD_ADC = P3^7; // RD ADC
    sbit WR_ADC = P3^6; // WR ADC

    unsigned char LCD_TEMP,i,j;
    unsigned long int n;
    unsigned long int adc,value,tr,ch,dv;

    char bien0[16] = "Mach do nhiet do";
    char bien1[16] = " Hien thi LCD ";
    char bien2[16] = " Nhiet do la: ";
    char bien3[5] = "Do C";

    void main()
    {
    LCD_RW = 0;
    P0 = 0x0f;
    Init_LCD(); // LCD setup
    W_ctr_8bit(0x81); // Hien thi dong 1, cot 2
    for (i=0; i<16; i++) // Hien thi chuoi "Mach do nhiet do"
    {
    W_data_8bit(bien0[i]); // Dua ki tu ra hien thi tren LCD
    delay(10);
    }

    delay(10);

    W_ctr_8bit(0xC1); // Hien thi dong 2, cot 2
    for (i=0; i<16; i++) // Hien thi chuoi "Hien thi LCD"
    {
    W_data_8bit(bien1[i]); // Dua ki tu ra hien thi tren LCD
    }
    delay(20000);

    W_ctr_8bit(0x01); // Xoa man hinh
    W_ctr_8bit(0x82); // Hien thi dong 1, cot 3
    for (i=0; i<13; i++) // Hien thi chuoi "Nhiet do la:"
    {
    W_data_8bit(bien2[i]); // Dua ki tu ra hien thi tren LCD
    }
    delay(100);
    while (1)
    {
    ad_convert(); // Doc ADC
    delay(100);
    W_ctr_8bit(0xC4); // Hien thi dong 2, cot 10
    W_data_8bit(tr+0x30);
    W_data_8bit(ch+0x30);
    W_data_8bit(0x2E); // Hien thi ki tu "."
    W_data_8bit(dv+0x30);
    W_ctr_8bit(0xC9); // Hien thi dong 2, cot 10
    for (i=0; i<4; i++) // Hien thi chuoi "Do C"
    {
    W_data_8bit(bien3[i]); // Dua ki tu ra hien thi tren LCD
    delay(100);
    }
    delay(500);
    }
    }

    // Cai dat LCD

    void Init_LCD(){
    W_ctr_8bit(0X03);
    W_ctr_8bit(0X38);
    W_ctr_8bit(0X06);
    W_ctr_8bit(0X0e);
    W_ctr_8bit(0x01);
    }

    // Dua tu dien khien toi LCD

    void W_ctr_8bit(char bien){
    LCD_RS = 0;
    LCD_E = 1;
    P0 = bien;
    LCD_E = 0;
    Delay_1kcyc();
    }

    // Hien thi ki tu len LCD

    void W_data_8bit(char bien){
    LCD_RS = 1;
    LCD_E = 1;
    P0 = bien;
    LCD_E = 0;
    Delay_1kcyc();
    }

    void Delay_1kcyc(){
    unsigned int j;
    for(j=0; j<1000; j++);
    }

    void delay(unsigned long int d)
    {
    for (n=0;n<d;n++);
    }

    void ad_convert(void)
    {
    WR_ADC = 0; // Cam che do viet ADC
    RD_ADC = 0;
    delay(3);
    WR_ADC = 1; // Mo che do doc ADC
    if(INTR == 1)
    {
    adc = P2; // Doc ADC
    value = (adc*700)/255; // Chuyen doi 255 -> 250
    }
    RD_ADC = 0; // Cam che do doc

    tr = value/100; // Gia tri hang tram
    ch = (value%100)/10; // Gia tri hang chuc
    dv = (value%100)%10; // Gia tri hang don vi
    }

    Còn đây là mạch nguyên lý của em:[/QUOTE]

    đây là mạch nguyên lý. Nếu sai các bác chỉnh sửa giúp em vơi!
    Attached Files
    Last edited by phamxuanthao; 29-11-2008, 00:47.

    Comment


    • #17
      em post lại mạch nguyên lý. Vì mạch nguyên lý kia hơi mờ.
      Attached Files

      Comment


      • #18
        chao cac pac !

        cac pac cho em xin so do nguyen ly cua mach : do v hien thi nhiet do su dung vi dieu khien MSC51,lm35,ADC0809, hien thi len led 7 doan . pac nao co send cho em : ngoctiep19862004@yahoo.com , em xin da ta
        !
        tiep

        Comment


        • #19
          hỏi mạch đo và khống chế

          chào các bác.hnay e nhận đc đồ án đề tài là thiết kế bộ đo và khống chế hiển thị bằng màn hình máy tính.
          yêu câu bài toán là:nhiệt độ đo đc truyền lên máy tính và hiển thị bằng phần mềm tiện ích Hyper termial của window,sai số cho fép là +/- 1%, thao tác điều khiển đc khống chế đc mô fỏng bằng 3 LED, LED đỏ sáng khi nhiệt độ môi trường nhỏ hơn nhiệt độ khống chế, LED xanh sáng khi nhiệt độ môi tr` lớn hơn nhiệt độ khống chế, LED màu vàng sáng khi nhiệt độ môi trường = nhiệt độ khống chế.
          VẬy e poss bài lên mong bác nào đã làm bài về đề tài này rùi giúp e với.vì thời gian ngắn quá mà chưa đc học nhiều về VDK nên rất mong đc các bác giúp đỡ.bác nào đã làm dồi thì cho e xin đoạn code của mạch trên. E xin cảm ơn trước.nếu ai bít thi poss qua mail cho e với nhé:hongquan1010@yahoo.com
          Last edited by hongquan1010; 11-10-2009, 00:25.

          Comment


          • #20
            Nguyên văn bởi hongquan1010 Xem bài viết
            chào các bác.hnay e nhận đc đồ án đề tài là thiết kế bộ đo và khống chế hiển thị bằng màn hình máy tính.
            yêu câu bài toán là:nhiệt độ đo đc truyền lên máy tính và hiển thị bằng phần mềm tiện ích Hyper termial của window,sai số cho fép là +/- 1%, thao tác điều khiển đc khống chế đc mô fỏng bằng 3 LED, LED đỏ sáng khi nhiệt độ môi trường nhỏ hơn nhiệt độ khống chế, LED xanh sáng khi nhiệt độ môi tr` lớn hơn nhiệt độ khống chế, LED màu vàng sáng khi nhiệt độ môi trường = nhiệt độ khống chế.
            VẬy e poss bài lên mong bác nào đã làm bài về đề tài này rùi giúp e với.vì thời gian ngắn quá mà chưa đc học nhiều về VDK nên rất mong đc các bác giúp đỡ.bác nào đã làm dồi thì cho e xin đoạn code của mạch trên. E xin cảm ơn trước.nếu ai bít thi poss qua mail cho e với nhé:hongquan1010@yahoo.com
            1> Về sơ đồ nguyên lý gồm :
            LM35 + LM358+ADC0804+89C/SXX+MAX232+COMPIM
            2> Về code : Bạn chia thành các modul nhỏ chẳng hạn :
            + chuyển đổi
            + điều khiển (dùng phím nhấn)
            + hiển thị (trên led)
            + buad (giao tiếp máy tính)
            - chuyển đổi : nhiệt độ đo đc từ LM35 --> khuếch đại bằng LM358 sau đó đc đưa vào ADC0804 để chuyển sang dạng số ---> đưa đến VĐK. Để viết đc code thì bạn phải hiểu nguyên lý của ADC0804
            - điều khiển : Cái này bạn dùng nút nhấn để điều chỉnh giá trị cài đặt. Chẳng hạn gồm 3 nút nhấn (1.mode -2.tăng-3.giam).Phím mode bạn dùng ngắt ngoài. VD khi bạn nhấn nút mode số lần là lẻ thì sẽ điều chỉnh giá trị cài đặt min, còn khi nhấn mode số lần chẵn thì điều chỉnh giá trị cài đặt max.
            - Hiển thị : khi nhiệt độ đo đc < min thì led..
            khi min< nhiệt độ đo đc < max thì led...
            nhiệt độ > max thì...
            - buad + hiển thị trên máy tính: tạo tốc độ truyền thông với máy tính qua cổng nối tiếp chẳng hạn buad 9600. Mình vd viết code tạo tốc độ và truyền lên máy tính các ký tự từ 0->9:

            void buad_9600()
            {
            char x;
            SCON = 0x52;
            TMOD = 0x20;
            TH1 = TL1 = -3; // tạo tốc độ buad 9600
            TR1 = 1;
            for(x=0x30;x<0x39;++x)
            {
            while (!TI); // chờ TI=1
            TI=0; // XÓA TI
            SBUF=x; //truyền ký tự mã ASCII
            }
            }

            Nếu khó hiểu hoặc muốn mình giải thích thêm thì liên lạc với mình qua YM: pvt_105dcn


            Comment


            • #21
              Điều khiển nhiệt độ dùng LM35

              Hehe....minh da tung lam cai nay rui. Đó là đồ án lý thuyết điều khiển cua tụi mình. Để làm được nó trước hết bạn phải biết cách đoc ADC,học VB,CodeVisionAVR C Compiler...đó là những phương tiện đơn giản nhất sẽ giúp bạn.Còn một số phần mềm khác nhưng nó khó dùng hơn.Cố lên he.Dễ thui ma !!!

              Comment


              • #22
                ban da lam ve cai nay rui ah. ban code va mach nguyen ly ko. cho to xin dc ko. to moi hoc ve vdk nen chua bit nhieu ve no, dang can nho ng giup do, neu ban da lam rui thi cho to xin code va mach nguyen ly nhe. co gi send mail cho to nha.thank's

                Comment


                • #23
                  May ban Pro giup minh voi!
                  Minh moi hoc nen chua co nhiue kinh nghiem!
                  De tai cua minh la: thiet ke mach do nhiet do moi truong dung DS1820 va ghien thi tren led ma tran!

                  Comment


                  • #24
                    Nguyên văn bởi blackberry Xem bài viết
                    May ban Pro giup minh voi!
                    Minh moi hoc nen chua co nhiue kinh nghiem!
                    De tai cua minh la: thiet ke mach do nhiet do moi truong dung DS1820 va ghien thi tren led ma tran!
                    Ko ai giúp BB hết cả ah! Buồn nhỉ?

                    Comment


                    • #25
                      e đang làm mạch đo nhiệt độ dùng DS1820 nhưng chưa biết sử dụng nó như nào. bác nào biết chỉ em với (datasheet, sơ đồ nguyên lý, code). e xin cảm ơn rất nhiều

                      Comment


                      • #26
                        các bác ui giúp e với e đang cóa 1 đề tài "thiết kế mạch đo nhiệt độ từ 0 - 100 độ C với độ chính xác 1%" mà giờ e chẳng biết fai làm từ đầu như thía nào.giúp e với.Thanks các bác na !!!

                        Comment


                        • #27
                          Mình đang làm đồ án về đo nhiệt độ môi trường. bạn nào có sơ đồ nguyên lý không send cho mình với

                          Comment


                          • #28
                            ai đã làm rùi post cho mình với..hiển thị trên 3 led ý

                            Comment


                            • #29
                              CÁi này mình cũng đang làm.. hè rảnh nc chơi mà cũng đang vướn chỗ cờ báo nhiệt độ về phần đọc rom và match rom cũng ok lun còn phần cảnh báo đọc data sheet thấy nói ít quá nên cũng đang tìm tài liệu

                              Comment


                              • #30
                                Cái này khó dùng qua chẳng biết làm sao đính kèm file cho bạn ở trên thôi đưa code cho bạn lun:
                                #include<at89x52.h>
                                #define seg P0
                                #define anode P2
                                #define dq P3_0
                                const unsigned char MA7D[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
                                unsigned char val1,val2,temp;
                                void delay(unsigned int xtime)
                                {
                                unsigned int y;
                                for(y=0;y<xtime;y++);
                                }
                                void hienthi(unsigned char xseg, unsigned char anod)
                                {
                                seg=xseg;
                                anode=anod;
                                delay(100);
                                seg=0xff;
                                }
                                void quetled()
                                {
                                hienthi(MA7D[val2%10],0x08);
                                hienthi(MA7D[(val2/10)%10],0x04);
                                hienthi(MA7D[val2/100],0x02);
                                }
                                void delay_dq(unsigned char x)
                                {
                                unsigned char y;
                                for(y=0;y<x;y++);
                                }
                                void reset_dq()
                                {
                                dq=0;
                                delay_dq(60);
                                dq=1;
                                delay_dq(18);
                                }
                                void write_dq(unsigned char x)
                                { unsigned char i;
                                for(i=0;i<8;i++)
                                {
                                dq=0;
                                dq=x&0x01;
                                delay_dq(5);
                                dq=1;
                                x=x>>1;
                                }
                                }
                                void read_dq()
                                {
                                unsigned char i,tp;
                                for(i=0;i<8;i++)
                                {
                                dq=0;
                                tp=tp>>1;
                                dq=1;
                                if(dq)
                                tp=tp|0x80;
                                delay_dq(5);
                                }
                                temp=tp;
                                }

                                void doc_nhiet()
                                {
                                reset_dq();
                                write_dq(0xcc);
                                delay_dq(20);
                                write_dq(0x44);
                                delay_dq(100);

                                reset_dq();
                                write_dq(0xcc);
                                delay_dq(20);
                                write_dq(0xbe);
                                delay_dq(100);

                                read_dq();
                                val2=temp>>4;
                                read_dq();
                                val2|=temp<<4;
                                }
                                void main()
                                {
                                while(1)
                                {
                                doc_nhiet();
                                quetled();
                                }
                                }


                                Phần cứng mún đo có số lẻ thập phân thì cũng từ đây phát triên thêm. món đọc từ nhiều cảm biến trên cùng một đường dây thì phải biết trước 64bit romcode của cảm biến sau đó dùng lệnh match rom là đọc dc hết.. mún lấy thì liên hệ mình gửi, chỉ có phần cảnh báo nhiệt độ là chưa làm dc cao nhân nào biết xin chỉ giáo
                                Click image for larger version

Name:	pc.png
Views:	1
Size:	32.6 KB
ID:	1381467

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X