求助,esp8266 pwm输入利用pwm输出控制舵机

求助,esp8266利用pwm输出控制舵机。_esp8266吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,981贴子:
求助,esp8266利用pwm输出控制舵机。
现有arduino UNO 和esp8266以及一个mg946r的舵机。已经学会esp8266控制继电器,但是对pwm的输出无能为力。希望吧内大神帮帮忙
深圳卓联微科技-专业代理销售乐鑫esp8266芯片 WiFi芯片,BLE蓝牙芯片,贴片陶瓷天线,滤波器等无线射频核心元件,esp8266优势供应商,
其实我想做一个自动开门装置
贴吧热议榜
使用签名档&&
保存至快速回贴利用单片机PWM信号进行舵机控制_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
利用单片机PWM信号进行舵机控制
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢当前位置: >>
51单片机控制输出pwm信号控制舵机
利用 51 单片机控制输出 pwm 信号控制舵机 # include &reg51.h& #define uchar unsigned char #define uint unsigned int void keyscan(void); uint a,b,c,d; /*a 为舵机 1 的脉冲宽度,b 为舵机 2 的脉冲宽度,单位 1/1000 ms */ /*c、d 为中间变量*/ /*以下定义输出管脚*/ sbit p12=P1^2; sbit P13=P1^3; sbit p16=P1^6; 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,为一个周期的时间*/ 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 {P13=!P13; d=18432-d; TH1=-(d/256); TL1=-(d%256); if(d&=470&&d=2304)d=b; else d=18432-b; } /*主程序*/ void main(void) {TMOD=0x11; /*设初值*/ p12=1; P13=1;p17=1; a=2000; b=566; /*数值 1500 即对应 1.5ms,为舵机的中间 90 度的位置*/ c=a;d=b; TH0=-(a/256); TL0=-(a%256); 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 循环中,可以根据程序需要 在任何时间改变 a、b 值来改变脉宽的输 出时间,从而控制舵机*/ void keyscan(void) { if(p16==0) { delay(); if(p16==0) { if(500=a&&a=2100)a+=50; p17=!p17; while(p16==0); } } if(p15==0) { delay(); if(p15==0) { if(550=a&&a=2150)a-=30; p17=!p17; while(p15==0); } } } void delay (void) { for(uidata=1;uidata=500;uidata++); } # include &reg51.h& #define uchar unsigned char #define uint unsigned int void keyscan(void); uint a,b,c,d; /*a 为舵机 1 的脉冲宽度,b 为舵机 2 的脉冲宽度,单位 1/1000 ms */ /*c、d 为中间变量*/ /*以下定义输出管脚*/ sbit p12=P1^2; sbit P13=P1^3; sbit p16=P1^6; 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,为一个周期的时间*/ 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 {P13=!P13; d=18432-d; TH1=-(d/256); TL1=-(d%256); if(d&=470&&d=2304)d=b; else d=18432-b; } /*主程序*/ void main(void) {TMOD=0x11; /*设初值*/ p12=1; P13=1;p17=1; a=2000; b=566; /*数值 1500 即对应 1.5ms,为舵机的中间 90 度的位置*/ c=a;d=b; TH0=-(a/256); TL0=-(a%256); 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 循环中,可以根据程序需要 在任何时间改变 a、b 值来改变脉宽的输 出时间,从而控制舵机*/ void keyscan(void) { if(p16==0) { delay(); if(p16==0) { if(500=a&&a=2100)a+=50; p17=!p17; while(p16==0); } } if(p15==0) { delay(); if(p15==0) { if(550=a&&a=2150)a-=30; p17=!p17; while(p15==0); } } } void delay (void) { for(uidata=1;uidata=500;uidata++); }
3、程序 2,使用单片机 I/O 口输出 PWM 波,并能通过按键控制正反转 在程序中我们通常需要控制电机的正反转,如通过一个按键控制正反转, 此时我们也可以设置一个...如何利用 51 单片机输出 PWM 波 1、理论知识 2、程序及分析 1、理论知识 PWM 这个功能在飞思卡尔、STM32 等高档的单片机内部有专用的模块,用此 类芯片实现 PWM...单片机完成控制算法, 再将计算结果转化为 PWM 信号输出到舵机,由于单片机系统是...脉冲计数可以利用 51 单片机的内部计数器来实现,但是从软件系统的稳定 性和程序...电路图见图一,采用了高速光隔(6N137)输出,并将PWM的信号倒相。51 单片机输出 PWM 的两种方法 51 系列单片机无 PWM 输出功能,可以采用定时器配合软件的方法输出...51单片机控制多路舵机_电子/电路_工程科技_专业资料。/***...}; uint16 pwm[9]={00,00,00}; 这里取 // 定时器取...51 单片机 舵机程序 #include &reg52.h& //0.5ms 次数标识 sbit pwm =P2^7 ; //PWM 信号输出 sbit ji ...51单片机模拟PWM输出占空比可调_信息与通信_工程科技_专业资料 暂无评价|0人阅读|0次下载|举报文档51单片机模拟PWM输出占空比可调_信息与通信_工程科技_专业资料。#...51 单片机实现 PWM 波占空比可调 平台: STC89C52 名称:本程序为用单片机制作的占空比均匀间隔可调 PWM 发生器。占空比可调间隔 为 0.1。即可取得占空比为 0%,...51单片机定时器产生任意占空比PWM_电子/电路_工程科技_专业资料。晶振 12M 任意占空比方波输出如果是占空比任意,现在考虑 12M 晶振,所以机器周期 Tcy 为 1 ?s。 定...如何使MCS-51单片机产生PWM信号来控制直流电机的转速_电子/电路_工程科技_专业资料。最近买了无刷电机和电调,想用 51 单片机产生 PWM 信号驱动电机,电调的三合一...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。查看: 1536|回复: 15
寄存器的 pwm输出控制舵机,舵机一直抖,求教错哪了?拜托
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间20 小时
#include&stm32f10x.h&
#include&delay.h&
#include&mokuai.h&
#include&usart.h&
void TIM1_PWM_Init(u16 arr,u16 psc)& & & & //&&周期&&分频
{& & & & & & & & & & & & & & & & & & & & & & & & & & & & //定时器1 的CH2PWM输出初始化
& & & & RCC-&APB2ENR|=1&&11;&&& & & && && && &//定时器1使能
& & & & RCC-&APB2ENR|=1&&2;& & & & & & & & //IO口A时钟使能
& & & & GPIOA-&CRH&=0XFFFFFF0F;& & & && && && &//设置A9为推挽复用输出
& & & & GPIOA-&CRH|=0X;
& & & & GPIOA-&ODR=1&&9;
& & & & TIM1-&ARR|=
& & & & TIM1-&PSC|=
& & & & TIM1-&CCMR1=6&&12;& & & & //PWM& & & & 模式1
& & & & TIM1-&CCMR1=1&&11;& & & & //预装载使能
& & & & TIM1-&CCER|=1&&4; //CO1输出使能
& & & & TIM1-&CR1=0x0080;& & & & & & & & //设置第7位 使能缓冲器
& & & & TIM1-&CR1|=0x01;
int main(void)
& & & & Stm32_Clock_Init(9);
& & & & delay_init(72);
& & & & TIM1_PWM_Init(14400,99);& &//周期20ms
& & & & while(1)
& & & & & & & & delay_ms(500);
& & & & & & & & TIM1-&CCR2=1080;
& & & & & & & & delay_ms(500);
& & & & & & & & TIM1-&CCR2=1700;
& & & & & & & & delay_ms(500);
& & & & & & & & TIM1-&CCR2=500;
麻烦帮我看看我错哪了,我查了网上别人写的,没什么不一样的啊,帮我看一下吧,谢谢了
有可能频率不对吧。你看看舵机说明书,你定时器配置的频率是50Hz,这个频率要和舵机工作频率一致才行。
主题帖子精华
金牌会员, 积分 1843, 距离下一级还需 1157 积分
在线时间332 小时
舵机连线没有问题,我用别人写的库函数的程序可以运行,程序中我倒是看到了个错误,
TIM1-&CCMR1=6
有可能频率不对吧。你看看舵机说明书,你定时器配置的频率是50Hz,这个频率要和舵机工作频率一致才行。
主题帖子精华
中级会员, 积分 434, 距离下一级还需 66 积分
在线时间53 小时
舵机用的是模拟舵机吗?模拟舵机用久了都会抖,容易坏。12个模拟角度舵机已经坏了2个了。你可以用示波器测试波形或者软件仿真,如果准确的话有可能就是舵机的问题,换一个舵机插上去试试看。
Try again and there is nothing left to say.
主题帖子精华
中级会员, 积分 434, 距离下一级还需 66 积分
在线时间53 小时
还有,哥们,你这么操作舵机的方式不太科学啊。舵机的PWM值不能瞬间跳变的,容易搞坏舵机。要用for循环一次改变一点点占空比平滑变动。
Try again and there is nothing left to say.
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间20 小时
还有,哥们,你这么操作舵机的方式不太科学啊。舵机的PWM值不能瞬间跳变的,容易搞坏舵机。要用for循环一次 ...
舵机是盛辉的9g很常见的那种,PWM值需要一点点改吗?我以前用51的时候一直都是这么用,应该没事吧,在网上看他们写的程序也有这么干的~~~,我这程序里有什么错误吗?到底错哪了我怎么没找到~~~~~
主题帖子精华
中级会员, 积分 434, 距离下一级还需 66 积分
在线时间53 小时
舵机是盛辉的9g很常见的那种,PWM值需要一点点改吗?我以前用51的时候一直都是这么用,应该没事吧,在网 ...
以我用CYS-S0090模拟舵机的经验来说,是这样的。小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/60度或0.18/60度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。如果需要更快速的反应,就需要更高的转速了。&&可以参考下这个博客
Try again and there is nothing left to say.
主题帖子精华
金牌会员, 积分 1843, 距离下一级还需 1157 积分
在线时间332 小时
看看舵机的地线和板子的地线是不是相连的。
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间20 小时
看看舵机的地线和板子的地线是不是相连的。
舵机连线没有问题,我用别人写的库函数的程序可以运行,程序中我倒是看到了个错误,
TIM1-&CCMR1=6&&12;& && &&&//PWM& && &&&模式1
TIM1-&CCMR1=1&&11;& && &&&//预装载使能
其中应该是|=,我写成 = 了,现在程序是
#include&stm32f10x.h&
#include&delay.h&
#include&mokuai.h&
#include&usart.h&
void TIM1_PWM_Init(u16 arr,u16 psc)& & & & & & & & //&&周期&&分频
{& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & //定时器2 的CH1 PWM输出初始化
& & & & RCC-&APB1ENR|=1&&0;&&& & & & //定时器2使能
& & & & RCC-&APB2ENR|=1&&2;& & & & & & & & & & & & //IO口A时钟使能
& & & & GPIOA-&CRL&=0XFFFFFFF0;& & & & //设置A9为推挽复用输出
& & & & GPIOA-&CRL|=0X0000000B;
& & & & GPIOA-&ODR=1&&0;
& & & & TIM2-&ARR|=
& & & & TIM2-&PSC|=
& & & & TIM2-&CCMR1|=6&&4;& & & & //PWM& & & & 模式1
& & & & TIM2-&CCMR1|=1&&3;& & & & //预装载使能
& & & & TIM2-&CCER|=1&&0;& &//CO1输出使能& &低电平有效
& & & & TIM2-&CR1|=0x0080;& & & & & & & & //设置第7位 使能缓冲器
& & & & TIM2-&CR1|=0x01;
int main(void)
& & & & int a=5;
& & & & Stm32_Clock_Init(9);
& & & & delay_init(72);
& & & & TIM1_PWM_Init(199,7199);& &//周期20ms
& & & & while(1)
& & & & & & & & for(a=5;a&25;a++)
& & & & & & & & {
& & & & & & & & & & & & TIM2-&CCR1=a;
& & & & & & & & }
& & & & & & & & if(a==25)
& & & & & & & & {
& & & & & & & & & & & & a=5;
& & & & & & & & }
用软件模拟端口是有输出的,但连上舵机,舵机不动~~~~~,帮我看一下吧
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间20 小时
有可能频率不对吧。你看看舵机说明书,你定时器配置的频率是50Hz,这个频率要和舵机工作频率一致才行。
好像不是这个问题,舵机也是50HZ的,GPIOA-&CRL|=0X0000000B,我看别人也是这么设置的,~~~
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间20 小时
原子哥能不能帮我看看错哪了,实在是找不到~~~~
主题帖子精华
金钱128229
在线时间1133 小时
原子哥能不能帮我看看错哪了,实在是找不到~~~~
用示波器看看波形
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间20 小时
本帖最后由 厄尔尼诺 于
15:08 编辑
用示波器看看波形
C:\Users\wang\Desktop\PWM舵机
(15.14 KB, 下载次数: 2)
15:08 上传
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间20 小时
用示波器看看波形
我没有示波器,用软件模拟的,波形看上去很正常啊,但好像下载到板子里就不对了,舵机也是好的,没有问题~~~~
主题帖子精华
金钱128229
在线时间1133 小时
我没有示波器,用软件模拟的,波形看上去很正常啊,但好像下载到板子里就不对了,舵机也是好的,没有问题 ...
改成一个固定脉冲输出看还抖不?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间20 小时
改成一个固定脉冲输出看还抖不?
改成固定脉冲也还是不会固定在一个位置,并且也是每隔上6,7秒舵机动一下,期间舵机没有力,
后来在别人的提醒下,我把arr和psc从199,7199改成19999,71就可以了,我现在只是知道怎么改了,但不知道为什么,这是什么原因呢?是因为这种计时会有误差?把arr改大,误差相对小了,就可以了?是这个原因吗?
主题帖子精华
金钱128229
在线时间1133 小时
改成固定脉冲也还是不会固定在一个位置,并且也是每隔上6,7秒舵机动一下,期间舵机没有力,
后来在别人 ...
这个,不知道你的舵机有多灵敏.
我觉得如果固定CCRx的话,PWM脉宽肯定是固定的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
Powered byesp8266利用pwm输出控制舵机,求助_游戏百科_收藏百科知识网
esp8266利用pwm输出控制舵机,求助
编辑: www.scfhhz.com &&&来源:用户发布&&&发布时间:&&&查看次数:38
esp8266利用pwm输出控制舵机了如,求助?谢谢哩!网友回答ofyoursilentreverie答案纠错
游戏百科相关
更多相关内容
本站内容来自网友发布,本站无法保证其部分内容的正确性,请用户一定仔细辨别。
[] &&[联系QQ:885&971&98] &
沪ICP备号&

我要回帖

更多关于 esp8266 pwm 频率 的文章

 

随机推荐