Thông báo

Collapse
No announcement yet.

Tạo xung PWM để điều khiển động cơ 1 chiều

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

  • Tạo xung PWM để điều khiển động cơ 1 chiều

    Chao` các bác, em đang muốn tạo xung PWM để điều khiển động cơ 1 chiều dùng bộ định thởi để tạo xung. Nhưng em đọc mãi mà vẫn chưa hiểu cách tạo xung của bộ định thời. Ví dụ em tạo xung tại chân P1.5 dùng Time 0 ,chế độ 1 để tạo xung:
    MOV TMOD, #01H
    HERE: MOV TL0, #0F2H
    MOV TH0, #0FFH
    CPL P1.5
    SETB TR0
    SJMP HERE
    AGAIN: JNB TF0, AGAIN
    CLR TR0
    CLR TF0
    RET
    END
    Sau đó em dung` Read51 để kiểm tra thi` nó báo sai từ đầu đến cuối. Nhưng khi tạo xung được rồi chẳng hạn, thi` động cơ sẽ lấy xung kiểu j` để điều khiển .Em vẫn chưa hiểu mong các bác chỉ giúp.

  • #2
    Trời không có bác nào gúp đỡ em vậy, em đang rất cần.

    Comment


    • #3
      bạn thực hiện như sau:
      Px.y=1;
      delay(time1);
      Px.y=0;
      delay(time2);
      time1 và time2 xác định từ xung cần cấp để điều khiển đọng cơ
      còn bạn dùng ngắt timer để tạo xung là phù hợp nhất
      Học thầy không tày học bạn ...

      Comment


      • #4
        Px.y=1;
        delay(time1);
        Px.y=0;
        delay(time2);
        Bác viết như kia thì em cũng chịu ko hiểu được, mã của em viết bằng ASSEMBLY đâu phải C, mong các bác nói rõ hơn.Cảm ơn!

        Comment


        • #5
          dùng vi điều khiển tạo xung điều khiển đông cơ : về nguyên tắc thì từ một chân của vdk tạo ra xung ( chính là các mức 0;1) --> qua phần khuyếch đại xung (opto , transistor,..) để đóng mở khối cấp nguồn cho động cở (rơle , irf , ...) tùy tần số đóng mở đó mà điều khiển được tốc độ động cơ . Bạn nên đọc kĩ lại thuật toán pwm .
          Biển học mênh mông , quay đầu lại là!

          Comment


          • #6
            Bác ơi , em đọc kĩ lắm rồi, trong sách ko nói về thuật toán đấy, chỉ có tạo xung bằng bộ định thời, em dùng con AT89S52 chứ không phải những dòng vi xử lí khác có ứng dụng luôn cả PWM

            Comment


            • #7
              Nguyên văn bởi hoathienvu Xem bài viết
              Chao` các bác, em đang muốn tạo xung PWM để điều khiển động cơ 1 chiều dùng bộ định thởi để tạo xung. Nhưng em đọc mãi mà vẫn chưa hiểu cách tạo xung của bộ định thời. Ví dụ em tạo xung tại chân P1.5 dùng Time 0 ,chế độ 1 để tạo xung:
              Code:
                                      MOV	TMOD, #01H	
                 HERE:		MOV	TL0, #0F2H		
              	         	MOV	TH0, #0FFH		
              	        	CPL	P1.5		
              	                SETB	TR0		
              	        	SJMP	HERE			 
                      AGAIN:		JNB	TF0, AGAIN		
              	  	        CLR	TR0			
              	            	CLR	TF0			
              	            	RET	
                      END
              Sau đó em dung` Read51 để kiểm tra thi` nó báo sai từ đầu đến cuối. Nhưng khi tạo xung được rồi chẳng hạn, thi` động cơ sẽ lấy xung kiểu j` để điều khiển .Em vẫn chưa hiểu mong các bác chỉ giúp.
              Chương trình của bạn viết thế này thì Timer 0 chẳng để làm gì cả vì bạn có gọi tới hàm AGAIN đâu.
              Bạn thêm lệnh ACALL AGAIN vào như sau:
              Code:
                                      MOV	TMOD, #01H	
                 HERE:		MOV	TL0, #0F2H		
              	         	MOV	TH0, #0FFH		
              	        	CPL	P1.5		
              	                SETB	TR0	
              ACALL AGAIN
              	        	SJMP	HERE			 
                      AGAIN:		JNB	TF0, AGAIN		
              	  	        CLR	TR0			
              	            	CLR	TF0			
              	            	RET	
                      END
              Lần sau bạn post code lên thì nên dùng tag code để cho dễ nhìn. Và viết bằng ASM thì cũng nên có chú thích cho người xem dễ hình dung.
              AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
              Xem thêm tại Online Store ---> Click here
              Mob: 0982.083.106

              Comment


              • #8
                Nguyên văn bởi VNarmy Xem bài viết
                Chương trình của bạn viết thế này thì Timer 0 chẳng để làm gì cả vì bạn có gọi tới hàm AGAIN đâu.
                Bạn thêm lệnh ACALL AGAIN vào như sau:
                Code:
                                        MOV	TMOD, #01H	
                   HERE:		MOV	TL0, #0F2H		
                	         	MOV	TH0, #0FFH		
                	        	CPL	P1.5		
                	                SETB	TR0	
                ACALL AGAIN
                	        	SJMP	HERE			 
                        AGAIN:		JNB	TF0, AGAIN		
                	  	        CLR	TR0			
                	            	CLR	TF0			
                	            	RET	
                        END
                Lần sau bạn post code lên thì nên dùng tag code để cho dễ nhìn. Và viết bằng ASM thì cũng nên có chú thích cho người xem dễ hình dung.
                Cảm ơn bác dã chỉ giúp em , nhưng ko hiểu sao nó vẫn báo sai từ đầu đến cuối , mong các bác xem lại hộ.Cảm ơn nhiều. Và cho em hỏi thêm , khi tạo xung xong động cơ sẽ lấy xung kiểu j` để điều khiển.

                Comment


                • #9
                  Bạn sửa lại thế này xem sao:
                  Code:
                       MOV TMOD, #01H //chọn chế độ 16bit nhé. tôi không nhớ.
                       MOV TL0, #low(65000)
                       MOV TH0, #high(65000)
                       SETB TR0 
                       SETB TF0
                  HERE:
                       CPL P1.5 
                  AGAIN: JNB TF0, AGAIN 
                       CLR TR0 
                       CLR TF0 
                       MOV TL0, #low(65000)
                       MOV TH0, #high(65000)
                       SETB TR0 
                  SJMP HERE 
                       END
                  Một bông hồng cho những ai đang còn mẹ,
                  Đang còn mẹ để lòng vui sướng hơn ..

                  Comment


                  • #10
                    Bạn treo chân P1.5 lên nguồn bằng điện trở 10K, đưa vào cực B của trans NPN. Cực C của trans đưa lên nguồn, cực E qua dây + của động cơ, dây - của động cơ nối GND. Nếu động cơ có công suất lớn thì phải đấu trans công suất lớn và để kích dẫn phải đấu darlington
                    Bạn học cách điều khiển động cơ trong luồng này:
                    http://www.picvietnam.com/forum/show...p?t=485&page=3

                    Chúc bạn thành công!
                    Một bông hồng cho những ai đang còn mẹ,
                    Đang còn mẹ để lòng vui sướng hơn ..

                    Comment


                    • #11
                      [QUOTE]
                      Nếu bạn dùng chương trình dịch BATRONIX thì code của bác VNArmy như sau:
                      INCLUDE 8051.MC
                      ORG 0030H
                      LJMP MAIN
                      MAIN: MOV TMOD, #01H
                      HERE: MOV TL0, #0F2H
                      MOV TH0, #0FFH
                      CPL P1.5
                      SETB TR0
                      ACALL AGAIN
                      SJMP HERE
                      AGAIN: JNB TF0, AGAIN
                      CLR TR0
                      CLR TF0
                      RET
                      END
                      mình đã test thử rùi .chương trình chạy bình thường mà.
                      còn việc lấy xung điều khiển DC motor thông qua các phần tử công suất như transistor ... để điều khiển nguồn cấp cho đông cơ của bạn .
                      Học thầy không tày học bạn ...

                      Comment


                      • #12
                        Cảm ơn các bác đã giúp đỡ em , em dùng Read51 dịch nó báo lỗi suốt mà. Em sẽ thử lại, có j` hỏi thêm em lại nhờ các bác tiếp.Phần mềm trên em chưa dùng bao giờ , bác kiểm tra lại hộ em bằng Read51 .Cảm ơn!
                        Last edited by hoathienvu; 20-04-2007, 17:41.

                        Comment


                        • #13
                          dùng read51 bạn chỉ cần khai báo lại header thôi mà
                          còn lệnh thì ko thay đổi gì cả
                          header dùng cho read51 hình như là:
                          #include <sfr51.h>
                          bạn vào thư moucj cài đặt read51 tìm trong thư viện INC là thấy mà
                          chúc bạn thành công
                          Học thầy không tày học bạn ...

                          Comment


                          • #14
                            Nguyên văn bởi hoathienvu Xem bài viết
                            Chao` các bác, em đang muốn tạo xung PWM để điều khiển động cơ 1 chiều dùng bộ định thởi để tạo xung. Nhưng em đọc mãi mà vẫn chưa hiểu cách tạo xung của bộ định thời. Ví dụ em tạo xung tại chân P1.5 dùng Time 0 ,chế độ 1 để tạo xung:
                            MOV TMOD, #01H
                            HERE: MOV TL0, #0F2H
                            MOV TH0, #0FFH
                            CPL P1.5
                            SETB TR0
                            SJMP HERE
                            AGAIN: JNB TF0, AGAIN
                            CLR TR0
                            CLR TF0
                            RET
                            END
                            Sau đó em dung` Read51 để kiểm tra thi` nó báo sai từ đầu đến cuối. Nhưng khi tạo xung được rồi chẳng hạn, thi` động cơ sẽ lấy xung kiểu j` để điều khiển .Em vẫn chưa hiểu mong các bác chỉ giúp.
                            bạn thêm dòng khai báo chương trình lên đầu dòng thì sẽ hết lỗi ngay
                            dòng khai báo đó là: #include <sfr51,inc>
                            chương trình của bạn sửa lại như sau:
                            #include <sfr51.inc>
                            MOV TMOD, #01H
                            HERE: MOV TL0, #0F2H
                            MOV TH0, #0FFH
                            CPL P1.5
                            SETB TR0
                            SJMP HERE
                            AGAIN: JNB TF0, AGAIN
                            CLR TR0
                            CLR TF0
                            RET
                            END
                            Phone No: 0989.437.312
                            Email:
                            Live in: Ha noi

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X