掌上单片机实验室 – 构想(1)

掌上单片机实验室 – 走出屏幕的 ROS 小海龟(27) 在上一步的基础上,完成了使用 turtle_teleop_key 节点控制虚拟和现实两个小海龟,将基于 micro_ros 软件包实现单片机和 ROS2 主机通讯的流程全部打通,后面就可以进一步尝试ROS2 的功能了。 阅读详情

一、背景

突如其来的疫情,打乱了大学生的正常学习氛围,传统的校园学习模式无法实施,虽说网上教学做了相应的弥补,但对于多数工科课程,只靠线上教学很难完成,单片机课程就是其中之一。

单片机这类工科课程有较强的实践需求,纸上谈兵很难达到预期的效果,所以开设这门课程的学校均建立有相应实验室。

而经典的实验室设备很难让学生个人拥有,在家独立完成实验,因为实验设备的设计及实验内容的编制均未考虑到这样的场景。

 

能否设计一款适合学生单独拥有,且可以自己完成实验的单片机学习实验装置呢?

本文尝试用我设计的第四代圆梦小车构建一个适合学生拥有的掌上单片机实验设备。

 

二、构想和理由

圆梦小车系列设计初衷就是为单片机学习提供素材,使编程变得有趣、生动,提高学习的兴趣,提升学习的效果。

第四代圆梦小车设计主要改进着眼于以下几点:

  1. 缩小体积(为了满足机器人足球FIRA的规定),在桌面上即可调试小车运动。

  2. 不涉及组装,以模组形式提供,电气连接采用插针,不用焊接。

  3. 将小车的驱动部分涉及的因素集成,将控制分离,便于根据需要选择单片机,直接使用单片机IO即可驱动。

  4. 增加了小车运动相关的反馈检测(简易编码器、驱动电压、电路检测),以丰富小车编程素材。

  5. 采用4节7号充电电池供电,设计了电源管理电路,电池不用拆下即可充电,以方便使用。增加5V升压稳压电路,以保证可靠性,改善体验。

从学生单独拥有的、独自使用的角度需求考虑,上述几点均相当吻合。

 

再从实验的内容角度审视。

要检验一套设备是否能满足学习单片机的教学需求,首先应分析一下单片机实验的目的。

按目前常见的单片机实验设备和设计,多数是以验证实验为主,即:

根据单片机拥有的一个个功能,设计出一项项独立的实验,验证其功能是否如教材所述,如:

  1. 验证IO输出功能:做一个点亮LED的实验

  2. 验证IO输入功能:做一个按键响应实验

  3. 验证AD输入功能:用一个电位器,采集输入的变化,用万用表比对一下。

  4. 验证定时器PWM功能:接一个直流电机驱动一下,在电机轴上装一个黑白圆盘,观察电机转速随PWM占空比的变化。

……

诸如此类。每个实验都是孤立的,只有少数的实验会整合几个内容,但很少,因为实验设备的设计就是针对单一实验的,这样便于实验指导书的编写,也便于实施、管理以及评判。

 

但这样的实验有价值吗?我也是学生过来的,感觉这样的实验乏味至极,不能说没有一点效果,但作用极其有限。

最大的问题在于:无法激发学生的学习兴趣,无法调动学生自身的主观能动性。不能帮助学生真正理解、掌握单片机所设计的那些功能用途是什么?在现实世界中能发挥什么作用?设计者为何要设计得这么复杂?

关于这方面的问题,在以往阐述小车设计初衷的文中已经有所讨论,此处不再赘述。

现在已经有很多学校意识到了这个问题,提出了任务驱动概念,即:通过设计特定的任务,将需要学生掌握的知识融于其中,让学生可以更全面的理解、掌握所学的内容。

但任务设计有一定难度,复杂了学生完不成,分不清是实验还是课程设计了,恰到好处的任务很难构建,尤其是单片机实验,还需要相应的硬件配合。所以,针对教学的任务驱动型实验似乎并未普及。

 

从中学过来都知道,数学学习中,最有挑战、也最有趣味的练习是做应用题。一个好的应用题会让你终身难忘。而应用题的设计目的是将正在讲授的内容编排到现实生活问题中,让学生感受到所传授的抽象数学概念可帮助你解决现实问题,增加学生的获得感和成就感,以及趣味性,使抽象、乏味的数学变得生动、有趣。

单片机实验实质是一样的,只是它需要硬件设备配合,变成了实验,而非单纯的文字描述。

 

小车作为单片机实验素材有诸多优势,首先是相对于航模、船模,车的使用环境最简单,只需要符合车大小的一块平面即可,车体积越小,所需的平面就越小。四代圆梦小车的尺寸只需要一般的书桌面即可运行。航模太难、易损。船模需要水,约束较大。

其次,车所蕴含的需求无需专业知识背景,车的需求是常识性的。

工科的实验最忌讳选择需要一定专业知识作为基础的内容,学生将无所适从,懵懵懂懂做完实验,不但无法理解实验结果,说不定连实验要掌握的知识都搞模糊了。

这也是我这么多年来一直坚持围绕小车设计学习素材的原因。

那么,对照传统的实验设备的内容,小车能一一涵盖吗?

四代圆梦小车可以抽象为以下框图:

各端口的定义如下:

每侧11根,用2.54间距的插座分成2组引出(PCB上有标号):

一组6芯的为控制线:

G —— 电源地线;

BAT —— 电机驱动 H 桥供桥电压输入 ,4 - 5V(正极);

CT1 —— 电机控制线 CTRL1,电机控制 PWM 信号;

CT2 —— 电机控制线 CTRL2,电机运行状态控制,与 CTRL3配合;

CT3 —— 电机控制线 CTRL3,电机运行状态控制,与 CTRL2配合;

VCC —— H 桥驱动逻辑电路及电流、电压检测电路的供电电压(正极)。

 

另一组5芯的为采集信号输出线:

P2 —— 保留,扩展用;

P1 —— 码盘采样脉冲输出线;

G —— 信号地线,和控制线的电源地线内部相连;

MI —— 电机电流检测信号输出线(约0 ~ 3V);

VB —— 电机工作电压检测信号输出线(约 0 ~ 3V);

 

基于上述小车硬件,逐一对照单片机基本功能,看看是否可以完成所有的实验需求:

  1. 学习数字IO输出功能:控制电机四个工作状态的 CT2、CT3即可实现
  2. 学习PWM输出及定时器应用:电机PWM控制端CT1即可实现
  3. 学习数字IO输入及中断功能:转动脉冲采集P1即可实现
  4. 学习模拟量输入功能:电机工作电压及电流采集即可实现
  5. 学习定时器的计数和脉冲周期测量功能:转动脉冲采集即可实现

 

使用单片机控制上述操作,如果可以通过PC或其它外设通过发送命令控制,应该是最佳选择,这样就能实现学习单片机 UART 通讯功能。

UART通讯为有线方式,对于小车运动而言,不是很方便,接一个最常用的24L01无线模块即可实现无线通讯,此时就产生了SPI通讯应用需求,实现了SPI实验功能。

为小车设置特定的目标,很容易触及到单片机所有的功能。因为单片机每个功能的设置都有其针对性,多数是改善控制和实时性的,要做好小车的运动控制恰恰蕴含了这些需求。

 

和传统的实验室设备不同,小车用自己的运动需求将上述功能有机的串在一起了,共同完成小车的运动控制,而不是以往那种孤立的一个个实验。

这种相互依存的实验内容,一方面增加了实验的实用价值,现实中所有应用都是由多个功能组合完成的。另一方面可以加深对以往实验内容的理解,在后续实验中会不断用到前面已经做过的内容,有时还会因后续功能的要求,对前面实现的方式进行改进、优化,无疑会对该功能有更深的理解。

而单独实验方式,做过即过,不再触及,很快就淡忘了,更谈不上进一步深入探讨。

比如说,一般的AD采样实验,测一个静态的模拟量输入即可,最多对照一下精度,学会相应的寄存器设置即可。但此处的电机电流、电压采集,因为使用了PWM驱动,其电流、电压是随PWM信号波动的,为了准确采集到所需的电机电流、电压信号,采集必须和PWM输出信号同步,这远比简单的测试静态信号涉及的内容多,且更接近实战。

 

所以小车是一个十分好的实验载体,它原生的需求会引出很多实验内容,且能产生相互关联,还有足够空间给愿意深入学习的学生发挥。用它作为实验设备应该是最好的选择之一。

 

三、如何实现

既然四代圆梦小车具备这样的可行性,如何使其成为一个名副其实的“单片机掌上实验室”呢?

我想基于目前的小车硬件,尝试构建一个符合上述构想的实践平台,选择一款合适的MCU,以及合适的软件开发环境,并设计一些符合小车特征,且蕴含单片机学习内容的实验项目,以免让上述构想成为水中月、镜中花。

由于我不是真正的老师,也离开学校多年,难免有脱离实际之处,算是抛砖引玉吧!

单片机原理及应用实验报告 单片机原理及应用实验报告文章简介实验一:I /O口输出实验—LED流水灯实验一、实验要求利用单片机及8个发光二极管等器件,构成一个流水灯单片机系统二、实验目的1、掌握单片机最小系统的构成2、掌握I/O口的使用及驱动能力的概念3、熟悉移位指令和软件延时程序三、实验电路及连线1.硬件连接表2.注意事项四、实验说明1、主要知识点概述2、实验效果说明五、实验流程图六、实验代码七、仿真效果图八、思考题增加LED灯的显示花样,丰富实验的效果实验二:定时器实验1.实验要求2.实验目的1、学会定时器中断函数的处理2、掌.. 阅读详情

相关推荐

掌上单片机实验室 – RT-Thread + ROS2 初探(25)

得知 ROS 升级为 ROS2 后,将 rosserial 升级为可以在单片机上运行的 Micro_ROS,大大提升了性能。关键是 RT-Thread 中包含了 Micro_ROS 软件包,正好可以尝试一下,。于是有了文中的经历。

embedream的专栏 1612

单片机及开发板介绍(学习笔记)

STC89C52单片机 所属系列: 51单片机系列公司:STC公司 位数: 8位 RAM: 512字节 ROM: 8K (Flash) 工作频率: 11.0592MHz(本开发板使用) 芯片电路图电源部分的电容起滤波作用,防止外接的电源电流时大时小,保证流入芯片的是稳定的电流 开发板AD/DA部分从左到右是光敏电阻,热敏电阻,电位器,单片机只能处理数字信号,要么5v要么0v,模拟信号不一定是这两个值,有高有低,所以要经过模数转换才能给单片机处理 74HC595芯片用于扩展单

weixin_46251230的博客 1764

掌上单片机实验室 – RT-Thread 激活程序1(15)

在掌上单片机实验室硬件平台上,尝试应用 RT-Thread,这是第一个程序,使用 RT-Thread 官方的 RT-Thread Studio 开发环境,完成电机 PWM 驱动,涉及 PIN及 PWM 组件。

embedream的专栏 505

掌上单片机实验室 – 用PC作为UI (8)

前面构建掌上实验室程序框架时,提出了用串口作为单片机人机交互界面的概念,并在框架中将串口命令接收、串口数据发送作为基础功能编写完成。 程序框架具备了串口作为 UI 的能力,就需要有相应的外设与其配合,以实现所需的人机交互功能。前面提过,PC是可选的设备之一。本篇就以 PC 为载体,配合前述程序框架的串口收发功能,实现初步的人机交互,即:UI。

embedream的专栏 723

掌上单片机实验室 – RT-Thread 激活程序2(16)

本篇继续完成激活程序的后两部分,涉及 IO 中断及模拟量采集,IO中断所用的 Pin 组件已经由工程模板帮助安装了,此处按前一篇的方式添加 ADC 组件,验证一下前面总结的是否正确。

embedream的专栏 415

掌上单片机实验室 – RT-Thread 运行性能评估(21)

在 RT-Thread 下实现了小车的基础控制功能,但要判断 RT-Thread 是否适合这类实时性控制场景,需要检测评估一下其运行性能。从我的经验看,栈运行监测、外部中断响应时间、CPU占用率是需要测试的,因为这是基于 OS 编程需要关注的问题。实际测试后,感觉不错,我觉得可以应用于大多数场景!

embedream的专栏 1692

掌上单片机实验室 – 检验自整定适应性(12A)

在另一个不同的小车底盘上,验证 PID 参数自整定的适应性,从而确定 PID 自整定库是否实用。 检验的结果应该说相当满意!至少对于直流电机调速而言是可用的。

embedream的专栏 490

掌上单片机实验室 – RT-Thread 下实现运动功能(19)

基于 RTT 应用框架,将电机驱动按实际应用需求编入程序中,尝试用 C++ 的类方式定义电机驱动功能,因为两侧电机的驱动功能相同,用一个类即可。

embedream的专栏 392

掌上单片机实验室 – 实现PID自整定(11)

上一篇实现了小车运动控制,在程序框架下,基于FreeRTOS编写了驱动任务,包含电机控制、测速、PID调速、行走距离控制等和运动相关的功能。但 PID 调速只是完成了算法,并未真正实现调速,因为 PID 调速的核心是PID 参数的确定,即整定!而整定是 PID 最富挑战的内容,调速效果的好坏完全取决于参数。 本篇目的是尝试使用 Arduino 分享的自整定库实现 PID 参数自整定。

embedream的专栏 6806

掌上单片机实验室 – RT-Thread 之RISC芯片尝试(22)

想尝试基于 RISC-V 架构单片机 CH32V307 跑 RT-Thread 程序,结果发现还不具备作为开发应用程序的条件,需要芯片厂家进一步完善支持,应该要做到或接近 STM32的支持水准,否则无法成为一个被开发人员接受的芯片,至少在跑 RT-Thread时。 估计芯片厂家苦于人手不足,建议厂家尝试发挥网络的力量,借鉴维基百科的机制,快速打造出符合实际开发需求的支持包,从而使芯片和系统都能为国人所接受。

embedream的专栏 1362

掌上单片机实验室 – 基于 RT-Thread 框架的第一个应用(18)

基于 RT-Thread 应用程序框架,将前面实现的 RTT 激活程序加入到框架中,作为硬件测试功能,创建一个测试线程,将三个硬件激活功能作为基本测试操作,用串口指令操作执行。目的是感受一下 RT-Rhread 的多线程应用,以及线程间的同步、通讯功能。

embedream的专栏 263

掌上单片机实验室 – RT-Thread 下实现PID自整定(20)

将基于 Arduino+FreeRTOS 实现的 PID 自整定功能移植到 RT-Thread 下,看看是否可行。实施结果:OK!基于 RT-Thread 完美实现了 PID 调速。顺带验证了基于 Serial V1 版本的发送阻塞验证,发送数据时并未阻塞,暂时可以不升级到 Serial V2.

embedream的专栏 1366

基于“掌上实验室”的单片机课程考核方式探索.pdf

基于“掌上实验室”的单片机课程考核方式探索.pdf

掌上单片机实验室 – 低分辨率编码器测速方式完善(24)

在测试新做的一批“轮式驱动单元”时,发现现有的测速算法存在问题,且自己对目前的算法不满意,太繁琐,时间间隔略久,自己都看不懂,故下决心重新构思,采用前N个脉冲平均周期计算,完成后程序逻辑简单、清晰、满意。将掌上实验室程序也相应修改,分享之,以免前面错误的构思误导大家。

embedream的专栏 1312

Windows环境下IBSIMU的安装

本文主要介绍离子束仿真程序IBSIMU在Windows环境下的安装。

C_Tso的博客 2992

脑电时频分析I:谱分析

1、EEG频带划分 自发的EEG活动在活体大脑中持续存在,通常通过频率进行分类(也叫神经振荡活动) 特定频段的脑活动,即节律性的活动,具有特定的头皮分布和生物学意义 最后还有一个γ波,主要是指30hz~100hz的一个波段,通常这个波段也包含了噪声唁电的成分,比较难提取处理,比较少用到这个波段 这个波段主要是有可能躯体感觉皮层,进行一个多通道的感觉输入的i信号处理,比如我们同时处理视觉和听觉信号的处理,而且γ波与我们记忆的形成有关 除此之外,还有一个特殊的波段,8~12hz的Mu波段主要是特指我们

Kobe123brant的博客 1万+

掌上单片机实验室 — 检验自整定效果(12)

前一步完成的 PID 参数自整定库的使用尝试,这一步验证一下使用 PID 自整定方式得到的 PID 参数是否靠谱? 实际测试结果:十分满意!

embedream的专栏 440

【水文】calico-node 启动失败 Init:CrashLoopBackOff

Defaulted container "calico-node" out of: calico-node, upgrade-ipam (init), install-cni (init), mount-bpffs (init) Error from server (BadRequest): container "calico-node" in pod "calico-node-4j7td" is waiting to start: PodInitializing

大健的日常的博客 1万+

掌上单片机实验室 – RT-Thread 应用程序框架(17)

通过跟踪调试,发现发送方式基本是阻塞完成的,故默认按阻塞逻辑处理,功能是实现了,后续再仔细分析一下。1)RT-Thread 创建线程多了一个参数:Slice,按说明是在轮流执行时,线程的执行时间,单位为 Tick,也就是说,RT-Thread 可以定义每个线程在轮流执行时的时间,而非每次Tick都转换线程。我觉得:就RT-Thread的学习而言,单个功能的示例官方已经提供,缺少的是结合实际需求(或接近实际的需求)的编程示例,比如说多文件的编程,因为随着代码增加,放在一个文件中会导致阅读费力,调试困难;

embedream的专栏 612

PCI-Express、MiniPCIe、ExpressCard接口转换说明/引脚互换关系

通过引脚PIN互换可以在PCI-Express、MiniPCIe、ExpressCard之间切换不同的接口;提供接口引脚表和标准尺寸图。

tech34的博客 7121

copilot基于 DeepSeek-R1 思路构建 VLA 自动驾驶强化学习系统

下面给出一个完整示例代码,结合 DeepSeek‑R1 的技术方法,实现一个端到端的 VLA(视觉+语言行动)自动驾驶深度强化学习系统。.2f。

ywfwyht的博客 774

掌上单片机实验室 – 基于框架编写第一个程序(9)

编程学习的目的是为了日后工作,在学习阶段编程的目的和工作不同,工作中编程目的是为了解决问题,而学习阶段的目的是掌握编程技能,解决问题的需求只是载体,并非目的,和学数学时的应用题性质一样。 掌上单片机实验室为编程学习构建了程序框架,目的就在于此。 本篇尝试基于程序框架编写第一个应用。

embedream的专栏 382

Python爬取公交线路信息及站点shp数据 文末附数据下载地址

三、现在已经获取到了各个线路名称、链接,以及所途径的上下行站点,那么接下来就应该对开始对第三页url进行信息采集,即本次爬虫的最终目的:爬取所有站点的GPS坐标数据。但坑就坑在,二环一号线属于环线,所以只有左侧有站点数据,而其他非环线车次的站点数据分有上下行,如果用正则匹配,则分不清楚到底哪些是上行站点哪些是下行站点。以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的网站为公交网,废话不多说直接开始吧。checi=二环一号线。

J_Giser的博客 1316

掌上单片机实验室 — 基础实验(5)

​我尝试构思几个实验内容,以便有兴趣的老师们更好的理解小车底盘作为实验装置的特点和优势。 所构思的实验内容是受到《乐高组件和ROBOLAB软件在工程学中的应用》一书的启发,此书为乐高中国代理推荐。 实验1:走指定距离 1、实验内容 编程使得小车以最快速度走完指定距离,距离值在900~1100mm内任意设置。按小车最快速度(使用4节镍氢充电电池,100% PWM时)对应走完设定距离的时间为最佳时间,为避免出现负值,可适当减小最佳时间。 2、评价标准 A)不得超过指定距离,超出则判不合格..

embedream的专栏 260

安路TangDynasty和FD和JTAG驱动器安装

安路FPGA产品矩阵包含SALPHOENIX高性能、SALEAGLE高性价比和SALELF低功耗三大系列,广泛应用于网络通信、消费电子等领域。配套的TangDynasty(TD)集成开发环境支持标准设计输入,提供完整优化流程与调试工具。简要介绍了TD 6.2.1版本的安装步骤。

wangjie36的博客 1030

VT-Refine:基于仿真微调的视觉-触觉反馈双臂装配强化学习

本研究提出VT-Refine框架,通过融合真实世界示范、高保真触觉仿真与强化学习,解决高精度双臂装配任务。方法分为两阶段:首先利用少量人类示范数据预训练视觉-触觉扩散策略;随后在数字孪生仿真环境中进行强化学习微调。关键创新包括:开发GPU加速的触觉仿真模块精确模拟压阻式传感器;采用基于点云的多模态表征实现无缝的跨领域迁移。实验表明,该方法在五个双臂装配任务中显著提升性能,触觉反馈使成功率提高40%。研究首次实现仿真环境中的大规模双臂视觉-触觉强化学习及sim-to-real迁移,为接触密集型任务提供了新解决

2506_90492529的博客 1795
上一篇: ROS学习笔记之八:尝试在FreeRTOS中使用ROSSerial
下一篇: 掌上单片机实验室 — 硬件基础(2)
嵌入之梦
博客等级 码龄21年 134粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入之梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值