Thông báo

Collapse
No announcement yet.

thiết bị đo tốc độ động cơ <99000rpm

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

  • thiết bị đo tốc độ động cơ <99000rpm

    rãnh rỗi 0 biết làm j , sẵn có mấy đồ dư lụm đc từ phòng bọn Rbot , bắt tay chế cái máy đo tốc độ . Máy này mà đo mấy cái động cơ bánh xe RB thì sướng phải biết !









    Code:
    #include<AT89S53.h>
    
    void delay_ms( unsigned int ms )
    { unsigned int i,j;
      for (i=0;i<ms;i++)
      for (j=0;j<120;j++){};
    }
    
    //========= LCD =====================
    sbit RS = 0x93; // RS = P1_3
    sbit RW = 0xB7; // RW = P3_7
    sbit E  = 0x94; // E  = P1_4
    
    unsigned char digit;
    
    void LCD_PutChar(unsigned char k )
    { P2=k ; RS=1 ; RW=0 ; E=1 ; E=0 ; delay_ms(1);}
      void LCD_PutCmd(unsigned char k )
    { P2=k ; RS=0 ; RW=0 ; E=1 ; E=0 ; delay_ms(1);}
    void int_LCD()
    { delay_ms(50);
      LCD_PutCmd(0x38);
      LCD_PutCmd(0x06); // dich con tro sang phai
      LCD_PutCmd(0x0E); // nhap nhay con tro
      LCD_PutCmd(0x01); // xoa man hinh
      LCD_PutCmd(0x02); // ve dau dong
      LCD_PutCmd(0x80);
      LCD_PutChar('d');LCD_PutChar('i');LCD_PutChar('a');LCD_PutChar('=');LCD_PutChar(' ');
      LCD_PutChar(' ');LCD_PutChar(' ');LCD_PutChar(';');
      LCD_PutChar('t');LCD_PutChar('r');LCD_PutChar('u');LCD_PutChar('c');
      LCD_PutChar('=');
      
    }
    //================= ham mu a^b=========
    unsigned int ham_mu(unsigned char a,unsigned char b)
    { unsigned char i;
      unsigned int j=1;
      for(i=1;i<=b;i++){j*=a;}
      return(j);
    }
    void update_tocdo(float k)
    {float y=0;
     unsigned int x=0;
     
     x=k/1;	
     LCD_PutCmd(0x86);
     digit=(x/10000)+0x30;LCD_PutChar(digit);
     digit=((x/1000)%10)+0x30;LCD_PutChar(digit);
     digit=((x/100)%10)+0x30;LCD_PutChar(digit);
     digit=((x/10)%10)+0x30;LCD_PutChar(digit);
     digit=(x%10)+0x30;LCD_PutChar(digit);
     LCD_PutChar(',');
    
     y=(k-x)*ham_mu(10,4);
     x=y/1;
     digit=((x/1000)%10)+0x30;LCD_PutChar(digit);  
     digit=((x/100)%10)+0x30;LCD_PutChar(digit);
     digit=((x/10)%10)+0x30;LCD_PutChar(digit);
     digit=(x%10)+0x30;LCD_PutChar(digit);
    }//+++++++++++++++++++++++++++++++++++++++++++++++
    
    //========= key =====================
    sbit Y1 = 0x80;
    sbit Y2 = 0x81;
    sbit OK = 0x82;
    sbit D_A = 0x90;// P1_0
    sbit D_B = 0x91;// P1_1
    sbit D_C = 0x92;// P1_2
    unsigned char count=0;
    unsigned char key[10]=0;
    void scan_key()
    { 
      Y1=Y2=1;D_A=0;D_B=0;D_C=0;
      if(!Y1){delay_ms(10);while(!Y1);delay_ms(10);//7
      	      LCD_PutChar('7');key[count++]=7;
    		 };
      if(!Y2){delay_ms(10);while(!Y2);delay_ms(10);//8
      	      LCD_PutChar('8');key[count++]=8;
    		 };
      
      Y1=Y2=1;D_A=0;D_B=0;D_C=1;
      if(!Y1){delay_ms(10);while(!Y1);delay_ms(10);//3
      	      LCD_PutChar('3');key[count++]=3;
    		 };
    
      
      Y1=Y2=1;D_A=0;D_B=1;D_C=0;
      if(!Y1){delay_ms(10);while(!Y1);delay_ms(10);//4
      	      LCD_PutChar('4');key[count++]=4;
    		 };
      if(!Y2){delay_ms(10);while(!Y2);delay_ms(10);
      	      LCD_PutChar('.');
    		 };
      
      Y1=Y2=1;D_A=0;D_B=1;D_C=1;
      if(!Y1){delay_ms(10);while(!Y1);delay_ms(10);//1
      	      LCD_PutChar('1');key[count++]=1;
    		 };
    
      Y1=Y2=1;D_A=1;D_B=0;D_C=0;
      if(!Y1){delay_ms(10);while(!Y1);delay_ms(10);//6
      	      LCD_PutChar('6');key[count++]=6;
    		 };
      if(!Y2){delay_ms(10);while(!Y2);delay_ms(10);//9
      	      LCD_PutChar('9');key[count++]=9;
    		 };
      
      Y1=Y2=1;D_A=1;D_B=0;D_C=1;
      if(!Y1){delay_ms(10);while(!Y1);delay_ms(10);//2
      	      LCD_PutChar('2');key[count++]=2;
    		 };
    
      Y1=Y2=1;D_A=1;D_B=1;D_C=0;
      if(!Y1){delay_ms(10);while(!Y1);delay_ms(10);//5
      	      LCD_PutChar('5');key[count++]=5;
    		 };
     		 
    
      Y1=Y2=1;D_A=1;D_B=1;D_C=1;
      if(!Y1){delay_ms(10);while(!Y1);delay_ms(10);//0
      	      LCD_PutChar('0');key[count++]=0;
    		 };
    
    }
    
    //=============== encoder =============
    float gtri[]=0;
    float gtri_TB=0;
    unsigned char so_lan=0;
    unsigned char gtri_dia=0;
    unsigned int gtri_truc=0;
    unsigned char he_so=1;
    setup_interrupts()
    {
      EA = 1;       //cho phep cac ngat xay ra
      ET0 = 1;      //cho phep ngat counter0
      TR0 = 1;      //chay counter0
      TMOD = 0x26;  //counter 0 in mode 2 (8bit reload),
      TL0=TH0=0;        //timer 1 in mode 2 (auto reload from TH1)
      
      TH1 = 6;   //start counter from 6-256
      ET1 = 1;   //cho phep ngat tran timer1
      TR1 = 1;   //chay timer1
      PT0 = 1;   //uu tien ngat counter0
      PT1 = 0;      
    }
    
    chuan_mau() interrupt 3        //timer 1 interrupt
    {	
      	so_lan++;          
        
        gtri[4]=gtri[3];
    	gtri[3]=gtri[2];
    	gtri[2]=gtri[1];
    	gtri[1]=gtri[0];
    	gtri[0]=TL0+count*256;
    	
    	TL0=0;
    	count=0;
    	
    	if(so_lan==5)
    	   {gtri_TB =((gtri[0]+gtri[1]+gtri[2]+gtri[3]+gtri[4])/(5*100*250*so_lan))*he_so;
    	    update_tocdo(gtri_TB);
    		so_lan=0;
    	   };
    	//---nhan OK de dung lai xem gia tri --------------------------
    	if(!OK){TR0=TR1=ET0=ET1=0;gtri[0]=gtri[1]=gtri[2]=gtri[3]=gtri[4]=0;
    		    count=so_lan=0;TL0=TH0=0;
    			delay_ms(50);while(!OK);delay_ms(10);
    	       	     
    			while(OK);
    			delay_ms(50);while(!OK);delay_ms(10);ET0=TR0=ET1=TR1=1;
    		   };
    }
    
    dem_xung() interrupt 1 //counter 0 interrupt
    {count++;													
     TL0=0;
    } 
    
    void serial_init()
    {  TMOD = 0x20;	 
       SCON = 0x50;	 
       TH1  = 0xFD;	 
       TR1  = 1;     
       RI 	= 1;	 
       TI   = 1;    
    }
    
    void main()
    {  Y1=Y2=OK=1;
       P3_3 = 1;
       P3_4 = 1;
       
       int_LCD();
       												
       LCD_PutCmd(0x84);
       while(OK)scan_key();	  // OK lan 1 : nhap gtri dgkinh banh dia
       delay_ms(50);while(!OK);delay_ms(50);
       so_lan=count;
       for(count=0;count<so_lan;count++)
          {gtri_dia+=key[count]*ham_mu(10,so_lan-count-1);};		  
       count=0;
       
       LCD_PutCmd(0x8D);
       while(OK)scan_key();  // OK lan 2 : nhap gtri dgkinh truc can do toc do
       delay_ms(10);while(!OK);delay_ms(10);
       so_lan=count; 
       for(count=0;count<so_lan;count++)
           {gtri_truc+=key[count]*ham_mu(10,so_lan-count-1);};		  
       
       LCD_PutCmd(0x01);LCD_PutCmd(0x0C);LCD_PutCmd(0x80);
       LCD_PutChar('(');LCD_PutChar('v');LCD_PutChar('/');LCD_PutChar('s');LCD_PutChar(')');
       LCD_PutChar('=');
       
       he_so=gtri_dia/gtri_truc;
       count=0;
       
       setup_interrupts();
       while(1);
    }
    mấy pro xem chỗ nào chưa hoàn thiện thì xin cứ thẳn tay chỉ chỏ để e chữa , mong là sẽ có 1 thiết bị nho nhỏ 4ae chơi RB đỡ vất vả ............sai số tính đến 2 chữ số thập phân . Nói chung chữ số thập phân nào đứng yên để pro đọc thì là số đáng tin cậy . Thế nhé ....^^
    Last edited by Zz_Bi_zZ; 05-05-2009, 00:52.

  • #2
    Cho hỏi bạn lấy cái gì để làm cảm biến? Nếu cần đo tốc độ các động cơ khác nhau thì sữa đổi như thế nào?
    Lấy ví dụ một dụng cụ đo tốc độ bằng phương pháp cơ, chỉ cần dí đầu đo vào chính giữa trục động cơ( thường có một lổ nhỏ ở đây) thế là đo được.
    Thân!

    Comment


    • #3
      Nguyên văn bởi pvkhai Xem bài viết
      Cho hỏi bạn lấy cái gì để làm cảm biến? Nếu cần đo tốc độ các động cơ khác nhau thì sữa đổi như thế nào?
      Lấy ví dụ một dụng cụ đo tốc độ bằng phương pháp cơ, chỉ cần dí đầu đo vào chính giữa trục động cơ( thường có một lổ nhỏ ở đây) thế là đo được.
      Thân!
      dí đầu đo vào giữa trục động cơ , nếu ko đồng trục thì * sao nhẩy ! tui ko dùng cách đó , mà làm :
      + 2 bánh xe có đường kính chuẩn R1=64(dùng để đo trục động cơ loại lớn) , R2=30(dùng để đo trục nhỏ) .
      + Dí bánh xe tiếp xúc với trục cần đo --> bánh xe chạy --> dùng encoder đo tốc độ bánh xe , nhân tỉ số truyền giảm tốc --> đc tốc độ dài V tại vị trí trục đang đo .
      + mún tìm tốc độ góc o-me-ga thì lấy V/bán kính (tại vị trí đo)

      Cách này giúp ta thao tác đo dễ ....ko sợ lệch trục encoder(gây lắc trục encoder)



      Last edited by Zz_Bi_zZ; 05-05-2009, 14:15.

      Comment


      • #4
        hi các bạn

        Tui thấy đề tài này khá hay nhưng jờ tui muốn tìm hiểu về máy bắn tốc độ xe của mấy anh áo vàng mà không biết bắt đầu từ đâu. Các bạn có thể cùng tham luận nhé. Mong được sự hỗ trợ..
        - -

        Comment


        • #5
          Bác Zz_BiZz ơi ! Bác có thể gửi sỏ đồ nguyên lý và mạch in cho em được không vậy.Email của em nè : lequocchinhqng@gmail.comCảm ơn bác trước nha.

          Comment


          • #6
            Nguyên văn bởi vtv Xem bài viết
            hi các bạn

            Tui thấy đề tài này khá hay nhưng jờ tui muốn tìm hiểu về máy bắn tốc độ xe của mấy anh áo vàng mà không biết bắt đầu từ đâu. Các bạn có thể cùng tham luận nhé. Mong được sự hỗ trợ..
            máy bắn tốc độ xe đó về nguyên lý là đo thời gian dội của chùm tia phát ra ,

            nhưng cái khó là đo mà ko ghi lại số xe đang đo , hình dáng xe .... thì Police có bắt lại cũng lấy đâu ra chứng cứ buộc tội . Gặp t , t cãi : "a đo chiếc xe # thì sao ?"
            --> trên máy mỗi máy bắn tốc đều có camera ghi hình ảnh xe đó tại thời điểm đo.
            Về vd XLA thì t chưa đụng tới nên ko dám ho he ...

            Comment


            • #7
              Nguyên văn bởi chinh_cover Xem bài viết
              Bác Zz_BiZz ơi ! Bác có thể gửi sỏ đồ nguyên lý và mạch in cho em được không vậy.Email của em nè : lequocchinhqng@gmail.comCảm ơn bác trước nha.
              nguyên lí t post lên oy đó , up cả code lên nữa mà . Còn mạch layout thì u phải tự xử thui . so sr

              Comment


              • #8
                Mạch nguyên lý xem không rõ.
                U gửi mạch nguyên lý thôi.

                Comment


                • #9
                  nguyên lý giống nhau, bác gửi lên nhé, anh em cùng tham khảo.
                  - -

                  Comment


                  • #10
                    ok , tui cũng k biết * mà mạch nguyên lí tui post trong ảnh đó , mà mấy u nhìn ko rõ , sr .
                    http://www.esnips.com/doc/20120fcf-4...9cbf/schematic

                    Comment


                    • #11
                      up lên cho mấy u làm đề tài đo tốc độ động cơ có thêm tài liệu tham khảo . t thấy có vài u hỏi về vấn đề này

                      Comment


                      • #12
                        cac sep co tai lieu ve encoder ko cho e voi e dang lam do an do toc do dc
                        ma ko biet cach dung encoder, va cach lay tin hieu ve cua no!

                        Comment


                        • #13
                          anh ơi, anh có thể cho em nick chat và sdt của anh được ko, em đang làm đề tài tốt nghiệp cái này, nếu có gì anh liên lạc qua nick chat của em nha: thailaiptit
                          hoặc sdt của em 0902010340
                          thanks anh nhiều nhiều

                          Comment


                          • #14
                            Encoder thì hỏi mấy anh làm robocon ấy.Thực tế có nhiều cách thường dÙng bìa đục lỗ gắn bìa vào trục.DÙng 1 led siêu sáng chiếu qua lỗ, bên kia lỗ dÙng quang trở.Vđk đếm số lỗ trong 1 phút.Số lỗ trong khoảng thời gian/số lỗ trên bìa chính là số vòng quay trên 1 phútEncoder thì hỏi mấy anh làm robocon ấy.Thực tế có nhiều cách thường dÙng bìa đục lỗ gắn bìa vào trục.DÙng 1 led siêu sáng chiếu qua lỗ, bên kia lỗ dÙng quang trở.Vđk đếm số lỗ trong 1 phút.Số lỗ trong khoảng thời gian/số lỗ trên bìa chính là số vòng quay trên 1 phút
                            , , ,

                            Comment


                            • #15
                              Trong encoder dùng cái gì để đếm lỗ nhỉ? Hồng ngoại thì không phải rồi. Siêu sáng với quang trở lại càng không. Không biết là cái gì nữa

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              • 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
                              • nick22
                                Trả lời cho Máy điện châm ?
                                bởi nick22
                                Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                                01-12-2025, 13:23
                              Đang tải...
                              X