从三个层次来介绍用于机器人主控板的设计思想

news2025/1/12 11:59:39

在很多人眼里,主控板有着密密麻麻的芯片引脚与PCB走线,看起来非常难的样子。其实恰恰相反,主控板的设计有着其特有的设计规律,其实说白了就像搭积木,在满足单片机最小系统的条件下,需要哪些功能,只需要增添相对应的电路模块即可,也可称为模块化设计思想。

本文我将从三个层次来介绍用于机器人主控板的设计思想。分别为:

根基,主控板最基础部分的设计和原理;

枝干,主控板功能模块的扩展与设计思路;

树叶,主控板中功能模块具体电路参数的计算。

我将以一棵大树的层次结构为模型,带领大家走进电路设计的乐趣。

根 基

这里的根基表示的是单片机最小系统,是单片机可以正常执行程序的最简工作环境。如果没有这些的话,单片机是无法运行程序的。

最小系统的组成包括,电源电路,时钟电路,复位电路。大多数芯片的最小系统需要包含以上三种电路,而有的芯片却可以不使用外部时钟,其芯片内部可以通过RC振荡器为程序运行提供时钟基准。

根基之电源电路。以STM32系列单片机为例,其工作电压在2.0V~3.6V,通常会使用3.3V电源供电。

假设我们使用5V电源为电路板提供电源,这样就需要将5V转换成3.3V为单片机供电。考虑到单片机需要工作在低纹波的电源环境下,这里选择了线性降压电源(LDO)。明确了设计目的,下面就需要进行方案选择了。

需要做的事:使用那款LDO芯片将5V电压降低到3.3V电压,且满足功率需求。能够实现这几项需要的方案,非常多,下面我简单列举了几款常用芯片。

细细分析上面的表格中参数,发现不同芯片有着不同的最大输出电流。这时可根据单片机内部资源使用情况来计算最大工作电流(在单片机手册可以查找到),来进行方案选取。确定了单片机最大工作电流后,需要扩大3倍来选取电源芯片。

至此,已经确定好了电源芯片方案,但是如何进行电路连接呢?如何设计能减少干扰呢?对于电路如何连接,一般在芯片手册前几页会给出典型应用电路。这里我以AMS1117-3.3为例进行介绍。

下图来自芯片手册中的典型应用电路模块。一般情况下,按照数据手册中的电路连接,就可以正常使用。为了提高系统的稳定性,我们还可以对电路稍加修改。比如,在电源输入口增加磁珠来抑制电源线上的高频干扰信号。在输入输出端增加滤波去耦电容,以保证输出电源的纯净,和瞬态响应能力。

根基之复位电路。相信很多人和我一样,从接触51单片机时就开始疑惑复位电路的工作原理,由于对模拟电路理解的不够透彻,而不能给出正确答案,当别人问起时,吞吞吐吐说不出个所以然来。对于复位电路,这里给出两种不同的解释,欢迎大家批评指正。

对于低电平复位的单片机来说,其复位电路如下图所示:

复位电路解释一:首先,明确电容器具有通交隔直的能力。而交流电的定义为非直流电都为交流电,而直流电的定义是大小方向不随时间变化。

那可以这样理解:在电路上电瞬间,电压从零变化到VCC此时电容两端电压在不断变化应该归属于交流电,这个变化过程是需要时间的。在这段时间内电容处于导通状态,RST引脚电压接近于GND(低电平)。满足单片机复位要求。具体参数可通过RC电路进行计算。通常使用0.1uf和10K电阻进行单片机复位。

复位电路解释二:从电容充电曲线理解.电容在充电时,两端电压曲线如下图仿真图所示,电压缓慢爬升,当IO口电压低于0.8V时,单片机就会认为IO口电平为低电平,则图中复位电路使用参数可提供288us低电平时间,足够满足单片机进行复位。

根基之时钟电路。对于单片机来说时钟就像心跳一般,在时钟信号的基准下,有规律的执行者代码。时钟电路大同小异,这里以无源晶振为例。

如上图所示,为时钟电路,其中两个22pf电容为起振电容,1M电阻为环路反馈电阻。采用8MHZ晶振,经STM32内部PLL锁相环,进行倍频可达到72MHZ,后经过分频电路进行分频为各外设提供时钟。

单片机最小系统主要由这三部分,作为控制器的根基,是必须要有的。无论多么复杂的功能都需要基于此进行拓展,下面介绍如何拓展主控板的功能。

枝 干

这里的枝干指的是以最小系统为根基引申出来的各个功能模块。和大树一样,枝干在满足自身生长的条件下可多可少。这里简要介绍两个扩展功能,以展示控制器中“枝干”的设计过程。

新增枝干---温度检测功能:

这里想用单片机实现一个简单的温度计功能,可用于机器人中电机温度检测,也可以称为需求。这时我们需要做的就是选用哪种方法去实现温度检测。如果你学过51单片机,可能会想到DS18B20这款单总线温度传感器,好这里可以把它作为一种备选方案。还有没有其他的???我喜欢列表,画图去将脑海中的想法展现在纸面上,这里列表看看我脑中能够列出多少种方案。

看吧,随便一列就能够列出5个备选方案,实际中远远不止这些。为了使文章更加丰满,介绍更多的基础电路设计,这里以负温度系数热敏电阻作为实现本次任务的传感器。

负温度系数热敏电阻的阻值会随着环境温度的升高而降低。对于型号为MF52 10K ±1%的热敏电阻,其阻值随温度变化的曲线如下图所示。在-40~70之间其阻值的线性度非常好,完全可以使用一次函数式(y=ax+b)来拟合这段曲线,然后根据电阻值去反推环境温度。

问题推进到现在,测量温度的需求,已经演变成了如何测量热敏电阻阻值的需求。说道电阻,应该能够想起最基本的欧姆定律吧!

通过上式,我们就可以通过检测热敏电阻两端电压来确定热敏电阻阻值。

电压法测量热敏电阻阻值:这种办法比较简单,在产品中应用的也较多。使用电阻R1与热敏电阻串联,然后使用单片机ADC功能读取VF1点电压,后反推出热敏电阻阻值,进而计算出当前所测试温度。

其计算公式为:

电路中的R1需要选取一个合适的数值。选取过大,NTC两端电压变化范围就会变得很窄,为后期的数据出来带来不便。

如下图所示,为R1分别选取了10K,55K,100K三个阻值时,VF1随温度变化曲线。从图中可以看出当R1=10K时,VF1的范围很宽,并且温度在0度到45度范围内变化时,VF1具有很好的线性度。

相比而言当R1选取55K和100K时,VF1的表现就没有那么好了。

这样我们就在单片机最小系统上添加了测量温度的功能。在整个设计过程中,我们只仅仅使用到了单片机的一个ADC口,其余都应属于模拟电路知识。按照这个思维,我们可以实现很多功能,比如你想要给控制器添加WIFI功能,通过分析也许你连原理图都不用改,只需要购买个具有UART的WIFI模块就能够实现,就是这么简单。

新增枝干---电路电流检测功能:

在控制器设计中难免会涉及到检测电流,用于电路过流保护,或电机相电流检测。这里想用单片机检测电机某相电流,来实现电机的FOC控制,也可以称为需求。

电流检测方案有多种可供选择,比如采样电阻,霍尔电流传感器,罗氏线圈。这里我选择了电阻对电机相电流采样。

一般检流电阻的值都比较小,比如0.005欧姆。当流过10A电流时,电阻两端压差仅为50mv,这样就不会对电路造成影响,但是会带来一个问题,直接使用单片机ADC读取时,无法准确读取到数据。通常的做法是将电压放大后,再使用单片机读取。

电路设计到这里,从刚开始的电流检测需求,已经推进到采样电压信号的放大需求。这时想到的必然是使用运放对采样电压放大。

如下图所示,选取了运放构成的减法电路(差分放大电路),来放大电压信号。具体的电路计算后文详细介绍。

这样又在单片机最小系统上添加了电流检测功能。在整个设计过程中,只仅仅使用到了单片机的一个ADC口。

枝干部分就先列举两例,在这种思维的指引下,你可以尝试着实现其他功能,比如实现一个数据显示功能,实现CAN通信,实现4-20ma信号处理。好好想想,看看有多少种可用的解决方案。

树 叶

树叶指的是以最小系统为根基引申出来的各个功能模块中的具体电路参数。这里的设计需要根据选定的最终方案来详细计算电路中阻容等每个元件的值和具体器件选型。

现在以上文中电流检测电路为例,来介绍如何计算电路参数。

上图中的电路原型为减法电路(也称差分放大电路),如下图所示

根据模电基础知识,其输出电压表达式为:

,其中为差分放大器的放大倍数。

假设系统中需要将信号放大5倍,这时

应该等于5。这里的取值可就多了,比如100欧姆和500欧姆,1K欧姆和5K欧姆,10K欧姆和50K欧姆。这么多种组合,到底哪个组合比较好呢?在我看来在保证功耗允许的情况下,阻值越小越好。100欧姆就比1K欧姆好,1K欧姆就比10K欧姆好。

电机的三相电流波形是相位相差120度的正弦波,如下图所示。在电流检测过程中信号有半个周期为负值。对单电源供电的运放,位于负半轴的电流值是无效的,无法进行放大。此时就需要对电流波形进行偏移,使得整个周期的电流波形都位于正半轴以上。

为了解决这个问题,只需要在下图RB处添加直流偏移电压Vref,输出电流形就会向Y轴正方向偏移Vref。

此时,输出电压表达式为(可根据叠加原理推导):

下图所示,将一个30mv正弦信号放大5倍并偏移1.65V后的电流波形。

至此,我们已经计算出了电路中的电阻参数,当Ra=1K时,Rb=5K这个组合是比较好的。因为STM32单片机ADC引脚最大输出电压为3.3V,通常对电流波形偏移Vref=1.65V即可满足要求。

主控板的设计就这样简单,明确需求,方案选取,计算参数,简单三步即可实现你想要的功能。这里我为大家准备了大量素材,大家可添加小编领取。

【以上信息由艾博检测整理发布,如有出入请及时指正,如有引用请注明出处,欢迎一起讨论,我们一直在关注其发展!专注:CCC/SRRC/CTA/运营商入库】

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能Python-python_head_first

Python Head First:学习Python编程的必备指南 如果你是一位编程新手,尤其是对Python感兴趣,那么Head First Python是你需要阅读的书籍之一。这本书通过富有趣味性的教学方法,让你轻松理解Python编程语言。 了解Python编程 Pyth…

物联网通信协议-MQTT及使用python实现

MQTT概念及其原理 简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量 级"通讯协议,该协议构建于TCP/IP协议上,由IBM在…

亚马逊云科技构建Serverless数据分析战略

亚马逊云科技Amazon EMR是行业领先的大数据分析服务,适用于使用开源框架进行PB级数据处理、交互分析和机器学习,它可以更快地运行大数据应用并且成本不到本地解决方案成本的一半。通过性能优化且兼容开源API的Spark、Hive和Presto版本,洞察时…

增加或修改现有apk的功能(apk功能扩展)

现有apk不能满足需要,又没有源代码,想要扩展其功能,是可以实现的。 本人根据多年修改apk的经验,总结如下: 一、扩展apk功能的原理及步骤 1、必要条件: 该apk能够被反编译为smali代码,也能够…

【2023五一杯数学建模】B题 快递需求分析 31页论文

【2023五一杯数学建模】B题 快递需求分析 31页论文及代码 1 题目 请依据以下提供的附件数据和背景内容,建立数学模型,完成接下来的问题:问题背景是,网络购物作为一种重要的消费方式,带动着快递服务需求飞速增长&…

Spring源码阅读:Spring事务执行流程

一、概述 Spring事务执行的流程如下图,我们将按照下面的执行顺序,介绍Spring的事务。 二、代码分析 (一)核心流程 TransactionAspectSupport#invokeWithinTransaction 事务处理核心伪代码 // 通过事务调用 protected Object i…

第12届蓝桥杯Scratch选拔赛真题集锦

第12届蓝桥杯Scratch选拔赛真题集锦 编程题 第 1 题 问答题 吃豆人游戏 题目说明 编程实现: 吃豆人游戏: 通过方向键控制吃豆人吃到水果,当水果全部被吃掉后游戏结束。具体要求: 1).点击绿旗,舞台上出现要求的角色与背景;每个格子内有一个水果和一个幽…

chatgpt赋能Python-python_ip摄像头

Python IP摄像头介绍 IP摄像头技术的快速发展,使得越来越多的人开始使用IP摄像头来保护家庭、企业和公共场所的安全。Python语言的简洁、优雅和易于学习,使得它成为越来越多人选择的编程语言。在本文中,我们将介绍如何使用Python编程来控制I…

java循环依赖

java循环依赖 什么叫循环依赖? Java循环依赖是指两个或多个类之间存在相互依赖的情况,造成它们互相持有对方的实例而无法正确地加载和初始化。这种问题通常发生在使用Spring等依赖注入框架时,因为这些框架会自动管理类的实化和注入。 我们看…

深度学习基础入门篇[10]:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

机器学习神经网络——Adaboost分离器算法

系列文章目录 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 机器学习相关概念思维导图 文章目录 系列文章目录 前言 Adaboost算法的简单介绍 Adaboost算法相…

Unity之使用Photon PUN开发多人游戏教程

前言 Photon是一个网络引擎和多人游戏平台,可以处理其服务器上的所有请求,我们可以在 Unity(或其他游戏引擎)中使用它,并快速把游戏接入Photon的网络中,而我们就可以专注于在项目中添加逻辑,专注于游戏玩法和功能了。 PUN(Photon Unity Networking)是一种开箱即用的解…

Linux服务器安装启动卸载宝塔面板

宝塔面板简介 宝塔面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能,支持Windows和Linux系统,服务器可以通过网络轻松管理,提高运维效率。例如:创建和管…

极米H6搭载光学变焦打造无损4K,带来更沉浸观影体验

近年来,科技飞速发展,我国涌现出很多新兴科技企业,如家用智能投影、无人机、扫地机器人等行业发展迅速,国际竞争力逐年增强。其中,家用智能投影行业成长快速,正展现出蓬勃的发展生机。根据IDC自2015到2022年…

rollup打包vue组件并发布到npm

个人认为rollup在打包组件的实现方式比用webpack方便,webpack应该是比较适合打包大型的工程项目,而rollup适合打包一些平时在项目中的组件 rollup中文文档:简介 | rollup.js 中文文档 | rollup.js中文网 (rollupjs.com) 这次打包一个滚动加…

python操作mysql

Python 中使用什么第三方库来操作 MySQL ?如何安 装? 使用第三方库为: pymysql 安装: pip install pymysql如何获取链接对象? • from pymysql import Connection 导包 • Connection( 主机 , 端口 , 账户 , 密码 ) 即…

Java基础面试题突击系列4

👩🏻 作者:一只IT攻城狮 ,关注我不迷路 ❤️《java面试核心知识》突击系列,持续更新… 💐 面试必知必会学习路线:Java技术栈面试系列SpringCloud项目实战学习路线 📝再小的收获x365天…

Docker Compose 和 ChatGpt 私有部署

1. 下载 Docker Compose 的二进制文件: Docker Compose 的Github下载链接地址是: Releases docker/compose GitHub 注:这里没有讲解docker的安装,因为已经写好了,在这里可以去看一下,先安装好docker在其弄…

京东购物车如何提升30%性能 | 京东云技术团队

1、背景 购物车面临的挑战: 1)新业务:随着业务形态的丰富,购物车在不断支持各种新业务,依赖的外部接口也随之增加; 2)下沉:一些前端调用的接口下沉到购物车中台; 3&am…

Linux systemd

这里写目录标题 一:配置文件内容二:配置文件位置三:开机启动配置四:systemctl使用 一:配置文件内容 systemd服务配置文件存放在/usr/lib/systemd目录下,有系统system和用户user之分,需要开机不登录就能运行的程序,放在/usr/lib/systemd/syst…