用单片机产生7路舵机控制PWM波的方法

合集下载

舵机的单片机控制

舵机的单片机控制

舵机的单片机控制第一章:引言舵机是一种常见的机械驱动器件,广泛应用于模型航空、机器人、自动化设备以及家用电器等领域。

其具备精准控制旋转角度的能力,可以根据输入的信号控制输出轴的位置,使其按照预定的角度旋转。

单片机技术作为现代控制系统中重要的组成部分,被广泛应用于舵机控制中,本文将以单片机控制舵机为研究对象,探讨其工作原理和控制方法。

第二章:舵机原理舵机由电机和返回电路组成,输入控制信号后,通过电机驱动轴实现角度调节。

其内部包含了一个减速装置以及一个位置反馈装置(旋转电位器或磁编码器)。

通过控制电机的转速和方向,从而实现舵机输出轴的位置调整。

值得注意的是,舵机的控制信号通常为PWM信号。

第三章:单片机控制舵机3.1 舵机控制信号的生成单片机通过PWM信号控制舵机的角度。

PWM信号可以通过计时器/计数器来生成,并通过定时器的频率和占空比来控制输出信号的特性。

其中,舵机的控制信号通常具有20ms的周期,占空比在0.5ms到2.5ms之间可以实现0°到180°的转动范围。

因此,单片机需要根据需要设定合适的定时器参数。

3.2 单片机舵机控制电路单片机与舵机之间需要一个适配电路,将单片机输出的PWM信号转化为舵机可以接受的信号。

适配电路通常由操作放大器、电阻和电容组成。

其作用是将较低电平的单片机信号放大到舵机所需要的电平范围,以便舵机可以接收到正确的控制信号。

3.3 程序设计程序设计是单片机控制舵机的关键。

根据舵机的控制信号特性,通过适当的算法和参数设置,可以实现精确的舵机控制。

程序设计需要考虑到舵机控制的实时性和精确性,采用中断方式和定时器中断来实现。

第四章:舵机控制实验为验证单片机控制舵机的效果,进行了一系列实验。

实验中通过改变PWM信号的占空比以及角度范围,观测舵机输出的转动情况。

实验结果表明,单片机可以精确控制舵机的转动角度,并具备实时性能。

第五章:结论单片机控制舵机是一种成熟且常见的应用。

单片机控制的多路舵机用 PWM波产生方法

单片机控制的多路舵机用 PWM波产生方法

1 引 言


传统产生 PWM 波的方法是通过大量的分立元
机 控
件来实现的 ,所产生的脉冲频率和宽度往往不是很
制 的
准确 ,很难做到对舵机的精确控制 。

由于单片机具有性能稳定 、编程灵活 、精度较

舵 高 、价格低廉等特点 ,用它产生 PWM 波在实际中得
机 用
到了广泛的应用 [ 3 ] 。最直接的方法就是用单片机
机 用
PWM GEN ( )程序中完成 。另外 ,由于中断响应和中
断返回都需要至少 4 条指令周期 ,故取 T0value 的
值比实际算出的值少 4,以减小误差 。
波 产
void timer0 ( void) / /定时器 0中断服务程序


{

flag = 1;
TCNT0 = T0value; }
本身所带的 PWM 口产生波形 ,但该方法受 MCU 内
部资源的限制 ,仅能实现 2 ~4 路 PWM 波的输出 ,
波 产
对于需要多路舵机的场合显然是不够的 。文献 [ 4 ]
生 方
给出了一种利用单片机产生 7路控制 futaba舵机用
法 PWM 波的方法 ,该方法利用分时复用的思想 ,由于
控制脉冲的周期为 14 590μs,控制脉宽 1200~1800 μs,故将一个周期均匀划分为 7份 ,在每个时段控制 其中的一路输出 。该方法虽然实现了 7路舵机的控 制 ,但也仅能实现 7路舵机的控制 ,并且仅针对特定 舵机的控制 ,控制精度也不高 ,在一些重要场合的应 用受到了限制 。文献 [ 5 ]给出的方法实现了 16 通 道的输出 ,该方法利用 MCU 精确控制每条语句的执 行时间 ,再配合延时的方法来达到 16 路的输出 ,然 而此方法大量占用 MCU 运算时间 ,基本不能再处理 其它的事务 。

如何利用单片机输出PWM波

如何利用单片机输出PWM波

如何利用51单片机输出PWM波1、理论知识PWM这个功能在飞思卡尔、STM32等高档的单片机内部有专用的模块,用此类芯片实现PWM功能时只需要通过设置相应的寄存器就可实现周期和占空比的控制;但是如果要用51单片机的话,也是可以的,但是比较的麻烦;此时需要用到内部定时器来实现,可用两个定时器实现,也可以用一个定时器实现;用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比;大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比;下面重点介绍用一个定时器的实现PWM的方法;因为市面上的智能小车所采用的电机大多数为TT减速电机,通过反复的实验,此电机最佳的工作频率为1000HZ太高容易发生哨叫,太低电机容易发生抖动,所以下面以周期为1ms1000HZ进行举例,要产生其它频率的PWM波,程序中只需作简单修改即可;用一个定时器时如定时器T0,首先你要确定PWM的周期T和占空比D,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则DT=nt,类似的可以求出PWM低电平时间需要多少个时间基准n';因为这里我们是产生周期为1ms1000HZ的PWM,所以可设置中断的时间间隔为0.01ms,,然后中断100次即为1ms;在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零此语句保证频率为1000HZ,2、当time>n时n应该在0-100之间变化开,让单片相应的I/O口输出高电平,当time<n时,让单片相应的I/O口输出低电平,此时占空比就为%n;2、程序1,使单片机的I/O口输出固定频率的PWM波下面按上面的思路给出一个具体程序:///程序名:单片机输出固定频率的PWM波//晶振:11.00592 MHz CPU型号:STC89C52 //功能:P2^0口输出周期为1ms1000HZ,占空比为%80的PWM波///include<reg52.h>define uint unsigned intdefine uchar unsigned charsbit PWM1=P2^0;//接IN1 控制正转sbit PWM2=P2^1;//接IN2 控制反转uchar time;void main{TMOD=0x01;//定时器0工作方式1TH0=0xff;//65536-10/256;//赋初值定时TL0=0xf7;//65536-10%256;//0.01msEA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0while1{}}void delayuint z{uint x,y;forx=z;x>0;x--fory=500;y>0;y--;}void tim0 interrupt 1{TR0=0;//赋初值时,关闭定时器TH0=0xff;//65536-10/256;//赋初值定时TL0=0xf7;//65536-10%256;//0.01msTR0=1;//打开定时器time++;iftime>=100 time=0;//1khziftime<=20 PWM1=0;//点空比%80else PWM1=1;PWM2=0;}程序说明:1、关于频率的确定:对于11.0592M晶振,PWM输出频率为1KHZ,此时设定时器0.01ms中断一次,时中断次数100次即为1KHZ 0.01ms100=1ms,即为1000HZ此时, 定时器计数器赋初值为TH0=FF,TL0=F7;2、关于占空比的确定:此时我们将来time的值从0-100之间进行改变,就可以将占空比从%0-%100之间进行变化,上面程序中t ime<=20时PWM1=0; else PWM1=1;意思就是%20的时间输出低电平,%80的时间输出高电平,即占空比为%80;如需得到其它占空比,如%60,只需将time的值改为40即可;程序为iftime<=40 PWM1=0;else PWM1=1;当然编写程序时也可以定义一个标志位如flag,根据flag的状态决定输出高平还是低电平,假设定义flag=1的时候输出高电平,用一个变量去记录定时器中断的次数,每次中断就让记录中断次数的变量+1,在中断程序里面判断这个变量的值是否到了n,如果到了说明高电平的时间够了,那么就改变flag为0,输出低电平,同时记录中断变量的值清零,每次中断的时候依旧+1,根据flag=0的情况跳去判断记录变量的值是否到了n'如果到了,说明PWM的低电平时间够了,那么就改flag=1,输出改高电平,同时记录次数变量清零,重新开始,如此循环便可得到你想要的PWM波形,这种方法我们这里不在举例,请自己去试着书写;3、程序2,使用单片机I/O口输出PWM波,并能通过按键控制正反转在程序中我们通常需要控制电机的正反转,如通过一个按键控制正反转,此时我们也可以设置一个标志位如flag;在主程序中当按键每次被按下时,flag相应取反;然后在子程序中当flag为1时,进行正转程序,当flag为0时执行反转程序;下面的程序功能为单片机I/O口P2^0、P2^1输出1000HZ,占空比为%50,并能过P3^7按键控制正电机的正反转;///程序名:PWM直流电机调速//晶振:11.00592 MHz CPU型号:STC89C52 //功能:直流电机的PWM波控制,可以通过按键控制正反转///include<reg52.h>define uint unsigned intdefine uchar unsigned charuchar time,count=50,flag=1;//低电平的占空比sbit PWM1=P2^0;//PWM 通道1,反转脉冲sbit PWM2=P2^1;//PWM 通道2,正转脉冲sbit key_turn=P3^7; //电机换向/函数声明/void delayxmsuint z;void Motor_turnvoid;void timer0_initvoid;/主函数/void mainvoid{timer0_init;while1{Motor_turn;}}/延时处理/void delayxmsuint z//延时xms程序{uint x,y;fory=z;x>0;x--fory=110;y>0;y--;}/电机正反向控制/void Motor_turnvoid{ifkey_turn==0{delayxms2;//此处时间不能太长,否者会的中断产生冲突ifkey_turn==0{flag=~flag;}whilekey_turn;}}/定时器0初始化/void timer0_initvoid{TMOD=0x01; //定时器0工作于方式1TH0=65536-10/256;TL0=65536-10%256;TR0=1;ET0=1;EA=1;}/定时0中断处理/void timer0_intvoid interrupt 1{TR0=0;//设置定时器初值期间,关闭定时器TH0=65536-10/256;TL0=65536-10%256;TR0=1;ifflag==1//电机正转{PWM1=0;time++;iftime<count{PWM2=1;}elsePWM2=0;iftime>=100{time=0;}}else //电机反转{PWM2=0;time++;iftime<count{PWM1=1;}elsePWM1=0;iftime>=100{time=0;}}}4、程序4、使单片机输出PWM,并能控制正反转和实现调速为了使大家彻底掌握此方面,下面再给出一个复杂一点的程序,实现的功能为通过一个按键控制正反转并通过另外两个按键使之可以在0到20级之间调速的程序;///程序名:PWM直流电机调速//晶振:11.00592 MHz CPU型号:STC89C52 //直流电机的PWM波控制,可以通过按键控制正反转并在0到20级之间调速///include<reg52.h>define uint unsigned intdefine uchar unsigned charuchar time,count=50,flag=1;//低电平的占空比sbit PWM1=P2^0;//PWM 通道1,反转脉冲sbit PWM2=P2^1;//PWM 通道2,正转脉冲sbit key_add=P3^5;//电机加速sbit key_dec=P3^6;//电机减速sbit key_turn=P3^7;//电机换向/函数声明/void delayxmsuint z;void Motor_turn;void Motor_add;void Motor_dec;void timer0_init;/主函数/void main{timer0_init;while1{Motor_turn;Motor_add;Motor_dec;}}/延时处理/void delayxmsuint z//延时xms程序{uint x,y;fory=z;x>0;x--fory=110;y>0;y--;}/电机正反向控制/void Motor_turn{ifkey_turn==0{delayxms2;//此处时间不能太长,否者会的中断产生冲突ifkey_turn==0{flag=~flag;}whilekey_turn;}}void Motor_add//电机加速{ifkey_add==0{delayxms2;//此处时间不能太长,否者会的中断产生冲突ifkey_add==0{count+=5;ifcount>=100{count=0;}}whilekey_add;}}void Motor_dec//电机加减速{ifkey_dec==0{delayxms2;//此处时间不能太长,否者会的中断产生冲突ifkey_dec==0{count-=5;ifcount>=100{count=0;}}whilekey_dec;}}/定时器0初始化/void timer0_init{TMOD=0x01; //定时器0工作于方式1TH0=65536-10/256;TL0=65536-10%256;TR0=1;ET0=1;EA=1;}/定时0中断处理/void timer0_int interrupt 1{TR0=0;//设置定时器初值期间,关闭定时器TH0=65536-10/256;TL0=65536-10%256;TR0=1;ifflag==1//电机正转{PWM1=0;time++;iftime<count{PWM2=1;}elsePWM2=0;iftime>=100{time=0;}}else //电机反转{PWM2=0;time++;iftime<count{PWM1=1;}elsePWM1=0;iftime>=100{time=0;}}}5、利用单片机输出PWM简单控制小车直行相信通过上面的讲解,大家已经能够很好的撑握如何利用51单片机产生PWM 波下面给出一个程序,通过单片机两个I/O口输出PWM波,让小车直行;include<reg52.h>define uint unsigned intdefine uchar unsigned charsbit PWM1=P2^0;//接IN1 控制正转sbit PWM2=P2^1;//接IN2 控制反转sbit PWM3=P2^2;//接IN3 控制正转sbit PWM4=P2^3;//接IN4 控制反转sbit PWM5=P2^4;//接IN3 控制正转sbit PWM6=P2^5;//接IN4 控制反转sbit PWM7=P2^6;//接IN3 控制正转sbit PWM8=P2^7;//接IN4 控制反转uchar time;void main{TMOD=0x01;//定时器0工作方式1TH0=0xff;//65536-10/256;//赋初值定时TL0=0xf7;//65536-10%256;//0.01msEA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0while1{}}void delayuint z{uint x,y;forx=z;x>0;x--fory=500;y>0;y--;}void tim0 interrupt 1{TR0=0;//赋初值时,关闭定时器TH0=0xff;//65536-10/256;//赋初值定时TL0=0xf7;//65536-10%256;//0.01msTR0=1;//打开定时器time++;iftime>=100 time=0;//1khzPWM2=0;PWM4=0;iftime<=75 PWM1=1;else PWM1=0;iftime<=80 PWM3=1; else PWM3=0;PWM6=0;PWM8=0;iftime<=50 PWM5=1; else PWM5=0;iftime<=50 PWM7=1; else PWM7=0;}。

一种基于74HC595产生舵机用多路PWM波的方法

一种基于74HC595产生舵机用多路PWM波的方法


肇庆学院学报
第3 4 卷
1 舵机 的工作原理
标准 的舵 机 有 3条连 接线 , 分 别 是 电源 线 V C C、 地线 G ND、 控 制线 C I N, 如图 1 所示. 电源线 和地 线 用 于
提供舵机 内部的直流电机和控制线路所需的电能 , 电压通常取 5 V, 但值得注意的是给舵机供 电的电源还必 须能捉供足够的功率 , 否则舵机将抖动或不能正常工作. 控制线的输人 C I N是一个脉冲宽度可调的周期性
对 舵 机 的控 制要 求.
收 稿 日期 : 2 0 1 2 — 0 7 . 2 3
基 金项 目: 广西教育厅 面上项 目 ( 2 0 1 0 1 2 MS 1 8 5 ) ;  ̄ 东省教 育厅人才 引进 资金 项 目肇庆学 院教授 科研启动 项 目( 6 1 1 2 7 1 ) ; 肇庆学院教学 改革 特别项 目( J G Z B 2 0 1 2 0 1 ) ; 肇庆 学院教 学研 究项 目( J Y 2 0 1 1 0 5 ) 作. 者简 介: 邵  ̄( 1 9 7 0 . ) , 男, 湖南浏阳人 , 肇庆 学院计 算机 学院教授 , 博 士.
利用msp430和74hc595产生了类人机器人舵机用的48路pwm波且仅需占用msp430单片机的p5端口为机器人的其他控制电路保留了足够的单片机io口硬件电路的特色是采取每片74hc595的串行输入端并联在一起虽然任意时刻每片74hc595的串行输入数据相同但输入的串行数据是否会从并行榆出端输出还取决于各自的锁存脉冲
关键词 : P WM ; 7 4 t I C 5 9 5 ; 舵 机 ;类人 机 器 人
中图分类号 : T P 3 9 1
文献标志码 : A

51系列单片机输出PWM的两种方法

51系列单片机输出PWM的两种方法

51系列单片机输出PWM的两种方法51系列单片机(如STC89C52、AT89C51等)是一种常用的8位微处理器,具有较高的性价比和广泛的应用领域。

PWM(Pulse Width Modulation)是一种常用的模拟信号生成技术,在很多领域中都有广泛应用,比如电机控制、LED调光等。

在51系列单片机中,有两种常用的方法可以实现PWM输出,分别是软件实现PWM和硬件实现PWM。

下面将详细介绍这两种方法及其实现方式。

1.软件实现PWM软件实现PWM是通过定时器和IO口的相互配合来产生PWM信号。

具体实现的步骤如下:步骤1:设置定时器的工作模式和计数器初值。

选择一个合适的定时器,比如定时器0,然后设置定时器工作模式和计数器初值。

定时器的工作模式选择“模式1”或“模式2”,并根据需求设置计数器初值。

步骤2:设置IO口的工作模式。

选择一个合适的IO口,比如PWM输出口(如P1.2),然后将该IO口设置为输出模式。

步骤3:编写软件控制代码。

在主循环中,通过改变IO口的电平状态来实现PWM输出。

根据定时器的计数值,可以确定PWM信号的占空比大小。

当定时器计数值小于一些阈值时,将IO口置高电平;当定时器计数值大于该阈值时,将IO口置低电平。

通过改变该阈值,可以实现不同的PWM占空比。

通过上述步骤,就可以实现软件控制的PWM输出。

需要注意的是,软件实现PWM的精度较低,同时也会占用较多的处理器时间。

2.硬件实现PWM硬件实现PWM是通过专门的PWM模块或专用的计时电路来实现PWM输出。

具体实现的步骤如下:步骤1:选择一个合适的PWM模块或计时电路。

可以选择专门的PWM模块(如PCA模块)或计时电路(如555计时芯片),根据需求选择合适的硬件模块。

步骤2:设置PWM模块或计时电路的相关参数。

根据需求设置PWM频率、占空比等参数。

步骤3:连接并配置IO口。

将PWM模块或计时电路的输出引脚连接到需要输出PWM信号的IO口,然后将该IO口设置为输出模式。

如何利用单片机输出PWM波

如何利用单片机输出PWM波

如何利用51单片机输出PWM波1、理论知识PWM这个功能在飞思卡尔、STM32等高档的单片机内部有专用的模块,用此类芯片实现PWM功能时只需要通过设置相应的寄存器就可实现周期和占空比的控制。

但是如果要用51单片机的话,也是可以的,但是比较的麻烦。

此时需要用到内部定时器来实现,可用两个定时器实现,也可以用一个定时器实现。

用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。

大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。

下面重点介绍用一个定时器的实现PWM的方法。

因为市面上的智能小车所采用的电机大多数为TT减速电机,通过反复的实验,此电机最佳的工作频率为1000HZ(太高容易发生哨叫,太低电机容易发生抖动),所以下面以周期为1ms(1000HZ)进行举例,要产生其它频率的PWM波,程序中只需作简单修改即可。

用一个定时器时(如定时器T0),首先你要确定PWM的周期T和占空比D,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n'。

因为这里我们是产生周期为1ms(1000HZ)的PWM,所以可设置中断的时间间隔为0.01ms,,然后中断100次即为1ms。

在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000HZ),2、当time>n时(n应该在0-100之间变化开),让单片相应的I/O口输出高电平,当time<n时,让单片相应的I/O口输出低电平,此时占空比就为%n。

2、程序1,使单片机的I/O口输出固定频率的PWM波下面按上面的思路给出一个具体程序:/*******************************************************************/ /* 程序名:单片机输出固定频率的PWM波*//* 晶振:11.00592 MHz CPU型号:STC89C52 *//* 功能:P2^0口输出周期为1ms(1000HZ),占空比为%80的PWM波*//*****************************************************************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit PWM1=P2^0;//接IN1 控制正转sbit PWM2=P2^1;//接IN2 控制反转uchar time;void main(){TMOD=0x01;//定时器0工作方式1TH0=0xff;//(65536-10)/256;//赋初值定时TL0=0xf7;//(65536-10)%256;//0.01msEA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0while(1){}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=500;y>0;y--);}void tim0() interrupt 1{TR0=0;//赋初值时,关闭定时器TH0=0xff;//(65536-10)/256;//赋初值定时TL0=0xf7;//(65536-10)%256;//0.01msTR0=1;//打开定时器time++;if(time>=100) time=0;//1khzif(time<=20) PWM1=0;//点空比%80else PWM1=1;PWM2=0;}程序说明:1、关于频率的确定:对于11.0592M晶振,PWM输出频率为1KHZ,此时设定时器0.01ms中断一次,时中断次数100次即为1KHZ( 0.01ms*100=1ms,即为1000HZ)此时,定时器计数器赋初值为TH0=FF,TL0=F7。

基于单片机PWM控制技术的实现

基于单片机PWM控制技术的实现

基于单片机PWM控制技术的实现一、本文概述本文旨在深入探讨基于单片机PWM(脉冲宽度调制)控制技术的实现。

PWM控制技术是一种广泛应用于电机控制、电源管理、照明系统等领域的电子控制技术。

通过调整脉冲的宽度,实现对输出电压或电流的精确控制,从而满足各种应用场景的需求。

本文将首先简要介绍PWM控制技术的基本原理和单片机在PWM控制中的应用,然后详细阐述单片机PWM控制技术的具体实现方法,包括硬件电路设计、软件编程以及优化策略等方面。

本文还将分析单片机PWM控制技术的优缺点,并探讨其在不同领域的应用前景。

通过本文的阅读,读者将能够全面了解单片机PWM控制技术的实现过程,为实际应用提供有益的参考和指导。

二、单片机PWM控制技术基础脉宽调制(PWM,Pulse Width Modulation)是一种数字控制技术,通过对模拟信号的采样,把模拟信号转换成一定频率的脉冲信号,再通过控制脉冲信号的占空比(即脉冲宽度与脉冲周期之比)来模拟输出不同的模拟信号电平。

这种技术在电子控制系统中应用广泛,尤其在电机控制、电源管理、照明调节等领域发挥着重要作用。

单片机(MCU,Microcontroller Unit)是一种集成度高、功能强大的微型计算机,内部集成了CPU、存储器、I/O接口等多种功能模块。

单片机利用PWM控制技术,可以通过编程实现对外部设备的精确控制。

在单片机中实现PWM控制,一般需要通过定时器或专门的PWM模块生成具有特定占空比的脉冲信号。

占空比的大小决定了输出信号的平均电平,从而实现模拟信号的数字化控制。

例如,当占空比为50%时,输出的平均电平为电源电压的一半。

在PWM控制中,频率和占空比是两个关键参数。

频率决定了PWM 信号的平滑度,频率越高,输出的模拟信号越平滑。

占空比则决定了输出信号的平均电平,通过调整占空比可以实现对外部设备的精确控制。

选择合适的PWM模块或定时器。

不同的单片机可能具有不同的PWM模块或定时器资源,需要根据具体需求选择合适的模块或定时器。

如何利用单片机调PWM波完美教程

如何利用单片机调PWM波完美教程

舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出最后,电压差的正负输出到电机驱动芯片决定电机的正反转当电机转速一定时,通过级联减速齿轮带动电0位器旋转,使得电压差为0,电机停止转动舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置一般舵机的控制要求如图1所示图1 舵机的控制要求单片机实现舵机转角控制可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂对于脉宽调制信号的脉宽变换,常用的一种方法是采用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体积和功耗考虑也不易采用。

5mV以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高具体的设计过程:例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运动为保证软件在定时中断里采集其他信号,并且使发生PWM信号的程序不影响中断程序的运行(如果这些程序所占用时间过长,有可能会发生中断程序还未结束,下次中断又到来的后果),所以需要将采集信号的函数放在长定时中断过程中执行,也就是说每经过两次中断执行一次这些程序,执行的周期还是20ms软件流程如图2所示图2 产生PWM信号的软件流程脉冲计数可以利用51单片机的内部计数器来实现,但是从软件系统的稳定性和程序结构的合适性看,宜使用外部的计数器,还可以提高CPU的工作效率实验后从精度上考虑,对于FUTABA系列的接收机,当采用1MHz的外部晶振时,其控制电压幅值的变化为0.6mV,而且不会出现误差积累,可以满足控制舵机的要求最后考虑数字系统的离散误差,经估算误差的范围在±0.3%内,所以采用单片机和8253、8254这样的计数器芯片的PWM信号产生电路是可靠的图3是硬件连接图图3 PWA信号的计数和输出电路(点击放大)基于8253产生PWM信号的程序主要包括三方面内容:一是定义8253寄存器的地址,二是控制字的写入,三是数据的写入软件流程如图4所示,具体代码如下//定时器T0中断,向8253发送控制字和数据void T0Int() interrupt 1{TH0 = 0xB1;TL0 = 0xE0; //20ms的时钟基准//先写入控制字,再写入计数值SERVO0 = 0x30; //选择计数器0,写入控制字PWM0 = BUF0L; //先写低,后写高PWM0 = BUF0H;SERVO1 = 0x70; //选择计数器1,写入控制字PWM1 = BUF1L;PWM1 = BUF1H;SERVO2 = 0xB0; //选择计数器2,写入控制字PWM2 = BUF2L;PWM2 = BUF2H;}图4 基于8253产生PWA信号的软件流程当系统的主要工作任务就是控制多舵机的工作,并且使用的舵机工作周期均为20ms时,要求硬件产生的多路PWM波的周期也相同使用51单片机的内部定时器产生脉冲计数,一般工作正脉冲宽度小于周期的1/8,这样可以在1个周期内分时启动各路PWM波的上升沿,再利用定时器中断T0确定各路PWM波的输出宽度,定时器中断T1控制20ms的基准时间第1次定时器中断T0按20ms的1/8设置初值,并设置输出I/O口,第1次T0定时中断响应后,将当前输出I/O口对应的引脚输出置高电平,设置该路输出正脉冲宽度,并启动第2次定时器中断,输出I/O口指向下一个输出口第2次定时器定时时间结束后,将当前输出引脚置低电平,设置此中断周期为20ms的1/8减去正脉冲的时间,此路PWM信号在该周期中输出完毕,往复输出在每次循环的第16次(2×8=16)中断实行关定时中断T0的操作,最后就可以实现8路舵机控制信号的输出也可以采用外部计数器进行多路舵机的控制,但是因为常见的8253、8254芯片都只有3个计数器,所以当系统需要产生多路PWM信号时,使用上述方法可以减少电路,降低成本,也可以达到较高的精度调试时注意到由于程序中脉冲宽度的调整是靠调整定时器的初值,中断程序也被分成了8个状态周期,并且需要严格的周期循环,而且运行其他中断程序代码的时间需要严格把握在实际应用中,采用51单片机简单方便地实现了舵机控制需要的PWM信号对机器人舵机控制的测试表明,舵机控制系统工作稳定,PWM占空比(0.5~2.5ms 的正脉冲宽度)和舵机的转角(-90°~90°)线性度较好/***************************************************************************//*杭州电子&计算机工作室*//* *//*步进电机演示程序*//*目标器件:AT89S51 *//*晶振:11.0592MHZ *//*编译环境:Keil 7.50A *//***************************************************************************//*********************************包含头文件********************************/ #include <reg51.h>/*********************************端口定义**********************************/ sbit key = P1^4;/**************************************************************************** 函数功能:延时子程序入口参数:出口参数:****************************************************************************/ void delay(void){int k;for(k=0;k<2000;k++);}/**************************************************************************** 函数功能:主程序入口参数:出口参数:****************************************************************************/ void main(){P0=0x00; //输出全高key=1; //按键置输入状态while(1) //主循环{if(key==1) //无键按下正转{P0=0xFC; //1100delay();P0=0xF6; //0110delay();P0=0xF3; //0011delay();P0=0xF9; //1001}else //有键按下反转{P0=0xFC; //1100delay();P0=0xF9; //1001delay();P0=0xF3; //0011delay();P0=0xF6; //0110delay();}}}利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,#include<reg52.h> //52单片机头文件#include <intrins.h> //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsigned char //宏定义sbit P1_0=P1^0;uchar tt;void main() //主函数{TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0while(1);//等待中断产生}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==20){tt=0;}}//12MHz#include <reg51.h>void InitTimer0(void){TMOD = 0x01;TH0 = 0x0B1;TL0 = 0x0E0;EA = 1;ET0 = 1;TR0 = 1;}void delay(void) //误差0us 延时1ms 此处可以修改高电平周期//修改此处的延时可以更改舵机转的角度,45度具体是多少你可以试试{unsigned char a,b,c;for(c=1;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}void main(void){InitTimer0();P1_2=0;while(1);}void Timer0Interrupt(void) interrupt 1{//20ms中断TH0 = 0x0B1;TL0 = 0x0E0;P1_2=1;delay();P1_2=0;}。

单片机pwm控制舵机

单片机pwm控制舵机

单片机pwm控制舵机第一章:引言(大约200字)随着科技的不断发展,单片机技术在现代工业和自动化领域中的应用越来越广泛。

在这些应用中,控制舵机是非常常见的需求之一。

舵机通过调节输入的脉冲宽度来改变输出角度,因此使用脉冲宽度调制(PWM)信号来控制舵机的运动是一种常见的方法。

本论文将探讨如何使用单片机实现PWM控制舵机的方法和技术。

第二章:PWM控制舵机的原理与设计(大约300字)本章将介绍PWM控制舵机的原理和设计。

首先,将详细介绍PWM的概念和工作原理,以及舵机的工作原理。

然后,将讨论如何使用单片机生成PWM信号,并通过改变脉冲宽度来控制舵机的角度。

接下来,将介绍舵机控制电路的基本组成部分和连接方式。

最后,将给出一个具体的PWM控制舵机的电路设计示例。

第三章:单片机编程实现PWM控制舵机(大约300字)本章将介绍如何使用单片机进行编程,实现PWM控制舵机。

首先,将介绍使用哪种编程语言来编写单片机的程序,例如C 语言或汇编语言。

然后,将详细介绍如何编写程序来生成PWM信号,并通过改变脉冲宽度来控制舵机的角度。

此外,还将讨论如何根据实际需求调整PWM信号的频率和占空比。

最后,将给出一个具体的单片机编程实现PWM控制舵机的示例代码。

第四章:实验结果与讨论(大约200字)本章将介绍使用本论文中所提到的方法和技术实现PWM控制舵机的实验结果和讨论。

首先,将介绍所采用的实验平台和测试设备。

然后,将详细介绍实验过程和实验结果。

对于实验结果的讨论,将分析PWM信号的频率和占空比对舵机控制精度的影响。

最后,将讨论实验中可能遇到的问题和改进的方向。

结论(大约100字)通过本论文的研究,我们可以得出结论:使用单片机实现PWM控制舵机是一种可行且有效的方法。

通过调整PWM信号的脉冲宽度,可以精确控制舵机的角度。

同时,通过单片机编程实现PWM控制舵机也是相对简单的。

通过进一步的研究和实践,可以不断改进这一方法并应用于更广泛的应用领域中。

单片机指令的PWM信号生成和控制

单片机指令的PWM信号生成和控制

单片机指令的PWM信号生成和控制PWM(Pulse Width Modulation)脉宽调制技术被广泛应用于单片机控制系统中。

PWM信号的生成与控制对于电机驱动、灯光调节、温度控制以及音频处理等应用起到了重要作用。

本文将重点探讨单片机指令的PWM信号生成和控制的原理、实现方法以及常见应用。

一、PWM信号生成原理PWM信号是一种以方波信号为基础的调制信号,信号的占空比(Duty Cycle)决定了信号的高电平和低电平时间比例。

单片机通过改变占空比来实现对设备的控制。

常见的PWM生成方式有两种:软件生成PWM和硬件生成PWM。

软件生成PWM是通过编程计算电平切换的时间来实现,适合频率较低的应用。

硬件生成PWM则是利用单片机内部的定时器/计数器模块来产生PWM信号,适合频率较高的应用。

二、软件生成PWM信号软件生成PWM信号的关键在于精确计算出高电平和低电平的时间,并进行相应的IO电平切换。

以下是软件生成PWM信号的基本步骤:1. 初始化计时器:选择合适的定时器,并设置计时器的计数模式、计数时间、时钟源等参数。

2. 设置占空比:根据实际需求,计算出高电平和低电平的时间比例,即占空比。

3. 确定周期:根据应用需求,确定PWM信号的周期,即一个完整的方波信号的时间长度。

4. 计算高电平和低电平时间:根据占空比和周期计算出高电平和低电平的时间。

5. 控制IO电平:根据计算得到的时间,控制IO引脚的高电平和低电平。

6. 循环生成PWM信号:根据设定的周期,循环生成PWM信号,以实现对设备的控制。

三、硬件生成PWM信号硬件生成PWM信号利用单片机内部的定时器/计数器模块来产生精确的PWM信号。

硬件生成PWM的好处在于能够减轻CPU的负担,提高系统的实时性和稳定性。

以下是硬件生成PWM信号的基本步骤:1. 选择合适的定时器:根据需求选择适合的定时器,通常定时器/计数器模块都支持PWM信号的生成。

2. 初始化定时器:设置定时器的计数模式、计数时间、时钟源等参数。

电气自动化技术专业《用单片机产生PWM的方法》

电气自动化技术专业《用单片机产生PWM的方法》
• ?单片机应用技术?
• ?单片机应用技术?
任务引入
知识资讯
任务实施
小结拓展
取LED闪烁的频率为100HZ,即PWM的周期为10ms;
一个周期分成100份,则每份所占用的时间为 100us,100us用定时器产生;
每次定时到进行计数,计数100次为一个周期;
占空比为10,则前10次定时输出高电平,后90次输出 低电平。
任务引入
知识资讯
任务实施
小结拓展
单片机系统主频为12MH 1个时钟周期为=1/12 us 1个机器周期=12个时钟周期=1us
TMOD =001;
设置定时器工作方式 216-100/1=TM6OD4536=0FF9C
放置定时器初值
定时/计数器1 TH0 =定0时F/计F数器0
位 D7 D6 D5 DT4L 0D3=09D2C D1 D0ATE=1C/;TETM01 =M10;TRGA0T=E 1C/T
M1
M0
0 000 0 0 0 1
任务引入
知识资讯
任务实施
小结拓展
1:num=10; 2:num=40; 3:num=60; 4:num=90;
count num
学无止境,我们一直在努力!

单片机控制舵机

单片机控制舵机

单片机控制舵机单片机控制舵机是一种常见的控制方法,它可以让舵机按照程序的要求进行动作。

舵机通常用于各种机械设备中,比如机器人、航模、汽车遥控器等等。

下面我们就来学习一下单片机控制舵机的方法。

首先,让我们来了解一下舵机的结构。

舵机包括电机、减速器、位置反馈装置和控制电路等组成部分。

控制电路是用来控制电机旋转的,而位置反馈装置则可以检测舵机角度的变化。

通过不同的控制信号,控制电路可以让舵机停在不同的位置上,也就是我们常说的舵机位置。

控制信号一般采用PWM波形,其频率为50Hz或100Hz。

频率为50Hz时,舵机能够输出20ms的PWM波,对应的舵机角度为0°(最大逆时针转),90°(中心位置)和180°(最大顺时针转)。

舵机的控制信号一般采用3线控制模式,分别是信号线、电源线和地线。

接下来,让我们来了解一下单片机如何控制舵机。

单片机可以通过生成PWM波形信号来控制舵机的位置。

首先,需要将单片机的IO口配置为PWM输出模式,然后设置相应的频率和占空比来控制舵机位置。

为了让舵机运动更加稳定,需要考虑舵机的惯性和响应时间。

在程序中,通过调整PWM的频率和占空比可以改变舵机的位置,增加或减小PWM的占空比可以让舵机旋转到不同的位置上,从而实现舵机的控制。

下面是一个简单的单片机控制舵机的程序,以STM32单片机为例:#include "stm32f10x.h"#define PWM_FREQ 50#define PWM_MIN 500 // 最小占空比#define PWM_MAX 2500 // 最大占空比void PWM_Configuration(void) // PWM配置函数{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 打开GPIOA外设时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 打开TIM2外设时钟TIM_TimeBaseStructure.TIM_Prescaler = (72000000 / 2) / PWM_FREQ - 1; // 预分频器7200,计数器周期20msTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数TIM_TimeBaseStructure.TIM_Period = 20000 / PWM_FREQ - 1; // PWM周期20msTIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分频器不分频TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ARRPreloadConfig(TIM2, ENABLE);TIM_Cmd(TIM2, ENABLE);}void delay_us(u32 n) // 延时函数{n *= 8; // 精确度为8MHzwhile(n--) asm("nop");}while(1){TIM2->CCR4 = PWM_MIN; // 舵机最小位置delay_us(1000000); // 延时1秒钟TIM2->CCR4 = PWM_MAX; // 舵机最大位置delay_us(1000000); // 延时1秒钟}}在这个程序中,我们定义了一个PWM的频率,最小和最大占空比,并通过GPIO口配置了PA0。

单片机的PWM控制技术

单片机的PWM控制技术

《工业控制计算机》2010年第23卷第3期单片机的PWM 控制技术蓝厚荣(福建省建阳市供电有限公司,福建建阳354200)PWM Control technology In SCM摘要在单片机中实现PWM 控制技术的方法及其原理,分析单片机实现PWM 功能几种方法的优缺点,分别介绍用单片机的PWM 模块实现PWM 功能、用程序模拟实现多路PWM 功能、用定时器资源实现高分辩率PWM 功能和用机外硬件实现PWM 功能的方法,并分析这些的方法的优缺点。

关键词:单片机,PWM 技术,分辩率,频率AbstractTo explore ways to achieve and the principles of PWM control technology in SCM,analysis of severaltechnology toachieve the advantages and disadvantages of PWM function in SCM,and analysis focused on the ways to achieve high-resolution PWM function with timer resources and the ways to achieve PWM function with SCM external hardware.Keywords :SCM,PWM technology,resolution,frequency单片机应用于工业控制等方面时,经常要对电流、电压、温度、位移、转速等模拟量进行调整控制,如恒流、恒压、恒温、恒速等,单片机一般将采集的模拟量数据进行运算和处理,根据设计要求对输出控制进行脉宽调制,达到恒流、恒压、恒温、恒速的目的。

随着大规模集成电路的不断发展,很多单片机都有内置PWM 模块,因此,单片机的PWM 控制技术可以用内置PWM模块实现,也可以用单片机的其它资源由软件模拟来实现,还可以通过控制外置硬件电路来实现,现谈谈单片机的PWM 控制技术实现方法及其原理,并分析各种方法的优缺点,着重介绍用定时器资源实现高分辩率PWM 功能的方法和机外硬件实现PWM 功能的方法。

单片机PWM原理与实现

单片机PWM原理与实现

单片机PWM原理与实现一、原理介绍脉冲宽度调制是一种控制模拟信号的技术,通过改变脉冲的宽度来控制电路的输入信号。

在单片机中,脉冲宽度调制通常是通过周期性地变化I/O口的输出电平来实现的。

脉冲的宽度表示了一个周期内的高电平时间占总时间的比例。

PWM信号的周期由单片机的时钟频率和预设的计数器值决定。

通常,计数器从0开始计数,当计数器的值等于预设值时,就会自动复位并触发一个中断。

在每次中断中,我们可以改变I/O口的输出电平来生成脉冲宽度可变的PWM信号。

在应用中,PWM信号可以用来控制电机的速度、LED灯的亮度和舵机的角度等。

通过改变PWM的脉宽,我们可以控制输出电流、电压或功率的大小,从而实现对电子设备的精确控制。

二、实现方法实现单片机PWM通常需要以下步骤:1.选择合适的定时器/计数器:单片机通常具有多个定时器/计数器,我们需要选择适合PWM生成的定时器/计数器。

选择定时器时,需要考虑定时器的分辨率和可用的时钟源。

2.初始化定时器:在使用定时器前,需要初始化定时器的工作模式和计数器的初值。

例如,我们可以选择定时器工作在比较模式或相位正确模式。

计数器的初值决定了PWM信号的周期。

3.设置PWM的占空比:PWM信号的占空比表示高电平时间与总周期的比例。

一般情况下,我们可以通过改变计数器的预设值来改变PWM的占空比。

4.配置I/O口:选择合适的I/O口作为PWM输出端口,并设置该I/O 口的工作模式为输出模式。

在定时器的中断中,通过改变I/O口的电平来实现PWM信号的输出。

5.启动定时器:在设置好以上参数后,我们需要启动定时器来开始生成PWM信号。

一般情况下,定时器开始计数后会触发中断,在中断中可以改变I/O口的输出电平。

6.调整占空比:如果需要改变PWM信号的占空比,我们可以通过改变计数器的预设值来实现。

通过改变预设值,我们可以改变中断触发周期内的高电平时间。

7.停止定时器:如果不再需要生成PWM信号,我们可以停止定时器来关闭PWM输出。

利用单片机产生PWM信号的软件实现方法

利用单片机产生PWM信号的软件实现方法

《机电技术》2008年第1期计算机技术应用利用单片机产生PWM信号的软件实现方法吴泽民 王俊 王景(河南科技大学 车辆与动力工程学院,河南 洛阳 471003)摘 要:根据直流电机调速的相关知识,及PWM 基本原理和实现方法,介绍一种基于MCS-51单片机用软件产生PWM 信号的方法,采用单个计数器和工作寄存器,以及按键相配合实现PWM信号调节。

对于直流电机速度控制的实现提供了一种有效的途径。

关键词:单片机 PWM信号 直流电机调速中图分类号:TP39 文献标识码:A 文章编号:1672-4801(2008)01-20-021 引言直流电机由于具有速度控制容易,启动、制动性能良好,平滑调速范围宽等特点,在冶金、机械制造、轻工等工业部门中得到广泛应用。

直流电动机的调速有改变电枢电压U调速、改变电枢回路串接附加电阻R调速及改变主磁通Φ调速等三种方法。

改变电枢回路串接附加电阻调速方法,调速电阻将消耗大量的电能,使电动机的效率下降,而且由于调速电阻不能连续变化,使得调速不平滑,难以实现无级调速。

改变主磁通Φ调速方法,低速时受磁极饱和的限制,高速时受换向器结构强度及其换向火花的限制,并且励磁线圈电感较大,动态响应较差。

所以这两种调速方法用得较少。

目前,大多数应用场合都使用改变电枢电压U调速,随着电力电子技术的进步,发展了许多新的电枢电压控制方法,其中PWM(脉宽调制)是常用的一种调速方法。

因此,本文提出利用单片机产生PWM信号的软件实现方法。

2 PWM 基本原理PWM基本原理是通过控制固定电压的直流电源开关频率,从而改变电机电枢的电压,进而达到控制要求的一种调速方法。

在脉宽调速系统中,按照一定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”的时间,通过改变电枢上平均电压的大小,从而控制电动机的转速。

PWM调制的原理如图1示。

图1 PWM调制原理与输入输出波形图通过PWM来控制电机电压时,电动机的电枢绕组两端的平均电压oU为:1121(0)/()/o s s sU t U t t t U T Uα=++==式中α为占空比,α=t1/T。

51单片机控制输出pwm信号控制舵机

51单片机控制输出pwm信号控制舵机
TH0=-(c/256); TL0=-(c%256); /*重新定义计数初值*/
if(c>=470&&c=2300)c=a;
else c=18432-a; /*判断脉宽是否在正常范围之内*/
}
/*定时器2,控制舵机2,输出引脚为P13,可自定义*/
void timer1(void) interrupt 3 using 1
sbit p15=P1^5;
sbit p17=P1^7;
void delay(void);
/*以下两个函数为定时器中断函数*/
/*定时器1,控制舵机1,输出引脚为P12,可自定义*/
void timer0(void) interrupt 1 using 1
{p12=!p12; /*输出取反*/
c=18432-c; /*20000代表20 ms,为一个周期的时间*/
for(uidata=1;uidata=500;uidata++);
}
TH1=-(b/256); TL1=-(b%256); /*设定定时器初始计数值*/
EA=1;
ET0=1; TR0=1;EX0=1;EX1=1;
ET1=1; TR1=1;
PX0=0;PX1=0;PT1=1;PT0=1;/*设定中断优先级*/
for(;;)
{
keyscan();
}
}
/*在这个for循环中,可以输
出时间,从而控制舵机*/
void keyscan(void)
{
if(p16==0)
{
delay();
if(p16==0)
{
if(500=a&&a=2100)a+=50;

单片机PWM控制.

单片机PWM控制.

Tmin T
T—PWM脉冲周期,通过统计定时器溢出参数获得; TON—— PWM开通时间,通过统计定时器溢出参数获得;
TOFF——PWM关断时间,通过统计定时器溢出参数获得;
单片机的PWM 软件实现的重要硬件支撑是该单片机 内部的定时器。
单片机实现PWM 的基本过程:首先通过设置定时器 初值选定最小脉冲宽度Tmin,然后根据控制信号的变 化范围,可以求出t时刻通过控制信号V(t)的对应脉冲 的正、负脉冲持续时间。这两个时间长度在单片机里 是通过统计给定时器赋相应的初值后定时溢出次数而 得,再利用这个中断所响应的服务程序去控制单片机 某一引脚相应的高、低电平极性的持续时间。
如果上述过程连续进行,就可在这个引脚获得宽度随 控制信号V(t)大小变化的PWM方波信号。
3、PWM程序流程图
开始
结初值
低电平持续时间计数
开启定时器
高电平持续时间计数
定时器溢出? NO
Y
中断
总结:
利用单片机的定时/计数器可以灵活地进行定时 输出控制,容易获得各种不同参数的PWM波。
作业:
单片机如何设置的定时/计数器参数获得PWM波 形?
本次课程到此结束,谢谢!
单片机PWM控制
课程:《激光设备控制技术》 院系:电子工程系 主讲人:张才华
教学目标:
了解单片机通过定时/计数器产生 PWM波形的方法。
1、产生PWM方法
产生PWM 信号可以由硬件方法和软件方法实现。
(1)硬件模拟方法:是把调制信号和载波(一般是三角 波)同时接入运算放大器的两个输入端作比较而得 到。
(2)软件方法:基于单片机的软件实现方法,主要 是利用其内部提供的定时器,通过改变定时器的定 时初值获得不同的脉冲持续时间,如果把系统的控 制信号和定时器的定时初值线性对应起来,就可获 得控制信号对脉宽调制的PWM 信号。

用单片机产生7路舵机控制PWM波的方法

用单片机产生7路舵机控制PWM波的方法

用单片机产生7路舵机控制PWM波的方法
刘歌群;卢京潮;闫建国;薛尧舜
【期刊名称】《机械与电子》
【年(卷),期】2004(000)002
【摘要】提出了一种利用80C196KC单片机产生7路PWM波来控制FUTABA 舵机的方法.利用分时机制产生每一路PWM波的上升沿和下降沿,7路波形从单片机的P1口同时输出,分辨率达到2μs.本方法具有成本低、分辨率高、输出路数多等优点,并在某机器人控制器中得到了成功应用.
【总页数】3页(P76-78)
【作者】刘歌群;卢京潮;闫建国;薛尧舜
【作者单位】西北工业大学,陕西,西安,710072;西北工业大学,陕西,西安,710072;西北工业大学,陕西,西安,710072;西北工业大学,陕西,西安,710072
【正文语种】中文
【中图分类】TP211.4;TN787.2
【相关文献】
1.基于16位单片机MCS12DG128B PWM的舵机控制系统 [J], 王朝盛;尤一鸣
2.用单片机8XC196KD产生SMS-PWM波的技术 [J], 关美华
3.单片机控制的多路舵机用PWM波产生方法 [J], 付丽;刘卫国;伊强
4.利用单片机PWM信号进行舵机控制 [J], 时玮
5.基于增强型51单片机的工频与中频SPWM波产生 [J], 郭鹏伟;孟青;王超;李继伟;刘万荣
因版权原因,仅展示原文概要,查看原文内容请购买。

几种单片机pwm控制的方法

几种单片机pwm控制的方法

几种PWM控制方法采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同.PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形.按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率.PWM控制的基本原理很早就已经提出,但是受电力电子器件发展水平的制约,在上世纪80年代以前一直未能实现.直到进入上世纪80年代,随着全控型电力电子器件的出现和迅速发展,PWM控制技术才真正得到应用.随着电力电子技术,微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论,非线性系统控制思想的应用,PWM控制技术获得了空前的发展.到目前为止,已出现了多种PWM控制技术,根据PWM控制技术的特点,到目前为止主要有以下8类方法.1 .相电压控制PWM1.1 等脉宽PWM法[1]VVVF(Variable Voltage Variable Frequency)装置在早期是采用PAM(Pul se Amplitude Modulation)控制技术来实现的,其逆变器部分只能输出频率可调的方波电压而不能调压.等脉宽PWM法正是为了克服PAM法的这个缺点发展而来的,是PWM法中最为简单的一种.它是把每一脉冲的宽度均相等的脉冲列作为PWM 波,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化.相对于PAM法,该方法的优点是简化了电路结构,提高了输入端的功率因数,但同时也存在输出电压中除基波外,还包含较大的谐波分量.1.2 随机PWM在上世纪70年代开始至上世纪80年代初,由于当时大功率晶体管主要为双极性达林顿三极管,载波频率一般不超过5kHz,电机绕组的电磁噪音及谐波造成的振动引起了人们的关注.为求得改善,随机PWM方法应运而生.其原理是随机改变开关频率使电机电磁噪音近似为限带白噪声(在线性频率坐标系中,各频率能量分布是均匀的),尽管噪音的总分贝数未变,但以固定开关频率为特征的有色噪音强度大大削弱.正因为如此,即使在IGBT已被广泛应用的今天,对于载波频率必须限制在较低频率的场合,随机PWM仍然有其特殊的价值;另一方面则说明了消除机械和电磁噪音的最佳方法不是盲目地提高工作频率,随机PWM技术正是提供了一个分析,解决这种问题的全新思路.1.3 SPWM法SPWM(Sinusoidal PWM)法是一种比较成熟的,目前使用较广泛的PWM法.前面提到的采样控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同.SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和幅值.该方法的实现有以下几种方案.1.3.1 等面积法该方案实际上就是SPWM法原理的直接阐释,用同样数量的等幅而不等宽的矩形脉冲序列代替正弦波,然后计算各脉冲的宽度和间隔,并把这些数据存于微机中,通过查表的方式生成PWM信号控制开关器件的通断,以达到预期的目的.由于此方法是以SPWM控制的基本原理为出发点,可以准确地计算出各开关器件的通断时刻,其所得的的波形很接近正弦波,但其存在计算繁琐,数据占用内存大,不能实时控制的缺点.1.3.2 硬件调制法硬件调制法是为解决等面积法计算繁琐的缺点而提出的,其原理就是把所希望的波形作为调制信号,把接受调制的信号作为载波,通过对载波的调制得到所期望的PWM波形.通常采用等腰三角波作为载波,当调制信号波为正弦波时,所得到的就是SPWM波形.其实现方法简单,可以用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对开关器件的通断进行控制,就可以生成SPWM波.但是,这种模拟电路结构复杂,难以实现精确的控制.1.3.3 软件生成法由于微机技术的发展使得用软件生成SPWM波形变得比较容易,因此,软件生成法也就应运而生.软件生成法其实就是用软件来实现调制的方法,其有两种基本算法,即自然采样法和规则采样法.1.3.3.1 自然采样法[2]以正弦波为调制波,等腰三角波为载波进行比较,在两个波形的自然交点时刻控制开关器件的通断,这就是自然采样法.其优点是所得SPWM波形最接近正弦波,但由于三角波与正弦波交点有任意性,脉冲中心在一个周期内不等距,从而脉宽表达式是一个超越方程,计算繁琐,难以实时控制.1.3.3.2 规则采样法[3]规则采样法是一种应用较广的工程实用方法,一般采用三角波作为载波.其原理就是用三角波对正弦波进行采样得到阶梯波,再以阶梯波与三角波的交点时刻控制开关器件的通断,从而实现SPWM法.当三角波只在其顶点(或底点)位置对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(即采样周期)内的位置是对称的,这种方法称为对称规则采样.当三角波既在其顶点又在底点时刻对正弦波进行采样时,由阶梯波与三角波的交点所确定的脉宽,在一个载波周期(此时为采样周期的两倍)内的位置一般并不对称,这种方法称为非对称规则采样.规则采样法是对自然采样法的改进,其主要优点就是是计算简单,便于在线实时运算,其中非对称规则采样法因阶数多而更接近正弦.其缺点是直流电压利用率较低,线性控制范围较小.以上两种方法均只适用于同步调制方式中.1.3.4 低次谐波消去法[2]低次谐波消去法是以消去PWM波形中某些主要的低次谐波为目的的方法.其原理是对输出电压波形按傅氏级数展开,表示为u(ωt)=ansinnωt,首先确定基波分量a1的值,再令两个不同的an=0,就可以建立三个方程,联立求解得a1,a2及a 3,这样就可以消去两个频率的谐波.该方法虽然可以很好地消除所指定的低次谐波,但是,剩余未消去的较低次谐波的幅值可能会相当大,而且同样存在计算复杂的缺点.该方法同样只适用于同步调制方式中.1.4 梯形波与三角波比较法[2]前面所介绍的各种方法主要是以输出波形尽量接近正弦波为目的,从而忽视了直流电压的利用率,如SPWM法,其直流电压利用率仅为86.6%.因此,为了提高直流电压利用率,提出了一种新的方法--梯形波与三角波比较法.该方法是采用梯形波作为调制信号,三角波为载波,且使两波幅值相等,以两波的交点时刻控制开关器件的通断实现PWM控制.由于当梯形波幅值和三角波幅值相等时,其所含的基波分量幅值已超过了三角波幅值,从而可以有效地提高直流电压利用率.但由于梯形波本身含有低次谐波,所以输出波形中含有5次,7次等低次谐波.2 .线电压控制PWM前面所介绍的各种PWM控制方法用于三相逆变电路时,都是对三相输出相电压分别进行控制的,使其输出接近正弦波,但是,对于像三相异步电动机这样的三相无中线对称负载,逆变器输出不必追求相电压接近正弦,而可着眼于使线电压趋于正弦.因此,提出了线电压控制PWM,主要有以下两种方法.2.1 马鞍形波与三角波比较法马鞍形波与三角波比较法也就是谐波注入PWM方式(HIPWM),其原理是在正弦波中加入一定比例的三次谐波,调制信号便呈现出马鞍形,而且幅值明显降低,于是在调制信号的幅值不超过载波幅值的情况下,可以使基波幅值超过三角波幅值,提高了直流电压利用率.在三相无中线系统中,由于三次谐波电流无通路,所以三个线电压和线电流中均不含三次谐波[4].除了可以注入三次谐波以外,还可以注入其他3倍频于正弦波信号的其他波形,这些信号都不会影响线电压.这是因为,经过PWM调制后逆变电路输出的相电压也必然包含相应的3倍频于正弦波信号的谐波,但在合成线电压时,各相电压中的这些谐波将互相抵消,从而使线电压仍为正弦波.2.2 单元脉宽调制法[5]因为,三相对称线电压有Uuv+Uvw+Uwu=0的关系,所以,某一线电压任何时刻都等于另外两个线电压负值之和.现在把一个周期等分为6个区间,每区间60°,对于某一线电压例如Uuv,半个周期两边60°区间用Uuv本身表示,中间60°区间用-(Uvw+Uwu)表示,当将Uvw和Uwu作同样处理时,就可以得到三相线电压波形只有半周内两边60°区间的两种波形形状,并且有正有负.把这样的电压波形作为脉宽调制的参考信号,载波仍用三角波,并把各区间的曲线用直线近似(实践表明,这样做引起的误差不大,完全可行),就可以得到线电压的脉冲波形,该波形是完全对称,且规律性很强,负半周是正半周相应脉冲列的反相,因此,只要半个周期两边60°区间的脉冲列一经确定,线电压的调制脉冲波形就唯一地确定了.这个脉冲并不是开关器件的驱动脉冲信号,但由于已知三相线电压的脉冲工作模式,就可以确定开关器件的驱动脉冲信号了.该方法不仅能抑制较多的低次谐波,还可减小开关损耗和加宽线性控制区,同时还能带来用微机控制的方便,但该方法只适用于异步电动机,应用范围较小.3 .电流控制PWM电流控制PWM的基本思想是把希望输出的电流波形作为指令信号,把实际的电流波形作为反馈信号,通过两者瞬时值的比较来决定各开关器件的通断,使实际输出随指令信号的改变而改变.其实现方案主要有以下3种.3.1 滞环比较法[4]这是一种带反馈的PWM控制方式,即每相电流反馈回来与电流给定值经滞环比较器,得出相应桥臂开关器件的开关状态,使得实际电流跟踪给定电流的变化.该方法的优点是电路简单,动态性能好,输出电压不含特定频率的谐波分量.其缺点是开关频率不固定造成较为严重的噪音,和其他方法相比,在同一开关频率下输出电流中所含的谐波较多.3.2 三角波比较法[2]该方法与SPWM法中的三角波比较方式不同,这里是把指令电流与实际输出电流进行比较,求出偏差电流,通过放大器放大后再和三角波进行比较,产生PWM 波.此时开关频率一定,因而克服了滞环比较法频率不固定的缺点.但是,这种方式电流响应不如滞环比较法快.3.3 预测电流控制法[6]预测电流控制是在每个调节周期开始时,根据实际电流误差,负载参数及其它负载变量,来预测电流误差矢量趋势,因此,下一个调节周期由PWM产生的电压矢量必将减小所预测的误差.该方法的优点是,若给调节器除误差外更多的信息,则可获得比较快速,准确的响应.目前,这类调节器的局限性是响应速度及过程模型系数参数的准确性.4 .空间电压矢量控制PWM [7]空间电压矢量控制PWM(SVPWM)也叫磁通正弦PWM法.它以三相波形整体生成效果为前提,以逼近电机气隙的理想圆形旋转磁场轨迹为目的,用逆变器不同的开关模式所产生的实际磁通去逼近基准圆磁通,由它们的比较结果决定逆变器的开关,形成PWM波形.此法从电动机的角度出发,把逆变器和电机看作一个整体,以内切多边形逼近圆的方式进行控制,使电机获得幅值恒定的圆形磁场(正弦磁通).具体方法又分为磁通开环式和磁通闭环式.磁通开环法用两个非零矢量和一个零矢量合成一个等效的电压矢量,若采样时间足够小,可合成任意电压矢量.此法输出电压比正弦波调制时提高15%,谐波电流有效值之和接近最小.磁通闭环式引.入磁通反馈,控制磁通的大小和变化的速度.在比较估算磁通和给定磁通后,根据误差决定产生下一个电压矢量,形成PWM波形.这种方法克服了磁通开环法的不足,解决了电机低速时,定子电阻影响大的问题,减小了电机的脉动和噪音.但由于未引入转矩的调节,系统性能没有得到根本性的改善.5 .矢量控制PWM[8]矢量控制也称磁场定向控制,其原理是将异步电动机在三相坐标系下的定子电流Ia,Ib及Ic,通过三相/二相变换,等效成两相静止坐标系下的交流电流Ia1及Ib1,再通过按转子磁场定向旋转变换,等效成同步旋转坐标系下的直流电流I m1及It1(Im1相当于直流电动机的励磁电流;It1相当于与转矩成正比的电枢电流),然后模仿对直流电动机的控制方法,实现对交流电动机的控制.其实质是将交流电动机等效为直流电动机,分别对速度,磁场两个分量进行独立控制.通过控制转子磁链,然后分解定子电流而获得转矩和磁场两个分量,经坐标变换,实现正交或解耦控制.但是,由于转子磁链难以准确观测,以及矢量变换的复杂性,使得实际控制效果往往难以达到理论分析的效果,这是矢量控制技术在实践上的不足.此外.它必须直接或间接地得到转子磁链在空间上的位置才能实现定子电流解耦控制,在这种矢量控制系统中需要配置转子位置或速度传感器,这显然给许多应用场合带来不便.6 .直接转矩控制PWM[8]1985年德国鲁尔大学Depenbrock教授首先提出直接转矩控制理论(Direct Torque Control简称DTC).直接转矩控制与矢量控制不同,它不是通过控制电流,磁链等量来间接控制转矩,而是把转矩直接作为被控量来控制,它也不需要解耦电机模型,而是在静止的坐标系中计算电机磁通和转矩的实际值,然后,经磁链和转矩的Band-Band控制产生PWM信号对逆变器的开关状态进行最佳控制,从而在很大程度上解决了上述矢量控制的不足,能方便地实现无速度传感器化,有很快的转矩响应速度和很高的速度及转矩控制精度,并以新颖的控制思想,简洁明了的系统结构,优良的动静态性能得到了迅速发展.但直接转矩控制也存在缺点,如逆变器开关频率的提高有限制.7. 非线性控制PWM单周控制法[7]又称积分复位控制(Integration Reset Control,简称IRC),是一种新型非线性控制技术,其基本思想是控制开关占空比,在每个周期使开关变量的平均值与控制参考电压相等或成一定比例.该技术同时具有调制和控制的双重性,通过复位开关,积分器,触发电路,比较器达到跟踪指令信号的目的.单周控制器由控制器,比较器,积分器及时钟组成,其中控制器可以是RS触发器,其控制原理如图1所示.图中K可以是任何物理开关,也可是其它可转化为开关变量形式的抽象信号.单周控制在控制电路中不需要误差综合,它能在一个周期内自动消除稳态,瞬态误差,使前一周期的误差不会带到下一周期.虽然硬件电路较复杂,但其克服了传统的PWM控制方法的不足,适用于各种脉宽调制软开关逆变器,具有反应快,开关频率恒定,鲁棒性强等优点,此外,单周控制还能优化系统响应,减小畸变和抑制电源干扰,是一种很有前途的控制方法.8 .谐振软开关PWM传统的PWM逆变电路中,电力电子开关器件硬开关的工作方式,大的开关电压电流应力以及高的du/dt和di/dt限制了开关器件工作频率的提高,而高频化是电力电子主要发展趋势之一,它能使变换器体积减小,重量减轻,成本下降,性能提高,特别当开关频率在18kHz以上时,噪声将已超过人类听觉范围,使无噪声传动系统成为可能.谐振软开关PWM的基本思想是在常规PWM变换器拓扑的基础上,附加一个谐振网络,谐振网络一般由谐振电感,谐振电容和功率开关组成.开关转换时,谐振网络工作使电力电子器件在开关点上实现软开关过程,谐振过程极短,基本不影响PWM技术的实现.从而既保持了PWM技术的特点,又实现了软开关技术.但由于谐振网络在电路中的存在必然会产生谐振损耗,并使电路受固有问题的影响,从而限制了该方法的应用.总结PWM控制技术以其控制简单,灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点.由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM控制技术发展的主要方向之一.相关应用领域:PWM控制结束主要应用在电力电子技术行业,具体讲,包括风力发电、电机调速、直流供电等领域,由于其四象限变流的特点,可以反馈再生制动的能量,对于目前国家提出的节能减排具有积极意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PLC 控制系统抗电磁干扰的重要措施之一O PLC 控制系统安全接地设计及其工程实践一般应注意以下一些问题=a .采用一点接地O 一般情况下接地方式与频率有关9当频率低于1M~Z 时可用一点接地9高于10M~Z 时采用多点接地O PLC 控制系统因信号电缆分布电容和输入装置滤波等的影响9装置之间信号交换频率一般都低于1M~Z 9所以PLC 控制系统采用一点接地O 集中布置的PLC 系统适于并联一点接地方式9各装置的柜体中心接地点以单独的接地线引向接地极O 如果装置间距较大9应采用串联一点接地方式9用1根大截面铜母线(PEB >连接各装置柜体中心接地点9然后将接地母线直接连接接地极Ob .接地线采用大于22mm 2的铜导线9接地母线(PEB >使用截面大于60mm 2的铜排O 在接地末端测量接地电阻应小于2O 9接地极最好埋在距建筑物10~15m 远处9而且PLC 系统接地点必须与强电设备接地点相距10m 以上Oc .信号源和交源电不允许共同使用1根地线9在接线铜排上才能把各个接地点联接在一起;屏蔽地\保护地各自独立地接到接地铜排上9不应当将其和电源地\信号地在其它任意地方扭在一起O 3结束语PLC 控制系统中的干扰是一个十分复杂的问题9在抗干扰设计中应综合考虑各方面的因素9合理有效地抑制抗干扰O 另外9还需要说明的是9由于电磁干扰的复杂性9要根本消除干扰影响是不可能的9因此9在PLC 控制系统的软件设计和组态时9还应在软件方面进行抗干扰处理O 参考文献=1]皮壮行9等.可编程序控制器的系统设计与应用实例 M ].北京=机械工业出版社92000.2]袁任光.可编程序控制器选用手册 M ].北京=机械工业出版社92002.3]郭宗仁9等.可编程序控制器应用系统设计及通信网络技术 M ].北京=人民邮电出版社92000.4]陈宇9等.可编程序控制器基础及编程技巧 M ].广州=华南理工出版社92002.5]王庆斌9等.电磁干扰及电磁兼容技术 M ].北京=机械工业出版社91999.作者介绍=徐滤非(1964->9男9湖北黄石人9黄石高等专科学校自动化系讲师9从事工业自动化的教学及科研工作O用单片机产生7路舵机控制P WM 波的方法刘歌群9卢京潮9闫建国9薛尧舜9(西北工业大学9陕西西安710072)M et hod t o G enerat e 7Pul seW i dt h M odul ati on W aves W it h S i n g l echi p M i cr o p r ocessor t oContr ol Ser vosLI U G e<un 9LU ji n g chao 9YAN jiang uo 9XUE Yao shun (Nort h Wester n Pol y technic Uni versit y 9X i an 7100729Chi na )摘要C提出了一种利用80C196KC 单片机产生7路P WM 波来控制FUTABA 舵机的方法O 利用分时机制产生每一路P WM 波的上升沿和下降沿97路波形从单片机的P1口同时输出9分辨率达到2卜s O 本方法具有成本低\分辨率高\输出路数多等优点9并在某机器人控制器中得到了成功应用O收稿日期=20030529关键词=单片机;P WM 波;软件定时器;运动控制器中图分类号=TP211.4;TN787.2文献标识码=B 文章编号=10012257(2004>02007603Abstract =A m et hod t o g enerat e 7p ul seW i dt hmodul ati on Waves W it h si n g l e chi p m i cr o p r ocessor 80C196KC f or t he contr olli n g of Fut aba ser vos i s p r o p osed .Each P WM Wave i s p r oduced b y m echa-ni s m of ti m eshari n g.A ll7Waves9Whose resol uti on i s2us9are out p utt ed f r o m Port1of CP U si mult a-neousl y.W it h advant a g es of l o W cost9hi g h resol u-ti on and more out p ut nu mber9t he m et hod has been successf ull y a pp li ed i n an r obot co m p ut er contr ol s y st e m.Ke y words C si n g l e chi p m i cr o p r ocessor9p ul se W i dt h modul ati on Wave9sof t Ware ti m er9move-m ent contr oll er0引言在机器人无人驾驶汽车和无人驾驶飞机等运动控制器的设计中9常会遇到多路P WM波的产生问题O机器人的头肩肘腕指等关节9无人飞机的舵面1I9无人驾驶汽车的方向盘和油门等9都需要电机驱动9所以在这一类的控制器中需要多路的P WM信号来完成控制任务O在80C196单片机作为主芯片的控制器中9要产生多路P WM信号存在以下问题Ca.单片机的P WM波发生器是固定周期的9难以完成各种周期的P WM输出要求Ob.专门的P WM波发生器芯片波形周期受限定时精度不高增加系统的体积成本Oc.用单片机的高速输出~SO产生P WM波2I9周期和分辨率可达到要求9但最多只能输出4路O 因此需要一种低成本高分辨率能够产生多路P WM波的方法O FUTABA舵机周期为14590卜s9工作正脉冲宽度为1200~1800卜s9有多种型号9常用于各种运动控制器3I O由于其工作正脉冲宽度不大于周期的1/89所以为利用软件定时器产生8路P WM波提供了可能性O由于中断响应和执行中断服务程序会占用一定的时间9为保证有一定的富余时间9本方法可以产生稳定的7路FUTABA舵机控制用P WM波O1实现7路P WM波输出的机理由于各路P WM波的周期相同9工作正脉冲宽度小于周期的1/89可以在1个周期的时间里分时启动各路P WM波的上升沿9再利用1个软件定时器确定该路P WM波的输出宽度O第1个软件定时器按周期的1/7时间定时9并设置输出通道号9输出号从0开始O第1个软件定时器定时中断响应后9将当前输出通道号对应的引脚输出置高电平9设置该路输出正脉冲宽度9并启动第2个软件定时器9输出通道号指向下一路O第2个软件定时器定时时间到后9将当前输出引脚置低电平9此路P WM在该周期中输出结束9系统等待第1个软件定时器下一个1/7周期的中断到来9再利用第2个软件定时器输出下一路P WM波O7路全部输出完毕之后9输出号设为09重复新一轮输出O 7路P WM波的时间分配如图1所示O总周期为14590卜s91/7周期为2084卜sO图17路P WM波的时间分配图27路P WM波输出的软件设计80C196KC单片机有4个软件定时器4I9选用软件定时器0进行1/7周期定时9选用软件定时器3定时每一路的高电平宽度O定义curr P WMPort 为当前输出通道号9初始值为09对应P1.0口O定义数组p Wm out7I为各路输出脉冲宽度值9数组值初始化为中位值1520卜s O程序一开始对~SO 进行初始化9选择定时器1为时间基准9使软件定时器中断9按1/7周期时间启动软件定时器0O软件定时器0的中断响应子程序把当前输出通道号对应的P1口引脚置高电平9按p Wm out curr P WM-Port I对应的时间装载并启动软件定时器39并按1/ 7周期时间再次启动软件定时器0O软件定时器3的中断响应子程序把当前输出通道号对应的P1口引脚置低电平O程序原理性伪代码C#defi ne Z W Z1520//中位值1520卜sst ati c I NT8U curr P WMPort9//输出通道号I NT16U p Wm out7I=Z W Z9Z W Z9Z W Z9 Z W Z9Z W Z9Z W Z9Z W Z}9//各路输出脉冲宽度值voi d i nit hsi o(voi d>//初始化~SOcurr P WMPort=09hso co mm and=0x189hso ti m e=ti m er1+0x61b9//2084卜s91/7个时间周期voi d Sof t T i m er0软件定时器0中断响应子程序Whil e i os0&0x80as m dihso co mm and=0x18hso ti m e=ti m er1+2084再次启动软件定时器0Whil e i os0&0x80hso co mm and=0x1bhso ti m e=ti m er1+p Wm out curr P WM-Port启动软件定时器3set bit i o p ort1curr P WMPort上升沿置高电平as m eicurr P WMPort++if curr P WMPort==7curr P WMPort=0指向下一通道voi d Sof t T i m er3软件定时器3中断响应子程序as m diif curr P WMPort==0clr bit i o p ort16el seclr bit i o p ort1curr P WMPort-1下降沿置低电平as m ei80C196KC单片机选用12M~Z晶振1个状态周期为167ns5作为~SO时间基准的定时器1分辨率为8个状态周期故软件定时器的分辨率为8 >167ns=1.336卜s小于2卜s经测试软件定时器0的中断响应子程序执行时间为60卜s左右在~SO时间装载的时候把相应的软件运行时间减掉最后得出的真实定时时间就符合舵机对控制P WM信号的要求为了防止更高优先中断影响准确的定时时间在中断响应子程序中实行了关中断3输出结果利用逻辑分析仪测得的单片机P1口输出波形如图2所示图2P1口输出波形图由图可以看出软件定时比较准确由于中断响应时间等不确定因素会有3卜s的定时误差从使用的角度来说已经满足了舵机控制的要求4结束语通过分时输出高电平利用2个软件定时器在单片机上产生了7路P WM波成功地实现了对某机器人7个FUTABA舵机颈1路肩2路肘2路指2路的控制输出的P WM波定时精度高占用单片机资源少没有增加额外的硬件输出路数多成本低可以应用于需要控制多个FUTABA舵机的场合对于如直流脉宽调制调速6等其他需要产生P WM波的系统设计也有一定的借鉴作用参考文献1刘歌群.小型无人机飞行控制器的硬件设计J.计算机测量与控制200322144-146.2孙涵芳.I NTEL16位单片机M.北京北京航空航天大学出版社1995.3Futaba Cor p orati on EB OL.htt p WWW.f utaba-rc.co m ser vos f ut m0211.ht m l20030320.4程军.I NTEL80C196单片机应用实践与C语言开发M.北京北京航空航天大学出版社2000.5何立民.单片机应用系统设计M.北京北京航空航天大学出版社1990.6吕平宝谢剑英.基于80C196KC的直流电机P WM调速控制器的设计与应用J.测控技术200221830-32.作者简介刘歌群1974-男陕西西安人西北工业大学自动化学院博士研究生研究方向为计算机控制与智能控制飞行控制过程控制系统的应用与研究薛尧舜1979-男回族江苏扬州人西北工业大学自动化学院硕士研究方向为计算机控制与智能控制用单片机产生7路舵机控制PWM波的方法作者:刘歌群, 卢京潮, 闫建国, 薛尧舜作者单位:西北工业大学,陕西,西安,710072刊名:机械与电子英文刊名:MACHINERY & ELECTRONICS年,卷(期):2004(2)被引用次数:25次1.刘歌群小型无人机飞行控制器的硬件设计[期刊论文]-计算机测量与控制 2003(02)2.孙涵芳Intel 16位单片机 19953.Futaba Corporation 20034.程军Intel80C196单片机应用实践与C语言开发 20005.何立民单片机应用系统设计 19906.吕平宝;谢剑英基于80C196KC的直流电机PWM调速控制器的设计与应用[期刊论文]-测控技术 2002(08)1.方庆山.林春方.FANG Qing-shan.LIN Chun-fang一种基于AT89C2051的多路舵机控制方案设计[期刊论文]-微特电机2009,37(7)2.梁锋.王志良.解仑.徐文学.LIANG FENG.WANG ZHILIANG.XIE LUN.XU WENXUE多舵机控制在类人机器人上的应用[期刊论文]-微计算机信息2008,24(2)3.冯晓伟.王雷阳.李正生.FENG Xiao-wei.WANG Lei-yang.LI Zheng-sheng多路舵机控制PWM发生器的设计与Proteus仿真[期刊论文]-现代电子技术2011,34(11)4.时玮利用单片机PWM信号进行舵机控制[期刊论文]-今日电子2005(10)5.付丽.刘卫国.伊强.FU Li.LIU Wei-guo.YI Qiang单片机控制的多路舵机用PWM波产生方法[期刊论文]-微特电机2006,34(2)6.张龙.孟偲.刘颖.王田苗.ZHANG Long.MENG Cai.LIU Ying.WANG Tian-miao仿壁虎机器人多路舵机控制器设计[期刊论文]-微特电机2010,38(9)1.李素娟.蒋维安基于51单片机多通道直流电机调速设计[期刊论文]-机电工程技术 2010(6)2.李一波.高永霞系留飞艇地面监测系统艇载控制模块设计[期刊论文]-电子技术应用 2010(11)3.秦萍舵机在机器人技术中的应用及编程方法[期刊论文]-价值工程 2013(32)4.宫俊.俞志伟.戴振东基于LPC2103的四足机器人控制系统设计[期刊论文]-中国科技博览 2011(12)5.曲娜.周鹏.程凤芹.于秋红基于步进电机控制的平面切割模型的研究[期刊论文]-赤峰学院学报(自然科学版)2013(17)6.曹杰.戴敏小型多自由度机器人舵机群控制系统设计[期刊论文]-微计算机信息 2011(7)7.曹杰.戴敏小型多自由度机器人舵机群控制系统设计[期刊论文]-微计算机信息 2011(3)8.黄雪梅.徐谋锋.张新义.魏修亭基于DSP产生24路PWM波形的研究[期刊论文]-计算机测量与控制 2010(10)10.高同跃.龚振邦.罗均.冯伟一种超小型无人机舵机控制系统的设计[期刊论文]-计算机测量与控制 2007(8)11.时玮利用单片机PWM信号进行舵机控制[期刊论文]-今日电子 2005(10)12.蒋辰飞.刘子龙.胡少凯.韩光鲜基于AVR单片机的多舵机控制精度的研究[期刊论文]-信息技术 2014(3)13.霍丽霞.罗卫兵.迟晓鹏多通道舵机控制器设计[期刊论文]-现代电子技术 2010(21)14.祁乐.闫继宏.朱延河.赵杰小型双足步行机器人的研制[期刊论文]-机械工程师 2006(11)15.付丽.刘卫国.伊强单片机控制的多路舵机用PWM波产生方法[期刊论文]-微特电机 2006(2)16.赵杰.郭亮.臧希喆.姜健.蔡鹤皋应用于六足机器人平台的舵机控制器设计[期刊论文]-机械与电子 2005(9)17.黄雪梅.范强.魏修亭舵机控制用PWM信号的研究与实现[期刊论文]-微计算机信息 2010(5)18.胡相利.宋爱国跳跑式微型弹跳机器人的设计与实现[期刊论文]-测控技术 2009(8)19.柴稳.徐娅萍.黄伟峰.支立纯基于单片机的多路舵机平稳驱动方法的设计和实现[期刊论文]-微特电机2008(12)20.伍文平.王小兵基于多单片机的模型直升机机载测控系统设计[期刊论文]-电子测量技术 2009(5)21.彭永强.李祖枢.薛方正基于舵机云台的人型机器人单目视觉测距[期刊论文]-计算机测量与控制 2009(11)22.张红涛.赵书尚.韩建海基于CMOS传感器的智能小车设计[期刊论文]-河南科技大学学报(自然科学版) 2009(1)23.曾漫.熊小丽.丁文革.范亚龙一种典型数字无刷电动舵机的设计[期刊论文]-中北大学学报(自然科学版)2011(6)24.郭亮六足仿生机器人的研制[学位论文]硕士 200525.韩松3-URU型并联机器人的研制及其运动学特性分析[学位论文]硕士 200526.陈青松基于DSP & CPLD的超小型无人直升机飞控系统研究与设计[学位论文]硕士 2006本文链接:/Periodical_jxydz200402025.aspx。

相关文档
最新文档