pwm调速_pwm调速原理 - CSDN
精华内容
参与话题
  • PWM调速原理

    千次阅读 2012-12-09 21:10:53
    本文详细阐述pwm的原理: PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效...PWM控制技术在逆变电路中应用最广,应用的逆变电路绝大部分是PWM型,PWM控制技术正是

    摘自:http://hi.baidu.com/caiag/item/6516cee06a36b612595dd874

    本文详细阐述pwm的原理: PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。

    PWM控制技术在逆变电路中应用最广,应用的逆变电路绝大部分是PWM型,PWM控制技术正是有赖于在逆变电路中的应用,才确定了它在电力电子技术中的重要地位。

    1.PWM控制的基本原理 
    理论基础: 
      冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。冲量指窄脉冲的面积。效果基本相同,是指环节的输出响应波形基本相同。低频段非常接近,仅在高频段略有差异。

     图1 形状不同而冲量相同的各种窄脉冲

    面积等效原理: 
      分别将如图1所示的电压窄脉冲加在一阶惯性环节(R-L电路)上,如图所示。其输出电流i(t)对不同窄脉冲时的响应波形如图2b所示。从波形可以看出,在i(t)的上升段,i(t)的形状也略有不同,但其下降段则几乎完全相同。脉冲越窄,各i(t)响应波形的差异也越小。如果周期性地施加上述脉冲,则响应i(t)也是周期性的。用傅里叶级数分解后将可看出,各i(t)在低频段的特性将非常接近,仅在高频段有所不同。

    图2 冲量相同的各种窄脉冲的响应波形

    用一系列等幅不等宽的脉冲来代替一个正弦半波,正弦半波N等分,看成N个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。 
    SPWM波形——脉冲宽度按正弦规律变化而和正弦波等效的PWM波形。

    图3 用PWM波代替正弦半波

    要改变等效输出正弦波幅值,按同一比例改变各脉冲宽度即可。 
      PWM电流波: 电流型逆变电路进行PWM控制,得到的就是PWM电流波。 
      PWM波形可等效的各种波形: 
      直流斩波电路:等效直流波形 
      SPWM波:等效正弦波形,还可以等效成其他所需波形,如等效所需非正弦交流波形等,其基本原理和SPWM控制相同,也基于等效面积原理。

    2. PWM相关概念
    占空比:就是输出的PWM中,高电平保持的时间 与 该PWM的时钟周期的时间 之比

    如,一个PWM的频率是1000Hz,那么它的时钟周期就是1ms,就是1000us,如果高电平出现的时间是200us,那么低电平的时间肯定是800us,那么占空比就是200:1000,也就是说PWM的占空比就是1:5。

    分辨率也就是占空比最小能达到多少,如8位的PWM,理论的分辨率就是1:255(单斜率), 16位的的PWM理论就是1:65535(单斜率)。

    频率就是这样的,如16位的PWM,它的分辨率达到了1:65535,要达到这个分辨率,T/C就必须从0计数到65535才能达到,如果计数从0计到80之后又从0开始计到80.......,那么它的分辨率最小就是1:80了,但是,它也快了,也就是说PWM的输出频率高了。

    双斜率 / 单斜率

    假设一个PWM从0计数到80,之后又从0计数到80.......   这个就是单斜率。

    假设一个PWM从0计数到80,之后是从80计数到0.......   这个就是双斜率。

    可见,双斜率的计数时间多了一倍,所以输出的PWM频率就慢了一半,但是分辨率却是1:(80+80) =1:160,就是提高了一倍。


    假设PWM是单斜率,设定最高计数是80,我们再设定一个比较值是10,那么T/C从0计数到10时(这时计数器还是一直往上计数,直到计数到设定值80),单片机就会根据你的设定,控制某个IO口在这个时候是输出1还是输出0还是端口取反,这样,就是PWM的最基本的原理了。

    展开全文
  • 直流电机_脉宽调制调速(PWM)

    千次阅读 2015-01-14 09:01:49
    实验三 直流电机脉宽调制调速 1. 编写程序,能够在数码管上显示一个数值。 2. 固定向P1.1输出0,然后测量每秒钟电机转动的转数,将其显示在数码管,每秒刷新一次即可。 3. 使用脉宽调制的方法,动态调整向P1.1...

    实验三  直流电机脉宽调制调速

    1. 编写程序,能够在数码管上显示一个数值。

    2. 固定向P1.1输出0,然后测量每秒钟电机转动的转数,将其显示在数码管,每秒刷新一次即可。

    3. 使用脉宽调制的方法,动态调整向P1.1输出的内容,使得电机转速能够稳定在一个预定值附近,同时实时显示当前转速。

    4. 根据输入修改电机转速目标值。每隔一秒钟读取两个开关的状态,如果S1按下,转速目标值加一,如果S2按下,目标值减一。同时动态调整输出,使得电机转速能够稳定到目标值附近。交替显示目标值和当前转速值。

    4.2 编写中断程序,测量电机转速

    本程序需要使用定时器定时,并使用中断来同步。中断程序的典型例子如下:

    ORG  0000H

    LJMP  START

    ORG   000BH

    LJMP  T0IN ;中断向量表

    ORG   0040H

    START: ...;初始化

    ...

    T0IN: ...;中断程序

    ... 

    RETI ;中断返回

    END

    按照脉宽调制的原理,再添加一个快速的定时中断(0.1ms左右),在这个中断里面动态改变P1.1的输出,宏观上输出有效(0)的比例就是预定的控制变量。这个控制变量增大,电机转速就应该提高,但由于各种内部和外部因素,它们之间不存在简单的函数关系,因此必须根据测量出来的实际转速进行动态调整。

    首先将电机转速控制在一个预定数值附近,在每一个1秒钟中断测量出当前转速之后,将其与目标值相对比,如果不够则增加控制变量,否则减少之,这样就能逐步达到稳定转速的目的。同时将速度显示出来。

    在上面程序的基础上,再加上根据开关状态改变预定转速的代码。同时,在主程序中交替显示目标值和当前转速值,显示一个内容之后等待一段时间(可以由延时代码实现),然后再显示另一个并延时。要显示的内容都是在中断中被修改的。

    实验原理

    对于直流电机来说,其转速由输入电压决定,因此具有平滑调速的效果;相比而言,交流电机的转速由交流电频率和电机结构决定,难以改变速度。当然,交流电机构造简单,没有换向器,所以容易制造高转速、高电压、大电流、大容量的电机;而直流电机一般用在负荷小,但要求转速连续可调的场合,如伺服电机。

    脉宽调制(Pulse Width Modulation,PWM)是一种能够通过开关量输出达到模拟量输出效果的方法。使用PWM可以实现频率调制、电压调制等效果,并且需要的外围器件较少,特别适合于单片机控制领域。这里只关心通过PWM实现电压调制,从而控制直流电机转速的效果。也称作脉宽调制调速。

    PWM的基本原理是通过输出一个很高频率的0/1信号,其中1的比例为δ(也叫做占空比),在外围积分元件的作用下,使得总的效果相当于输出δ×A(A为高电平电压)的电压。通过改变占空比就可以调整输出电压,从而达到模拟输出并控制电机转速的效果。

    使用单片机实现PWM,就是根据预定的占空比δ来输出0和1,这里δ就是控制变量。最简单的办法就是以某个时间单位(如0.1ms,相当于10kHz)为基准,在前N段输出1,后M-N段输出0,总体的占空比就是N/M。这种方法由于0和1分布不均匀,所以要求基准频率要足够高,否则会出现颠簸现象。

    要达到更稳定的效果,可以采用累加进位法如果将总的周期内的0和1均匀分散开。设置一个累加变量x,每次加N,若结果大于M,则输出1,并减去M;否则输出0。这样整体的占空比也是N/M。在实验中取M=256可以使程序更加简单。

    另外,由于本实验板的设计,输出0使电机工作。因此对于本实验,上面所说的0和1要翻转过来用。

    在本实验板中,电机每转动一次,与之相连的偏心轮将遮挡光电对管一次,因此会产生一个脉冲,送到INT0。要测量转速,既可以测量相邻两次中断之间的时间;也可以测量一秒种之内发生的中断次数。显然,后一种方法更加简单。

    进行转速控制时,涉及到三个变量:预期转速,实际转速和控制变量。这里控制变量就是占空比。我们并不能够预先精确知道某个控制变量的值会导致多少的实际转速,因为这里有很多内部和外部因素起作用(如摩擦力,惯性等),但可以确定就是随着控制变量的增加,实际转速会增加。

    反馈控制的基本原理就是根据实际结果与预期结果之间的差值,来调节控制变量的值。当实际转速高于预期转速时,我们需要减少控制变量,以降低速度;反之则需要调高控制变量。

    本实验的转速控制可以使用简单的比例控制算法,也就是当转速S大于预定值时,将输出0的个数减少;当转速小于预定值时,将输出0的个数增加。改变值正比于测量出的差值。也可自行使用其他更加复杂的算法。

    实验中采用的电机最大转速在200转/s左右,转速小于40转/s左右将不稳定,可能会停转。



    实验三
    ORG  0000H
    P4 EQU 0C0H
    P4SW EQU 0BBH
    CLK EQU P4.4
    DAT EQU P4.5
    LJMP  MAIN
    ORG  0003H;外部中断0
    LJMP WAIBU
    ORG  000BH ;定时器0
    LJMP  DINGSHI0
    ORG  001BH ;定时器1
    LJMP DINGSHI1
    
           S1  EQU P3.6
           S2  EQU P3.7
    MAIN:  MOV DPTR, #TAB
           MOV P4SW, #70H
           MOV R7,#0;交替显示
           MOV R0,#0;计转数
           MOV R3,#100;计目标值
           MOV R1,#0;产生1s定时用
           MOV R6,#0 ;r6,R5,R4计zhuan数
           MOV R5,#0
           MOV R4,#0
           MOV 60H,#100;存高电平
           MOV 61H,#100;存低电平
           
           MOV  R2,60H;R2付初值
           MOV  TMOD,#12H;定时器作方式2
           MOV  TH0,#38H ;200us
           MOV  TL0,#38H
           MOV  TH1,#3CH ;20次产生1s定时初值
           MOV  TL1,#0B0H
           SETB  EA
           SETB  ET1
           SETB  TR1
    
           SETB  ET0
           SETB  TR0
           
           SETB  EX0
           SETB  IT0
    
           CLR P1.1 ;P1.1初始状态
    
     L1:   SJMP L1 ;查询
    
    DINGSHI1: 
    PUSH ACC;中断
           PUSH PSW
           INC R1
           CJNE R1,#20,LP1
           MOV R1,#0
    ;目标值增减
           JNB S1,ZENG
           SJMP L2
    ZENG:  INC R3
           CJNE R3,#200,L2
           MOV R3,200;最大速
           SJMP L2
           JNB S2,JIAN
           SJMP L2
    JIAN: DEC R3
           CJNE R3,#40,L2
           MOV R3,40
    ;判断当前转速与目标值关系并调整
    L2:    MOV A,R0  
           SUBB A,R3
           JC ZENG1;R0<R3 ZENG1
           JNC JIAN1;R0>R3 JIAN1
           SJMP BUYONG
    ZENG1: INC 61H
           DEC 60H
           SJMP BUYONG
           
    JIAN1: INC 60H
           DEC 61H       
    ;显示
    BUYONG:INC R7
           CJNE R7,#2,LP;交替显示JIAO TI XIAN SHI
           MOV R7,#0
    ;将目标值显示出来
            MOV A,R3 
            MOV B,#100
            DIV AB 
            MOV 62H,A;百位
            XCH A,B
            MOV B,#10
            DIV AB
            MOV 63H,A;十位
            MOV 64H,B;各位
            
           MOV R6,64H;目标转速ZHUAN
           MOV R5,63H
          MOV R4,62H
    
      LP:   MOV A,R6 
            MOV DPTR,#TAB ;dptr首地址)
            MOVC A,@A+DPTR ;a=欲显示各位字符的字形行
            LCALL SHOW  ;调用SHOW程序(显示)
            
            MOV A,R5
            MOV DPTR,#TAB ;dptr首地址)
            MOVC A,@A+DPTR ;a=欲显示
            LCALL SHOW  ;调用SHOW程序(显示)
            
            MOV A,R4
            MOV DPTR,#TAB ;dptr首地址)
            MOVC A,@A+DPTR ;a=欲显示
            LCALL SHOW  ;调用SHOW程序(显示)   
            MOV R6,#0 ;转数清零
            MOV R5,#0
            MOV R4,#0
            MOV R0,#0
    LP1:    POP PSW
            POP ACC 
         RETI
    
    
    DINGSHI0:  
           PUSH ACC;中断
           PUSH PSW
           DJNZ  R2,EXIT
           CPL  P1.1 
           JNB  P1.1,L3; ;判断P1.1电平高低
           MOV  R2,60H;;若P1.1=1,给R2赋高电平计数值
           SJMP  EXIT
     L3:   MOV  R2,61H;;若P1.1=0,给R2赋低电平计数值
     EXIT: POP PSW
           POP ACC 
           RETI
    WAIBU:  INC R0
            INC R6
            CJNE R6,#10,EXIT1
           
            INC R5
            MOV R6,#0
            CJNE R5,#10,EXIT1
            INC R4
            MOV R5,#0
            CJNE R4,#10,EXIT1
            MOV R4,#0
     EXIT1:   RETI
    SHOW:   MOV     R0,#8  ;r0=8
    SLP:    CLR     CLK  ;P1.0输出低电平
            RLC     A  ;将存放在A中欲显示的字符码右移一位(最低位存入C)
            MOV     DAT,C
            SETB    CLK  ;P1.0输出高电平
            DJNZ    R0,SLP  ;r0减1不为0转到SLP 继续输出字形码 
            RET
    TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
    END




    展开全文
  • PWM调速原理及循迹小车调速方法

    万次阅读 多人点赞 2016-09-24 19:18:18
    一、PWM和占空比的概念 ...在PWM调速系统中,一般可以采用定宽调频、调宽调频、定频调宽3 种方法改变控制脉冲的占空比,但是前两种方法在调速时改变了控制脉宽的周期,从而引起控制脉冲频率的改变,当该

    一、PWM和占空比的概念

    ①PWM:又称脉冲宽度调制技术,是一种模拟控制方式,PWM波形如下所示。


    ②占空比:指高电平在一个周期中所占的比例。例如占空比为50%即高电平占整个周期时间的一半。

    二、PWM定频调速原理

    在PWM调速系统中,一般可以采用定宽调频、调宽调频、定频调宽3 种方法改变控制脉冲的占空比,但是前两种方法在调速时改变了控制脉宽的周期,从而引起控制脉冲频率的改变,当该频率与系统的固有频率接近时将会引起振荡。为避免之,设计采用定频调宽改变占空比的方法来调节直流电动机电枢两端电压。

    定频调速是在脉冲波形的频率不变的前提下(脉冲波形的周期不变),通过改变一个周期波形中高电平的时间从而改变波形的占空比,从而改变平均电压,调整电机的转速。假定电机始终接通电源时,电机最大转速为Vmax, 占空比为D = t /T, 则电机的平均速度Vd =D*Vmax, 由公式可知,当改变占空比D = t /T 时,就可以得到不同的电机平均速度Vd,从而达到调速的目的。如上图所示,可调脉冲宽度指高电平的时间,恒定的脉冲周期是固定频率。


    三、PWM小车调速方法

    对于单片机小车直流电机的调速,我们可以通过定时器设置定时初值,在中断服务函数中对占空比进行调整,从而实现电机的转速控制。举个例子:


    上图中我们定义了一个PWM波形的周期为16ms,并把该脉冲波形分成32份(等同于32个高低电平构成一个周期波形),这样每份电平的时间即为16ms/32 = 0.5ms。我们在定时器初始化时则定义初值为500(500us),对应有TH0 = (65536 - 500)/256,

    TL0 = (65536 - 500)%256。我们定义一个变量count来计算定时器进入中断服务函数的次数,比如我们中断了10次,在这10次中断中我们设置对应的使能端口为高电平,在中断次数大于10小于32时定义为低电平,这样我们就完成了一个周期等于16ms的PWM波形的定义,其占空比为10/32,从而实现对电机转速的控制。


    展开全文
  • STM32小车——PWM电机调速

    千次阅读 多人点赞 2019-08-01 12:02:07
    PWM电机调速(寄存器版) 我的上一篇博客已经写了如何用定时器产生PWM来实现LED灯的呼吸灯效果,当我想实现PWM来控制电机调速时,网上翻阅了很多的资料但是大多数是在呼吸灯的基础上改一下代码实现的,没有一定的...

    PWM电机调速(寄存器版)

    我的上一篇博客已经写了如何用定时器产生PWM来实现LED灯的呼吸灯效果,当我想实现PWM来控制电机调速时,网上翻阅了很多的资料但是大多数是在呼吸灯的基础上改一下代码实现的,没有一定的代表性。并且基本上是只产生两路PWM
    网上更多的代码是库函数版本的,对于刚学完51上手32的人来说可能不太适应。最近刚好学习了STM32的PWM,同时用来做一辆4轮小车来练练手。只有动手才能知道自己的问题出在哪里会还是不会。那么我就分享一下我做小车的经验。

    一、定时器的两路通道产生两路PWM

    这里我用的是定时器3通道1通道3,主要步骤如下:
    1、开启 TIM3 时钟,配置 PB0和PA0 为复用输出
    要使用 TIM3,我们必须先开启 TIM3 的时钟(通过 APB1ENR 设置),这里我们还要配置 PB0和PA6为复用输出,这是因为 TIM3_CH1 通道将映射到 PB0上,TIM3-CH3映射到PA6上此时, PB0和PA6属于复用功能输出。
    2、设置 TIM3 的 ARR 和 PSC
    在开启了 TIM3 的时钟之后,我们要设置 ARR 和 PSC 两个寄存器的值来控制输出 PWM 的周期。当 PWM 周期太慢(低于 50Hz)的时候,我们就会明显感觉到闪烁了。因此, PWM 周期在这里不宜设置的太小。
    3、设置 TIM3_CH1和TIM3_CH3 的 PWM 模式
    接下来,我们要设置 TIM3_CH1 和TIM3_CH3为 PWM 模式(默认是冻结的),因为我们的电机是低电平转的快,而我们希望当 CCR1 和CCR3的值小的时候, 就暗, CCR1和CCR2值大的时候,电机的转速就快,所以我们要通过配置 TIM3_CCMR1 的相关位来控制 TIM3_CH1的模式,通过TIM_CCMR2的相关位来控制TIM3_CH3的模式。
    4、使能 TIM3 的 CH2 输出,使能 TIM3
    在完成以上设置了之后,我们需要开启TIM3 的通道 1和通道3输出以及 TIM3。前者通过TIM3_CCER1和TIM_CCMR2 来设置,是单个通道的开关,而后者则通过 TIM3_CR1 来设置,是整个 TIM3 的总开关。只有设置了这两个寄存器,这样我们才能在 TIM3 的通道1和通道3 上看到 PWM 波输出。
    5、修改 TIM3_CCR1和TIM_CCR3 来控制占空比。
    最后,在经过以上设置之后, PWM 其实已经开始输出了,只是其占空比和频率都是固定的,而我们通过修改 TIM3_CCR1和TIM_CCR3则可以控制 CH1和CH2的输出占空比。继而控制 两个电机的速度。
    通过以上 65个步骤,我们就可以控制 TIM3 的 CH1CH3输出 PWM 波了。 这里特别提醒一下大家,高级定时器虽然和通用定时器类似,但是高级定时器要想输出 PWM,必须还要设置一个MOE 位(TIMx_BDTR 的第 15 位),以使能主输出,否则不会输出 PWM!!
    两路PWM代码片:
    1、配置定时器3
    在该工程下新建一个文件夹命名为TIMER,里面包括两个文件:timer.c和timer.h.
    timer.c主要包括以下两段代码定时器3的初始化和PWM的初始化。
    (1)定时器3初识化

    void TIM3_Int_Init(u16 arr,u16 psc)
    {
    	RCC->APB1ENR|=1<<1;	//TIM3时钟使能    
     	TIM3->ARR=arr;  	//设定计数器自动重装值//刚好1ms    
    	TIM3->PSC=psc;  	//预分频器7200,得到10Khz的计数时钟		  
    	TIM3->DIER|=1<<0;   //允许更新中断	  
    	TIM3->CR1|=0x01;    //使能定时器3
     	 MY_NVIC_Init(1,3,TIM3_IRQn,2);//抢占1,子优先级3,组2									 
    }
    

    (2)TIM3 PWM初始化:

    void TIM3_PWM_Init(u16 arr,u16 psc)
    {		 					 
    	//此部分需手动修改IO口设置
    	RCC->APB1ENR|=1<<1; 		//TIM3时钟使能    
    	RCC->APB2ENR|=1<<3;    	//使能PORTB时钟	
    	RCC->APB2ENR|=1<<2; 		//使能PORTA时钟
    	GPIOB->CRL&=0XFFFFFFF0;	//PB0输出
    	GPIOB->CRL|=0X0000000B;	//复用功能输出 
    	GPIOA->CRL&=0XF0FFFFFF;	//PA6输出
    	GPIOA->CRL|=0X0B000000; //复用输出
    
    	TIM3->ARR=arr;			//设定计数器自动重装值 
    	TIM3->PSC=psc;			//预分频器不分频
    	
    	TIM3->CCMR1|=6<<4;  	//CH1 PWM2模式		 
    	TIM3->CCMR1|=1<<3; 		//CH1预装载使能	
    	TIM3->CCMR2|=6<<4;		//CH3预装载使能 
    	TIM3->CCMR2|=1<<3;    //CH3输出使能
    	TIM3->CCER|=1<<0;   	//OC1 输出使能	 
    	TIM3->CCER|=1<<8; 
    	TIM3->CR1=0x0080;   	//ARPE使能 
    	TIM3->CR1|=0x01;    	//使能定时器3 	
    
    	STBY=1;
    }
    

    timer.h代码如下:

    #ifndef __TIMER_H
    #define __TIMER_H
    #include "sys.h"
    //1,增加TIM3_PWM_Init函数。
    //2,增加left和right宏定义,控制TIM3_CH1脉宽									  
    //通过改变TIM3->CCR1和TIM->CR3的值来改变占空比,从而控制电机的速度
    #define left TIM3->CCR1 
    #define right TIM3->CCR3
    
    void TIM3_Int_Init(u16 arr,u16 psc);
    void TIM3_PWM_Init(u16 arr,u16 psc);
    #endif
    

    2.电机模块IO口初识化:
    在该工程下新建一个文件夹命名为MOTER,里面包括两个文件:moter.c和moter.h,moter.c代码如下

    #include "moter.h"
    void MOTER_Init(void)
    {
    	RCC->APB2ENR|=1<<2;         //使能PORTA时钟
    	RCC->APB2ENR|=1<<3;		 //使能PORTB时钟
    	RCC->APB2ENR|=1<<4; 		//使能PORTC时钟
    	
    	GPIOA->CRL&=0XFF0FFFFF;
      	GPIOA->CRL|=0X00300000;
        GPIOA->ODR|=1<<5;      
    	
    	GPIOA->CRL&=0X0FFFFFFF;
        GPIOA->CRL|=0X30000000;
    	GPIOA->ODR|=1<<7; 
    	
    	GPIOB->CRL&=0XFFFFFF0F;
        GPIOB->CRL|=0X00000030;
    	GPIOB->ODR|=1<<1;
    	
    	GPIOB->CRL&=0XFFFFF0FF;
        GPIOB->CRL|=0X00000300;
    	GPIOB->ODR|=1<<2;
    	GPIOB->CRL&=0XFFFF0FFF;
        GPIOB->CRL|=0X00003000;
    	GPIOB->ODR|=1<<3;
    	GPIOB->CRL&=0XFFF0FFFF;
        GPIOB->CRL|=0X00030000;
    	GPIOB->ODR|=1<<4; 	
    	
    	GPIOC->CRL&=0XFFF0FFFF;
        GPIOC->CRL|=0X00030000;
    	GPIOC->ODR|=1<<4; 	
    	
    	GPIOC->CRL&=0XFF0FFFFF;
        GPIOC->CRL|=0X00300000;
    	GPIOC->ODR|=1<<5; 	
    }
    

    moter.h代码如下:

    #ifndef __MOTER_H
    #define __MOTER_H	 
    #include "sys.h"
    //电机端口定义(PWMA  PB0  PWMB  PA6)  
    #define AIN2 PBout(1)
    #define AIN1 PBout(2)
    #define STBY PBout(3)
    #define BIN2 PCout(5)
    #define BIN1 PCout(4)
    void MOTER_Init(void);	//初始化		 				    
    #endif
    

    3.test.c
    主要包括小车前进、后退、左右的一些函数,然后再通过改变left和right的值来改变TIM3->CCR1和TIM3->CR3的值来改变电机的速度:

    #include "sys.h"
    #include "delay.h"
    #include "usart.h" 
    #include "moter.h" 
    #include "timer.h" 
    
    void HOU(void)//定义后退函数
    {
    	AIN1=0;
    	AIN2=1;
    	BIN1=0;
    	BIN2=1;
    }
    
    void STOP(void)//停
    {
    	AIN1=0;
    	AIN2=0;
    	BIN1=1;
    	BIN2=1;
    }
    
    void YOU(void)//右拐
    {
    	AIN1=1;
    	AIN2=0;
    	BIN1=1;
    	BIN2=1;
    }
    
    void ZUO(void)//左拐
    {
    	AIN1=0;
    	AIN2=0;
    	BIN1=1;
    	BIN2=0;
    }
    
    void GO(void)//前进
    {
    	AIN1=1;
    	AIN2=0;
    	BIN1=1;
    	BIN2=0;
    }
    
    int main(void)
    {					   
    	Stm32_Clock_Init(9);	//系统时钟设置
    	uart_init(72,115200);	//串口初始化为115200
    	delay_init(72);	   	 	//延时初始化 
      	TIM3_PWM_Init(899,0);	//不分频。PWM频率=72000/(899+1)=80Khz
    	MOTER_Init();
      	while(1)
    	{
    		left=400;
    		right=400;
    		GO();
    	}
    }
    

    通过以上的程序可以实现电机前进调速。希望对大家有所帮助。

    展开全文
  • PWM调速的原理

    万次阅读 多人点赞 2018-12-06 21:15:26
    PWM调速实质上是调节占空比,我们都是根据占空比的大小来衡量速度,但是为什么我们调节占空比就可以实现对速度的调节呢?这就需要我们了解调速的本质,我们用PWM调节速度问什么能够实现?我们就用L298来说一下,怎样...
  • L298N PWM调速

    千次阅读 2019-05-10 12:01:38
    #include<reg52.h> sbit IN1=P1^0; sbit IN2=P1^1; #define uchar unsigned char #define uint unsigned int #define CRYSTAL_FREQ 11059200 // #define INTERRUPT_PERIOD_0 100000//1/100000s=0.01ms ...
  • C51—使用PWM对直流电机调速

    千次阅读 多人点赞 2019-07-21 17:32:13
    使用PWM对电极调速时,是靠改变占空比(改变脉冲宽度)来控制输出电压的,电压较小电机转速就会下降;再通过改变周期(脉冲的周期)来控制其输出频率,脉冲频率对电机的转速有着决定性作用,脉冲频率越高连续性就越...
  • pwm 调速 原理

    千次阅读 2011-03-09 12:10:00
      PWM调速原理  本文详细阐述pwm的原理: PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。 PWM控制...
  • PWM原理 PWM频率与占空比详解

    万次阅读 多人点赞 2020-01-29 16:23:52
    什么是PWM ​ 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多...
  • 直流电机的PWM调速

    万次阅读 多人点赞 2016-09-19 21:24:19
    ①直流电机的PWM调速原理与交流电机调速原理不同,它不是通过调频方式去调节电机的转速,而是通过调节驱动电压脉冲宽度的方式,并与电路中一些相应的储能元件配合,改变了输送到电枢电压的幅值,从而达到改变直流...
  • 四线直流风扇PWM调速探研

    万次阅读 2017-12-02 14:06:49
    探究PWM信号控制四线风扇
  • ②已经知道什么是PWM调速(可等效于知道什么是占空比) ③已经学会使用analogWrite和digitalWrite ④知道L298N能带动你电机的功率,不至于烧毁 ===============================================================...
  • 直流电动机的调速 用单片机产生PWM控制

    万次阅读 多人点赞 2020-06-15 16:03:16
    上一篇文章已经讲解了直流电机的驱动,怎么使它正转,反转和停止,并详细的说...直流调速器就是调节直流电动机速度的设备,上端和交流电源连接,下端和直流电动机连接,直流调速器将交流电转化成两路输出直流电源,一
  • 2018 0627 STM32 ----PWM直流电机调速(L298N驱动连接)

    万次阅读 多人点赞 2018-06-27 10:57:38
    利用STM32 PB6口输出PWM 控制直流电机的速度,用L298N驱动器驱动。硬件连接部分:1. 输入12V2.接地3....原理:利用STM32 的IO输出不同占空比的脉冲信号来达到调速的过程,当占空比大的时候就表...
  • PWM脉宽调制原理

    千次阅读 2016-06-25 02:01:29
    PWM调速原理 载两端的电压,从而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,比如:电机调PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负速、温度控制、压力控制等等[7]。 在PWM...
  • 树莓派3B 硬件PWM的实现控制,呼吸灯和直流电机速度控制。
  • 基于L298N的STM32的直流电机PWM调速控制

    万次阅读 多人点赞 2018-11-14 23:48:07
    这两天研究了一下基于L298N与stm32的直流电机调速,实验结果良好,可以根据调节STM32的PWM占空比来进行直流电机的调速。实验系统图如下: 首先整个PWM实验选用的是stm32f103系列,驱动模块选择的是L298N驱动模块...
  • L298N模块驱动电机(实现pwm调速

    千次阅读 2019-10-30 20:34:02
    2.脉宽调制(PWM)基本原理: 控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的...
  • pwm控制电机转速原理浅析

    千次阅读 2020-01-29 16:26:23
    所谓PWM就是脉宽调制器,通过调制器给电机提供一个具有一定频率的脉冲宽度可调的脉冲电。脉冲宽度越大即占空比越大,提供给电机的平均电压越大,电机转速就高。反之脉冲宽度越小,则占空比越越小。提供给电机的平均...
1 2 3 4 5 ... 20
收藏数 3,195
精华内容 1,278
关键字:

pwm调速