打印
[新手园地]

第五批 新手学习助学板调整方波占空比控制航模舵机角度

[复制链接]
3256|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
neo_bright|  楼主 | 2012-3-9 12:42 | 只看该作者
似乎控制失败,只是开机时自动回中动了一下,然后就没反应了。

感觉是定时器错误了,再研究研究

:L求助:各位童鞋能否发一段这块板子比较精确的定时代码上来,比如0.001ms,或者0.01、0.1都行,并且赐教计算方法,谢了

使用特权

评论回复
板凳
老鱼探戈| | 2012-3-10 17:23 | 只看该作者
这种三线的舵机是用PPM信号控制的,楼主找找PPM信号的格式看看。

使用特权

评论回复
地板
neo_bright|  楼主 | 2012-3-10 21:58 | 只看该作者
PPM应该是指无线传输部分的调制方式私协议

使用特权

评论回复
5
neo_bright|  楼主 | 2012-3-10 23:10 | 只看该作者
刚刚又试了一下,还是没反应:L
只好转向gaochy1126童鞋的PWM方案https://bbs.21ic.com/viewthread.php?tid=267209&highlight=%E8%88%B5%E6%9C%BA
但是,在keil下载时遇到
不知为什么??那位童鞋帮忙解答一下,谢

好在ICP可以下,但是加电运行时舵机顺时针转到底,然后不停的抖,难道是因为天气冷:lol 或者是电机被玩坏了,那就杯具了

使用特权

评论回复
6
neo_bright|  楼主 | 2012-3-10 23:15 | 只看该作者
继续研究gaochy1126同学的程序。

那位同学有高见,请点拨在下,谢了

舵机是Futaba 3003

使用特权

评论回复
7
plc_avr| | 2012-3-11 18:36 | 只看该作者
给定特定频率,过后调占空比。不查舵机胡乱调,怎么能搞出来呢?

使用特权

评论回复
8
neo_bright|  楼主 | 2012-3-12 20:00 | 只看该作者
给定特定频率,过后调占空比。不查舵机胡乱调,怎么能搞出来呢?
plc_avr 发表于 2012-3-11 18:36


甚是,甚是。

上网学习了一下,舵机的时钟频率分为5M/10M/20M,这个频率可能与响应速度、执行速度、甚至功耗有关,但并不影响控制信号的方式。Futeba好像是这个行业的事实标准,S3003是模拟信号舵机,控制信号方式如图


另外,还查询了西安亚同声称兼容Futaba舵机的控制芯片的datasheet,也证实了上图内容。

所以,我的问题应该出在定时器操作,继续学习ing........

使用特权

评论回复
9
neo_bright|  楼主 | 2012-3-12 20:05 | 只看该作者
从亚同等规格书中还了解到:信号上升/下降斜率,信号电平,工作电压也是可能惹麻烦的

使用特权

评论回复
10
xyz549040622| | 2012-3-13 07:33 | 只看该作者

使用特权

评论回复
11
neo_bright|  楼主 | 2012-3-13 22:40 | 只看该作者
本帖最后由 neo_bright 于 2012-3-15 12:02 编辑

用简单的办法证明了舵机是好的:lol,程序如下
int main()
{
    int a,c=0,d=0,b=1500;
   
    while(1)
    {                                                                                 
          a=b;                                        //初始舵臂居中
          DrvGPIO_SetBit(E_GPA,2);        //从GPA2输出舵机控制信号
          DrvSYS_Delay(a);                        //输出高电平脉宽
          DrvGPIO_ClrBit(E_GPA,2);
          a=20000-a;
          DrvSYS_Delay(a);                         //完成20ms周期
          //利用助学板上的key1和key2来调节舵机的运动角度
          if (c==0)                                    //K1逆时针转
                {
                 if(0==DrvGPIO_GetBit(E_GPB,15) )
                   { b=b+50 ;                       //这个值可以调整转动角度大小
                     c=10 ;                            //这里是防止连续扫到按键动作
                   }
                }
                 else c=c-1;
            
                if (d==0)                            //K2顺时针转
                {
                 if(0==DrvGPIO_GetBit(E_GPB,14) )
                   { b=b-50 ;
                     d=10 ;
                   }
                }
                 else d=d-1;
                        
    }
}

继续学习定时器中断和PWM

使用特权

评论回复
12
neo_bright|  楼主 | 2012-3-13 22:50 | 只看该作者
没有示波器,看不到输出是个问题。

朦胧中觉得Keil好像有看GPIO口输出波形的功能,可就是没找到,哪位大神指导一下。

是不是在计算机仿真功能下的某个选项?呀

使用特权

评论回复
13
plc_avr| | 2012-3-14 07:28 | 只看该作者
关键现在是舵机有没有正常的正反转?没有示波器搞个逻辑分析仪啊,这玩意我买时48一个。非常好用。

使用特权

评论回复
14
neo_bright|  楼主 | 2012-3-15 11:50 | 只看该作者
关键现在是舵机有没有正常的正反转?没有示波器搞个逻辑分析仪啊,这玩意我买时48一个。非常好用。
plc_avr 发表于 2012-3-14 07:28

现在舵机正转反转都正常(用上面的程序),只是不保证精度,如果要精确控制就要用定时器中断或PWM。

48的逻辑分析仪是什么东东?请给个链接看看,谢了

使用特权

评论回复
15
plc_avr| | 2012-3-15 12:33 | 只看该作者
淘宝上搜逻辑分析仪24M的,卖的最多的那个应该就是。不直接贴了。

使用特权

评论回复
16
neo_bright|  楼主 | 2012-3-16 14:01 | 只看该作者
15# plc_avr
谢谢!很好的东东。
http://item.taobao.com/item.htm?id=8430104015

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

82

帖子

0

粉丝