Thông báo

Collapse
No announcement yet.

giúp đỡ mạch đo nhiệt độ...!!

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

  • giúp đỡ mạch đo nhiệt độ...!!

    Chào các bác..!!!
    Hiện tại em đang làm cái mạch đo nhiệt độ sử dụng Lm35 và ADC0804, em đã làm ra mạch thật và chạy cũng ok nhưng không hiểu sao giá trị nhiệt độ hiển thj lên led 7thanh lại không ổn định tại một nhiệt độ mà cứ nhảy liên tục???? em nghĩ tại cái delay thấp quá không biết có phải không??(void delay()
    {
    unsigned int i;
    for(i=1;i<=100;i++);
    Bác nào biết vì sao giúp em với??

  • #2
    Nguyên văn bởi vinh_vt Xem bài viết
    Chào các bác..!!!
    Hiện tại em đang làm cái mạch đo nhiệt độ sử dụng Lm35 và ADC0804, em đã làm ra mạch thật và chạy cũng ok nhưng không hiểu sao giá trị nhiệt độ hiển thj lên led 7thanh lại không ổn định tại một nhiệt độ mà cứ nhảy liên tục???? em nghĩ tại cái delay thấp quá không biết có phải không??(void delay()
    {
    unsigned int i;
    for(i=1;i<=100;i++);
    Bác nào biết vì sao giúp em với??
    thông thường người ta đọc giá trị adc nhiều lần rồi so sánh sau đó mới đưa ra giá trị hiển thị .
    thân!
    Cửa hàng LINH KIỆN ĐIỆN TỬ BIÊN HÒA
    Ngã tư Amata -đối diện Bệnh Viện Nhi Đồng Nai đi tiếp 100m
    ĐC: 547/7 tổ 4 kp1 Long bình - Biên Hòa. Tell: 099509.79.68

    Comment


    • #3
      Mình đang thắc mắc là tại sao nó cứ nhảy liên tục như thế ấy....bạn biết tại sao không giúp mình với
      Thân!

      Comment


      • #4
        Nguyên văn bởi vinh_vt Xem bài viết
        Mình đang thắc mắc là tại sao nó cứ nhảy liên tục như thế ấy....bạn biết tại sao không giúp mình với
        Thân!
        mình chỉ phương pháp rồi.vậy mà.....nói tùm lum.
        Cửa hàng LINH KIỆN ĐIỆN TỬ BIÊN HÒA
        Ngã tư Amata -đối diện Bệnh Viện Nhi Đồng Nai đi tiếp 100m
        ĐC: 547/7 tổ 4 kp1 Long bình - Biên Hòa. Tell: 099509.79.68

        Comment


        • #5
          mình không biết mình mới hỏi. bạn nói thế thì ai bết nó sai chỗ nào và sửa chỗ nào được chứ...Bạn nói rõ hơn được không

          Comment


          • #6
            Nguyên văn bởi vinh_vt Xem bài viết
            mình không biết mình mới hỏi. bạn nói thế thì ai bết nó sai chỗ nào và sửa chỗ nào được chứ...Bạn nói rõ hơn được không
            bạn phải đưa code thì mọi người mới giúp được chứ. nếu thấy không tiện thì gửi vào địa chỉ linhkiedientu@gmail.com
            chúc vui !
            Cửa hàng LINH KIỆN ĐIỆN TỬ BIÊN HÒA
            Ngã tư Amata -đối diện Bệnh Viện Nhi Đồng Nai đi tiếp 100m
            ĐC: 547/7 tổ 4 kp1 Long bình - Biên Hòa. Tell: 099509.79.68

            Comment


            • #7
              code mình đây....!!! Bạn xem giúp nha. Thanks
              #include<reg51.h>
              int array[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
              sbit rd=P3^7;
              sbit wr=P3^6;
              sbit intr= P3^5;
              sbit led0=P2^0;
              sbit led1=P2^1;
              sbit led2=P2^2; //dieu khien 4 led 7 doan
              sbit led3=P2^3;
              sbit d1=P2^4;
              sbit d2=P2^5; //dieu khien led vang, xanh, do
              sbit d3=P2^6;
              sbit tang=P3^0;
              sbit giam=P3^1;
              sbit chedo=P3^2;

              unsigned int adc_avg,nhietdo,dc;
              void delay()
              {
              unsigned int i;
              for(i=1;i<=100;i++); //ham tre
              }
              void read()
              {
              wr=0;
              wr=1;
              while(intr); //che do de cho ADC hoat dong
              rd=0;
              adc_avg=P1;
              rd=1;
              }
              void chedo1()
              {
              int a,b;
              a=nhietdo/10;
              b=nhietdo%10;

              led3=1;
              P0=array[a];
              delay();
              led3=0;
              led2=1;
              P0=array[b];
              delay();
              led2=0;
              led1=1;
              P0=0x9c;
              delay();
              led1=0;
              led0=1;
              P0=0xc6;
              delay();
              led0=0;
              }
              void set_dc()
              {
              while (chedo==0){}//cho phim duoc nha
              do
              {
              if (tang==0) //neu phim tang duoc an
              {
              while (tang==0) {}// cho phim duoc nha
              dc++;
              if (dc>100) dc=0;
              }
              if (giam==0) // neu phim giam duoc an
              {
              while (giam==0){}//cho phim nha
              dc--;

              }
              led3=1;
              P0=array[dc/10];
              delay();
              led3=0;
              led2=1;
              P0=array[dc%10];
              delay();
              led2=0;
              led1=1;
              P0=0x9c;
              delay();
              led1=0;
              led0=1;
              P0=0xc6;
              delay();
              led0=0;
              }
              while (chedo==1);
              }


              void set()
              {
              set_dc();
              while(chedo==0){}
              }
              void baoled()
              {
              if (nhietdo<dc)
              {
              d1=0;
              d2=1;
              d3=1;
              }
              else if (nhietdo>dc)
              {
              d2=0;
              d1=1;
              d3=1;
              }
              else if (nhietdo==dc)
              {d3=0;
              d2=1;
              d1=1;
              }
              }
              void main()
              {
              int i;


              led0=led1=led2=led3=0;
              d1=d2=d3=1;

              while(1)
              {

              read(); //cho ADC hoat dong
              for(i=1;i<=100;i++)
              {
              nhietdo=adc_avg*1.953125; //gia tri can hien thi
              chedo1();

              if (chedo==0) {set();}
              baoled();
              }
              }
              }

              Comment


              • #8
                Về phương pháp, để cho nó khỏi nháy thì bạn phải lấy trung bình các giá trị cần hiển thị. Việc này phải dùng thuật toán, ví dụ FFT.
                Đơn giản hơn, bạn cho đọc lấy 1 giá trị rồi lưu và hiển thị qua nhiều chu kỳ cho đến khi đọc 1 giá trị mới. Thời gian lưu khoảng 1-2s thì bạn sẽ không thấy nó nháy lọan xạ nữa.
                Chưa đỗ tú tài, nên vẫn còn phải đi học.

                Comment


                • #9
                  bổ xung thêm
                  nguồn phải ổn định nữa nhé
                  Cửa hàng LINH KIỆN ĐIỆN TỬ BIÊN HÒA
                  Ngã tư Amata -đối diện Bệnh Viện Nhi Đồng Nai đi tiếp 100m
                  ĐC: 547/7 tổ 4 kp1 Long bình - Biên Hòa. Tell: 099509.79.68

                  Comment


                  • #10
                    Bạn HTTTH: mình hiểu ý ban nói nhưng giá trị đọc được từ ADC là adc_avg rồi mình đem nhân với 1.953....rồi mình cho hiển thị, vậy thì mình muốn lưu và hiển thị qua nhiều chu kỳ thì phải sửa code như thế nào vậy bạn....
                    Bạn lkdientubh: mình dùng nguồn xạc điện thoại chắc là ổn định ah
                    thanks hai bạn!!!

                    Comment


                    • #11
                      sao hai bạn không giúp mình tiếp vậy

                      Comment


                      • #12
                        Nguyên văn bởi vinh_vt Xem bài viết
                        Chào các bác..!!!
                        Hiện tại em đang làm cái mạch đo nhiệt độ sử dụng Lm35 và ADC0804, em đã làm ra mạch thật và chạy cũng ok nhưng không hiểu sao giá trị nhiệt độ hiển thj lên led 7thanh lại không ổn định tại một nhiệt độ mà cứ nhảy liên tục???? em nghĩ tại cái delay thấp quá không biết có phải không??(void delay()
                        {
                        unsigned int i;
                        for(i=1;i<=100;i++);
                        Bác nào biết vì sao giúp em với??
                        Chào bạn!

                        Để mạch này chạy tốt cần làm theo 2 hướng sau :
                        1. Phần cứng : Phải chống nhiễu cho mạch tốt thì giá trị adc trả về sẽ không nhảy (Phương sai nhỏ)
                        2. Phần mềm : Sử dụng bộ lọc có nhớ để tính kỳ vọng theo thời gian, có thể áp dụng thêm 1 số thuật toán lọc các giá trị đột biến theo độ lệch chuẩn nhằm đảm bảo độ ổn định tín hiệu.

                        Thông thường chỉ cần làm tốt 1 trong 2 thì giá trị hiển thị của bạn đã khá ổn định. Cần tìm hiểu chi tiết hơn có thể liên hệ mình.

                        Chúc bạn làm tốt!
                        Ngô Đông Y
                        ********
                        Mobile : 0984053088
                        Yahoo :
                        Email :

                        Comment


                        • #13
                          chào bạn lightspy39 mình có gưở gmail cjo bạn mong bạn gúp đỡ mình...thanks

                          Comment

                          Về tác giả

                          Collapse

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

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

                          Collapse

                          Đang tải...
                          X