单片机pwm控制电机转速

全部回答6
默认 最新
  • 单片机控制电机转速:  如果只有一个转向的话就比较容易了,如果要有正反两个转向,就需要一个H桥,并且两个I/O口输出高低电频控制。比如用P1口的P1.0,P1.1,P1.2三个I/O口接按键,P3.4口接电频输出,编个定时程序及按键程序,如果是快(全速运行),那就P3.4口直接输出高电频“1”;中(50%),那就让P3.4口0—50ms输出高电频“1”,50ms—100ms输出低电频“0”,后面就一直以50ms进行一次取反;慢(就用10%吧),0—40ns输出高电频“1”,41ns—400ns输出低电频“0”,这样为一个周期,后面就一直循环吧。  如果按键P1.0按下,执行方式1,全速运行,否则以默认方式运行;按键P1.1按下,执行方式2,改变占空比,以50%的速度运行,否则,不作改变;按键P1.2按下,执行方式3,改变占空比,以10%的速度运行,否则,不作改变。
    0 点赞
  • 如果只有一个转向的话就比较容易了,如果要有正反两个转向,就需要一个H桥,并且两个I/O口输出高低电频控制。  比如用P1口的P1.0,P1.1,P1.2三个I/O口接按键,P3.4口接电频输出,编个定时程序及按键程序,如果是快(全速运行),那就P3.4口直接输出高电频“1”;中(50%),那就让P3.4口0—50ms输出高电频“1”,50ms—100ms输出低电频“0”,后面就一直以50ms进行一次取反;慢(就用10%吧),0—40ns输出高电频“1”,41ns—400ns输出低电频“0”,这样为一个周期,后面就一直循环。  如果按键P1.0按下,执行方式1,全速运行,否则以默认方式运行;按键P1.1按下,执行方式2,改变占空比,以50%的速度运行,否则,不作改变;按键P1.2按下,执行方式3,改变占空比,以10%的速度运行,否则,不作改变。
    0 点赞
  • 一. 带注释软件清单;==========使用单元设定==========//..................................使用单元设定 DIS0 EQU 30H DIS1 EQU 31H DIS2 EQU 32H DIS3 EQU 33H LED EQU 34H TM1 EQU 35H; TM2 EQU 36H; INTV BIT 37H;中断标志 THX EQU 38H;定时脉宽高电平 CISHU EQU 39H FIRST BIT 41H; 检测加减是否第一次按下 SET1 BIT 42H SETZ0 EQU 43H;设定当前设定值SETZ0~SETZ3 SETZ1 EQU 44H SETZ2 EQU 45H SETZ3 EQU 46H TM3 EQU 47H; 循环次数单元 JIA1 BIT 48H; 单步加标志 LIANJIA BIT 49H; 连加标志 JIAN1 BIT 50H; 单步减标志 LIANJIAN BIT 51H; 连减标志 SETDATA EQU 52H; 设定速度暂存单元 REALDATA EQU 53H; 实测速度暂存单元 YK1 EQU 54H; 上次输出数据暂存单元 KP EQU 56H;比例系数 KI EQU 57H;积分系数 EK EQU 58H;设定值和实测值的差值 EK1 EQU 59H;上次的EK值 OUTPUT EQU 60H; EK2 EQU 61H;EK-EK1的值 ONPRESS BIT 62H;判定ENTER键是否弹起标志 TMS EQU 63H;闪烁时长 SHAN BIT 64H; 闪烁标志;==========主程序========== ORG 0000H SJMP MAIN ORG 0013H;外部中断1入口地址 AJMP INX1 ORG 001BH;定时器T1中断入口地址 AJMP ITX1 ORG 0070HMAIN: MOV SP,#70H;设定堆栈指针入口地址 ACALL INIT;调用初始化程序 M1: JB SET1,FLASH;当前为设置状态则跳到闪烁显示模块 ACALL DISP; 否则为一般显示 SJMP NEXTTFLASH: ACALL DISP1NEXTT: ACALL DELAY;调用按键延时程序 ACALL M2;调用按键程序 DJNZ CISHU,M1;第隔100MS刷新一下实测值 MOV CISHU,#20ACALL CONTROL;调用控制调速模块 SJMP M1//==========初始化模块========== INIT:MOV DPTR,#0FD00H ;设置PA、PB为输出口,PC为输入口 MOV A,#03H MOVX @DPTR,A MOV TMOD,#21H ;定时器/计数器T1为方式2,定时器/计数器T0为方式1 MOV TL0,#00H ; 定时器/计数器T0赋初值#00H MOV TH0,#00H MOV THX,#0BBH ;输出单元赋初值#0BBH,即脉冲高电平宽度 MOV TH1,THX MOV TL1,THX SETB TR1 ;启动定时器/计数器T1 SETB TR0 ; 启动定时器/计数器T0 SETB ET1 ;允许定时器/计数器T1溢出中断 SETB EX1 ;允许外部中断1中断 SETB IT1 ;选择边沿触发 SETB EA ;CPU开中断 SETB 07H; SETB SHAN CLR 11H;检测是否成功 MOV LED,#7FH
    0 点赞
  • 单片机控制电机转速:  如果只有一个转向的话就比较容易了,如果要有正反两个转向,就需要一个H桥,并且两个I/O口输出高低电频控制。比如用P1口的P1.0,P1.1,P1.2三个I/O口接按键,P3.4口接电频输出,编个定时程序及按键程序,如果是快(全速运行),那就P3.4口直接输出高电频“1”;中(50%),那就让P3.4口0—50ms输出高电频“1”,50ms—100ms输出低电频“0”,后面就一直以50ms进行一次取反;慢(就用10%吧),0—40ns输出高电频“1”,41ns—400ns输出低电频“0”,这样为一个周期,后面就一直循环吧。  如果按键P1.0按下,执行方式1,全速运行,否则以默认方式运行;按键P1.1按下,执行方式2,改变占空比,以50%的速度运行,否则,不作改变;按键P1.2按下,执行方式3,改变占空比,以10%的速度运行,否则,不作改变。
    0 点赞
  • void delayms(int16u k) 。。。。。。。可以设置一段延时程序这里大约是1ms{ int16u a,s; for(a=k;a>0;a--) for(s=110;s>0;s--);}void pwm() m1,m4为电机的使能端,为1时电机工作,为0时电机不工作, 通过电机导通和不导通的时间的控制就能产生pwm信号,在这 里只要调节speed的变化就可以调节pwm信号的占空比了。{ m1=1;m4=1; delayms(speed); m1=0;m4=0; delayms(30-speed);}//你可以在这里加一个键盘检测程序来控制电机的占空比来调节减速还是加速 这是加速程序 { speed=speed+5; if(speed>=30) speed=30; }这是减速程序 { if(speed!=5) speed=speed-5; else speed=5; }
    0 点赞
  • 原发布者:703402999直流电机PWM控制1)设置四个按键控制直流电机,分别是起动、停止以及加、减速的脉宽控制(注意按键防抖,脉宽上下边界限制);2)电机转动由光电传感器转换为脉冲,该脉冲的处理(输入至单片机外部中断);3)利用串行静态显示转速(定时计数器实现秒定时,并记录一秒外部中断输入脉冲个数);4)直流电机运行800转停止5)直流电机上下限速光电报警参考原理图如下所示:1)查询式键盘原理图2)6位串行静态显示原理图3)直流电机控制原理图PWM基本原理及其实现方法•PWM基本原理•PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。PwM可以应用在许多方面,如电机调速、温度控制、压力控制等。•在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。电枢电压“占空比”与平均电压关系图电压平均值描述Vd=Vmax*D式中,Vd——电机的平均速度;Vmax——电机全通电时的速度(最大);D=t1/T由公式(2)可见,当我们改变占空比D=t1/T时,就可以得到不同的电机平均速度,从而达到调速的目的。严格地讲,平均速度n与占空比D并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关
    0 点赞

没有更多内容了

返回顶部
产品求购 求购