直流电机驱动PWM频率(转)
/* =======直流电机的PWM速度控制程序======== */ /* 纬东工作室 robots51.51.net 2006年6月 */ /* 晶振采用11.0592M,产生的PWM的频率约为91Hz */ #include<reg51.h> #include<math.h> #define uchar unsigned char #define uint unsigned int sbit en1=P1^; /* L298的Enable A */ sbit en2=P1^; /* L298的Enable B */ sbit s1=P1^; /* L298的Input 1 */ sbit s2=P1^; /* L298的Input 2 */ sbit s3=P1^; /* L298的Input 3 */ sbit s4=P1^; /* L298的Input 4 */ uchar t=; /* 中断计数器 */ uchar m1=; /* 电机1速度值 */ uchar m2=; /* 电机2速度值 */ uchar tmp1,tmp2; /* 电机当前速度值 */ /* 电机控制函数 index-电机号(1,2); speed-电机速度(-100—100) */ <span style="color: rgb(255, 0, 0);">void motor(uchar index, char speed)</span> { if(speed>=- && speed=) { if(index==) /* 电机1的处理 */ { m1=abs(speed); /* 取速度的绝对值 */ if(speed<) /* 速度值为负则反转 */ { s1=; s2=; } else /* 不为负数则正转 */ { s1=; s2=; } } if(index==) /* 电机2的处理 */ { m2=abs(speed); /* 电机2的速度控制 */ if(speed<) /* 电机2的方向控制 */ { s3=; s4=; } else { s3=; s4=; } } } } void delay(uint j) /* 简易延时函数 */ { for(j;j>;j--); } void main() { uchar i; TMOD=0x02; /* 设定T0的工作模式为2 */ TH0=0x9B; /* 装入定时器的初值 */ TL0=0x9B; EA=; /* 开中断 */ ET0=; /* 定时器0允许中断 */ TR0=; /* 启动定时器0 */ while() /* 电机实际控制演示 */ { for(i=;i=;i++) /* 正转加速 */ { motor(,i); motor(,i); delay(); } for(i=;i>;i--) /* 正转减速 */ { motor(,i); motor(,i); delay(); } for(i=;i=;i++) /* 反转加速 */ { motor(,-i); motor(,-i); delay(); } for(i=;i>;i--) /* 反转减速 */ { motor(,-i); motor(,-i); delay(); } } } void timer0() interrupt /* T0中断服务程序 */ { if(t==) /*<span style="color: rgb(255, 0, 0);"> 1个PWM周期完成后(100次中断)才会接受新数值</span> */ { tmp1=m1; tmp2=m2; } if(t<tmp1) en1=; else en1=; /* <span style="color: rgb(255, 0, 0);">产生电机1的PWM信号,[0,tmp1=m1]均是高电平</span> */ if(t<tmp2) en2=; else en2=; /* 产生电机2的PWM信号 ,同理*/ t++; if(t>=) t=; /*<span style="color: rgb(255, 0, 0);"> 1个PWM信号由100次中断产生</span> */ }
直流电机驱动PWM频率(转)的更多相关文章
- stm32直流电机驱动与测速代码配套视频资料
说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了这些大家都懂要不然也不会学习s ...
- stm32直流电机驱动与测速学习总结
通过实验发现,定时器的一个通道控制一个pwm信号. 在正式开始之前也可以参考这个视频学习资料 (stm32直流电机驱动) http://www.makeru.com.cn/live/1392_1218 ...
- 不可错过的stm32单片机直流电机驱动与测速详解
stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了 ...
- 轻松掌握stm32直流电机驱动与测速
说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了这些大家都懂要不然也不会学习s ...
- stm32直流电机驱动与测速
stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了 ...
- Stm32 定时器 定时时间设置及PWM频率 占空比的设置总结
一.定时器的时钟: 当SYSCLK等于72M,APB1等于36M APB2等于72M时,定时器的时钟为72M.注意图中这句话:如果APB1/APB2预分频器=1则频率不变,否则频率x2.如果此时,AP ...
- STM32定时器输出PWM频率和步进电机控制速度计算
1.STM32F4系列定时器输出PWM频率计算 第一步,了解定时器的时钟多少: 我们知道AHP总线是168Mhz的频率,而APB1和APB2都是挂在AHP总线上的. (1)高级定时器timer1, t ...
- 直流电机驱动,TIMER口配置
电机的电压输出能力和频率有关??? 修改前:------------------------------------------------------------------------------ ...
- STM32中的PWM的频率和占空比的设置
转于http://blog.csdn.net/liming0931/article/details/8491468 下面的这个是stm32的定时器逻辑图,上来有助于理解: TIM3的ARR寄存器和 ...
随机推荐
- SSL交互过程
SSL交互过程 HTTPS将HTTP和SSL结合,即加了SSL隧道封装的HTTP,通过SSL对客户端身份和服务器进行验证,对传输的数据进行加密.不同情况下SSL的协商过程存在差异,本节以只验证服务器为 ...
- java 线程的中断
Example12_6.java public class Example12_6 { public static void main(String args[]) { ClassRoom room6 ...
- zookeeper实现分布式锁服务
A distributed lock base on zookeeper. zookeeper是hadoop下面的一个子项目, 用来协调跟hadoop相关的一些分布式的框架, 如hadoop, hiv ...
- Linux学习 -- Shell编程 -- 条件判断
按照文件类型进行判断 两种格式 test -e /root/install.log [ -e /root/install.log ] 注意空格 适合用于脚本中 echo $?可以看到结果 [ - ...
- LNMPA by lin
CentOS系统下执行:wget -c http://soft.vpser.net/lnmp/lnmp1.1-full.tar.gz && tar zxf lnmp1.1-full.t ...
- Warning: Cannot modify header information - headers already sent by ... functions_general.php on line 45
摘自:有用到 http://blog.csdn.net/besily/article/details/5396268 PHP错误:Warning: Cannot modify header infor ...
- Android Studio 提示Error running app: No Android facet found for app
错误解决办法如下: 可以通过以下几个步骤解决该问题: 1) 点击菜单File -> 选择Project Structure, 或使用快捷键 (Ctrl+Alt+Shift+S) 打开”Proje ...
- we7 数据库
备份其他we7网站数据库 然后附加数据库,重新命名即可 不能是对其他we7数据库生成脚本,然后执行脚本,因为后台需要一些配置数据 不然后台看不到左侧的工具栏
- Android 自定义 SpinnerButton(转)
Android 自定义 SpinnerButton 模仿Android4.0的Spinner Button写的一个MySpinnerButton.这样在1.6~4.0.4版本都可以实现这种下拉框的效果 ...
- 清除浮动的方法 after伪类。
.clearfix{ *zoom:1; } .clearfix:after{ content: ""; display: block; clear: both; } 在样式中加入上 ...