Thông báo

Collapse
No announcement yet.

Mạch đo và hiển thị động cơ DC!

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

  • Mạch đo và hiển thị động cơ DC!

    Em vừa mới chân ướt chân ráo nhận đồ án. Em làm mạch đo và hiển thị(LED) tốc độ động cơ DC. Sử dụng Vi xử lý 8051+encoder. Nhưng e không biết mạch nguyên lý, sơ đồ khối, cần những con IC nào và bắt đầu từ đâu hết? Mong các anh và chị cho em chút tư vấn và tài liệu! xin cảm ơn. Nếu chủ đề này có trùng mong các anh chị đừng xóa và chỉ đường link dùm em!

  • #2
    lên google search là ra ah?
    lập trình vi điều khiển 8051 - avr - pic- thiết kế mạch điện tử

    Học Hiểu Nguyên Tắc - Tuân Theo Nguyên Tắc - Giải Trừ Nguyên Tắc

    Comment


    • #3
      Code:
      #include <REGX51.H>
      sbit A1 = P1^0;
      sbit A2 = P1^1;
      sbit A3 = P1^2;
      sbit A4 = P1^3;
      sbit TANG=P1^4;
      sbit GIAM=P1^5;
      unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
      unsigned long xung,i;             
      unsigned int k;
      unsigned char dem,tocdo;
      ///////////////////////////////////////
      void delay(int time)	 // ham delay phuc vu quet led
      {int n;
      for(n=0;n<time;n++)
      {
      ;
      }
      }
      //////////////////////////////////////
      void quetled7()				 // ham quet led 7
      {   ////////////////	   hang nghin
               A1 = 1;
               P2 = so[i/1000];
      		 delay(50);
      		 A1 = 0;
      		 P2=0xff;
      //////////////////////////		 hang tram
               A2=1;
      		 P2=so[(i/100)%10];
      		 delay(50);
      		 A2=0;
      		 P2=0xff;
      /////////////////////////////////		  hang chuc
               A3=1;
      		 P2=so[(i/10)%10];
      		 delay(50);
      		 A3=0;
      		 P2=0xff;
      ////////////////////////////////		hang don vi
               A4=1;
      		 P2=so[i%10];
      		 delay(50);
      		 A4=0;
      		 P2=0xff;
      }									
      /////////////////////////////////////
      void khoitaotimer()				   // 
      {         TMOD = 0x21;			   // timer0 che do 1
                IE   = 0x8A;			   
      		  TH0  = 0xC3;			   // tre 50us
      		  TL0  = 0x50;
      		  ET0  = 1;
      		  TR0  = 1;
      		  TH1  = -100;
      		  TL1  = -100;
      		  ET1  = 1;
      		  TR1  = 1;
      		  
      }
      ////////////////////////////
      void khoitaongatngoai()
      {         EA=0;
                EX0=1;
                IT0=1;
      		  EA=1;
      }
      ///////////////////////////////////////////
      void isr_timer0() interrupt 1
      {         TF0=0;
                TR0=0;
      		  quetled7();
      		  k++;
      		  TH0=0xC3;				   // gia tri nap lai
      		  TL0=0x50;
      		  if(k==20)				  // lay mau 1s
      		  {
      		   i=((xung*60)/32);	// vong/phut encoder dung loai 32x 
      		   k=0;
      		   xung=0;
      		   }
      		   TR0=1;
      }
      /////////////////////////////////////////
      void isr_timer1() interrupt 3
      {          TF1=0;
                 TR1=0;
                 dem++;
                 if(dem>100)
                 dem=0;
                 if(dem<tocdo)
                 P1_6=1;
                 else
                 P1_6=0;
                 TR1=1;
      }
      ///////////////////////        phim nhan
      void phimnhan()
      {
      //////////////////////////
                if((TANG==0)&&(GIAM==1))
      		  {
      		  while(!TANG);
                tocdo=tocdo+10;
                if(tocdo==110)tocdo=100;
      		   }
      ////////////////////////////////
                if((GIAM==0)&&(TANG==1))
      		  {while(!GIAM);
                tocdo=tocdo-10;
                if(tocdo==-10)tocdo=0;
      }		  
      }
      ///////////////////////////////////				ham ngat ngoai
      void isr_ex0() interrupt 0
      {           
      xung++;
      }
      ////////////////////////////////////// ham chinh
      void main()
      {P1_6=1;
      khoitaotimer();
      khoitaongatngoai();
      while(1)
      {phimnhan();
      }
      }
      Code hiển thị led 7 đoạn. bạn tham khảo
      Nguyễn Huy Biên - 01649 802 694
      gmail :

      Comment


      • #4
        thank ban nhieu !
        |

        Comment


        • #5
          Mình cũng vây lính mới vào bắt thiết kế ngay bài này bằng Proteus. Bạn có giúp mình vẽ mạch trên proteus với

          Comment


          • #6
            Mấy bạn cứ xin đồ ăn sẵn vậy.
            nếu không yêu cầu hiển thị chiều quay thì bạn cho đầu ra từ encoder vào chân nhắt của vdk đếm số xung trong 1 khoảng thời gian xác định nào đó rồi suy ra tốc độ thôi. nếu encoder có 2 đầu ra thì bạn có thể dùng chế độ x2 x4 số xung để tăng độ chính xác
            còn việc hiển thị bạn có thể dùng các mạch chốt, ghi dịch để giữ trang thái của đèn, hoặc trực tiếp để cho vdk liên tục quét qua các led để hiển thị

            Comment


            • #7
              Nguyên văn bởi youaremylife Xem bài viết
              Mấy bạn cứ xin đồ ăn sẵn vậy.
              nếu không yêu cầu hiển thị chiều quay thì bạn cho đầu ra từ encoder vào chân nhắt của vdk đếm số xung trong 1 khoảng thời gian xác định nào đó rồi suy ra tốc độ thôi. nếu encoder có 2 đầu ra thì bạn có thể dùng chế độ x2 x4 số xung để tăng độ chính xác
              còn việc hiển thị bạn có thể dùng các mạch chốt, ghi dịch để giữ trang thái của đèn, hoặc trực tiếp để cho vdk liên tục quét qua các led để hiển thị
              http://www.dientuvietnam.net/forums/...54/#post642781
              anh ơi tư vấn giúp e với

              Comment


              • #8
                Nguyên văn bởi bienhou Xem bài viết
                Code:
                #include <REGX51.H>
                sbit A1 = P1^0;
                sbit A2 = P1^1;
                sbit A3 = P1^2;
                sbit A4 = P1^3;
                sbit TANG=P1^4;
                sbit GIAM=P1^5;
                unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                unsigned long xung,i;             
                unsigned int k;
                unsigned char dem,tocdo;
                ///////////////////////////////////////
                void delay(int time)	 // ham delay phuc vu quet led
                {int n;
                for(n=0;n<time;n++)
                {
                ;
                }
                }
                //////////////////////////////////////
                void quetled7()				 // ham quet led 7
                {   ////////////////	   hang nghin
                         A1 = 1;
                         P2 = so[i/1000];
                		 delay(50);
                		 A1 = 0;
                		 P2=0xff;
                //////////////////////////		 hang tram
                         A2=1;
                		 P2=so[(i/100)%10];
                		 delay(50);
                		 A2=0;
                		 P2=0xff;
                /////////////////////////////////		  hang chuc
                         A3=1;
                		 P2=so[(i/10)%10];
                		 delay(50);
                		 A3=0;
                		 P2=0xff;
                ////////////////////////////////		hang don vi
                         A4=1;
                		 P2=so[i%10];
                		 delay(50);
                		 A4=0;
                		 P2=0xff;
                }									
                /////////////////////////////////////
                void khoitaotimer()				   // 
                {         TMOD = 0x21;			   // timer0 che do 1
                          IE   = 0x8A;			   
                		  TH0  = 0xC3;			   // tre 50us
                		  TL0  = 0x50;
                		  ET0  = 1;
                		  TR0  = 1;
                		  TH1  = -100;
                		  TL1  = -100;
                		  ET1  = 1;
                		  TR1  = 1;
                		  
                }
                ////////////////////////////
                void khoitaongatngoai()
                {         EA=0;
                          EX0=1;
                          IT0=1;
                		  EA=1;
                }
                ///////////////////////////////////////////
                void isr_timer0() interrupt 1
                {         TF0=0;
                          TR0=0;
                		  quetled7();
                		  k++;
                		  TH0=0xC3;				   // gia tri nap lai
                		  TL0=0x50;
                		  if(k==20)				  // lay mau 1s
                		  {
                		   i=((xung*60)/32);	// vong/phut encoder dung loai 32x 
                		   k=0;
                		   xung=0;
                		   }
                		   TR0=1;
                }
                /////////////////////////////////////////
                void isr_timer1() interrupt 3
                {          TF1=0;
                           TR1=0;
                           dem++;
                           if(dem>100)
                           dem=0;
                           if(dem<tocdo)
                           P1_6=1;
                           else
                           P1_6=0;
                           TR1=1;
                }
                ///////////////////////        phim nhan
                void phimnhan()
                {
                //////////////////////////
                          if((TANG==0)&&(GIAM==1))
                		  {
                		  while(!TANG);
                          tocdo=tocdo+10;
                          if(tocdo==110)tocdo=100;
                		   }
                ////////////////////////////////
                          if((GIAM==0)&&(TANG==1))
                		  {while(!GIAM);
                          tocdo=tocdo-10;
                          if(tocdo==-10)tocdo=0;
                }		  
                }
                ///////////////////////////////////				ham ngat ngoai
                void isr_ex0() interrupt 0
                {           
                xung++;
                }
                ////////////////////////////////////// ham chinh
                void main()
                {P1_6=1;
                khoitaotimer();
                khoitaongatngoai();
                while(1)
                {phimnhan();
                }
                }
                Code hiển thị led 7 đoạn. bạn tham khảo


                bạn có thể post sơ đồ nguyên lý lên được không

                Comment


                • #9
                  Nguyên văn bởi bienhou Xem bài viết
                  Code:
                  #include <REGX51.H>
                  sbit A1 = P1^0;
                  sbit A2 = P1^1;
                  sbit A3 = P1^2;
                  sbit A4 = P1^3;
                  sbit TANG=P1^4;
                  sbit GIAM=P1^5;
                  unsigned char so[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                  unsigned long xung,i;             
                  unsigned int k;
                  unsigned char dem,tocdo;
                  ///////////////////////////////////////
                  void delay(int time)	 // ham delay phuc vu quet led
                  {int n;
                  for(n=0;n<time;n++)
                  {
                  ;
                  }
                  }
                  //////////////////////////////////////
                  void quetled7()				 // ham quet led 7
                  {   ////////////////	   hang nghin
                           A1 = 1;
                           P2 = so[i/1000];
                  		 delay(50);
                  		 A1 = 0;
                  		 P2=0xff;
                  //////////////////////////		 hang tram
                           A2=1;
                  		 P2=so[(i/100)%10];
                  		 delay(50);
                  		 A2=0;
                  		 P2=0xff;
                  /////////////////////////////////		  hang chuc
                           A3=1;
                  		 P2=so[(i/10)%10];
                  		 delay(50);
                  		 A3=0;
                  		 P2=0xff;
                  ////////////////////////////////		hang don vi
                           A4=1;
                  		 P2=so[i%10];
                  		 delay(50);
                  		 A4=0;
                  		 P2=0xff;
                  }									
                  /////////////////////////////////////
                  void khoitaotimer()				   // 
                  {         TMOD = 0x21;			   // timer0 che do 1
                            IE   = 0x8A;			   
                  		  TH0  = 0xC3;			   // tre 50us
                  		  TL0  = 0x50;
                  		  ET0  = 1;
                  		  TR0  = 1;
                  		  TH1  = -100;
                  		  TL1  = -100;
                  		  ET1  = 1;
                  		  TR1  = 1;
                  		  
                  }
                  ////////////////////////////
                  void khoitaongatngoai()
                  {         EA=0;
                            EX0=1;
                            IT0=1;
                  		  EA=1;
                  }
                  ///////////////////////////////////////////
                  void isr_timer0() interrupt 1
                  {         TF0=0;
                            TR0=0;
                  		  quetled7();
                  		  k++;
                  		  TH0=0xC3;				   // gia tri nap lai
                  		  TL0=0x50;
                  		  if(k==20)				  // lay mau 1s
                  		  {
                  		   i=((xung*60)/32);	// vong/phut encoder dung loai 32x 
                  		   k=0;
                  		   xung=0;
                  		   }
                  		   TR0=1;
                  }
                  /////////////////////////////////////////
                  void isr_timer1() interrupt 3
                  {          TF1=0;
                             TR1=0;
                             dem++;
                             if(dem>100)
                             dem=0;
                             if(dem<tocdo)
                             P1_6=1;
                             else
                             P1_6=0;
                             TR1=1;
                  }
                  ///////////////////////        phim nhan
                  void phimnhan()
                  {
                  //////////////////////////
                            if((TANG==0)&&(GIAM==1))
                  		  {
                  		  while(!TANG);
                            tocdo=tocdo+10;
                            if(tocdo==110)tocdo=100;
                  		   }
                  ////////////////////////////////
                            if((GIAM==0)&&(TANG==1))
                  		  {while(!GIAM);
                            tocdo=tocdo-10;
                            if(tocdo==-10)tocdo=0;
                  }		  
                  }
                  ///////////////////////////////////				ham ngat ngoai
                  void isr_ex0() interrupt 0
                  {           
                  xung++;
                  }
                  ////////////////////////////////////// ham chinh
                  void main()
                  {P1_6=1;
                  khoitaotimer();
                  khoitaongatngoai();
                  while(1)
                  {phimnhan();
                  }
                  }
                  Code hiển thị led 7 đoạn. bạn tham khảo
                  Cảm ơn thuật toán của bạn mình cũng đang có một đề tài cần dùng đến đo tốc độ động cơ đọc qua qua chưa hiểu gì. Nhờ code của bạn giờ hiểu hơn rồi. Thanks...

                  Let's go!!!

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  • mèomướp
                    Trả lời cho Sửa bộ nguồn DC 60V 45A
                    bởi mèomướp
                    Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                    Hôm qua, 13:11
                  • tuyennhan
                    Trả lời cho Sửa bộ nguồn DC 60V 45A
                    bởi tuyennhan
                    Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                    Hôm qua, 09:25
                  • tuyennhan
                    Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                    bởi tuyennhan
                    Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                    Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                    Hôm qua, 09:10
                  • Ng.Phuong.5
                    Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                    bởi Ng.Phuong.5
                    Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                    Mấy con...
                    09-01-2025, 19:44
                  • viettinh
                    Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                    bởi viettinh
                    Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                    Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                    09-01-2025, 18:12
                  • nguyendinhvan
                    Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                    bởi nguyendinhvan
                    Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                    Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                    Cách đơn giản...
                    09-01-2025, 00:04
                  • mèomướp
                    Trả lời cho Sửa bộ nguồn DC 60V 45A
                    bởi mèomướp
                    Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                    08-01-2025, 19:02
                  • tuyennhan
                    Trả lời cho Sửa bộ nguồn DC 60V 45A
                    bởi tuyennhan
                    Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                    08-01-2025, 15:43
                  • tuyennhan
                    Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                    bởi tuyennhan
                    Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                    08-01-2025, 15:28
                  • mèomướp
                    Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                    bởi mèomướp
                    Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                    08-01-2025, 11:44
                  Đang tải...
                  X