tmega128单片机控制的智能小车设计

第1章 绪论1.1          选题背景和意义

自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一直是人类的梦想。其中智能小车可以作为机器人的典型代表。其需要实现自动导引功能和避障功能就必须要感知导引线和障碍物,实现自动识别路线,选择正确的行进路线,使用传感器感知路线并作出判断和相应的执行动作。智能小车设计与开发涉及控制、模式识别、传感技术、汽车电子、电气、计算机、机械等多个学科。它可以分为三大部分:传感器检测部分,执行部分,CPU。现智能小车发展很快,从智能玩具到各行业都有实质成果,其基本可实现循迹、避障、检测贴片,寻光入库、避崖等基本功能,有向声控系统发展的趋势。

1.2          智能小车发展概况1.2.1 国外智能小车发展概况

国外的智能小车发展的也很火,这其中要数韩国的智能小车发展最为迅速。韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司资助下,以HCS12飞思卡尔单片机为核心构造的智能小车系统。该智能小车系统主要功能为寻迹。利用红外、电磁、CCD摄像头等设备进行,这其中有数CCD摄像头最为常见,行驶速度快,过弯灵敏,控制算法上大多采用PID算法进行闭环控制。

1.2.2 国内智能小车发展概况

国内智能小车系统做的比较成熟的有北京博创科技有限公司。随着全世界范围内汽车炸弹袭击事件的不断增多,因此安全检查部门对重大活动的汽车检查也逐步升级,由过去仅检查车内和车箱,升级为对包括车底的全方位检查。在全国两会安保工作中采用了北京博创科技的UP_UVSR智能小车机器人。UP_UVSR既是一款针对车底检查任务研发的机器人系统,该产品体积小、重量轻,便于携带,作业效率高;可以驶入车底进行检查,也可以固定安装与车辆通道口对过往车辆进行检查。

1.3 研究设计的目标

设计一个多功能智能小车系统。通过控制端的单片机检测按键的输入,根据输入的不同模式,控制无线模块发送不同的命令,小车上的车载控制器接收到无线信号,然后判断接收到的无线信号,来控制小车进入不同的模式,控制端的单片机通过LCD和语音模块进行参数信息的显示和播报。

1.4 方案选择1.4.1控制器选择分析

控制器主要用于各个传感器信号的接收和辨认、控制小车的电机的动作,是整个智能车系统的心脏,考虑到需要实现多个功能的要求及各个模块引脚的数目,列出以下方案,对其分析、论证、选择。
方案一:采用ATMEL公司的AT89S52。AT89S52单片机支持在线编程,易于操作,价格便宜,技术成熟,应用广泛,但是功能单一,如果系统电机驱动需要增加硬件,软件实现较为复杂;另外AT89S52 单片机引脚数较少,达不到各个模块端口的要求。
方案二:采用ATMEL公司的ATmega128。ATmega128是一款基于AVR内核,采用RISC结构,高性能,低功耗CMOS的8位单片机。32个通用工作寄存器,53个通用I/O口,实时时钟计数器(RTC),4个带有比较模式灵活的定时器/计数器,2个可编程的USART接口,1个8位面向字节的TWI(IIC)总线接口,8通道单端或差分输入的10位ADC(其中一个差分通道为增益可调的),可编程带内部振荡器的看门狗定时器,一个SPI接口,一个兼容IEEE1149.1标准的JTAG接口(用于在线仿真调试和程序下载),6种可通过软件选择的节电模式。两个具有预分频器、比较功能和捕捉功能的16 位定时器 /计数器。两路8 位PWM。6路分辨率可编程 (2 到16 位)的 PWM。
方案三:采用更加高端的处理器S3C2410。S3C2410是一款ARM内核的处理器,虽然具备了AVR的资源,但是根据本设计的实际情况,成本比较高,编程难度较大。
综合以上三种方案,考虑到系统的可行性,及功耗,性能,硬软件的成本,我选择方案二。

1.4.2 电源模块选择分析

方案一:采用传统的7805三端稳压电路,小车锂电池(7.4V)经过7805稳压后供给小车电机驱动电路和单片机、各传感器用电。由于小车电机启动瞬间需要消耗大量电流,长时间行使后,7805芯片会有明显的发烫现象,而且效率也很低,电池充满一次电后,小车行驶没多久,就得再次充电。   
方案二:采用LM2596开关型稳压芯片,配合电感和电容,一起搭配构成整体的电源电路。效率更高,性能也更加稳定。
综合以上两种方案,考虑到系统的性能和稳定性方面,选择方案二。

1.4.3 电机驱动模块选择分析

电机的驱动电路主要通过电机的正转和反转实现小车的前后或者左右方向的行驶。对于电机驱动模块有下面的几种方案。
方案一:使用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,成本低,加速能力强,但功率损耗大,特别是低速大转距运行时,通过电阻R的电流大,发热厉害,损耗大,对于小车的长时间运行不利。
方案二:采用继电器对电机的开或关进行控制,通过开关的切换对小车的速度进行调整。此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。
方案三:采用专用电机驱动芯片L298N,实现框图如图1-1所示。该芯片集成度高,占用空间小,主要应用于电机调速场合。L298N是恒压恒流双H桥集成电机芯片,可同时控制两个电机,且输出电流可达到2A。L298N的数据口分别与单片机的I/O口相连,作为调制信号。这样精度高并且稳定,可行性好,而且通过编程能实现人机分离,利于调试。
综合以上三种方案,考虑到AVR单片机自带有PWM功能,能实现直流减速电机精准控制,选择方案三。

1.4.4 循迹模块选择分析

循迹模块确保了小车在黑色边界线的区域内行驶。考虑到边界线是黑色的,可以考虑利用传感器辨认赛车场地黑白两种不同状态。对传感器的选择有以下方案。
方案一:采用热探测器。热探测器是利用所接收到的红外辐射后,会引起温度的变化,温度的变化引起电信号不同的输出,且输出的电信号与温度的变化成比例,当红外线被黑色线吸收时,温度会降低,电压变低,而红外线没有被吸收时,电压不变,单片机可以根据电压的变化来判断小车显示的情况。由于温度受环境的影响很大,当温度变高时,即使黑色线吸收了红外线,但是也会有很高的电压,导致单片机判断出错。
方案二:采用红外对射管。红外发射接收管测量距离近,但反应灵敏、准确。由于测量的高度离场地仅1 cm,距离很近,符合其特点。相比热探测器而言,其体积较小,价格低,安装较容易。
综合以上两种方案,考虑到系统的稳定性和安装的简便性,选择方案二。

1.4.5无线模块选择分析

无线模块是用来进行控制端和小车之间的通信,控制小车进入不同的功能模式。
方案一:采用目前流行的WiFi无线模式。WiFi覆盖面广,传输里远,但是其硬件开销成本太高,需要很深厚的理论知识基础。短时间内实现有一定的难度。
方案二:采用TI的CC1101无线传输方案。有效传输距离为100米,工作频率为387~464MHZ。主从一体,既可以作为发送端,也可以作为接收端,软件控制灵活、简单。此模块高灵敏度(1.2kbps下-110dDm,0.1%数据包误码率)、内置硬件CRC 检错和点对多点通信地址控制、较低的电流消耗(RX中,15.6mA,2.4kbps,433MHz、可编程控制的输出功率,最大输出功率+10dBm、无线唤醒功能,支持低功率电磁波激活功能,无线唤醒低功耗睡眠状态的设备等优点。
综合以上两种方案,考虑到系统开发成本和开发时间,选择方案二。

1.4.6语音模块选择分析

语音模块是用来进行在小车进入不同的功能模式和小车转向时,进行语音播报,使整个系统更加人性化些。
方案一:采用555定时器,发出特定频率的声波。缺点:只能发出一定频率的波,难以发出人类的声音。
方案二:采用ISD1760专业语音录放芯片。ISD1760可录、放音十万次,存储内容可以断电保留一百年。两种录放模式:独立按键录放模式和SPI总线操作录放模式。可处理多达 255 段信息。录音数据存储在芯片的 FLASH 内,没有经过任何压缩,所以有较好的音质和断电存储。多种采样频率对应多种录放时间。工作电压:2.4V-5.5V。静态电流:0.5 - 1 μA。工作电流:20mA
综合以上两种方案,考虑到系统的功能要求和控制的灵活性,选择方案二。

1.4.7显示模块选择分析

方案一:采用LCD 1602液晶进行小车参数的信息显示。1602为2行16列式的液晶,可以显示一些数字和英文字母以及一些简单的图案,但是1602内部无字库,要想显示汉字就得自己编写汉字码了,软件开发繁琐。
方案二:采用LCD 12864 字符式液晶。由于12864液晶内部带字库,且能够显示的信息也足够多,LCD1284和LCD1602二者在时序控制上差别不大,软件一直很容易。
综合以上两种方案,考虑到系统的要求,选择方案二。

1.4.8按键模块选择分析

方案一:采用4*4矩阵键盘,共计需要16个独立按键,占用单片机8个IO端口。
方案二:采用独立的按键,结合本系统,只需要6个独立按键即可满足要求,单片机只要检测对应的引脚电平几个判断那一按键被按下。
综合以上两种方案,考虑到硬件的开发成本和软件程序上的简便性,选择方案二。

1.5 可行性分析

采用ATmega128A单片机作为控制核心,其标准工作频率为8MHz,可以为本系统提供高速的计算能力和实时控制能力。学校的硬件基础实验室可以提供焊接和调试场地,调试设备只需要电烙铁、万用表、示波器等常用设备即可。
对大学开设的《C语言编程》、《单片机技术》、《模拟电子技术》、《Protel应用技术》等相关课程的学习,可以为该系统的设计与实现提供理论知识。

第2章 系统整体设计2.1 系统结构框图

本系统主要分为两个大模块,车载控制器模块和控制端的控制器模块。

2.1.1 车载控制器部分

车载控制器模块如图2-1所示。


图 2-1 车载控制器模块结构框图

从图2-1中可以看出,车载部分的控制器模块主要包括电源模块、电机驱动模块、循迹模块、避障模块、无线模块。各个模块的功能介绍如下。
1.电源模块:
采用7.4V的锂电池,经过降压电路,降到5V后供给整个系统。
2.电机驱动模块:
使用两片L298N驱动小车的电机。利用单片机的PWM功能,控制驱动芯片,驱动芯片再控制电机,实现小车的行驶转向功能。
3.循迹模块:
采用7对红外对射管作为单片机输入,来检测黑色循迹线路。
4.无线模块:
车载控制器控制无线模块,接收控制端的无线信号,然后根据所接收到的无线信号,车载控制器控制小车执行不同的功能。

2.1.2 控制端控制器部分

车载控制器模块如图2-2所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/348440.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.线性神经网络

目录 1.线性回归一个简化模型线性模型:可以看做是单层神经网络衡量预估质量训练数据参数学习显示解总结 2.基础优化方法小批量随机梯度下降总结 3.Softmax回归:其实是一个分类问题回归VS分类从回归到多类分类---均方损失Softmax和交叉熵损失 4.损失函数L…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商,那么阿里云香港服务器究竟怎么样呢?和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢? 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而,它们各自的特点和…

借助大语言模型快速学习金仓数据库 KES

基础概念 KES 人大金仓数据库管理系统 KingbaseES(KES) 是由 北京人大金仓信息技术股份有限公司 (以下简称“人大金仓”)自主研发的面向全行业、全客户关键应用的企业级大型通用数据库管理系统。产品融合了人大金仓在数据库领域几十年的产品研发和企业级…

SQL中distinct去重关键字的使用和count统计组合的使用

文章目录 SQL中distinct的使用1、distinct作用于单列2、distinct作用于多列3、 count()、distinct组合使用conut扩展知识 SQL中distinct的使用 1、distinct作用于单列 语法: select distinct 列名 from 表; distinct必须在列的前面,否则直…

Unity HoloLens2 MRTK 空间锚点 基础教程

Unity HoloLens2 MRTK 空间锚点 基础教程 Unity HoloLens2 空间锚点MRTK 空间锚点 准备Unity 工程创建设置切换 UWP 平台UWP 平台设置 下载并安装混合现实功能工具导入混合现实工具包和 OpenXR 包 Unity 编辑器 UWP 设置Unity 2019.4.40 设置Unity 2022.3.0 设置Unity 2022.3.0…

嵌入式仪器模块:音频综测仪和自动化测试软件

• 24 位分辨率 • 192 KHz 采样率 • 支持多种模拟/数字音频信号的输入/输出 应用场景 • 音频信号分析:幅值、频率、占空比、THD、THDN 等指标 • 模拟音频测试:耳机、麦克风、扬声器测试,串扰测试 • 数字音频测试:平板电…

天锐绿盾 | 无感知加密软件、透明加密系统、数据防泄漏软件

摘要:文件加密软件,包含禁止非授权的文件泄密和抄袭复制解决方案即使被复制泄密都是自动加密无法阅读,透明加密,反复制软件,内网监控,文件加密,网络安全方案,透明文件加密,加密文件,图纸加密,知识产权保护,加密数据; 通过绿盾信息安全管理软件,系统在不改…

项目五串行通信系统 任务5-3温度信息上传

任务描述:DS18B20测量温度,单片机采集温度数据转换显示代码,并通过串行口发送到上位机显示。 底层文件: /********************************************* ds18b20底层函数:能完成一次温度数据读取 ***************************…

docker 拉取不到镜像的问题:拉取超时

error pulling image configuration: download failed after attempts6: dial tcp 31.13.94.10:443: i/o timeout 首先设置国内的镜像源&#xff1a;复制下面直接执行 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF{"registry-mirrors"…

NSS题目练习9

[极客大挑战 2020]welcome 界面打开后一片空白&#xff0c;查看题目描述&#xff0c;翻译过来是 1.除了GET请求方法&#xff0c;还有一种常见的请求方法… 2.学习一些关于sha1和array的知识。 3.更仔细地检查phpinfo&#xff0c;你会发现标志在哪里。 补充&#xff1a; sh…

MicroPython 环境下使用 ESP32 连接百度 AI 大模型

前言 在物联网领域&#xff0c;ESP32 由于其丰富的功能和低功耗性能成为了一种流行的选择。结合 MicroPython&#xff0c;它为开发者提供了一个高效的开发环量&#xff0c;让 Python 程序员也能轻松介入到嵌入式系统和 IoT 应用的开发之中。本文将介绍如何利用这些技术&#x…

基于redis的分布式锁

一、redis分布式锁基本信息 1.详细讲解&#xff1a; Redis 分布式锁是一种用于控制分布式系统中多个进程对共享资源的并发访问的机制。通过 Redis 的原子操作和过期时间功能&#xff0c;可以实现一个简单而有效的分布式锁。接下来&#xff0c;我们将详细介绍其工作原理、基本…

引入tinyMCE富文本框在vue3中的使用

实现效果&#xff1a; 官网地址&#xff1a;TinyMCE 7 Documentation | TinyMCE Documentation 1.下载依赖&#xff08;我使用的版本是5.0 目前最新版本到7了&#xff09; pnpm/npm install tinymce5.0.0 -S pnpm/npm install tinymce/tinymce-vue -S 2.在public文件夹下…

模拟电子之电子管

如果要实现一个放大器的功能&#xff0c;需要一个固定的放大倍数&#xff08;Gain&#xff09;&#xff0c;这也就是说输出信号应该是跟随输入信号变化而变化&#xff0c;换句话说输出信号应该要受到输入信号的控制。 在电子学中使用的最多的两个物理量就是电压和电流&#xf…

Java的核心类库

引言 在Java编程中&#xff0c;熟练掌握常用类与对象操作是开发的基础。Java的核心类库提供了丰富的功能&#xff0c;可以帮助开发者高效地处理各种编程任务。本文将详细介绍Java字符串操作、集合框架、日期与时间处理等内容&#xff0c;并通过图表和表格进行总结与示范。 字符…

java1.8运行arthas-boot.jar运行报错解决

报错内容 输入java -jar arthas-boot.jar&#xff0c;后报错。 [INFO] JAVA_HOME: D:\developing\jdk\jre1.8 [INFO] arthas-boot version: 3.7.2 [INFO] Can not find java process. Try to run jps command lists the instrumented Java HotSpot VMs on the target system.…

IPv6 ND 协议功能概述

ND 协议功能概述 ND&#xff08;Neighbor Discovery&#xff0c;邻居发现&#xff09;协议是 IPv6 的一个关键协议&#xff0c;它综合了 IPv4 中的 ARP&#xff0c;ICMP 路由发现和 ICMP 重定向等协议&#xff0c;并对它们做了改进。 作为 IPv6 的基础性协议&#xff0c;ND 协…

乐鑫 ESP32-C6 现身 Apple WWDC 2024 官方 Swift Demo

北京时间 6 月 11 日凌晨 1 点&#xff0c;苹果 2024 年全球开发者大会 (WWDC) 开幕。WWDC 是苹果公司每年举办一次的会议&#xff0c;旨在和全球开发者交流最新的技术和工具。大会通常分为主题演讲、技术讲座、实验室和论坛交流等板块。 苹果公司 WWDC 2024 开发者大会 在今年…

Lua解释器裁剪

本文目录 1、引言2、文件功能3、选择需要初始化的库4、结论 文章对应视频教程&#xff1a; 已更新。见下方 点击图片或链接访问我的B站主页~~~ Lua解释器裁剪&#xff0c;很简单~ 1、引言 在嵌入式中使用lua解释器&#xff0c;很多时候会面临资源紧张的情况。 同时&#xff0c…

Qt:QDialogButtonBox的使用

QDialogButtonBox是Qt自带的按钮箱&#xff0c;通过枚举QDialogButtonBox::ButtonRole可以添加Qt定义按钮&#xff0c;或者通过方法QDialogButtonBox::addButton添加自定义的按钮。 // 自定义按钮。 button_box_ new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonB…