草庐IT

CUIT第七届智能小车(基础四轮电磁组)比赛总结

yu-yuyu 2023-04-08 原文

目录

目录

目录

前言

一、硬件部分

1.电磁杆

2.主控板

3.电机驱动

二、软件部分

1.舵机位置式pid

2.读入数据

3.读入数据

总结



前言

对于刚上大一的我,第一次参加校级智能车比赛,从开始的无从下手,到有迹可循,这篇文章与大家分享一下我的心路历程并做一次总结。下面我会分硬件(电磁杆、主板(51)、驱动)和软件(舵机位置式pid,特殊元素判断,出入库)两部分与大家分享,本篇偏向小白,本人电子菜鸟,有问题请读者多多指出


提示:以下是本篇文章正文内容

一、硬件部分

1.电磁杆

        电磁循迹,顾名思义就是根据赛道上铺设的电磁线,小车通过ADC采集电磁信号来判断小车当前位置,从而驱动舵机转向或者电机差速转向,达到循迹。众所周知,我们可以通过电感与电容组成LC振荡电路(如图一所示)采集到信号,由于电磁线中交流电的频率为20kHZ。

图-1

 

 本次我们采用10mH工字电感(市面上易买到)通过如上计算公式计算可得电容约6.33nf,我们采用市面上常用的6.8nf,这时我们完成了电磁值的采集,而采集的电磁值是交流且微弱的,为此我们采用放大电路+整流电路使之变为直流信号供单片机采集,具体放大电路和整流电路在此不在赘述。后面相应文章具体说明,采用LM358.其电路图1-1如下,采集模块如图1-2

图1-1
图1-2

        电磁杆的电感排布,首先了解我们的寻求,以我经验所谈,两颗电感足以正常循迹,其他电感只是用来对特殊元素的判断。当然其他电感也可以加入基础循迹中,通过加权差比和算法,其循迹效果更稳定,具体可以参考这篇文章 智能车电感差比和差加权算法研究,这次比赛中我仅使用左右两颗水平电感(实测稳定),而特殊元素的判断,我使用两颗内八电感,总体pcb排布图如下,图-2为实物图

2.主控板

        由于最近芯片涨价十分严重于是我采用便宜实惠的stc8a8k系列51单片机,对于我们这个校赛足够了,具体参数可参考芯片手册,对于主控板的电路这篇文章我仅提供思路,后面有机会在具体分析。首先,你得了解你的需求——即你需要用到的io,如adc采集、电机驱动、舵机驱动、干簧管(检测停车)等io。其次,在原理图和pcb绘制中采用分模块分区域绘制,一片区域负责某个功能,方便调试和故障维修。然后是,pcb的尺寸,孔位,以及元件封装,走线等问题(题主就是升压和稳压电路中的电容封装选错破坏了主板美观),总体pcb排布图如下,图-3为实物图(焊接好的)

3.电机驱动

        众所周知,单片机的高电平(3-5v)输出的电流很小只能作为信号,此时我们就需要一个驱动电路,接受来自单片机的信号驱动电机。本次,我采用L9110S作为驱动芯片,原因:外围电路及其简单只需一颗电容滤波、便宜实惠最大输出12V1.5A满足本次要求(学校指定的很拉的tt电机)原理图如下,其中6,7脚接受来自单片机产生的PWM信号,14脚接输出。芯片内置H桥可实现正反转。关于PWM脉宽调制在此不在赘述,后面有机会在具体分析。

(0.57真香~)

总体pcb排布图如下,图-4为原理图

D7和D8为正反转显示的LED

图4

二、软件部分

1.舵机位置式pid

                什么是pid?首先我们知道PID是一个控制系统,pid的应用有很多,当然这里我们只是对与pid对于电机的控制。比例、积分和微分的线性组合,构成控制量u(t),称为:比例(Proportional)、积分(Integrating)和微分(Differentiation)控制,简称PID控制。比例作用P只与偏差成正比,积分作用I是偏差对时间的累积,而微分作用D是偏差的变化率。用一句形象的比喻,比例P代表着现在,积分I代表着过去,而微分D则代表着未来。

            

 关于PID具体的介绍参考和其他部分下章介绍(太多了)


总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了硬件部分,注意问题:

1.电源部分PCB设计一定要注意,封装,线路,放反接

2.一些接口需要必要标识,防呆设计!!!!

有关CUIT第七届智能小车(基础四轮电磁组)比赛总结的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  3. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

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

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

  7. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

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

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

  9. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  10. c++基础-运算符 - 2

    目录1关系运算符2运算符优先级3关系表达式的书写代码实例:下面是面试中可能遇到的问题:1关系运算符C++中有6个关系运算符,用于比较两个值的大小关系,它们分别是:运算符描述==等于!=不等于小于>大于小于等于>=大于等于这些运算符返回一个布尔值,即true或false。例如,当x等于y时,x==y的结果为true,否则结果为false。2运算符优先级在C++中,关系运算符的优先级高于赋值运算符,但低于算术运算符。以下是关系运算符的优先级,从高到低排列:运算符描述>,,>=,关系运算符==,!=相等性运算符&&逻辑与`如果在表达式中有多个运算符,则按照优先级顺序依次进行运算。3关系表达式的书写在

随机推荐