网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月03日漏签0天
arduino吧 关注:75,310贴子:230,071
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 13回复贴,共1页
<<返回arduino吧
>0< 加载中...

【arduino】arduino通过MPU6050控制步进电机正反转出现问题。。

  • 只看楼主
  • 收藏

  • 回复
  • fly醉舞丶倾城
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
角度在正负5度时,还可以,但是角度稍微再大一点,就感觉CPU算不来了,比如我让它倾斜45度,用串口监视发现,角度是缓慢增加到45度的,是什么问题啊!我控制直流电机就没事,控制步进电机就出现这样的问题。。。如果加入积分,效果更差。。求大神


  • fly醉舞丶倾城
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
代码如下:
#include <Stepper.h>
#include "MsTimer2.h"
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"
/********步进电机参数*********/
const int stepsPerRevolution =64; // 根据步进电机每转的步距角数来设定,如这个电机的步距角是5.625,那么一周就是64步
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
/*********MPU6050**************/
MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;
float angleAx,gyroGy;
/**********二阶互补滤波**********/
float K2 =0.2; // 对加速度计取值的权重
float x1,x2,y1;
float dt=20*0.001;//注意:dt的取值为滤波器采样时间
float Angle;
float Angle_sum; //角度积分
/**********PID*************/
float Kp=2.5;
//float Ki=0.06;
float Kd=0.2;
float pwm;
int Step;
/*******二阶互补滤波*****/
void Erjielvbo() //采集后计算的角度和角加速度
{
x1=(angleAx-Angle)*(1-K2)*(1-K2);
y1=y1+x1*dt;
x2=y1+2*(1-K2)*(angleAx-Angle)+gyroGy;
Angle=Angle+ x2*dt;
Angle_sum+=Angle;
if(Angle_sum>360){Angle_sum=360;}
if(Angle_sum<-360){Angle_sum=-360;}
}
void PWM()
{
pwm=Kp*Angle+Kd*gyroGy;
if(pwm>2048) { pwm = 2048; } //防止PWM值超过255
if(pwm<-2048){pwm=-2048;}
}
void setup()
{
Wire.begin();
Serial.begin(115200);
accelgyro.initialize();
myStepper.setSpeed(200);
}
void loop()
{ accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
angleAx=atan2(ax,az)*180/PI;
gyroGy=-gy/131.00;
delay(2);
Erjielvbo();
PWM();
Step=(int)pwm;
Serial.print(pwm);
Serial.print("\t");
Serial.print(Angle);
Serial.print("\n");
myStepper.step(Step);


2025-06-03 03:12:56
广告
  • fly醉舞丶倾城
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在线等大神


  • fly醉舞丶倾城
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
人工置顶


  • fly醉舞丶倾城
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
人工置顶,来人啊


  • Eric冷
  • 颇具名气
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你说的不会是这个吧。驱动不一样啊 我是TB6560啊


  • qq177128496
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主是做的自动调水平吗?


  • qq177128496
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你好,怎么编译通不过呢


2025-06-03 03:06:56
广告
  • diversj
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主,我试了一下代码没问题啊,另外,如果想让MPU6050跟步进电机同步运动怎么修改代码呢?我想做一个灯的稳定器装在车上,车辆随着地形起伏,但灯光永远是水平的


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 13回复贴,共1页
<<返回arduino吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示