智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 16416|回复: 21
打印 上一主题 下一主题

k60舵机电机程序,能检测PWM波,但舵机不转

  [复制链接]

5

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
490
威望
270
贡献
118
兑换币
102
注册时间
2012-9-18
在线时间
51 小时
毕业学校
合肥工业大学
跳转到指定楼层
1#
发表于 2013-6-11 23:11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "common.h"
#include "include.h"
#define Mid_duty   7600
#define Half_Right 8800
#define Right      9500
#define Half_Left  6000
#define Left       5500

/*************************************************************************/
void Init_PWM()
{
  FTM_PWM_init(FTM0,CH0,35000,30);    //电机驱动,为FTM0_CH0,PTC1此时占空比为0
  FTM_PWM_init(FTM0,CH1,35000,800);    //舵机驱动初始化,为FTM0_CH1,PTC2
  FTM_PWM_init(FTM0,CH2,35000,10);    //电机驱动,为FTM_CH2,PTC3
  FTM_PWM_init(FTM1,CH0,35000,10);
  
}
void Direction_Motor()
{
  //舵机处于之间值
  FTM_PWM_Duty(FTM0,CH1,Mid_duty);
  time_delay_ms(500);
  //开始右偏
  FTM_PWM_Duty(FTM0,CH1,Half_Right);
   time_delay_ms(500);
   
  FTM_PWM_Duty(FTM0,CH1,Right);
   time_delay_ms(500);
   
  FTM_PWM_Duty(FTM0,CH1,Mid_duty);
   time_delay_ms(500);
  //开始左偏
   FTM_PWM_Duty(FTM0,CH1,Half_Left);
    time_delay_ms(500);
   
   FTM_PWM_Duty(FTM0,CH1,Left);
    time_delay_ms(500);
   
   FTM_PWM_Duty(FTM0,CH1,Mid_duty);
    time_delay_ms(500);
  
}
void Motor()
{
    FTM_PWM_Duty(FTM0,CH0,60);   //控制电机正转
    FTM_PWM_Duty(FTM0,CH2,0);    //反转
}
void main()
{
  
// DisableInterrupts;
    Init_PWM();
    u32 i;
  
  //当前为输入状态
   
//  EnableInterrupts;
  
    while(1)
    {
      
     Direction_Motor();
   //  Motor();
     
     for (i=10; i>1; i--)
     {
       FTM_PWM_Duty(FTM1,CH0,i*10);
       time_delay_ms(100);
     }
        
    }

  
  
}
这是我写的程序,,,不知道哪有问题???

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
2#
发表于 2013-6-11 23:38:29 | 只看该作者
不是有PWM就能动的,还要有合适的频率。
回复 支持 反对

使用道具 举报

21

主题

836

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5050

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
3374
贡献
126
兑换币
1662
注册时间
2012-11-1
在线时间
775 小时
3#
发表于 2013-6-12 10:22:40 | 只看该作者
你能测出PWM   那就看看是否共地吧
回复 支持 反对

使用道具 举报

1

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1261
威望
655
贡献
370
兑换币
318
注册时间
2012-5-15
在线时间
118 小时
4#
发表于 2013-6-12 15:11:15 | 只看该作者
我当时没有设置输入输出引脚,不知道你的是不是这个原因。还有你的舵机不可以是35000HZ的频率啊。还有楼上说的共地。
回复 支持 反对

使用道具 举报

5

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
490
威望
270
贡献
118
兑换币
102
注册时间
2012-9-18
在线时间
51 小时
毕业学校
合肥工业大学
5#
 楼主| 发表于 2013-6-12 15:18:19 | 只看该作者
张胜金 发表于 2013-6-12 15:11
我当时没有设置输入输出引脚,不知道你的是不是这个原因。还有你的舵机不可以是35000HZ的频率啊。还有楼上说 ...

嗯  频率我知道了   ftm1- ch0通道不是默认了是ptc1引脚吗???请问共地是什么意思??我不懂
回复 支持 反对

使用道具 举报

1

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1261
威望
655
贡献
370
兑换币
318
注册时间
2012-5-15
在线时间
118 小时
6#
发表于 2013-6-12 15:26:30 | 只看该作者
夏琪1991 发表于 2013-6-12 15:18
嗯  频率我知道了   ftm1- ch0通道不是默认了是ptc1引脚吗???请问共地是什么意思??我不懂

/**************PWM 初始化***********/
void PWM_Init(void)
{
gpio_init (PORTC , 0, GPO,HIGH);//电机使能
gpio_init (PORTA , 8, GPO,HIGH);//舵机使能
FTM_PWM_init(FTM1,CH0,65,rol_mid);//舵机FTM,必须中路 A8
FTM_PWM_init(FTM0,CH0,12000,10);//电机C1
FTM_PWM_init(FTM0,CH1,12000,10);//电机C2
}
/************** 电机控制****************/
void PWMoutVec(int Velocity) // 电机正转  
//Velocity速度速率
/*
      INH  IN1   IN2   
       1    1     0   正
       1    0     1   反
       C5   C1    C2  接线
*/
{

  FTM_PWM_Duty(FTM0,CH0,Velocity);//电机FTM1  CH6(PTD6) /*设置电机速度*/
  FTM_PWM_Duty(FTM0,CH1,0);//电机FTM1  CH7(PTD7)
}
void PWMoutStopVec(void) // 停车
{
   //IN1=1,In2=0;正转
   FTM_PWM_Duty(FTM0,CH0,0);//电机FTM1  CH6(PTD6)
   FTM_PWM_Duty(FTM0,CH1,0);//电机FTM1  CH7(PTD7)
   //能耗制动
}
void PWMoutreVec(int Velocity)// 电机反转
{
      if(Velocity>667) Velocity=667;
      FTM_PWM_Duty(FTM0,CH0,0);//电机FTM1  CH6(PTD6)
      FTM_PWM_Duty(FTM0,CH1,Velocity);//电机FTM1  CH7(PTD7) /*设置电机速度*/   
}
//------------------------------------舵机---------------------------------------------
void setPWM_duoji(int n)
{
    FTM_PWM_Duty(FTM1,CH0,n);//舵机 A8
}
这是我的函数。 gpio_init (PORTC , 0, GPO,HIGH);//电机使能
gpio_init (PORTA , 8, GPO,HIGH);//舵机使能
我认为主要是这一句。还有共地就是把你的舵机GND和单片机的GND和稳压GNDl连接在一起。

回复 支持 反对

使用道具 举报

5

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
490
威望
270
贡献
118
兑换币
102
注册时间
2012-9-18
在线时间
51 小时
毕业学校
合肥工业大学
7#
 楼主| 发表于 2013-6-12 15:44:19 | 只看该作者
张胜金 发表于 2013-6-12 15:26
/**************PWM 初始化***********/
void PWM_Init(void)
{

非常感谢啊       果然还是要把舵机和电机相应引脚输出
回复 支持 反对

使用道具 举报

11

主题

219

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1777

优秀会员奖章活跃会员奖章

威望
873
贡献
508
兑换币
271
注册时间
2012-10-28
在线时间
198 小时
8#
发表于 2013-6-12 23:09:47 | 只看该作者
“FTM_PWM_init(FTM0,CH0,35000,30);    //电机驱动,为FTM0_CH0,PTC1此时占空比为0
  FTM_PWM_init(FTM0,CH1,35000,800);    //舵机驱动初始化,为FTM0_CH1,PTC2
  FTM_PWM_init(FTM0,CH2,35000,10);    //电机驱动,为FTM_CH2,PTC3
  FTM_PWM_init(FTM1,CH0,35000,10);“
//////////////////////////////////////////////////////////////////////////////////////
首先,同一FTM模块只能用同一频率。所以舵机和电FTM应用不同的;
其次,你电机和舵机用同一频率,电机35KHz,可能行,舵机行吗?
回复 支持 反对

使用道具 举报

11

主题

219

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1777

优秀会员奖章活跃会员奖章

威望
873
贡献
508
兑换币
271
注册时间
2012-10-28
在线时间
198 小时
9#
发表于 2013-6-12 23:11:03 | 只看该作者
夏琪1991 发表于 2013-6-12 15:44
非常感谢啊       果然还是要把舵机和电机相应引脚输出

你计算机的?
回复 支持 反对

使用道具 举报

1

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1261
威望
655
贡献
370
兑换币
318
注册时间
2012-5-15
在线时间
118 小时
10#
发表于 2013-6-13 11:50:23 | 只看该作者
夏琪1991 发表于 2013-6-12 15:44
非常感谢啊       果然还是要把舵机和电机相应引脚输出

共同学习,共同进步。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 20:11 , Processed in 0.077151 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表