|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
舵机不能控制速度吗?转的太快了,一按不到1秒时间就转到位了。能不能慢慢的转?转它割10秒钟到位
. b- } S8 p; P4 g+ W( v
. l+ T) I* o3 d
" W/ C5 E. _+ e; S7 E
: t! z2 w6 v9 z' ]+ k. ?
) X0 g4 _$ G: |我的舵机是
( m% ~4 A {: m( j! n/ _& VMG996R按一个按钮旋转180度,按另一个按钮反转回来,
1 L7 h0 y% S7 X1 A' I2 n* ^感觉速度太快了。能不能慢慢的旋转?5 h# [7 V2 W2 c2 ~1 S: |
我用的8脚单片机型号是STC15W204S,其实用89C52单片机测试也是一样的效果,换下头文件即可,
( H' K; j! ~4 [9 x1 ?4 L' T( |$ Y3 ^. D4 u. n' b
下面是单片机代码,
. s- P5 s; u- R) y7 B; N3 @+ a网上资料说改定时器中断初始时间,我也改过不同时间(0.1MS至5ms),都没有效果。
. I! n/ P+ \! w% b+ X4 w( C3 K TH0=0Xfe;
8 g6 P: A0 O8 _ TL0=0X33; //计数初值设置为0.5ms' @5 b2 q4 [5 c3 t7 ^6 u, b# M
9 i1 }5 v+ a3 x x5 g3 F2 n
6 D: b3 T# X# I2 `/ x3 \$ b' x又说改PWM时间,下面40我改为10至500也还是改变不了速度,还是老样子3 m- b; V& J6 F7 ^
count++;; y, L+ o: X+ i' ?0 \
if(count>=40)//原始是=40
. w: N! ?1 {, m( v T; @ {
/ j0 a$ T9 {3 i' h1 c' L1 S count=0;. Y* u: a8 ^' Y& g/ P9 o
}. H* ]. e: u. m) L7 J6 S6 E
2 d$ |% b# H0 h3 B% D( ?$ ^9 V- L% [3 D+ S
老师们,到底要怎么改,才能控制舵机速度?谢谢指导,,
5 P" g, w5 I, w D/ ~- #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);
- }
- }
- }
/ B' e! ~5 R1 [* P4 P1 d7 c" @
0 }, Q6 i' @/ o- g; o[color=rgb(51, 102, 153) !important]复制代码/ ~; Q1 |5 {9 h9 o
[color=rgb(51, 102, 153) !important]
EDA365论坛_996舵机按键控制正反转.rar
(24.96 KB, 下载次数: 0)
8 r7 I: W! @3 \3 _
| ; S b# U7 j1 K/ R" N+ t$ o
|
|