百度空间 | 百度首页 
               
 
查看文章
 
用C8051F020产生PWM控制直流电机
2007年06月14日 星期四 22:43

       桥式电路是一种最基本的驱动电路结构。控制电机正反转的桥式驱动电路有单电源和双电源两种驱动方式。由于本例采用单电源的驱动方式可以满足实际的应用需要,所以这里只介绍单电源的驱动方式,其电路如下图所示。

注意,在上图中的4个二极管为续流二极管。如果选用的驱动电路中使用的是晶体三极管,那么这4个二极管是必须使用的,其主要作用是用以消除电机所产生的反向电动势,避免该反向电动势对晶体三极管的反向击穿。

单电源方式的桥式驱动电路又称为全桥方式驱动或者H桥方式驱动。电机正转时三极管Q1Q4导通,反转时Q2Q3导通,两种情况下,加在电机两端的电压极性相反。当4个晶体三极管全部关断时,电机停转。若Q1Q3关断,而Q2Q4同时导通时,电机处于短路制动状态,将在瞬时停止转动。这4种状态所对应的H桥式驱动电路状态如下图所示。

                                     
                   
                                     

上图中,从图一到图四分别表示H桥式驱动电路的开关工作状态的切换,电机分别处于正转、反转、停机和短路制动4个状态。

从图中可以看出,该电机的驱动电路可以完成本例的两个基本要求:

通过三极管的放大,保证了电机的驱动电流;

通过桥式电路,对不同开关的选择,可以实现单片机的数字电平控制三极管的导通和截止,从而控制小电机的正反转。
下列是程序:
$INCLUDE(C8051F020.INC)
      DBUF0    EQU    30H
      TEMP     EQU    40H
      DIN      BIT    P0.0      
      CLK      BIT    P0.1       
         ORG    0000H
         JMP    START
         ORG    0100H

START: MOV     WDTCN, #0deh          ; disable watchdog timer    禁止看门狗定时器
         MOV     WDTCN, #0adh
         MOV     OSCXCN, #67h                ; enable external crystal    外部晶振
                                                            ; oscillator at 22.1184MHz
         CLR     A                                       ; wait at least 1ms          延时1ms
         DJNZ    ACC, $                              ; wait ~512us
         DJNZ    ACC, $                              ; wait ~512us
                                                             ; system clock source
         ORL     OSCXCN, #80h                  ; enable missing clock detector
         ORL     CKCON, #08h
         MOV     XBR2, #40h
      PWM1 EQU     P1.0
      PWM2 EQU     P1.1
      PWM3 EQU     P1.2
      PWM4 EQU     P1.3
   
MAIN:    JB     P1.4,ZZ                           ;跳正转子程序
         LCALL    FZ                                  ;跳反转子程序
                                               ;////////////           ;正转控制程序
ZZ:      CLR    PWM3      
         CLR    PWM4    
Loop0: JNB    P1.4,FZ  
         CLR    PWM1
         CLR    PWM2
         MOV      A,#5                     ;改变次值改变低电平的宽度
         ACALL    Delay
         SETB     PWM1
         SETB     PWM2
         MOV      A, #5         ;改变次值改变高电平的宽度 改变高电平和低电平
                                      ;则可以改边PWM的脉宽从而改边电机的转数      
         ACALL    Delay
         SJMP     Loop0
                                      ;////////////             ;反转控制程序
FZ:      CLR    PWM1       
         CLR    PWM2
Loop:    JB     P1.4,MAIN
         CLR      PWM3
         CLR      PWM4
         MOV      A, #3       ;改变次值改变低电平的宽度
         ACALL    Delay
         SETB     PWM3
         SETB     PWM4
         MOV      A, #7       ;改变次值改变高电平的宽度 改变高电平和低电平
                                    ;则可以改边PWM的脉宽从而改边电机的转数      
         ACALL    Delay
         SJMP     Loop
                                       ;//////////               ;沿时产生33HZ左右的PWM脉冲信号
Delay: MOV      R0, #255  
DLoop: LCALL    DELAY1
         DJNZ     R0, DLoop
         DJNZ     ACC, DLoop
         RET
DELAY1:MOV      R4,#4
AA1:     DJNZ     R4,AA1       
         RET
         END

类别:Mcu | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2007年08月23日 星期四 17:40 | 回复
 
2
2007年09月11日 星期二 20:56 | 回复
怎么 不用 C。。? 汇编 长时间不看都反应不过来
 
3
2009年06月08日 星期一 20:02 | 回复
你有没有控制占空比的程序,小弟无法想出来,请老兄给一点子
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu