|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
舵机不能控制速度吗?转的太快了,一按不到1秒时间就转到位了。能不能慢慢的转?转它割10秒钟到位
0 F- s5 Q6 _8 r- ]3 p) R) M: {( ~, |# b. Q5 C: f
+ R9 Z b( _) ]% ?. x; o; k
: b1 Q0 V& q [% N8 Y6 K. B
3 F8 H, i% M$ X7 p9 `7 {我的舵机是
0 i8 i$ ~5 j5 q Y; _MG996R按一个按钮旋转180度,按另一个按钮反转回来,
) F) v; p0 d; z; n2 D感觉速度太快了。能不能慢慢的旋转?0 f7 R, a8 L) _ W
我用的8脚单片机型号是STC15W204S,其实用89C52单片机测试也是一样的效果,换下头文件即可,
. O6 p {; q3 y- ], h3 b) Z. F. C5 A- x% {1 J2 b
下面是单片机代码,7 i' d! D" ~& z( `/ z5 m
网上资料说改定时器中断初始时间,我也改过不同时间(0.1MS至5ms),都没有效果。# K" [5 e D1 ^$ x* c$ C2 m
TH0=0Xfe; B& _$ J* t' h+ T1 u6 @3 X
TL0=0X33; //计数初值设置为0.5ms
( Y3 T& N2 Z3 r, D* ~* c( I3 E" V$ _! p' W2 M5 V
6 v/ O5 n8 |* M$ ~% ^ E4 n
又说改PWM时间,下面40我改为10至500也还是改变不了速度,还是老样子/ ^0 [' T! x w9 Y" @
count++;. w( V8 W+ B7 F) {
if(count>=40)//原始是=40
8 f4 Q ^: [) N" U* K6 ` {
8 ]) b5 k6 R. ~& [( y; \% R count=0;
+ j2 s# F k/ V* l, c1 j }; b* C5 U6 ]' M( ^6 |$ w4 A) H
x1 w1 ^9 F: A3 r/ h- j0 A, F5 u7 L q O+ h9 p" G) Q
老师们,到底要怎么改,才能控制舵机速度?谢谢指导,,# N. M7 U5 T! V! a* B8 `
- #include "STC15Fxxxx.H"
- //#include <intrins.h>
- #define uint unsigned int //定义一下方便后面使用
- //#define uchar unsigned char //定义一下方便后面使用
- #define MAIN_Fosc 11059200L//定义主时钟
- sbit SG_PWM=P3^2;
- sbit Key_1=P5^4;
- sbit Key_2=P5^5;
- unsigned char count=0;
- unsigned char PWM_count=1; //1--0度,2--45度,3--90度,4--135度,5--180度
- void delay(unsigned char i) //延时
- {
- unsigned char j,k;
- for(j=i;j>0;j--)
- for(k=125;k>0;k--);
- }
- void Timer_Init()
- {
- TMOD=0X01; //T0定时方式1
- TH0=0Xfe;
- TL0=0X33; //计数初值设置为0.5ms 每0.5ms进入一次中断,晶振频率:11.0592MHZ
- ET0=1; //打开定时器0的中断
- TR0=1; //打开定时器0
- EA=1; //开总中断
- }
- void Timer() interrupt 1 //特别注意此处,0--外部中断0,1--定时器中断0,2--外部中断1,3--定时器中断1,4--串行口中断1
- {
- TR0=0;
- TH0=0Xfe;
- TL0=0X33; //重新赋计数初值为0.5ms
- if(count<=PWM_count)
- {
- SG_PWM=1;
- }
- else
- {
- SG_PWM=0;
- }
- count++;
- if(count>=40)//原始是=40
- {
- count=0;
- }
- TR0=1;
- }
- void main()
- {
- Timer_Init();
- while(1)
- {
- if(Key_1==0)
- {
- delay(10);
- EA=0;
- if(Key_1==0)
- {
- PWM_count=1;//1--0度
- count=0;
- EA=1;
- }
- while(!Key_1);
- }
- if(Key_2==0)
- {
- delay(10);
- EA=0;
- if(Key_2==0)
- {
- PWM_count=5;//4--135度 转动角度
- count=0;
- EA=1;
- }
- while(!Key_2);
- }
- }
- }
8 z7 e. e0 x: t' `# L % q* A6 a% J( n( P, K/ R' G! L
[color=rgb(51, 102, 153) !important]复制代码9 A K) N; L# ~5 X
[color=rgb(51, 102, 153) !important]
EDA365论坛_996舵机按键控制正反转.rar
(24.96 KB, 下载次数: 0)
* z) J4 B8 m3 d3 \" c
| / M' P+ l( R, b" X' E0 x
|
|