Thông báo

Collapse
No announcement yet.

giúp mình chỉnh cái code để điều khiển động cơ đảo chiều với!

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

  • giúp mình chỉnh cái code để điều khiển động cơ đảo chiều với!

    code viết bằng ASM, mình viết xong phần điều khiển tốc độ động cơ bằng bàn phím ma trận, nhưng giờ mình muốn có thêm đảo chiều động cơ. ai biết thì gợi ý dùm mình nhé. Tks
    Code:
    mtphim equ p2             ;ket noi voi ma tran ban phim
    maphim equ r5             ;luu tamma phim
    maquet equ 11111110B         ;FEH
    PWM  BIT P1.6           ;BIT DIEU KHIEN THIET BI
    PWM_VALUE EQU 31H
    ORG 0000H
     LJMP  SETUP            ;KHOI DONG CHUONG TRINH KHI CAP NGUON
    ORG  000BH
     LJMP  T0_ISR            ;NGAT TIMER 0 DIEU RONG XUNG
    ORG 0030H
    SETUP:
         SETB  EA            ;CHO PHEP NGAT TOAN CUC
         SETB ET0            ;CHO PHEP NGAT TIMER 0
         CLR PWM            ;TAT THIET BI
         CLR P1.1        ;CHAN CON LAI NOI VOI DONG CO
         MOV  TMOD,#11H
         MOV TH0,#HIGH(-200)     ;TA 12MHZ => 200us x 100% = 20000us = 20ms
         MOV TL0,#LOW(-200)     ;CHU KY DIEU XUNG  
         MOV PWM_VALUE,#0       ;MAC DINH GIA TRI PWM = 0
         MOV R7,#0            ;BIEN XAC DINH SO LAN NGAT TIMER
         SETB TR0            ;CHO PHEP TIMER HOAT DONG
    MAIN:
        CALL KEYPRES
        CJNE A,#0FFH,MAIN1
        SJMP MAIN
    MAIN1:
        CJNE  A,#0,CAP1     
         MOV PWM_VALUE,#0 
         SJMP MAIN
    CAP1:
        CJNE A,#1,CAP2
        MOV PWM_VALUE,#5
        MOV A,PWM_VALUE
        SJMP MAIN
    CAP2:
        CJNE  A,#2,CAP3     
         MOV PWM_VALUE,#10 
         MOV A,PWM_VALUE
         SJMP MAIN
    CAP3:
        CJNE  A,#3,CAP4     
         MOV PWM_VALUE,#20 
         MOV A,PWM_VALUE
         SJMP MAIN
    CAP4:
        CJNE  A,#4,CAP5     
         MOV PWM_VALUE,#25 
         MOV A,PWM_VALUE
         SJMP MAIN
    CAP5:
        CJNE  A,#5,CAP6     
         MOV PWM_VALUE,#50 
         MOV A,PWM_VALUE
         SJMP MAIN
    CAP6:
        CJNE  A,#6,CAP7     
         MOV PWM_VALUE,#75 
         MOV A,PWM_VALUE
         SJMP MAIN
    CAP7:
        CJNE  A,#7,main     
         MOV PWM_VALUE,#100 
         MOV A,PWM_VALUE
         SJMP MAIN
    T0_ISR:                ;NGAT TIMER DUNG DE DIEU RONG XUNG
         PUSH ACC
         MOV 7FH,C
         CLR TR0
         MOV TH0,#HIGH(-200)
         MOV TL0,#LOW(-200)
         SETB TR0
         MOV A,PWM_VALUE
         CJNE A,#0,EN_PWM      ;DO DAY XUNG <> 0 THI CHO DIEU XUNG
         JMP EXIT_ISR          ;DO DAY XUNG = 0 THI THOAT KHOI THU TUC NGAT
    EN_PWM:
         INC R7           ;TANG BIEN DEM NGAT
         MOV A,R7
         CJNE A,PWM_VALUE,OFF_PULSE ;DU THOI GIAN DAY XUNG THI TAT THIET BI
         CLR PWM           ;TAT THIET BI
    OFF_PULSE:
         CJNE A,#100,EXIT_ISR      ;CHUA HET CHU KY DIEU XUNG THI THOAT NGAT
         SETB PWM           ;TOI ROI THI MO THIET BI
         MOV R7,#0           ;RESET LAI BIEN DEM
    EXIT_ISR:
         MOV C,7FH
         POP ACC
         RETI
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     ;CHUONG TRINH CON CHONG RUNG PHIM
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    KEYPRES:
        MOV R4,#5         ;NHAP SO DEM 5 LAN
    keypres1 :
        LCALL KEY         ;NEU CO PHIM NHAN THI CO C = 1
        JC PN1             ;KIEM TRA TIEP NEU C = 1
        RET             ;NEU K CO PHIM NHAN THI C = 0
    PN1:
        DJNZ R4,KEYPRES1     ;QUAY VE LAP LAI CHONG NAY
        PUSH ACC         ;CAT NOI DUNG PHIM TRONG A
    KEYPRES2:
        MOV R4,#5         ;NHAP SO DEM 5 LAN CHO NHA PHIM
    KEYPRES3:
        LCALL KEY         ;CO PHIM NHAN HAY K
        JC KEYPRES2         ;CO THI KIEM TRA LAI
        DJNZ R4,KEYPRES3     ;KHONG THI LAP LAI 5 LAN DE DAM BAO
        POP ACC         ;KHOI PHUC LAI GIA TRI CHO A
        RET
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ;CHUONG TRINH CON QUET PHIM
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    key:
        MOV R3,#MAQUET         ;BAT DAU VOI COT SO 0(FEH)
        MOV R6,#4         ;SU DUNG R6 LAM BO DEM
        mov MAPHIM,#00
    KEY1:
        MOV MTPHIM,R3         ;XUAT MA QUET RA COT
        MOV A,MTPHIM         ;DOC LAI PORT1 DE XU LY TIEP THEO
        ANL A,#0F0H         ;XOA 4 BIT THAP LA HANG
        CJNE A,#0F0H,KEY2     ;co nhan fim thi nhay
        MOV A,R3
        RL A             ;XOAY DE CHUYEN DEN COT KE
        MOV R3,A
        MOV A,MAPHIM         ;CHUYEN MA PHIM SANG COT KE
        ADD A,#4
        MOV MAPHIM,A
        DJNZ R6,KEY1
        CLR C             ;CLR C NEU NHU K CO PHIM NHAN
        MOV A,#0FFH         ;THOAT VOI MA TRONG A = FFH
        RET
    KEY2:
        SWAP A
    KEY4:
        RRC A            ;XOAY SANG PHAI TIM BIT 0
        JNC KEY3         ;NHAY NEU (C)=0 
        INC MAPHIM         ;TANG MA PHIM LEN COT KE
        SJMP KEY4         ;TIEP TUC CHO DEN KHI (C)=0
    KEY3:
        MOV A,MAPHIM
        SETB C
    RET
    END
    Attached Files

  • #2
    trong lúc chờ đợi mình đã nghĩ ra 1 cách là dùng thanh ghi để lưu giá trị số lần nhấn phím đảo chiều và xét giá trị trong B là chẵn hay lẻ để quyết định quay theo chiều nào.
    Code:
    mtphim equ p2 			;ket noi voi ma tran ban phim
    maphim equ r5 			;luu tamma phim
    maquet equ 11111110B 		;FEH
    PWM1  BIT P1.6   		;BIT DIEU KHIEN THIET BI
    PWM2  BIT P1.7
    PWM_VALUE EQU 31H
    ORG 0000H
     LJMP  SETUP    		;KHOI DONG CHUONG TRINH KHI CAP NGUON
    ORG  000BH
     LJMP  T0_ISR    		;NGAT TIMER 0 DIEU RONG XUNG
    ORG 0030H
    SETUP:
     	SETB  EA    		;CHO PHEP NGAT TOAN CUC
     	SETB ET0    		;CHO PHEP NGAT TIMER 0
     	CLR PWM1   		;TAT THIET BI
     	CLR PWM2		;TAT THIET BI
     	MOV  TMOD,#11H
     	MOV TH0,#HIGH(-200) 	;TA 12MHZ => 200us x 100% = 20000us = 20ms
     	MOV TL0,#LOW(-200) 	;CHU KY DIEU XUNG  
     	MOV PWM_VALUE,#0   	;MAC DINH GIA TRI PWM = 0
     	MOV R7,#0    		;BIEN XAC DINH SO LAN NGAT TIMER
     	SETB TR0    		;CHO PHEP TIMER HOAT DONG
     	MOV B,#0		;DEM SO LAN DAO CHIEU
    MAIN:
    	CALL KEYPRES
    	CJNE A,#0FFH,MAIN1
    	SJMP MAIN
    MAIN1:
    	CJNE  A,#0,DAOCHIEU 	
     	MOV PWM_VALUE,#0 
     	SJMP MAIN
    DAOCHIEU:				;NEU NHAN PHIM 1 THI TANG GIA TRI THANH GHI B LEN 1
    	CJNE A,#1,CAP2
    	INC B
    	SJMP MAIN
    CAP2:
    	CJNE  A,#2,CAP3	
     	MOV PWM_VALUE,#25 		;NAP GIA TRI CHO PWM_VALUE LA 25 TUONG UNG VOI MUC CAO 25%
     	MOV A,PWM_VALUE
     	SJMP MAIN
    CAP3:
    	CJNE  A,#3,CAP4 	
     	MOV PWM_VALUE,#50 
     	MOV A,PWM_VALUE
     	SJMP MAIN
    CAP4:
    	CJNE  A,#4,CAP5 	
     	MOV PWM_VALUE,#75 
     	MOV A,PWM_VALUE
     	SJMP MAIN
    CAP5:
    	CJNE  A,#5,MAIN 	
     	MOV PWM_VALUE,#100 
     	MOV A,PWM_VALUE
     	SJMP MAIN
     ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     ;NGAT TIMER DUNG DE DIEU RONG XUNG
     ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     T0_ISR:
         PUSH ACC
         MOV 7FH,C
         CLR TR0
         MOV TH0,#HIGH(-200)
         MOV TL0,#LOW(-200)
         SETB TR0
         MOV A,PWM_VALUE
    EN_PWM:
         INC R7           			;TANG BIEN DEM NGAT
         MOV A,R7
         CJNE A,PWM_VALUE,OFF_PULSE
         CLR PWM1           		;NEU DA DU THOI GIAN MUC CAO THI CLR CAC CHAN DK
         CLR PWM2
    OFF_PULSE:
         CJNE A,#100,EXIT_ISR      		;CHUA HET CHU KY DIEU XUNG THI THOAT NGAT
         JB B.0,THUAN
         SETB PWM1           		;TOI ROI THI MO THIET BI
         MOV R7,#0           		;RESET LAI BIEN DEM
         SJMP EXIT_ISR
         THUAN:
         SETB PWM2
         MOV R7,#0
    EXIT_ISR:
         MOV C,7FH
         POP ACC
         RETI
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     ;CHUONG TRINH CON CHONG RUNG PHIM
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    KEYPRES:
    	MOV R4,#5 		;NHAP SO DEM 5 LAN
    keypres1 :
    	LCALL KEY 		;NEU CO PHIM NHAN THI CO C = 1
    	JC PN1 			;KIEM TRA TIEP NEU C = 1
    	RET 			;NEU K CO PHIM NHAN THI C = 0
    PN1:
    	DJNZ R4,KEYPRES1 	;QUAY VE LAP LAI CHONG NAY
    	PUSH ACC 		;CAT NOI DUNG PHIM TRONG A
    KEYPRES2:
    	MOV R4,#5 		;NHAP SO DEM 5 LAN CHO NHA PHIM
    KEYPRES3:
    	LCALL KEY 		;CO PHIM NHAN HAY K
    	JC KEYPRES2 		;CO THI KIEM TRA LAI
    	DJNZ R4,KEYPRES3 	;KHONG THI LAP LAI 5 LAN DE DAM BAO
    	POP ACC 		;KHOI PHUC LAI GIA TRI CHO A
    	RET
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ;CHUONG TRINH CON QUET PHIM
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    key:
    	MOV R3,#MAQUET 		;BAT DAU VOI COT SO 0(FEH)
    	MOV R6,#4 		;SU DUNG R6 LAM BO DEM
    	mov MAPHIM,#00
    KEY1:
    	MOV MTPHIM,R3 		;XUAT MA QUET RA COT
    	MOV A,MTPHIM 		;DOC LAI PORT1 DE XU LY TIEP THEO
    	ANL A,#0F0H 		;XOA 4 BIT THAP LA HANG
    	CJNE A,#0F0H,KEY2 	;co nhan fim thi nhay
    	MOV A,R3
    	RL A 			;XOAY DE CHUYEN DEN COT KE
    	MOV R3,A
    	MOV A,MAPHIM 		;CHUYEN MA PHIM SANG COT KE
    	ADD A,#4
    	MOV MAPHIM,A
    	DJNZ R6,KEY1
    	CLR C 			;CLR C NEU NHU K CO PHIM NHAN
    	MOV A,#0FFH 		;THOAT VOI MA TRONG A = FFH
    	RET
    KEY2:
    	SWAP A
    KEY4:
    	RRC A			;XOAY SANG PHAI TIM BIT 0
    	JNC KEY3 		;NHAY NEU (C)=0 
    	INC MAPHIM 		;TANG MA PHIM LEN COT KE
    	SJMP KEY4 		;TIEP TUC CHO DEN KHI (C)=0
    KEY3:
    	MOV A,MAPHIM
    	SETB C
    RET
    END
    nhưng sao khi chạy mô phỏng thì các xung không đẹp nhỉ. ai giúp thiết kế lại cái chỗ motor với!

    Comment


    • #3
      Bạn tìm trong thư viện mẫu của Protues, có phần thiết kế, băm xung điều khiển động cơ DC đó!

      Comment


      • #4
        nhưng mình thấy cái chương trình trong thư viện đó chỉ có tăng giảm tốc độ thôi, chứ không có đảo chiều động cơ
        Click image for larger version

Name:	bamxung.jpg
Views:	1
Size:	123.8 KB
ID:	1371755
        cái này phải không bạn. với cho mình hỏi các xem code của chương trình đó sao vậy nhỉ

        Comment


        • #5
          Nguyên văn bởi tranhungyt Xem bài viết
          nhưng mình thấy cái chương trình trong thư viện đó chỉ có tăng giảm tốc độ thôi, chứ không có đảo chiều động cơ
          [ATTACH=CONFIG]57747[/ATTACH]
          cái này phải không bạn. với cho mình hỏi các xem code của chương trình đó sao vậy nhỉ
          Cái động cơ của họ được nối tới 2 chân của VĐK, một chân họ giữ cố định ở một mức logic (ví dụ mức 0 chẳng hạn), chân còn lại thì băm xung để điều khiển tốc độ. Bây giờ muốn đảo chiều thì bạn chỉ cần viết code đổi mức logic đó (đổi mức 0 thành mức 1), chân kia vẫn để băm xung như bình thường.
          Muốn xem code thì bạn cho nó chạy mô phỏng rồi tạm dừng, code nguồn sẽ hiện lên. Bạn có thể xem hướng dẫn ở đây:

          Comment


          • #6
            Cảm ơn bạn nhiều!
            nhưng còn chỗ bạn nói đảo chiều thì có chút sai thì phải nhỉ? ở mấy mạch động cơ người ta thường dùng Transistor để điều khiển nguồn điện vào động cơ. nên nếu làm như bạn thì khi đảo mức chân cố định là H -> L thì Tran không hoạt động dẫn đến nguồn không đến động cơ. Mình dùng cách đổi chân băm xung với chân cố định mức cao cho nhau luôn. mạch của mình.
            Click image for larger version

Name:	Untitled.jpg
Views:	1
Size:	117.0 KB
ID:	1371863
            nhưng còn mấy vấn đề là dùng Tran như mạch của mình liệu có bảo về được cho động cơ và VĐK không? (mếu làm mạch thật).
            với khi mô phỏng thì mình thấy khi chân băm xung nối với Tran thì điện áp không ổn định, xung không được đẹp, ai biết lý do vì sao không?

            Comment


            • #7
              dùng IC nâng dòng là ổn,cần thì cho con tran sau nâng dòng nữa cho sung mãn (mạo phạm phát biểu câu.e k biết gì mong các bác chém nhẹ nha)
              [MENTION][/MENTION]TRẦN TĂNG CƯỜNG

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X