【轮式平衡机器人】——TMS320F28069片内外设之ADC

一、ADC概述

这一部分不是我们的重点,原理分类啥的这里简要说明!

步骤:采样、保持、量化、编码

将采样电平(模拟值)转换为数字值的方法:直接比较型(并行ADC、逐次逼近型ADC);间接比较型(双积分型ADC)

关键技术指标:分辨率、转换速率、量化误差、偏移误差、满刻度误差、线性度。

其他技术指标:绝对精度、相对精度、微分非线性、单调性和无错码、总谐波失真和积分非线性。

TMS320F2806x系列的ADC模块的主要参数:

  • 12位模数转换
  • 2个采样保持器(S/H)
  • 同步采样或顺序采样
  • 模拟电压输入范围0~3.3V
  • 16通道模拟输入
  • 16个结果模拟输入
  • 16个结果寄存器存放ADC转换的结果
  • 多个触发源:S/W。软件立即启动;ePWM1~ePWM8;外部中断2脚;定时器0、1、2;A/D中断1、2。

二、基于Simulink平台的ADC实验

1、ADC_NORMAL模式

ADC_NORMAL模式配置先从配置时钟开始,ADC模块是挂在高速外设时钟线上的外设,Clocking配置为系统90MHz时钟2分频。

在ADC配置中,使用默认的分频系数ADCLK=2,得到ADC模块时钟为45MHz,其他使用默认配置。

在simulink中搜索“ADC c2802x”模块,采样模式为单个采样模式,SOC触发数为SOC0,采样窗口7,SOCx触发源为软件触发,输出数据类型为uint16,输入通道配置为A0,此模块数据基本为默认

配置完成后,对ADC采样的值进行转换。由于ADC转换结果寄存器是16位的,且数值是左对齐的12位数据,所以要进行左移4位操作,官方支持包考虑到了这一点,只需直接对输出的结果进行转换就可以得到实际的采样值。

下面的模型采集的是外部电位器的0~3.3V电压,所以直接进行转换(12位的ADC满量程为4096,即4096对应实际参考电压3.3V)。这里加入了LED灯,当采集到的模拟量少于2048时,LED2灯闪烁,否则LED1闪烁。其中“Rate Transition”模块为高采样速率向低采样速率转换

搭建完成后将模型编译下载到主控板(小编由于成本也是先纸上谈兵了,重在熟悉步骤)。将电位器中间引脚接在主控板的AD0引脚上,其他两个引脚分别接在主控板的3.3V和GND引脚,顺时针和逆时针调节电位器,两个LED灯都发生了变化。

2、ADC_EXTERNAL模式

按照GPIO_EXTERNAL外部模式的配置方法将模型配置为外部模式,见上期博客:

上期博客外部模式配置icon-default.png?t=N7T8http://t.csdnimg.cn/qV7bF

在Simulink中搭建模型,首先将ADC输出值通过一个增益模块赋给PWM的占空比输入,并显示在scope模块上。Gain的输出数据为uint16,ePWM模块选择ePWM1,这里WA相当于占空比的大小,相关配置详细见后续ePWM期博客。

完成上述配置后,用USB转TTL线,分别将USB的RX、TX接在F28069主控板的TXA、RXA引脚上。启动仿真,调节电位器便可观察到scope示波器的变化。

往期精彩

STM32专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/E2F88

OpenCV-Python专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/zK1jV

AI底层逻辑专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/zic0f

机器学习专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/FaXzAFreeRTOS专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/SjIqU电机控制专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/FNWM7

 

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

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

相关文章

【MongoDB】跨库跨表查询(python版)

MongoDB跨表跨库查询 1.数据准备:2.跨集合查询3.跨库查询应该怎么做? 讲一个简单的例子,python连接mongodb做跨表跨库查询的正确姿势 1.数据准备: use order_db; db.createCollection("orders"); db.orders.insertMan…

【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]

阅读导航 引言一、C语言的输入与输出二、流是什么三、CIO流1. C标准IO流(1)istream(2)ostream(3)iostream(4)cin 和 cout 2. C文件IO流(1)ifstream&#xff0…

【Android新版本兼容】onBackPressed()方法被弃用的解决方案

提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、使用 AndroidX API 实现预测性返回手势1.1 添加依赖1.2 启用返回手势1.3 注册OnBackPressedCallback()方法来处理返回手势 一、使用 AndroidX API 实现预测…

Linux实验记录:使用vsftpd服务传输文件

前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: 为了解决在多样复杂的设备之间解决传…

Android studio打包apk比较大

1.遇到的问题 在集成linphone打包时发现有118m,为什么如此之大额。用studio打开后发现都是不同的cpu架构。 2.解决办法 增加ndk配置,不需要配置那么多的cpu结构,根据自己需要调整。 defaultConfig { applicationId "com.matt.linp…

关于Ubuntu下docker-mysql:ERROR 2002报错

报错场景: mysql容器创建好后登录mysql时即使密码正确也是报出下方提示: 原因是在创建mysql容器在创建时本地目录缺失, 先去自建一个目录,例如: /opt/my_sql 正确完整目录如下: docker run --namemys…

【微服务】skywalking自定义链路追踪与日志采集

目录 一、前言 二、自定义链路追踪简介 2.1 自定义链路追踪应用场景 2.2 链路追踪几个关键概念 三、skywalking 自定义链路追踪实现 3.1 环境准备 3.2 集成过程 3.2.1 导入核心依赖 3.2.2 几个常用注解 3.2.3 方法集成 3.2.4 上报追踪信息 四、skywalking 自定义日志…

springboot153相亲网站

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

lava学习-多态-final-抽象类

一.多态 1.什么是多态? 现象:对象多态:比如说一个人 类,他可以是一个老师,也可以是一个同学 行为多态:多个对象同一类行为的不同表现形式,比如两个人,一个人跑得快,另一个…

Spring 事务原理总结三

今天这篇文章,我想梳理一下Spring事务用到的几个核心组件。这些核心组件是我们理解Spring事务原理的基础。通过它们我们可以体会学习一下Spring设计者设计Spring事务时的基本思路。这些组件是:TransactionInfo、TransactionStatus、TransactionManager、…

极速上手:使用Jmeter轻松实现N种参数化

参数化的方式: 一、使用用户自定义变量 一种方式:直接在测试计划中添加用户自定义变量 另外一种方式:配置元件——用户自定义变量 示例:用户自定义变量,登录手机号码 在接口请求的时候,进行引用 请求之后&…

利用OpenCV实现物流与生产线自动化的革命性突破

背景介绍: 在当今高度自动化的时代,物流和生产线上的每一个环节都关乎企业的核心竞争力。传统的生产方式往往依赖于人工检测和操作,这不仅效率低下,而且容易出错。为了解决这一问题,越来越多的企业开始寻求利用计算机视…

备战蓝桥杯---搜索(应用基础1)

话不多说&#xff0c;直接看题&#xff1a; 显然&#xff0c;我们直接用深搜&#xff0c;我们可以先把空位用结构体存&#xff0c;然后打表存小方块&#xff0c;再用数组存行列。 下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int a[12][12];…

MySQL进阶45讲【11】怎么更好地给字符串字段加索引?

1 前言 现在&#xff0c;几乎所有的系统都支持邮箱登录&#xff0c;如何在邮箱这样的字段上建立合理的索引&#xff0c;是我们今天要讨论的问题。 假设&#xff0c;现在维护一个支持邮箱登录的系统&#xff0c;用户表是这么定义的&#xff1a; mysql> create table SUser…

学成在线: 新增/修改课程计划

新增/修改课程计划(同接口) 界面原型 第一步: 在课程计划界面,点击添加章新增第一级课程计划,点击添加小节可以向某个第一级课程计划下添加小节 新增章/节成功后会自动发起请求刷新课程计划列表并且把新增的课程计划信息添加到数据库当中,新增的课程计划自动排序到最后 第二…

数据结构—动态查找

动态查找介绍 1. 动态查找的引入&#xff1a;当查找表以线性表的形式组织时&#xff0c;若对查找表进行插入、删除或排序操作&#xff0c;就必须移动大量的记录&#xff0c;当记录数很多时&#xff0c;这种移动的代价很大。 2. 动态查找表的设计思想&#xff1a;表结构本身是…

华为机考入门python3--(5)牛客5-进制转换

分类&#xff1a;数字 知识点&#xff1a; 十六进制转int num int(hex_num, 16) int转十六进制 hex_num hex(num) 题目来自【牛客】 hex_num input().strip() dec_num int(hex_num, 16) print(dec_num) by 软件工程小施同学

uniapp开发一个交流社区小程序

uniapp开发一个交流社区小程序 假期的时候简单学了一下uniapp&#xff0c;想开发一款类似百度贴吧的交流社区来练练手。本篇文章主要记录开发过程&#xff0c;文末附上项目地址。 主要需要开发以下几个页面。 信息页面热榜页面用户主页用户信息页 信息页面 该页面的功能主要…

获取真实 IP 地址(一):判断是否使用 CDN(附链接)

一、介绍 CDN&#xff0c;全称为内容分发网络&#xff08;Content Delivery Network&#xff09;&#xff0c;是一种网络架构&#xff0c;旨在提高用户对于网络上内容的访问速度和性能。CDN通过在全球各地部署分布式服务器节点来存储和分发静态和动态内容&#xff0c;从而减少…

printf死翘翘

本来想把我的单片机玩一下&#xff0c;寄给在大学搞研究的一个朋友&#xff0c;但竟然挂在printf里面&#xff0c;大概知道是什么位置出问题&#xff0c;但是还想不清楚什么原因。 我先是在stc51单片机里面搞了串口&#xff0c;然后我想用串口重定向到printf做调试&#xff0c;…