舵机(RB-65CS)的使用PWM控制正反转的问题,求单片机达人简答,高分 100

小弟使用的是STC12C5A60S2的单片机,让输出口p0^0,p0^1输出为带有一定占空比的pwm波形,作为舵机的输入,整套小车是老师给的,今天全装好后测试能正常运行。... 小弟使用的是STC12C5A60S2的单片机,让输出口p0^0,p0^1输出为带有一定占空比的pwm波形,作为舵机的输入,整套小车是老师给的,今天全装好后测试能正常运行。但是因为我只用到其中一个芯片,下载程序到芯片后出现如下问题:p0^0,P0^1口均能输出想要的pwm波形,但是一旦插上舵机,波形就变了,老师说是程序问题,但是真心不知道哪儿出问题了。

附程序:
#include <reg52.h>#include <intrins.h>typedef unsigned char uchar;typedef unsigned int uint;//**********************端口定义*********************//sbit Motor_1 = P0^0;sbit Motor_2 = P0^1;
sfr AUXR=0x8e;
int pwm_count1=0;int pwm_count2=0;//***************************************************void delayms(uint k);void timer0_init();//***************************************************
//*****************************//毫秒级延时函数(约1ms)//******************************void delayms(uint k) { uint i,j; for(i=0;i<k;i++) { for(j=0;j<121;j++); } }//**************************************//定时器0的初始化(10us的定时器)//***************************************
void timer0_init(){ AUXR=0x80; TMOD=0x01; //定时器0初始为16位计数 TH0=0xfd; //装入计时初值 TL0=0xd6; EA=1; //开总中断 ET0=1; //开定时器0溢出中断 TR0=1; //开始计数}//**********************************************//定时器中断服务程序//**********************************************void timer_0() interrupt 1{ TH0=0xfd; //重新装入计时初值 TL0=0xd6; pwm_count1++;}void main(void){ int i; timer0_init(); Motor_1=1; Motor_2=1; while(1) { if(pwm_count1==30) { Motor_1=0; Motor_2=0; //左右电机变为低电平 } if(pwm_count1==395) { pwm_count1=0; Motor_1=1; Motor_2=1; //左右电机变为高电平 } }}
展开
 我来答
三心全乱
2013-05-18 · TA获得超过6158个赞
知道小有建树答主
回答量:518
采纳率:100%
帮助的人:225万
展开全部
凑个热闹。我对舵机原理不熟,但估计也是个线圈吧?用手机看不清图片,不知变形成什么。假如波形是直接驱动线圈的,那么由于电感作用,波形变了也合理。如果输出波形和预想的一致,那证明程序是正确的,不可能因为负载而不错。难不成您还要根据负载特性输出模拟信号,然后测出一个理想方波?有可能的话,用驱动桥试试就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
艾普斯
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产... 点击进入详情页
本回答由艾普斯提供
jolen6474
2013-05-12 · TA获得超过221个赞
知道小有建树答主
回答量:319
采纳率:100%
帮助的人:154万
展开全部
if(pwm_count1==30) //这改成>=
{
Motor_1=0;
Motor_2=0; //左右电机变为低电平
}
if(pwm_count1==395) //这也改成>=,这个if应该是被嵌套进上个if里的
{
pwm_count1=0;
Motor_1=1;
Motor_2=1; //左右电机变为高电平
}

再检查下硬件 是不是舵机的干扰引起的 舵机和MUP的电源分开
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式