Thông báo

Collapse
No announcement yet.

đo điện áp, không đọc được giá trị adc

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

  • đo điện áp, không đọc được giá trị adc

    hi, chào mọi người.
    em đang làm cái vol kế sử dụng 89c52 với ADC0808 để đo điện áp 0 đến 50v DC.
    em đang trong quá trình chạy mô phỏng, và khi làm mô phỏng thì em chưa hiển thị điện điện áp lên LCD, theo như chạy mô phỏng thì em đoán ADC chưa gữi tín hiện cho VDK nên chưa hiển thị được.
    anh/chị xem giúp em có sai chỗ nào không ạ !

    file mô phỏng :http://upfile.vn/download/b71dd64b-7...e-f86419c8750d
    file code :http://upfile.vn/download/e8bb3073-4...f-bccd17b692f5
    sơ đồ mạch :http://i.upanh.com/rcbrgd
    Đây là code của em :
    Code:
    #include<AT89x52.h>
    #define	LCD	P2
    #define	RS	P0_5
    #define	RW	P0_6
    #define	E	P0_7
    
    
    #define KA		P3_0
    #define KB		P3_1
    #define KC		P3_2
    #define ALE		P3_3
    #define START	P3_4
    unsigned int ADC  ;
    unsigned char j,tr,ch,dv;
    unsigned char mtr,mch,mdv;
    unsigned char code hang1[16]={"hello"};
    unsigned char code hang2[16]={"HOANG DUC"};
    
    void delay(unsigned int x)
    {
     	unsigned int y;
    	for(y=0;y<x;y++){};
    }
    //==================================================
    // ham ma ki tu
    void mdk()
    {
    	RS=0;	RW=0;	E=1;	E=0;	delay(200);
    }
    //=======================================
    // ham  ma dieu khien
    void mkt()
    {
    	RS=1;	RW=0;	E=1;	E=0;	delay(200);	
    }
    //=====================================
    //ham khoi tao LCD
    void khoitao_lcd()
    {
    	LCD=0x38;	mdk();
    	LCD=0x38;	mdk();	delay(200); 	
    	LCD=0x06;	mdk();	delay(200); 
    	LCD=0x0c;	mdk();	delay(200); 
    	LCD=0x01;	mdk();
    }
    //=================================
    // chuyen doi  gia tri ADC sang ma ASCII
    void giaima_lcd()
    {
    	dv= ADC%10;		ADC = ADC/10;
    	ch= ADC%10;		tr	= ADC/10;
    
    	dv= dv +0x30;	ch= ch +0x30;	tr= tr +0x30;
    
    }
    //=============================================
    //hien thi 2 hang ki tu co dinh
    void hienthi_lcd()
    {
    	unsigned char i;
    	LCD=0x80;	mdk();
    	for(i=0;i<16;i++)
    	{
    		LCD=hang1[i];	mkt();
    	}
    
    	LCD=0xc0;	mdk();
    	for(i=0;i<16;i++)
    	{
    		LCD=hang2[i];	mkt();
    	}
    }
    //===================================
    // hien thi dien ap ra LCD
    void hienthi_dienap()
    {
    	LCD=0xCD;		mdk();
    	LCD= tr;		mkt();
    	LCD= ch;		mkt();
    	LCD= dv;		mkt();
    }
    
    //=======================================================
    // cho phep ADC chuyen doi
    void chuyedoi_adc()
    {
    	START=1;	ALE=1;	START=0;	ALE=0;
    }
    //==============================================
    //chuong trinh chinh
    void main()
    {
    //	unsigned char i;
    	
    	khoitao_lcd();
    	hienthi_lcd();
    	KA=0;		KB=0;		KC=0;
    	while(1)
    	{	
    		ADC=P1;	
    		giaima_lcd();
    		hienthi_dienap();
    	}
    }
    Last edited by mctrjnh; 28-10-2013, 23:41.

  • #2
    mọi người xem giúp em với !

    Comment


    • #3
      Nguyên văn bởi mctrjnh Xem bài viết
      hi, chào mọi người.
      em đang làm cái vol kế sử dụng 89c52 với ADC0808 để đo điện áp 0 đến 50v DC.
      em đang trong quá trình chạy mô phỏng, và khi làm mô phỏng thì em chưa hiển thị điện điện áp lên LCD, theo như chạy mô phỏng thì em đoán ADC chưa gữi tín hiện cho VDK nên chưa hiển thị được.
      anh/chị xem giúp em có sai chỗ nào không ạ !

      sơ đồ mạch :http://i.upanh.com/rcbrgd
      Đây là code của em :
      ..............

      //================================================== =====
      // cho phep ADC chuyen doi
      void chuyedoi_adc()
      {
      START=1; ALE=1; START=0; ALE=0;
      }
      //==============================================
      //chuong trinh chinh
      void main()
      {
      // unsigned char i;

      khoitao_lcd();
      hienthi_lcd();
      KA=0; KB=0; KC=0;
      while(1)
      {
      ADC=P1;
      giaima_lcd();
      hienthi_dienap();
      }
      }
      [/CODE]
      Không thấy gọi hàm chuyedoi_adc() thì ADC không biến đổi là đúng...
      Nhớ sau khi gọi hàm này thì tạo trễ khoảng 120us rồi mới đọc KQ từ P1 về .... chờ nó "xào nấu" xong đã mới ăn được.
      Hôm nay trời nắng chang chang.
      Mèo con đi học chẳng mang thứ gì.
      Chỉ mang một cái bút chì.
      Và mang một mẩu bánh mì con con.

      Comment


      • #4
        Nguyên văn bởi Acxen_lupine Xem bài viết
        Không thấy gọi hàm chuyedoi_adc() thì ADC không biến đổi là đúng...
        Nhớ sau khi gọi hàm này thì tạo trễ khoảng 120us rồi mới đọc KQ từ P1 về .... chờ nó "xào nấu" xong đã mới ăn được.
        uhm, cảm ơn bạn ! mình đã thử lại rồi những vẫn không hiện thị được, nó vẫn như cũ !

        Comment


        • #5
          Nguyên văn bởi mctrjnh Xem bài viết
          uhm, cảm ơn bạn ! mình đã thử lại rồi những vẫn không hiện thị được, nó vẫn như cũ !
          Post cả file mạch demo lên ... cho ae dễ thử giúp bạn chứ, có phải thầy bói đâu mà ngồi đoán lỗi hết cho bạn được.
          Chẳng hạn: clock ADC phải đặt khoảng 500k-600kHz...

          Muốn thử code đúng chưa thì tạm ngắt cái ADC - P1 ra, cho cái switch gạt vào - P1, tạo tín hiệu giả lập 8 bit cho nó đã.
          Hôm nay trời nắng chang chang.
          Mèo con đi học chẳng mang thứ gì.
          Chỉ mang một cái bút chì.
          Và mang một mẩu bánh mì con con.

          Comment


          • #6
            Nguyên văn bởi Acxen_lupine Xem bài viết
            Post cả file mạch demo lên ... cho ae dễ thử giúp bạn chứ, có phải thầy bói đâu mà ngồi đoán lỗi hết cho bạn được.
            Chẳng hạn: clock ADC phải đặt khoảng 500k-600kHz...

            Muốn thử code đúng chưa thì tạm ngắt cái ADC - P1 ra, cho cái switch gạt vào - P1, tạo tín hiệu giả lập 8 bit cho nó đã.
            hjhj.... e thử rồi, khi thay bằng các mức logic thì VDK đọc được giá trị, chứng tỏ ADC có vấn đề, nhưng hiện tại em vẫn chưa tìm ra. E đã up lại rồi ah, anhh xem giúp em nnha !

            Comment


            • #7
              Nguyên văn bởi mctrjnh Xem bài viết
              hjhj.... e thử rồi, khi thay bằng các mức logic thì VDK đọc được giá trị, chứng tỏ ADC có vấn đề, nhưng hiện tại em vẫn chưa tìm ra. E đã up lại rồi ah, anhh xem giúp em nnha !
              Biết ngay mà, bơm clock ADC sai, bơm single pulse thì chạy thế nào. Phải bơm như hình dưới:
              Click image for larger version

Name:	untitled.JPG
Views:	1
Size:	55.1 KB
ID:	1387704

              Còn vấn đề nữa là ADC_data nối vào P1 bị ngược bit cao - bit thấp, phải lộn lại.
              Hôm nay trời nắng chang chang.
              Mèo con đi học chẳng mang thứ gì.
              Chỉ mang một cái bút chì.
              Và mang một mẩu bánh mì con con.

              Comment


              • #8
                đo tới 50V hả bác? ADC đo từ Vref- đến Vref+, Vref+ 5V tối đa thì phải.

                Comment


                • #9
                  Nguyên văn bởi Acxen_lupine Xem bài viết
                  Biết ngay mà, bơm clock ADC sai, bơm single pulse thì chạy thế nào. Phải bơm như hình dưới:
                  [ATTACH=CONFIG]77093[/ATTACH]

                  Còn vấn đề nữa là ADC_data nối vào P1 bị ngược bit cao - bit thấp, phải lộn lại.
                  em sửa lại rồi ! như thế này phải không anh ?
                  Click image for larger version

Name:	Capture.PNG
Views:	1
Size:	31.3 KB
ID:	1387737Click image for larger version

Name:	Capture.PNG
Views:	1
Size:	31.3 KB
ID:	1387737
                  em chỉnh rồi mà cung hok hiện điện !

                  Comment


                  • #10
                    up .up...up.....

                    Comment


                    • #11
                      nếu về phần clock cấp cho adc thì bác lấy đại 1 bit nào đó trong 4 pỏt của 8051 rồi CPL với timer interrupt mode auto reload. vậy cho lành

                      Comment


                      • #12
                        Nguyên văn bởi condonhan Xem bài viết
                        đo tới 50V hả bác? ADC đo từ Vref- đến Vref+, Vref+ 5V tối đa thì phải.
                        Cho dù Vref+ có là 0.5V đi chăng nữa thì vẫn có thể đo được 5000V nhé.


                        Nguyên văn bởi mctrjnh Xem bài viết
                        up .up...up.....
                        Úp cái gì mà úp, đã chỉ tận nơi rồi: Clock là 500kHz. Thế mà vẫn làm sai, đặt là 500Hz...
                        Hôm nay trời nắng chang chang.
                        Mèo con đi học chẳng mang thứ gì.
                        Chỉ mang một cái bút chì.
                        Và mang một mẩu bánh mì con con.

                        Comment


                        • #13
                          Nguyên văn bởi Acxen_lupine Xem bài viết
                          Cho dù Vref+ có là 0.5V đi chăng nữa thì vẫn có thể đo được 5000V nhé.

                          vậy Vref là 5v mình có độ phân giải là 0.019v. với độ phân giải này mình có thể phát hiển điện áp thay đổi nhỏ nhất(0.1, 0.2.......1v) của điện áp 50v là bao nhiêu anh ?


                          Úp cái gì mà úp, đã chỉ tận nơi rồi: Clock là 500kHz. Thế mà vẫn làm sai, đặt là 500Hz...
                          Em thử rồi, cũng không được, em thử với tần số 1Mhz thì nó làm nó chạy được rồi ạ !

                          Comment


                          • #14
                            cho em hỏi anh mctrinh và Acxen_lupine 1 chút ạ. em cũng làm đồ án vdk để đo diện áp nhưng không hiểu sao code của em viết vẫn hiển thị bình thường nhưng khi em thay đổi giá trị ở điện áp đấu vào Vin của ADC(ở pot-HG) thì điện áp hiển thị lên LCD cứ loạn lên, anh giúp em với,mp.zipbai tap dai.zipmp.zipbai tap dai.zip

                            Comment


                            • #15
                              Nguyên văn bởi buihiep Xem bài viết
                              cho em hỏi anh mctrinh và Acxen_lupine 1 chút ạ. em cũng làm đồ án vdk để đo diện áp nhưng không hiểu sao code của em viết vẫn hiển thị bình thường nhưng khi em thay đổi giá trị ở điện áp đấu vào Vin của ADC(ở pot-HG) thì điện áp hiển thị lên LCD cứ loạn lên, anh giúp em với,[ATTACH]77845[/ATTACH][ATTACH]77846[/ATTACH][ATTACH]77845[/ATTACH][ATTACH]77846[/ATTACH]
                              mình cũng đang làm về vấn đề này nên cũng không rõ nửa ! nhờ anh Acxen_lupine giải thích giúp bạn ấy !
                              Anh Acxen_lupine cho em hỏi thêm là về các kỹ thuật đo điện áp gồm có những kỹ thuật nào nói chung. và Đo điện áp DC có những kỹ thuật nào vậy anh ?

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              • Andrea14
                                Vấn đề về tốc độ quay
                                bởi Andrea14
                                Chào mọi người,

                                Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                                Hôm qua, 12:42
                              • bqviet
                                Trả lời cho Đấu tắt điện cho máy tính bảng
                                bởi bqviet
                                Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                                06-12-2025, 17:17
                              • nguyendinhvan
                                Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                                bởi nguyendinhvan
                                Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                                05-12-2025, 19:59
                              • afrendly
                                Trả lời cho Đấu tắt điện cho máy tính bảng
                                bởi afrendly
                                Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                                04-12-2025, 01:27
                              Đang tải...
                              X