智能车光电组比赛介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高电平1.5ms
控制算法:PID
P:比例控制 I:积分控制 D:微分控制 跟随系统误差变化 减小系统稳态误差,会增加控制滞后性 增加快速性,但会引起振荡
分位置式PID和增量式PID
舵机控制:开环控制
黑线位置 舵机占空比
舵机转角
PWM占空比寄存器 = P*白线位置
位置式PID
电机控制:闭环控制
AD模块
特点: 8/10 位精度 • 7 us, 10-位单次转换时间. • 采样缓冲放大器 • 可编程采样时间 • 左/右 对齐, 有符号/无符号结果数据 • 转换完成中断 • 1到16转换序列长度 • 连续转换模式
A/D 寄存器
如何使用?
控制寄存器 状态寄存器
转换结果寄存器
SYNR
REFDV
I/O口使用
1.
2. 3.
4.
使用I/O口方向寄存器初始化I/O口为输出口或者 输入口 使用I/O口数据寄存器读入或者输出数据 举例:DDRA = 0xFF; //初始化A口八个引脚为输 出 PORTA = 0xFF;//A口输出高点平 各个I/O的方向寄存器和数据寄存器可查询数据 手册
锁相环
作用:提高单片机总线频率 初始化步骤:CLKSEL=0X00; // disengage PLL to system
PLLCTL_PLLON=1; // turn on PLL SYNR =0x40 | 0x03; // pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz; REFDV=0xc0 | 0x01; POSTDIV=0x00; _asm(nop); // BUS CLOCK=32M _asm(nop); while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system;
给定速度 电机机占空比 电机转速
测速模块 增量式控制:u(k) = u(k-1)+
?
Control_Speed = Pre_Control_Speed + Speed_P*(This_offsetPre_offset)+Speed_I*This_offset+Speed_D*(This_offset-2*Pre_offset+Pre_pre_offset);
ASCIF - A/D 顺序完成标 志位
ATDCTL3
转换序列长度:ATD的每次启动要进行若干次
扫描循环,每次扫描循环称为一个转换序列
转换结 果对齐 方式, 1=右 对齐零 0=左 对齐零
FIFO 1 = 结果寄存器没有映射到转换 序列 0 = 结果寄存器映射到转换序 列
ATDCTL4
SMP[2:0]
PRS[4:0]
500HZ~2MHZ
ATDCTL5
MULT 1 = 多通道转换 0 = 单通道转换
定时中断
RTICTL P246
PWM模块
Ton Toff
Average
什么是 PWM?
占空比=高电平时间/周期 =Ton/Tperiod
0%
Tperiod
10 %
50 % 90 % 99 %
舵机中心值
ATD0CTL0
作用:设定AD转换通道数。表格见数据手册P274-275
ATDCTL1
ETRIGSEL:外部触发转换源选择,一般保持默认即可 SRES[1:0]:决定AD转换精度是8,10或者12位 SMP_DIS:设置转换前是否需要对内部电容放电,默认0即 可 ETRIGCH[3:0]:选择触发转换源,表格见P276
光电智能车制作
一. 二. 三. 四.
硬件制作 单片机 控制算法 数据手册的使用
硬件制作
红外对管工作原理图
光电demo板AD口
光电管排布
测速
价格:¥18左右 可测正反转 精度与编码器相当 淘宝、华龙均有
XS128
a) b) c)
d)
e)
锁相环初始化 I/O使用 AD模块 定时中断模块 PWM模块
不完全微分
微分控制反映的是误差信号的变化率,是一种有“预见”的控制,可以改善 系统的动 态性能。但是,微分有放大噪声信号的缺点,所以在控制系统中,纯微分环 节是很少用 的。 不安全微分是指串联一个低通滤波器(通常是一阶陨性环节)来抑制高频噪声 和克服 纯微分的不均匀性。其结构图如图四的(a)和(b)
ຫໍສະໝຸດ Baidu
ATDCTL2
ICLKSTP- A/D 等待模式 1 = 等待模式下,转换 0 = 等待模式下,禁止转 换 ASCIE - A/D 顺序完成中断使能,转换完 成触发中断
AFFC - A/D 快速转换完成标志位 清零 1 = 快速标志位清零顺序 每次 读取结果寄存器自动清零 0 = 正常标志位清零顺序 需要 手动对状态标志位清零
Speed_e[1] = Speed_e[0]; Speed_e[0] = PACNT; Speed_delta_e[1] = Speed_delta_e[0]; Speed_delta_e[0] = Speed_e[0] - Speed_e[1];
//偏差的偏差后移 //偏差的偏差赋值
lastMd = Md; Md = Speed_Kd1 * Speed_delta_e[0] + Speed_Kd2*Md; Speed_control=Pre_Speed_control+(int)(Speed_Kp * Speed_delta_e[0] + Speed_Ki * Speed_e[0] + (Md - lastMd));