Thông báo

Collapse
No announcement yet.

Giúp đỡ về mạch đo nhiệt độ LM35 + PIC 16F877A + RS232

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

  • Giúp đỡ về mạch đo nhiệt độ LM35 + PIC 16F877A + RS232

    chào các bạn!
    mình hiện đang làm đồ án về phần đo nhiệt độ giao tiếp máy tính qua cổng COM dùng PIC16F877A. mình bị vướng ở phần lập trình và thiết kế mạch, mình định dùng PIC đo và sau đó hiển thị lên máy tính luôn chứ không hiển thị lên LCD nhưng không biết viết thế nào, còn mạch thì mình thiết kế như trong file đính kèm nhưng 1 bạn trên diễn đàn nói là phải đổi lại chân 13 của MAX232 nối vào chân 2 của cổng COM và chân 7 của MAX232 nối vào chân 2 của COM thì khi làm mạch mới chạy, mình thắc mác là như vậy có đúng ko? và nếu đúng thì cổng NOT vẫn ở chân 3 hay phải dời lên chân 2...Mong mọi người giải đáp thắc mắc giùm mình. Cám ơn mọi ngườiClick image for larger version

Name:	giao tiep mt.jpg
Views:	1
Size:	66.6 KB
ID:	1409877 nhiều!!!

  • #2
    Tôi có góp ý cho bạn : Hi vọng bạn sẽ làm tốt hơn.
    thứ 1 : bạn vứt cái mô phỏng củ chuối của Proteus đi. mình sẽ ko bao giờ mô phỏng với proteus mà dùng COMPPIM cả, bạn thấy đấy phải đảo chân + thêm NOT chạy mới mô phỏng nữa. Hoàn toàn sai với datasheet. Nếu bạn ko cần hiện thị lên LCD chỉ giao tiếp với máy tính thì có thể lôi cái Terminal Virtual ra (của Proteus luôn, nó nằm cùng mục với lôi Occillo ấy), lấy nó ra nối chéo 2 chân tx và rx thế là bạn có có mô phỏng rs232 hoàn hảo,
    thứ 2 : Nếu là đề tài : thì đề tài này rất dể nên làm mạch thật mà tét luôn. Ngon lành cành đào thì báo cáo kiếm tiền. Hì
    Thân !
    Nếu cần thiết tôi có thể pm cho bạn 1 project về vấn đề của bạn : Y!M : danghien_004
    My Face :

    Comment


    • #3
      Đề tài này cần giải quyết 3 vấn đề: Biết khai thác module ADC, xuất được dữ liệu ra ngõ RS232, phải biết lập trình Winform.
      Ở đây mình có sẵn code giải quyết được 2 vấn đề:
      + Khai thác module ADC:
      #include "16f887.h"
      #include "def_16f887.h"
      #device *=16 ADC = 10
      #fuses HS,PUT,NOWDT,NOPROTECT,NOLVP
      #use delay(Clock = 4000000) //Thach anh 4MHz
      int16 temp;
      void main()
      {
      setup_spi(SPI_SS_DISABLED);
      setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
      setup_timer_2(T2_DISABLED,0,1);
      setup_comparator(NC_NC_NC_NC);
      setup_vref(FALSE);
      setup_timer_1(T1_INTERNAL);
      setup_adc_ports(sAN0|VREF_VREF); //kenh A0 nhan tin hieu, A2 = 0V; A3 = 5V;
      setup_adc(ADC_CLOCK_INTERNAL); //Thoi gian lay mau bang clock he thong.
      delay_ms(5); //Cho thiet lap xong ADC.
      // TODO: USER CODE!!

      trisa = 0xff; //PORTA nhan du lieu.
      trisc = 0x00; //PORTC xuat du lieu.
      set_adc_channel(0); //Chon kenh 0.
      delay_us(10); //cho chon kenh xong.

      while(1)
      {
      temp = read_adc(); //doc gia tri analog da chuyen doi sang so.
      temp = temp/10.24; //stepsize = 50mV. Neu giao tiep LM35 thi chia 2.048 (stepsize = 10mv)
      PORTC = temp; //Value = Vol/0,05
      delay_ms(500);
      }

      }
      Bạn tham khảo chi tiết tại đây.

      + Xuất dữ liệu ra ngõ RS232
      #include "16f887.h"
      #include "def_16f887.h"
      #device *=16 ADC = 10
      #fuses HS,PUT,NOWDT,NOPROTECT,NOLVP
      #use delay(Clock = 4000000) //Thach anh 4MHz
      #use rs232(baud = 9600, parity = N , Xmit = Pin_c6,rcv = pin_c7) //khoi tao usart

      void main()
      {
      setup_adc_ports(NO_ANALOGS);
      setup_adc(ADC_OFF);
      setup_spi(SPI_SS_DISABLED);
      setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
      setup_timer_1(T1_DISABLED);
      setup_timer_2(T2_DISABLED,0,1);
      setup_comparator(NC_NC_NC_NC);
      setup_vref(FALSE);
      // TODO: USER CODE!!
      trisc = 0x10; //PORTC xuat du lieu.
      while(1)
      {
      putc('A'); //Gui ky tu A
      delay_ms(500);
      }
      }

      Bạn tham khảo thêm tại đây http://www.sangthai.com.vn/ste/project-pic/762

      Comment


      • #4
        mình cũng đang học về PIC và dang làm cái mạch đo nhiệt độ LM35 + PIC 16F877A + RS232
        đây là code của mình bạn tham khảo nhé:
        #include <16F877A.h>
        #device adc=10 //adc 8 bit
        #include <math.h>
        #fuses HS,NOWDT,NOPROTECT,NOLVP // Dung thach anh ngoai, Tat WDT, Khong khoa ma nguon, Khong su dung bo nhan thach anh
        #use delay(clock=4000000) //Dinh nghia thach anh

        BYTE CONST MA_LED[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
        int16 adc;
        int16 nhietdo;
        int8 donvi, hangchuc;

        void main() {
        //-----------------------------------------------
        int i=0;
        //Cai dat kenh bien doi ADC
        Setup_ADC(ADC_CLOCK_INTERNAL); //Su dung Timer trong
        Setup_ADC_ports(AN0); //Chon loi vao ADC la chan AN0
        Set_ADC_channel(0); //Chon kenh bien doi ADC la kenh 0
        SET_TRIS_B( 0x00);
        SET_TRIS_D( 0x00);
        OUTPUT_B(0);
        output_high(pin_d6);
        delay_ms(5);
        output_low(pin_d6);
        delay_ms(5);
        output_high(pin_d5);
        delay_ms(5);
        output_low(pin_d5);
        delay_ms(5);
        output_high(pin_d4);
        delay_ms(5);
        output_low(pin_d4);
        delay_ms(5);
        output_high(pin_c7);
        delay_ms(5);
        output_low(pin_c7);
        delay_ms(5);
        output_high(pin_c6);
        delay_ms(5);
        output_low(pin_c6);
        delay_ms(5);
        output_high(pin_c5);
        delay_ms(5);
        output_low(pin_c5);
        delay_ms(5);
        Lap:
        i=0;
        delay_us(20);
        adc=read_adc(); //Doc du lieu tu ADC
        nhietdo=ceil((adc*5*100)/1023);
        hangchuc = nhietdo/10;
        donvi = nhietdo % 10;
        //Hien thi hang chuc
        output_B(MA_LED[hangchuc]);
        output_high(pin_D4);
        delay_ms(2);
        output_low(pin_d4);
        delay_ms(2);
        //Hien thi hang don vi
        output_B(MA_LED[donvi]);
        output_high(pin_c7);
        delay_ms(2);
        output_low(pin_c7);
        delay_ms(2);
        Lap1:
        i=i+1;
        delay_ms(1000);
        if (i<5) goto Lap1;
        goto Lap;
        }
        yahoo: boulevard.electronic
        Học tập & nghiên cứu

        phần mềm mình upload lên để chia sẻ:

        Comment


        • #5
          Nguyên văn bởi hienthom Xem bài viết
          chào các bạn!
          mình hiện đang làm đồ án về phần đo nhiệt độ giao tiếp máy tính qua cổng COM dùng PIC16F877A. mình bị vướng ở phần lập trình và thiết kế mạch, mình định dùng PIC đo và sau đó hiển thị lên máy tính luôn chứ không hiển thị lên LCD nhưng không biết viết thế nào, còn mạch thì mình thiết kế như trong file đính kèm nhưng 1 bạn trên diễn đàn nói là phải đổi lại chân 13 của MAX232 nối vào chân 2 của cổng COM và chân 7 của MAX232 nối vào chân 2 của COM thì khi làm mạch mới chạy, mình thắc mác là như vậy có đúng ko? và nếu đúng thì cổng NOT vẫn ở chân 3 hay phải dời lên chân 2...Mong mọi người giải đáp thắc mắc giùm mình. Cám ơn mọi người[ATTACH=CONFIG]30044[/ATTACH] nhiều!!!
          Bạn có thể tham khảo bài này:
          Code mẫu
          Hi vọng có ích cho bạn

          Comment


          • #6
            cứu cứu..........Mình có mạch đo nhiệt độ mà nó nhảy số ghê quá, ai giúp mình vụ này đi,,sắp nộp đồ án rồi huhu
            http://www.dientuvietnam.net/forums/...iet-do-149366/

            Comment


            • #7
              mình đã đọc mấy bài viết của mấy bạn nhưng chưa hiểu lắm, ai có demo cái này trên proteus gửi cho mình với, cám ơn các bạn nhiều.

              Comment


              • #8
                mạch đo nhiệt độ đem đặt ngoài tiệm giá khoảng bao nhiêu vậy các bạn?

                Comment


                • #9
                  em cũng đang phải làm cái đồ án tn thiết kế mạch đo nhiệt độ giao tiếp với mt qua cổng rs232.
                  phải bắt đầu tn đây mọi ng chỉ e mới!!!
                  e cảm ơn!

                  Comment


                  • #10
                    em cũng đang phải làm cái đồ án tn thiết kế mạch đo nhiệt độ giao tiếp với mt qua cổng rs232.
                    phải bắt đầu tn đây mọi ng chỉ e mới!!!
                    e cảm ơn!

                    Comment


                    • #11
                      Cảm ơn anh, mong anh giúp đỡ nhiều ạ

                      Comment


                      • #12
                        Chao anh. anh co the cho em thao khao 1 bai tap tuong tu nhu anh da noi khong a. email cua em la duchaotb@gmail.com

                        Comment


                        • #13
                          mong moi nguoi giup do dum.minh dang lam do an do nhiet do dung lm35 va pic16f877a.hien thi ra bang cach bao den sang.vd nhiet do tu 0-40do thi den1 bao sang.con tu 41-70 thi den 2 bao sang va tu 70-90 thi den 3 bao sang.minh da tham khao nhieu code nhung chi co viet ve hien thi bang lcd hoac led 7 doan.con cai nay thi khong co.mong cao thu chi giao.dang bi bi cho nay

                          Comment


                          • #14
                            giám sát tại 3 điểm

                            có ai biết giám sát tại 3 điểm gửi lên máy tính không.mình gửi 1 điểm thì đc nhưng 3 điểm thì không đc. khi mình gộp 3 điểm thành 1 chuỗi rồi gửi lên thì máy tính không nhận đc,mình viết bằng mikroC .bạn nào rành chỉ mình với nha!!!!

                            Comment


                            • #15
                              mấy bác cho xin mạch mô phỏng trên protues với em cũng đang tìm hiểu mạch này. thaks cac bác..,

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X