关键词不能为空

当前您在: 主页 > 英语 >

用51单片机做小车的控制

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 23:54
tags:

-

2021年2月1日发(作者:沭)





51

< p>
做小车的相关思路和程序







51< /p>


小车作为一种入门小车,其基本原理与飞思卡尔比赛的小车相似,共分为硬件和软


件两个部分。其中软件部分可分为传感器数据采集,舵机控制,速度控制等,这里现在对


51


小车的软件进行一个详细的介绍







1.


程序思路概述:



首先


51


单片机需要通过红外传感器监测道路信息,然 后将传感器得到的数据进行转换。最


后将转换后的数据通过某种控制算法,


计算出舵机和电机的控制量,


使小车能够沿着跑道行


驶。主体控制流程可以表示为如下图形:









2.


程序算法



2.1


数据采集


小车传感器为8个红外对管,


经过电压比较器后,


每个红外 对管都有0和1两种状态。


因此,


1



8个红外对管产生的数据刚好为1个字节。因此程序有两种方式将这8位数据读入:


1


、可


以将I


/< /p>


O口数据当做一个字节,直接赋给一个字符变量;


2


、将


8


位数据按位读取,分别赋

给字符变量的每一位。我们的示例程序中采用的就是第二种方法。










2.2


数据处理





由于读入的数据并不方便直接参与 控制计算,


因此先将该数据集分成16类,


分别对应于小


车不同的位置信息,由


-7~+7


表示,其中


+7


表示引导线位于小车最左侧,


0< /p>


表示引导线位


于小车中部,


-7


表示引导线位于小车最右侧,


8


表示未检测到引 导线或其他错误情况。







2.3


控制算法


上面的转换后的数据可以作为控制计算的输入,


即小车与赛道的偏差信息。


方向的控制算法


可以采用位置型


PD

< p>
算法。



其中P为比例环节,

简单的说就是根据当前小车与赛道的偏差直接进行控制,


偏离多少就转


多少,偏离越多,舵机转向越多。


可以通过调节比例系数改变转向的幅度。系 数越大,转向


幅度越大,转向越快。



D称为微分环节



这里的微分信息指上面偏差信息的微分,


可以简单理解为小车偏离赛道的


速率。


可以 简单的将本次的偏差信息与上一次偏差的差值算作微分项。


微分项的控制方法是


说,


小车偏离跑道越快,


方向就要转的越多,< /p>


反之则转向越小。


因此当小车逐渐靠近跑道时,

< br>微分项可以使小车偏转量减小,


使小车不至于偏向另一边。


可以通过改变微分项的系数来改


变这种调节作用的程度。


一般 来讲,


微分系数越大,小车对于弯道的响应就越灵敏,行驶时


也 更稳定。



由于小车在不同的位置时,


可能需要不同的比例系数或微分系数,


因此可以考虑在不同的情


况下,采用不同的系数进行运算。示例程序中采用的就是这种方法。




速度控制也可以采用PD算法进行控制。

为了使程序简单化,


示例程序中采用了匀速的控制


方式。想 要提高成绩的同学可以自行加入速度控制程序











2




.


4生成 PWM



由于


51

单片机没有


PWM


模块,因此需要通过通用


I/O


口进行模拟来输出舵机和电机所需


< p>
PWM


波。



可以分别使 用一个定时器来作为一路


PWM


波的计时器。先将


I/O


口置位,通过高电平时间


确定好定时器的初值 ,当定时器产生中断时,再将


I/O


口清零,并设定低电平时间 ,由此循


环即可产生


PWM


波。其中, 高电平时间由上面的控制计算得出,低电平时间由


PWM


周期< /p>


减去高电平时间得到。




鲫鱼电子工作室开发的


51


智能车是一种入门型智能 小车,基本原理和参加飞思卡尔比赛的


小车相似,


但是其制作要 比正式比赛的小车简单。


目的是为了让大家更快地进入飞思卡尔小


车的制作,对智能小车有个更好的理解。



51


小车分为硬件和软件两个部分,其中硬件又分为三个主要模块,


51


核心板模块,传感器


模块,扩展板模块。软件部分分为传感器数据采集, 舵机控制,速度控制等。






51


核心板



51


核心板包括几个小的部分,下载部分,单片机最小系统部分 ,


led


用户灯,通用


IO

< p>
接口。


这次开发的


51


核 心板的主控芯片为


STC


,选择这块芯片的一个重要原因是他的 下载调试方


便,可以通过串口直接下载,同时又有


51


单片机的所有资源。



下载部分主要使用了一片


PL2303


,它是一片


USB


转串口功能的芯片,由于现在大部分计


算机都不包括串口,但每台计算 机都有


USB


口,于是我们想是否可以通过

USB


下载,最后


在网上找到了一片


USB


转串口的芯片,这样我们下载程序将更简单,不需要再单独购买


51


下载器,极大地方便了同学们的调试。



下载部分具体原理图如下:




#include //


包括一个


52


标准内核的头文件



#include



/*****************


定义数据类型(方便移植)


**************** */


typedef unsigned char UINT8;


typedef char SINT8;


typedef unsigned int UINT16;


typedef int SINT16;


/****************************** ****************************/


< br>/*****************


定义布尔值(增强程序可读性)


*************/


#define HIGH_LEVEL 1


#define LOW_LEVEL 0


/******************************************** ***************/


3




/**********


定义相关常 数


(移植于不同的小车时,


需根据实际情况改变该常数


***********/


#define SERVOMID 1270 //


舵机中值



#define SERVOMOSTLEFT 1680 //


舵机左值



#define SERVOMOSTRIGHT 870 //


舵机右值



#define SERVO_PERIOD 20000 //


舵机


PWM


周期:


20ms


,晶振


12M


公 式:计数值


=


定时时间


*


晶振



//


频率

< p>
/12


,如


20ms


:< /p>



计数值


=0.02 s * 12 000 000 Hz/12 = 20000


#define MOTOR_PERIOD 10000 //


电机


PWM < /p>


周期:


10ms


,晶振

< br>12M


/******************************* *******************************/


< p>
/*****************


输出口定义


*************************/


sbit SevorPort = P0^1;


sbit MotorPort = P0^6;


sbit P20 = P2^0;


sbit P21 = P2^1;


sbit P22 = P2^2;


sbit P23 = P2^3;


sbit P24 = P2^4;


sbit P25 = P2^5;


sbit P26 = P2^6;


sbit P27 = P2^7;


/************************************************ *******/



//**************** *


定义公共变量


********************* *****/


UINT8 KServoD=10; //


舵机


D


参数



UINT8 KServoP[5]={65,40,10,40,65}; //


舵机分段


P


参数



UINT8 SampleData=0; //


采样数据



SINT8 Offset=0; //


当前赛道位置



SINT8 LastOffset[2]={0}; //


上一次赛道位置



UINT16 SevorPWM=0; //


舵机


PWM


高电平时间



UINT16 MotorPWM=0; //


电机


PWM


高电平时间



/********** *********************************************/




/************** ******


初始化函数


***************** ********/


void Init(void)


{




TMOD=0x11; //


定时器


0



16


位工作方式


;


定时器

< br>1



16


位工作方式





TR0=1; //


启动定时器


0




TR1=1; //


启动定时器


1




ET0=1; //


打开定时器


0


中断





ET1=1; //


打开定时器


0


中断





EA=1; //


打开总中断



4


-


-


-


-


-


-


-


-



本文更新与2021-02-01 23:54,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595955.html

用51单片机做小车的控制的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文