草庐IT

智能车浅谈——硬件篇

小向是个Der 2023-07-11 原文

目录


前言:作为一名老三本玩家,笔者深知一些同学刚接触这个比赛的那种无从下手的感觉,写这篇文章主要是分享一下自己对车的理解,同时也希望大家能真正的去深入理解小车的整个系统,理解小车的构成和原理,而不是人人唾弃的“调参比赛”。水平有限,仅供参考,也欢迎大佬们参与交流。

初识小车

电磁寻迹小车

不知道大家是什么时候开始知道有小车这个东西的,笔者第一次看见小车是学校协会招新展示的作品,后来加入实验室慢慢开始了解到了这个比赛,关于比赛的介绍,我在此不做赘述,有需要了解去查看卓大公众号的规则和介绍(第十七届全国大学智能汽车竞赛竞速比赛规则)。这里主要说一下小车的组成。
参赛小车包含车模、硬件系统以及软件算法三大部分,其中车模和硬件在比赛前期工作量比较大,而软件部分的调试工作会一直持续到赛前,所以三人小队一般的分配是一个主要负责硬件,一个主要负责整体控制方案和小车机械结构调整与控制部分软件的搭建,另外一个人主要负责整车的算法,这是笔者参赛时的分配方案,参赛全程离不开组员的密切配合,缺一不可。

车模可以理解是小车的四肢和身体,这个小车都是在车模的基础上进行搭建;由于组别的不同,车模的规定存在差异,根据细则要求进行选购即可,关于车模的介绍和规定每年的比赛规则有详细介绍,可以去智能车官网查看。

硬件系统

硬件系统是小车的脊柱,把身体各个部分联系起来形成一个整体;比赛要求是所有的硬件系统要按规则自制PCB,一个小车的硬件系统主要包括电源系统、人机交互系统、MCU最小系统、传感器系统、驱动系统。

1.电源系统

小车采用电池供电,一般的方案是两节18650或者是专用的镍铬电池,电压范围都大致在6V-8V,而小车所使用的各传感器种类较多,供电电压也不一致,大多数是12V、6V、5V、3.3V的电压,所以需要我们设计并制作一个电源系统来为整个小车提供良好的电源。需要使用模电和电力电子的知识,这个系统中我们会使用到开关电源线性电源这两大类电源方案。

线性电源

可以理解为在原有电源两端加负载,通过匹配负载比来输出目标电压,它的好处在于能够提供稳定纯净的电源;但是由于此方案获取电压采用负载消耗的方式,工作过程会产生很大的热损耗,转换效率较低,降压管自身发热严重。

开关电源

顾名思义,主要是通过控制可控开关的开关时间配合降压斩波电路(Buck电路)和升压斩波电路(Boost电路)实现升压降压;集成芯片一般会存在一个反馈端口,用来形成闭环控制从而保证输出电压的稳定;采用可控开关的方案能大大提高转换效率,但是会使得输出电压产生纹波,对电源要求比较高的电路就不能采取此方案。
电源可以参考市面上常见的方案,但是希望大家能去弄懂电源的类型、器件选型以及元器件的参数设置原理,结合自己的模电计算一下,这里推荐大家去看看B站唐老师讲电赛的电源大师和运放大师,结合实例讲解了很多的电路和模电知识,真正的把知识点搬到了实际生活中。

2.人机交互系统

人机交互系统是为了方便进行参数的设定、查看以及特殊元素的识别判断,多会采用显示屏、按键、蜂鸣器;显示屏比较流行的有0.96寸OLED、1.8TFT、2.0的并口屏还有一种比较方便开发的串口屏;通信协议方面大多是I2C和SPI,SPI协议的屏幕,其速度会更快一些(I2C协议v2.1规定了100K,400K和3.4M三种速率(bps),而SPI并没有一个官方标准,有的器件SPI可以达到50Mbps)。而串口屏有很好的UI控件,更适合电赛,操作方便简洁,不需要为界面设计费神,想要了解的同学可以参考陶晶驰串口屏
按键可以选取五方向按键,蜂鸣器可以使用有源蜂鸣器,降低程序设计难度。

3.MCU最小系统

最小系统的选择是根据自己组别而定,不同组别的最小系统有所区别,十五届以后越来越多的处理器厂商加入赛事,有了TC264、TC364、RT1064、STC16、MM32、ch32等多种处理器,而这些处理器的最小系统的最基础三要素还是:电源、晶振、复位。最小系统可以直接购买核心板成品使用,但需要了解其电路构成,方便排查问题,有能力的最好自制。

4.传感器系统

对于不同组而言,传感器会存在一定差异,但是传感器都是大同小异的,常用的是摄像头、电感、编码器。就十七届而言,四轮分为了电磁四轮和摄像头四轮组,其中摄像头组赛道上没有电磁线,也就意味着无法使用电感辅助;而电磁四轮有要求使用宏晶的处理器,目前的STC系列还不足以驱动摄像头,也就意味着电磁组无法使用摄像头来实现车库等一些元素的识别需要加入干簧管之类的辅助器件实现停车;而像平衡信标组,就需要有陀螺仪来实现直立环,获取车身角度;对于多车编队,还需要使用到类似超声波等的一些模块来实现跟随。

摄像头

现在常用的摄像头就是龙邱科技的神眼和逐飞科技的总钻风,这两款摄像头都是灰度摄像头,所以在屏幕上显示时看见的图像和黑白电视一样,但需要注意这里的黑白并不是真正意义上的非黑即白而是把黑到白分成了255个层次。通过配置摄像头的内部寄存器实现摄像头的初始化,让摄像头每帧图像的分辨率保持188×120;采集完成后通过八位数据并口、行中断与场中断(两款摄像头引脚定义如下图)实现数据传输,将图像信息传输给单片机。

摄像头的采集流程如下:
1.摄像头在初始化参数后,开始采集;
2.采集到一帧图像时(假设一帧图像为:188×120)会发送一个场中断,告诉主控已经采集完一帧图像,随后场中断复位;
3.在场中断产生后会有188×120个行中断产生,每一个行中断个被主控捕获后主控都会收集8位数据口输出的电平(0000 0000~1111 1111)进而得到对应位置的数据(0-255)如此重复,每一个场中断后都会传输188*120个数据;
4.主控根据行中断依次获取这些数据就可以得到图像原始数据,为了节约单片CPU的资源往往会采用DMA搬运直接把这些数据搬运到内存。
8位数据口传输的数据范围刚好是0000 0000~1111 1111即0-255,对应刚好是灰度摄像头的色彩范围(0为全黑,255为全白)。

电感

电感采用工字电感,主要是利用电磁感应原理,利用电感采集信号发生器产生的电磁信号。赛道规定信号为f=20Khz,i=100ma的交变电流 ,为了能够保证采集的信号就是信号发生器产生的信号,需要设计选频电路,利用LC组合形成谐振回路一般采用10mH工字电感和6.8nf匹配电容。有关电磁信号采集部分的介绍参考此篇博文——传送门,计算公式与结果结果如下:


电感采集原理:此处以左右两电感为例,在高度固定后,如下图左边所示,可以发现垂直于电磁线的谐振电路产生的感应电动势,随着电感与电磁线的垂直距离的变化而变化,距离越近感应电动势值越大;距离越远感应电动势越小,这样通过左右两个电感的感应电动势就可以推断出小车目前的状态。
如右边图1所示,当小车位于赛道中央的时候,左右两个电感的值相等,此时没有偏差,对应直道,舵机位于正中间;
如右边图2所示,当小车偏左,此时左电感远离信号线,感应电动势较小,而右电感更接近信号线,产生的电动势也越大,此时会左右电感产生的感应电动势出现一个偏差,我们需要根据这个偏差来控制舵机打角,进而控制小车姿态;
如右边图3所示,当小车偏右,此时与图2相反,右电感远离信号线,感应电动势减小,而左电感感应电动势较大,此时左右电感产生的感应电动势也存在偏差,只不过与图二所示情况的偏差方向不同了,同理也可以利用这个差值来控制小车姿态调整。

由于这个感应电动势很小,只有mV级,且是交流信号,直接使用单片机的ADC采集不现实,所以就需要在谐振电路后加入运放模块实现一定比例的前级放大以及检波处理得到峰值电压,而后通过单片机ADC进行采集处理计算偏差,此处参考龙邱科技的运放模块讲解。

通过获取左右电感的电动势控制小车进行调整姿态。详细讲解参考逐飞科技的电磁四轮车讲解 —>传送门

编码器

其作用就是用来获取小车的速度,工作时随着齿轮的旋转过程会规律的产生脉冲,单片机通过捕获上升沿或者下降沿个数来读取脉冲数进而可以获取车速,这里的512线编码器和1024线编码器就是指编码器旋转一圈产生的脉冲数,有了脉冲数就可以运用常见的T法测速或者M法测速得到小车的速度。(T法M法可以参考电力拖动运动控制系统的讲解。)
带方向的是指编码器的两个输出口,一个脚是输出的是脉冲,另外一个输出是根据旋转方向输出的高低电平(假设正转输出1,则反转输出0,笔者自定义正反);主控可以通过获取高低电平来判断速度方向。
正交解码的编码器指的是这种编码器两个输出脚都是输出脉冲,只是A、B两组脉冲根据相位不同来定义速度方向,假设A相超前B相就是正方向;那么B相超前A相就是反方向。

5.驱动系统

驱动主要讲解电机驱动,舵机的驱动留到后面控制部分再做介绍。电机驱动主要采用的方式H桥驱动,主要原理和前面提到的开关电源差不多,也是通过控制开关管的导通与关断来实现电机供电电压的改变进而控制电机速度。

如上图所示,
当A管和D管导通,B管和C管断开时,电机是正转;假设A管一直导通,则只需要通过控制D管的导通速度就可以改变电机的运转速度,这就是单极性控制方式,而双极性控制是指同时控制A管和D管的导通,进而控制电机速度。
当B管和C管导通,A管和D管断开时,电机是反转;同理单极性控制是指A管或者D管一直导通,通过控制另外一个管子开关来控制电机的速度。而双极性控制是指同时控制两个管子的开关来控制电机的速度。
常见的H桥驱动方式还有BTN、IR2104加Mos管或者是HIP4082加MOS这里可以阅读果果小师弟的STM32+IR2104S的H桥电机驱动电路详解

机械结构

机械结构主要是前轮的倾角调节,这里直接参考这篇文章智能车学习(1)—— 机械调校
关于小车的硬件搭建就介绍到这里,如有错误欢迎大家批评指正,也欢迎大家交流讨论。
如果文章对你的比赛有所帮助,而且赛后对此文还有印象,笔者在评论区等待你们的分享。

17届完赛代码

最近有不少问问题的同学,笔者这边可能回复不是很及时,有需要17届完赛方案和代码的同学可以去海鲜市场,笔者学弟在出售17届方案,价格比较实惠。
【全国大学生第十七届智能车电磁租组2m+代码(全元素+模糊控制】
【第十七届全国大学生智能车竞赛摄像头四轮软硬件资料,华南赛区省二】

智能车系列文章汇总

智能车浅谈——硬件篇
智能车浅谈——方向控制篇
智能车浅谈——电机控制篇
智能车浅谈——图像篇
智能车浅谈——控制规律篇
智能车浅谈——过程通道篇
智能车浅谈——抗干扰技术硬件篇
智能车浅谈——抗干扰技术软件篇
智能车浅谈——手把手让车跑起来(电磁篇)
智能车浅谈 电磁组——环岛处理
第十七届智能车越野硬件篇——无刷电机驱动
无刷驱动设计——浅谈MOS驱动电路
芯源&立创EDA训练营——无刷电机驱动
[1]:STM32+IR2104S的H桥电机驱动电路详解

有关智能车浅谈——硬件篇的更多相关文章

  1. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  2. 智能客服 | 浅谈人工智能聊天机器人ChatGPT - 2

    2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动

  3. 基于python的短视频智能推荐/django的影视网站/视频推荐系统 - 2

    摘要本论文主要论述了如何使用Python技术开发一个短视频智能推荐,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述短视频智能推荐的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 短视频智能推荐的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、热门视频管理、用户上传管理、系统管理,用户:首页、个人中心、用户上传管理、我的收藏管理,前台首页;首页、热门视频、用户上传、公告信息、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所以使得整个短视频智能推荐信

  4. 【毕业设计】基于单片机的智能温控农业大棚系统 - 物联网 stm32 - 2

    文章目录1简介2绪论2.1课题背景与目的3系统设计详细设计描述3.2硬件部分温度测量电路其他电路部分3.3软件部分主程序子系统程序温湿度程序流程键盘显示子程序3.4实现效果3.5部分相关代码4最后1简介Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机项目基于单片机的智能温控农业大棚系统大家可用于课程设计或毕业设计单片机-嵌入式毕设选题大全及项目分享:https://blog.csdn.net/m0_71572576/article/details/1254090522绪论2.1课题背景与目的近年来我国的温室控制取得了长足的进步,首先在温室群控制方面,进行了初步的探索和理论研究,其次在温室

  5. BigData/Cloud Computing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程 - 2

    BigData/CloudComputing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程目录一、云计算网站建设:部署与发布网站建设:简单动态网站搭建云服务器管理维护云数据库管理与数据迁移云存储:对象存储管理与安全超大流量网站的负载均衡二、大数据MOOC网站日志分析搭建企业级数据分析平台基于LBS的热点店铺搜索基于机器学习PAI实现精细化营销基于机器学习的客户流失预警分析使用DataV制作实时销售数据可视化大屏使用MaxCompute进行数据质量核查使用Quick BI制作图形化报表使用时间序列分解模型预测商品销量三、云安全云平台使用安全云上服务

  6. ruby - 硬件不可能? : "Create a rock paper scissors program in ruby WITHOUT using conditionals" - 2

    我正在上介绍性软件开发课,我的作业是创建一个带有两个参数的剪刀石头布程序(石头,纸)等,并返回获胜的arg。现在,如果我可以使用条件语句,我会快速解决这个问题,但作业说我们需要知道的一切都在前三个ruby教科书的章节,这些章节不包括条件!没有它们是否可以创建这个程序?或者他只是希望我们足智多谋并使用条件句?这是一个非常简单的条件分配......我在想我可能在这里遗漏了一些东西。编辑:我正在考虑那个chmod数字系统,并认为通过该加法系统可能有解决方案...... 最佳答案 这是一个只使用哈希的方法:RULES={:rock=>{:r

  7. 如何从智能合约中删除数据 - 2

    如何从智能合约中删除数据有了以太坊,我们可以创建一个有状态的系统,我们可以从存储在智能联系人中的数据中添加和删除数据。这是一个有状态的系统,我们可以改变智能联系人的状态,但这需要向矿工支付一些费用。但是我们如何删除数据呢?这里有一个智能合约,用于向myArray中添加和移除字符串:pragmasolidity^0.4.18;contractExampleApp{string[]myArray;functionadd(stringx)public{myArray.push(x);}functiondel(stringx)public{for(uintj=0;jadd()函数相当简单,我们基本上只

  8. ruby-on-rails - 如何以智能方式从多维数组中获取 "extract"值? - 2

    我正在使用RubyonRails3.2.2和Ruby1.9.2。给定以下多维数组:[["value1","value1_other"],["value2","value2_other"],["value3","value3_other"]]我想得到(注意:我想只“提取”所有“嵌套”数组的第一个值):["value1","value2","value3"]我怎样才能以聪明的方式做到这一点? 最佳答案 您可以使用Array#collect为外部数组的每个元素执行一个block。要获取第一个元素,请传递一个索引数组的block。arr.c

  9. Web3.0入口-MPC钱包和智能合约钱包 - 2

    目前数字钱包存在的三个问题Web3.0大规模普及,需要解决一些关键问题,包括钱包私钥带来的一个用户体验问题与两个安全问题。1.一个用户体验问题:助记词与私钥难记、难保存,导致用户使用门槛过高2.两个安全问题:助记词和私钥的泄露,导致资产被盗。助记词和私钥的丢失,导致资产丢失。数字钱包为什么只能通过私钥的方式进行验证为什么只能通过私钥的方式进行验证?为了回答这个问题,我们需要了一些背景知识和概念。首先是以太坊上的账户类型。以太坊一共有两种账户:外部账户(EOA)和合约账户(CA)。合约账户就是智能合约,其代码由以太坊虚拟机来运行。外部账户就是我们平常用来发起交易的钱包账户,它之所以被称为“外部“

  10. Solidity,智能合约的学习(1) - 2

    Solidity概述Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)上,Solidity是面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态内的账户行为的程序。BitPen认为,作为Web3的链上玩家,那么能够看懂Solidity代码将会是一项必备的技能,因为大多区块链项目都是在GitHub开源,如果你能看懂甚至编写Solidity代码,那么你在链上项目游玩的技能将大大提升,可以避免很多恶意合约以及有漏洞的Rug项目。开发工具:RemixRemix网址:remix.ethereum.org​​​​​​​Remix作为以太坊官方推荐的智能合约开发IDE,

随机推荐