2020年“TI”杯湖南省大学生电子设计竞赛
坡道行驶电动小车(C题) 组员:李武 罗绮峰 陈波
摘要
根据题目要求,我们设计了一个基于MSP430F5529为处理器的四轮电动坡道行驶小车,由其输出的四路PWM信号控制直流减速TT电机,实现了小车速度可控,匀速行驶的功能。采用HIP4082驱动MOSFET构成驱动电路,通过AMS1117-5.0稳压电路实现单片机的稳压供电,有效地提高了电能的利用率和单片机的工作效率。同时通过电压自检测电路实现降压的处理,然后经单片机的ADC采集电压升降处理后输入电压,将采集到的电压幅值与标准的电压7.2V进行对比,然后单片机根据电压的比值自动调节输出PWM,有效地减小了电压变化对小车运动的影响。另外采用512线增量式编码器进行速度闭环处理,使得小车在行驶过程中更加稳定,能够匀速的完成任务。经测试,小车可以在规定的跑道上匀速行驶并且小车上的标记点与停车标记中心线的垂直距离小于等于2cm,而且小车在运动的过程中可以通过SYN6288语音播报小车开始行驶和停止时的状态。本作品实现了基本部分及发挥部分的全部要求。
关键词:智能小车;MSP430F5529;红外循迹;PID;坡道行驶
一、方案论证
1.1系统方案
由题目要求,我们设计了一个坡道行驶的四轮电动小车。此小车由ST188光电传感器,独立按键,OLED,SYN6288语音播报,HIP4082驱动电路和直流减速TT电机构成。小车在铺设画有1cm×1cm黑白间隔的线条的1m×1m的木板上面行驶。系统通过独立按键输入,选择系统的模式并输入必要的数据启动小车,然后通过ST188光电传感器检测黑方块,从而控制小车的运动状态。同时在电压自检测电路中先给输入电压进行降压处理,然后经单片机的ADC采集降压处理后的输入电压,将采集到的电压幅值与标准的电压7.2V进行对比,然后将该比值的系数来校正PWM。系统采用512线增量式编码器进行速度闭环处理。系统的总体框图如下图1所示。
图1 系统总体框架
1.2模块选择
1.2.1主控芯片选择
因为本题要求必须使用TI的MSP430或者MSP432芯片,因此只有以下两种方案:
方案一:采用MSP432P401R芯片为控制核心, 该芯片功能与MSP430F5529相似,是一款高性能的MCU,带浮点单元和DSP加速功能的48MHz,32位ARM Cortex M4F。但是此题目没有必要用到这么高性能的MCU,成本比较高。
方案二:采用MSP430F5529芯片为控制核心,具有功耗低,速度快,片内资源丰富,I/O口多,数字噪声低等特点。完全可以实现本系统的各个设计任务,具有很好的响应速度。
综上所述,选择方案二。
1.2.2 电机选择
方案一:采用步进电机,可准确控制转速和旋转的角度,但是体积大,质量大,并且需要另配驱动器,成本较高。安装比较复杂。而且需要用编码器将电机速度测试出来,从而控制电机转动的角度。但是该题目限重,因此没有必要选用步进电机,而且系统中不需要这么精准的控制,该电机工作电流大,能量消耗大。
方案二:采用直流减速TT电机,它是一款低功耗齿轮减速电机,体积较小,速度容易控制,且重量较轻,使小车能够在最轻、耗能最低的条件下行驶。
综上所述,采用方案二。
1.2.3 寻迹传感器选择
方案一:采用ST188光电传感器检测黑方块与白方块, 该检测的方法简单,操纵简单,能量消耗较低,质量较轻,成本低,响应时间短,可实现非接触检测。
方案二:采用线性CCD传感器,该传感器重量较轻,体积小,可感测及识别精细物体,误差小,但是其成本过高,算法解析复杂。
综上所述,所以采用方案一。
1.2.4 驱动选择
方案一:采用L298N驱动,该驱动具有两个使能端,2组输出口,但是其电源需要的输入电压较高,若用该驱动,需要大量的I/O口,消耗能量较大。因此不是我们的理想驱动。
方案二:采用MOS管双电机IRLR7843驱动,具有两组输出口,采用H桥式结构,采用滤波大电容使得电路更加稳定,低内阻大功率MOS芯片,并且还具备驱动隔离芯片防止影响单片机,使得该电机能够长时间正常工作。
通过大量的实验论证,我们选择方案二。
二、系统理论分析与计算
2.1系统理论分析
设小车的总质量为m,小车的重心在小车的中心,重力加速度为g,坡度角为θ,电机产生的牵引力为F,静摩擦力为f。当F>mgsinθ+f时,小车处于加速上移状态;当F= mgsinθ+f时,小车处于平衡状态(静止或者匀速运动状态);当F<mgsinθ-f时,小车处于加速下移状态。因为此题目要求是匀速行驶,所以F= mgsinθ+f。系统通过调节电机转速的大小来控制牵引力,进而控制小车的运动,加上ST188光电传感器的实时检测,可以实现小车在木板上进行匀速的坡道行驶并且在规定的地方停车。当小车停止在停止线时其受力分析图如图2所示。
图2 受力分析图
2.2电枢电压计算
电机通过PWM调速。在PWM控制的系统中,按一个固定的频率来控制I/O口的输出电平,并且通过高低电平时间的长短,通过改变电压的占空比来改变平均电压的大小,从而控制电机的转速。电枢电压的平均值计算公式为:
Ua=(t1/t1+t2)Us=αUs
其中t1为高电平时间,t2为低电平时间,T为周期,α为占空比。
2.3电压自检测计算
电压自检测电路是利用在电路中阻值分压的特点,使电压降低到能够给单片机上的adc进行电压幅值安全采集,进而能够实时知道降压处理后的电压幅值。然后再乘以1/k即可得到真正给单片机供的电压。电压自检测的计算公式为:
Uβ=VER12/(R12+R11)
其中Uβ是电源模块降压以后的电压,VE是电源模块输入电压。
2.4 增量式PID计算
系统采用增量式PID,将当前时刻的控制量和上一时刻的控制量做差,以差值为新的控制量,其计算公式为:
Δu[n]=Kp{e[n]-e[n-1]}+Kie[n]+Kd{e[n]-2e[n-1]+e[n-2]} 其中Kp为比例系数,Ki=Kpfile:///C:/Users/bobo/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png为积分常数,Kd= Kpfile:///C:/Users/bobo/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png为微分常数。
三、电路与程序设计
3.1.1驱动电路
MOS管双电机H桥驱动电路主要由HIP4082,MOS管,隔离器和滤波整流电路组成,选用HIP4082芯片驱动MOS管,该芯片是低内阻大功率高性能芯片,能够减少输出整流器的导通损耗,并且可提高电机效率和抗噪能。该驱动电路的原理为:H桥上的4个场效应管相当于四个开关,N型管在栅极为高电平时导通,低电平时关闭。场效应管是电压控制型元件,栅极通过的电流几乎为“零”。要使电机运转,必须使对角线上的一对三极管导通。当Q1,Q6导通,Q2,Q5截止时,电流将从左至右流过电机,从而驱动电机按特定方向转动(假定是顺时针旋转)。当三极管Q2和Q5导通,Q1和Q6截止时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(逆时针旋转)。其驱动电路如图3所示。
图3 驱动电路
3.1.2蜂鸣器电路
蜂鸣器电路主要由三极管和蜂鸣器构成,其电路图如图4所示。当执行指定的模式时和乒乓球达到稳定时,单片机I/O口输出合适频率的PWM波,通过三极管驱动蜂鸣器发出响声,起指示作用,1秒后停止输出PWM波。
图4 蜂鸣器电路
3.1.3 SYN6288语音播报电路
语音模块电路主要由电容,三极管和SYN6288构成,其电路图如图5所示。其原理为:当MCU的TXD输出电平为0时,NPN三极管截止,RXD收到的电平为1。MCU的TXD输出电平为1时,NPN三极管导通,RXD收到的电平为0。
图5 语音提示模块
3.1.4 电压自检测电路
通过电压自检测电路实现降压的处理,然后经单片机的ADC采集电压升降处理后输入电压,将采集到的电压幅值与标准的电压7.2V进行对比,然后单片机根据电压的比值自动调节输出PWM,在一定程度上可以减少电压变化对单片机运行的干扰。电压自检测电路如图6所示。
图6 电压自检测电路
3.1.5 ST188光电传感器电路
ST188光电传感器的原理是根据智能小车在画有黑方块的白纸道路上运动时, 由于光线对黑方块和白方块的反射系数有差别, 这样光电传感器可根据接收到的反射光强弱来判断白纸道路与黑方块的不同。当检测的黑方块时,光电传感器输出低电平;当检测的白方块时,光电传感器输出高电平。然后通过检测单片机端口的电压高低来实现寻迹功能。其电路图如图7所示。
图7 ST188光电传感器
3.2 程序设计
3.2.1程序流程图
系统选用MSP430F5529作为控制核心,程序流程图如图8示。系统内部主要有电压自校准电路、ST188光电传感器、独立按键、OLED、SYN6288语音播报。系统上电后,软件系统完成初始化,用户通过独立按键选择模式并输入坡道角、设定时间,然后通过电压自检测电路实现降压的处理,然后经单片机的ADC采集电压升降处理后输入电压,将采集到的电压幅值与标准的电压7.2V进行对比,然后单片机根据电压的比值自动调节输出PWM,在一定程度上可以减少电压变化对单片机运行的干扰。光电传感器通过反射光的强弱来判断黑方块与白方块,如果没有识别到停止线时,小车继续行驶;如果识别到停止线时,小车停止,此时语音播报发出声音,表明小车成功的到达停止线,程序结束。
图8 程序流程图
四、测试方案与测试结果
4.1测试仪表
仪器名称 | | 秒表 | | 电子秤 | | VC9801A+数字万用表 | | 2m卷尺 | | 自制1m×1m木板 | |
4.2测试结果和分析
4.2.1.测试结果
表1:坡度角为0o测试
表2:坡道角度为10o测试
表3:10o-30o坡道角测试
表4:发挥部分:35o坡道角测试
4.2.2测试结果分析
对测试现象及测试结果分析可知:
1. 小车上电,一键启动,能够按照指定的路线完成自动行驶,同时在小车启动和停止时设置有语音播报的功能,行驶的过程中,小车无卡顿,打滑或者停止的现象,行驶的过程中能够全程匀速的完成任务。
2.系统可以控制小车匀速的到达停止标记线的设定位置并且在行驶的过程中没有碾压或者脱离标记线。 小车到达停止线时,车上的标记点距停止线的误差约为0.3cm,设定的行驶时间和小车实际行驶的时间之间的误差约为0.5s。
结合上述测试数据,系统的误差在允许范围内,本系统基本完成了题目的基本要求和发挥要求。
4.3结论
本系统完成了题目所有的基本要求,并将发挥要求中的坡度角扩展至450。系统利用ST188光电传感器自动检测黑方块,实现小车坡道行驶的功能。系统通过电压自检测电路实现降压的处理,然后经单片机的ADC采集电压升降处理后输入电压,将采集到的电压幅值与标准的电压7.2V进行对比,然后单片机根据电压的比值自动调节输出PWM,在一定程度上可以减少电压变化对单片机运行的干扰。系统还具有自校准、自检测等功能。系统稳定性较高,硬件电路布局合理,软件算法精度高,人机交互友好。
五、参考文献
· [1]朱婷,叶俊.教育机器人小车循迹部分的设计与改进[J].电子技术与软件工程,2017(05):260-261.
· [2]邱威,黄泰,张华.基于MSP430的电动小车无线充电系统[J].电子制作,2020(19):48-50+57.
· [3]朱然,侯凯祥,曹顺霞.智能小车无线寻迹控制系统设计[J].电子设计工程,2019,27(06):6-8+13.
· [4]电机控制技术[M]. 机械工业出版社 , 王志新, 2010.
· [5]李国亮.一种用于智能小车的驱动系统设计与实现[J].自动化应用, 2017 (6) :76-78.
· [6]降帅, 孟立凡.智能小车转弯算法改善单元的优化设计[J].电子技术应用, 2018, 44 (5) :85-88.
· [7]杜云, 魏雅.基于单片机的智能小车设计制作与应用[J].自动化与仪器仪表, 2016 (1) :67-68.
附录1:源程序
Int mian()
{
SMCLK_OUT();
LED_Init(LED_ALL); //LED灯初始化
TIMER_PWM_Init(TIMER_A0,1000,TIMER_CH1,TIMER_CH2,TIMER_CH3,TIMER_CH4);
pwm_Init();
Set_Vector_Handler(VECTOR_TIMER_A1_CCR0,TIMER1_A0_IRQ_Handler);
P2IE |= BIT1; //设置p2.1可以中断 (按键)
P2IES |= BIT1; //设置p2.1为下降沿中断
P2IFG &= ~BIT1;//设置p2.1为0 无中断请求
P2REN |= BIT1; //设置p2.1为上下拉电阻使能
P2OUT |= BIT1; //上拉电阻
P2DIR |= BIT0;
P6DIR |= BIT1;
P2DIR |= BIT4;
P2DIR |= BIT5;
P2OUT |= BIT0;
P2OUT |= BIT4;
P6OUT &= ~BIT1;
P2OUT &= ~BIT5; //IN端口配置
P4DIR &=~BIT1;
P4REN |=BIT1;
P4OUT |=BIT1; //上拉,自动发车端口
P4DIR &=~BIT2;
P4REN |=BIT2;
P2DIR &=~BIT7;
P2REN |=BIT7;
P2OUT |=BIT7; //上拉,检测低电平
EnableInterrupts();
while(1)
{
while(P4IN&BIT1);//高电平时一直在循环中,低电平发车,跳出循环
zhuangtai();
if(P4IN&0X04)
{
xunji(); //寻到黑点停车
}
else //不停车
{
fdata=-1;
xunji();
}
}
}
#pragma vector=PORT2_VECTOR //固定格式,声明中断向量地址
__interrupt voidKey_interrput() //中断组:P1、P2(按键中断)
{
if(P2IFG&BIT1)
{ DELAY_MS(10);
if(P2IFG&BIT1)
{while((P2IN&BIT1)==0);//松手检测
P2IFG &= ~BIT1; //清除中断标志位
fdata=-1;
P4OUT^=BIT7;
}
}
|