资源简介
单片机C语言PID控制
代码片段和文件信息
#include “control.h“
/**************************************************************************
作者:平衡小车之家
我的淘宝小店:http://shop114407458.taobao.com/
**************************************************************************/
/**************************************************************************
函数功能:所有的控制代码都在这里面
TIM1控制的定时中断
**************************************************************************/
u8 Flag_Velocity=1;
int TIM1_UP_IRQHandler(void)
{
if(TIM1->SR&0X0001)//5ms定时中断
{
TIM1->SR&=~(1<<0); //===清除定时器1中断标志位
if(Menu_MODE==1)
{
Encoder=Read_Position(4); //===更新位置信息
Moto=Position_PID(EncoderTarget_Position); //===位置PID控制器
}
else if(++Flag_Velocity>2) //===速度控制20ms一次,一般建议10ms,因为这里使用USB供电,速度比较慢,20ms可以延长获取速度的单位时间,提高数值
{
Flag_Velocity=1;
Encoder=Read_Velocity(4); //===更新速度信息
if(Encoder<0) Encoder=0;
Moto=Incremental_PI(EncoderTarget_Velocity); //===速度PI控制器
}
if(delay_flag==1)
{
if(++delay_50==5) delay_50=0delay_flag=0; //===给主函数提供50ms的精准延时
}
Xianfu_Pwm(); //===PWM限幅
if(Flag_Stop==0) Set_Pwm(Moto); //===赋值给PWM寄存器
else Set_Pwm(0); //===赋值给PWM寄存器
Led_Flash(100); //===LED闪烁指示系统正常运行
Key(); //===扫描按键变化
Voltage=Get_battery_volt(); //===采集供电电压
}
return 0;
}
/**************************************************************************
函数功能:赋值给PWM寄存器
入口参数:PWM
返回 值:无
**************************************************************************/
void Set_Pwm(int moto)
{
if(moto<0) AIN2=1 AIN1=0;
else AIN2=0 AIN1=0;
PWMA=myabs(moto);
}
/**************************************************************************
函数功能:限制PWM赋值
入口参数:无
返回 值:无
**************************************************************************/
void Xianfu_Pwm(void)
{
int Amplitude=7100; //===PWM满幅是7200 限制在7100
if(Moto<-Amplitude) Moto=-Amplitude;
if(Moto>Amplitude) Moto=Amplitude;
}
/**************************************************************************
函数功能:按键修改运行状态
入口参数:无
返回 值:无
**************************************************************************/
void Key(void)
{
int tmptmp2Position_Amplitude=260Velocity_Amplitude=5;
tmp=click_N_Double(50);
if(Menu_MODE==1) //改变运行位置
{
if(tmp==1)Target_Position+=Position_Amplitude;
if(tmp==2)Target_Position-=Position_Amplitude;
}
else //改变运行速度
{
if(tmp==1)Target_Velocity+=Velocity_Amplitude;
if(tmp==2)Target_Velocity-=Velocity_Amplitude;
}
if(Target_Velocity>60)Target_Velocity=60; //速度最大值限幅
if(Target_Velocity<0)Target_Velocity=0; //速度最小值限幅
tmp2=Long_Press();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5403 2020-01-02 21:22 单片机PID控制学习程序\BALANCE\CONTROL\control.c
文件 11154 2016-02-22 15:13 单片机PID控制学习程序\BALANCE\CONTROL\control.c~RF18b9998.TMP
文件 582 2016-05-06 09:55 单片机PID控制学习程序\BALANCE\CONTROL\control.h
文件 0 2016-02-22 11:47 单片机PID控制学习程序\BALANCE\CONTROL\MFC10DB.tmp
文件 0 2016-02-23 08:58 单片机PID控制学习程序\BALANCE\CONTROL\MFC3A5E.tmp
文件 2891 2015-07-09 14:05 单片机PID控制学习程序\BALANCE\DataScope_DP\DataScope_DP.C
文件 586 2015-07-09 14:05 单片机PID控制学习程序\BALANCE\DataScope_DP\DataScope_DP.h
文件 19342 2012-12-14 11:16 单片机PID控制学习程序\BALANCE\DMP\dmpKey.h
文件 6765 2012-12-14 11:16 单片机PID控制学习程序\BALANCE\DMP\dmpmap.h
文件 84104 2015-07-09 14:05 单片机PID控制学习程序\BALANCE\DMP\inv_mpu.c
文件 4335 2015-07-09 14:05 单片机PID控制学习程序\BALANCE\DMP\inv_mpu.h
文件 57839 2015-07-09 14:05 单片机PID控制学习程序\BALANCE\DMP\inv_mpu_dmp_motion_driver.c
文件 3386 2015-07-09 14:05 单片机PID控制学习程序\BALANCE\DMP\inv_mpu_dmp_motion_driver.h
文件 2105 2015-12-07 15:52 单片机PID控制学习程序\BALANCE\filter\filter.c
文件 399 2015-12-07 15:52 单片机PID控制学习程序\BALANCE\filter\filter.h
文件 11099 2015-12-04 10:34 单片机PID控制学习程序\BALANCE\MPU6050\MPU6050.c
文件 14787 2015-10-17 15:04 单片机PID控制学习程序\BALANCE\MPU6050\mpu6050.h
文件 6211 2020-01-02 21:42 单片机PID控制学习程序\BALANCE\show\show.c
文件 332 2017-03-11 14:51 单片机PID控制学习程序\BALANCE\show\show.h
文件 4685 2016-05-06 10:25 单片机PID控制学习程序\HARDWARE\ADC\adc.c
文件 487 2016-04-23 15:27 单片机PID控制学习程序\HARDWARE\ADC\adc.h
文件 2887 2015-06-07 00:48 单片机PID控制学习程序\HARDWARE\DataScope_DP\DataScope_DP.C
文件 581 2015-05-04 12:37 单片机PID控制学习程序\HARDWARE\DataScope_DP\DataScope_DP.h
文件 4201 2016-07-01 19:38 单片机PID控制学习程序\HARDWARE\ENCODER\encoder.c
文件 558 2016-05-04 08:56 单片机PID控制学习程序\HARDWARE\ENCODER\encoder.h
文件 2423 2017-11-15 19:42 单片机PID控制学习程序\HARDWARE\EXTI\exti.c
文件 454 2017-11-15 19:23 单片机PID控制学习程序\HARDWARE\EXTI\exti.h
文件 10779 2015-12-07 15:46 单片机PID控制学习程序\HARDWARE\IIC\IOI2C.c
文件 3118 2015-11-03 08:45 单片机PID控制学习程序\HARDWARE\IIC\IOI2C.h
文件 2858 2017-11-15 19:24 单片机PID控制学习程序\HARDWARE\KEY\key.c
............此处省略169个文件信息
- 上一篇:安卓c语言开发SDL2+opengles
- 下一篇:围棋C语言代码
评论
共有 条评论