控制算法—PID
角度传感器—北微倾角传感器(BW–VG200)

实现整平机平地铲的水平姿态角控制

include “sys.h”

include “delay.h”

include “usart.h”

include “led.h”

include “lcd.h”

include “key.h”

include “rs485.h”

include “usart3.h”

u8 Data1[5]={0x77,0x04,0x00,0x04,0x08};
int main(void)
{
u8 key=0;
u8 i=0,t=0;
u8 cnt=0;
u8 *p;
u8 offset=0;
double p2;

float curr;
float set;
float dk1;

// float dk2;
float t1;
float t2;
// float t3;
float En;
float En_1;
float En_2;
float Kp;
float Tsam;
float Ti;
float Td;
float Dout;
u16 calc_cycle;
float currpwm;
float weifu;
float pwm_cycle;
u8 rs485buf[14]={0};
// char xbuff[14]={0};
set =0;
currpwm=0;
pwm_cycle=10000;
calc_cycle=1;
// Td=20;
Ti=8;
Kp=500;
Tsam=10;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
uart_init(9600);
usart3_init(9600);  LED_Init();
LCD_Init();
KEY_Init();
POINT_COLOR=BLUE;
LCD_ShowString(30,210,200,16,16,"Receive Data:");           while(1)
{u3_Send_Data(Data1,5);delay_ms(30);
u3_Receive_Data(rs485buf,&key);if(key){printf("%c",key);for(i=0;i<key;i++){LCD_ShowxNum(30+i*32,230,rs485buf[i],3,16,0X80);    offset+=sprintf((char*)p+offset,"%x,",rs485buf[i]);if (i==7){if(rs485buf[i]>=10){p2=rs485buf[i]-10;}else{p2=rs485buf[i];}}if(i==8){p2=p2+rs485buf[i];}if(i==9){p2=p2+(rs485buf[i])/100.0;}}printf((char*)p);offset=0;LCD_ShowString(30,430,400,16,16,p);}t++; key=0;if(t==20){LED0=!LED0;//ÌáʾϵͳÕýÔÚÔËÐÐ   t=0;cnt++;                                     LCD_ShowxNum(30+48,150,cnt,3,16,0X80);  }

// p2=atof(rs485buf[i]);
p2=rs485buf[i];
curr=p2;
// curr=atof(p2);

En=set-curr;
dk1=En-En_1;

t1=Kp*dk1;

t2=(Kp*Tsam)/Ti;
t2=t2*En;

Dout=t1+t2;
currpwm=currpwm+Dout;
if(currpwm>pwm_cycle)
{
currpwm=pwm_cycle;
}
else if(currpwm<-pwm_cycle)
{
currpwm=-pwm_cycle;
}
currpwm=currpwm*1;
En_2=En_1;
En_1=En;

RCC->AHB1ENR |= (1<<2);

GPIOC->MODER |= 0X000AA000;

GPIOC->OSPEEDR |= 0x000ff000;
GPIOC->PUPDR |= 0x00055000;­

GPIOC->AFR[0] |= 0x22000000;
GPIOC->AFR[1] |= 0x00000022;

RCC->APB1ENR |= (1<<1);
TIM3->PSC = 83;
TIM3->ARR = 10000;
TIM3->EGR |= 1;

TIM3->CCMR1 |= 0x6060;
TIM3->CCMR2 |= 0x6060;

TIM3->CCR4 = 2000;if(currpwm<0){

TIM3->CCR1 = 0000;
TIM3->CCR2 = 10000;
TIM3->CCR3 = -currpwm;
//TIM3->CCR4 = 500;

TIM3->CCER |= 0x1111;

TIM3->CCMR1 |= 0x0808;
TIM3->CCMR2 |= 0x0808;

TIM3->CR1 |= 1;
}
if(currpwm>0)
{
TIM3->CCR1 = 10000;
TIM3->CCR2 = 0000;
TIM3->CCR3 = currpwm;
//TIM3->CCR4 = 500;

TIM3->CCER |= 0x1111;

TIM3->CCMR1 |= 0x0808;
TIM3->CCMR2 |= 0x0808;

TIM3->CR1 |= 1;
}
if(curr>-0.2&&curr<0.2)
{
TIM3->CCR1 = 0000;
TIM3->CCR2 = 0000;
TIM3->CCR3 = 0000;
//TIM3->CCR4 = 0000;

TIM3->CCER |= 0x1111;

TIM3->CCMR1 |= 0x0808;
TIM3->CCMR2 |= 0x0808;

TIM3->CR1 |= 1;
}

if (currpwm<0)
{
LCD_ShowChar(30+40,350,'-',16,0);
weifu=-currpwm;
LCD_ShowNum(30+48,350,weifu,5,16);
}
if (currpwm>=0)
{
LCD_ShowNum(30+48,350,currpwm,5,16);
}
}

}
无法实现姿态控制
// p2=atof(rs485buf[i]);
p2=rs485buf[i];
curr=p2;
// curr=atof(p2);
是不是这几句出现问题??
求大神解惑

PID实现水平姿态角控制相关推荐

  1. Ardupilot飞控姿态角与姿态角速度控制过程

    目录 目录 摘要 1.自稳模式初始化 2.自稳模式更新函数 这个代码主要把横滚输入,俯仰输入量转换成目标角度需要的范围,也就是+4500,-4500 3.姿态角速度代码控制过程分析 4.电机PWM控制 ...

  2. 固定翼飞机姿态角Backstepping反步法控制

    固定翼飞机姿态角Backstepping反步法控制 1. 数学建模 2. 系统解耦 3. 反步法控制律设计 4. 仿真结果 5. 仿真结果分析 6. 参考文献 在文章固定翼飞机数学建模入门(姿态角篇) ...

  3. Ardupilot飞控姿态角与姿态角速度控制过程分析(超长篇)

    目录 文章目录 目录 摘要 1.自稳模式初始化 2.自稳模式更新函数 **这个代码主要把横滚输入,俯仰输入量转换成目标角度需要的范围,也就是+4500,-4500** 3.姿态角速度代码控制过程分析 ...

  4. 姿态角(Euler角):yaw pitch roll

    姿态角和自由度相关联: 姿态角在控制,机械领域广泛使用: 这里,简单了解一下: 什么是姿态角(Euler角)? yaw,pitch,roll的识别? 步骤阅读 百度经验:jingyan.baidu.c ...

  5. STM32F4单片机陀螺仪获取姿态角(有代码)

    mpu6050简介: MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间.当连接到三轴磁强计时,MPU-60 ...

  6. 四元数解算姿态角解析

    本文来自:链接 一.概述 无人机求解姿态角有多种算法,但由于各种算法的自身限制及计算机计算速度的限制,所以我们需要选择一个较佳的求解算法,下面我们先来看看几种求解姿态角的算法: 1. 欧拉角法: 欧拉 ...

  7. 关于无人机四元数解算姿态角解析你知道吗?

    原文链接http://www.elecfans.com/d/705815.html 一.概述 无人机求解姿态角有多种算法,但由于各种算法的自身限制及计算机计算速度的限制,所以我们需要选择一个较佳的求解 ...

  8. 单片机开发教程3——串口发送MPU6050姿态角

    文章目录 1. 简介 1.1 模块原理图 1.2 引脚说明 1.3 接线方式 2. IIC通信 2.1 IIC介绍 2.2 例程讲解 3. 姿态解算 3.1 欧拉角 3.2 解算方法 3.3 一阶互补 ...

  9. matlab三维重建中将灭点坐标反归一化,基于灭点查找的姿态角测量方法在路面三维重建中的应用...

    基于灭点查找的姿态角测量方法在路面三维重建中的应用 第24卷第7期传感技术学报 V01.24No.7 2011年7月 CHINESEJOURNAL0FSENSORSANDAclUATORS July2 ...

  10. 加速度计、磁力计求初始姿态角

    1.几个基本概念. 地理坐标系:北东地.北为X轴.东为Y轴.地为Z轴. 机体坐标系:见下图. 姿态角:我的理解是,roll角是Zb在ZOY平面与Z轴的夹角.pitch角是Zb在ZOX平面与Z轴的夹角. ...

最新文章

  1. LeetCode-笔记-143. 重排链表
  2. 数组拷贝问题的解决方法
  3. 成为“首席AI架构师”的全流程方法论
  4. Tomcat意外宕机分析
  5. gis属性表怎么导成excel_使用Python脚本将Excel表批量赋值到ArcGIS属性表
  6. HTML5的未来 - HTML5 还能走多远?
  7. 黑马在线教育项目---15-16、datatables插件
  8. UIActionSheet
  9. nigix文件解析漏洞
  10. 特征缩放的效果:从词袋到 TF-IDF
  11. java的设计模式你了解多少?
  12. 信号量内核对象 semaphore
  13. javascript 学习指南--语法
  14. gitlab设置项目组成员权限
  15. 思科无线服务器,Cisco统一无线网络TACACS+配置
  16. CAD常见问题之创建一个新的键盘快捷方式
  17. 基于MATLAB的分子动力学自编程序—300K下Ar的分子运动
  18. 教授专栏13 | 陈雷:数据科学助力AI落地
  19. 创建telegram 机器人
  20. java/php/net/python教学评价系统设计

热门文章

  1. STM32F103移植程序到STM32F107注意事项
  2. JavaScript参考手册
  3. 认真推荐几个腾讯、滴滴、美团的大佬
  4. Spark机器学习库简介
  5. 发现一款牛逼的 IDEA 插件:检测代码漏洞,一键修复!
  6. SWFObject 2.0 官方文档二
  7. Python之Pygame.rect函数
  8. Xshell6与Xftp6教育版下载(免费)
  9. Unity实现播放Ogg格式视频功能实现
  10. java实现高德地图经纬度转换成百度地图