#include "adc.h"
#include "common.h"
#include "usart.h"
#include "L298N.h"
#include "senser.h"
#include "NVIC.h"
#include "ir1838.h"
#include "DMA.h"
#define kP 11
#define kdI 200 //nI除数 kI=1/kdI
#define kD 120
#define kdPID 28//PID除数
#define D_INTERVAL 1200
#define I_INTERVAL 15
#define ONLINE_MINVAL 25
#define POSVAL_MAX SENSER_MAXVAL*2//位置量值域(-POSVAL_MAX,POSVAL_MAX)
#define SPEED_MIN 1700
#define SPEED_NORMAL 1950
#define SPEED_MAX 2000
#define CHECK_WAIT_TIMEOUT 100000
extern u16 ADC_DataBuffer[ADC_DMA_BUFFER_LENGTH];
extern u32 senVals[3];
u16 mod=0;
int main()
{
s32 PID;
s32 nP=0;
s32 nI=0;
s32 nD=0;
s32 nLastP=0;
u32 nDC=D_INTERVAL;
u32 nIC=I_INTERVAL;
s32 carSpeed=SPEED_NORMAL;
u32 checkWait=0;
u8 adjustMod=100;
common_init();
ADC_init();
#ifdef USART_ON
usart_init();
#endif
L298N_init();
#ifdef IR_CTRL_
IR1838_init();
#

本文档介绍了一个基于STM32的智能小车PID调速程序,利用MATLAB进行算法设计,结合ADC、DMA、IR传感器等技术实现小车的寻迹与速度控制。代码中详细阐述了PID参数的计算过程,包括比例、积分、微分项的处理,并通过实时调整左右电机的速度来确保小车保持在赛道中央。
最低0.47元/天 解锁文章
5743

被折叠的 条评论
为什么被折叠?



