天天看点

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

一、背景

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

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

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

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

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

二、构想和理由

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

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

  1. 缩小体积(为了满足机器人足球FIRA的规定),在桌面上即可调试小车运动。
  2. 不涉及组装,以模组形式提供,电气连接采用插针,不用焊接。
  3. 将小车的驱动部分涉及的因素集成,将控制分离,便于根据需要选择单片机,直接使用单片机IO即可驱动。
  4. 增加了小车运动相关的反馈检测(简易编码器、驱动电压、电路检测),以丰富小车编程素材。
  5. 采用4节7号充电电池供电,设计了电源管理电路,电池不用拆下即可充电,以方便使用。增加5V升压稳压电路,以保证可靠性,改善体验。

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

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

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

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

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

  1. 验证IO输出功能:做一个点亮LED的实验
  2. 验证IO输入功能:做一个按键响应实验
  3. 验证AD输入功能:用一个电位器,采集输入的变化,用万用表比对一下。
  4. 验证定时器PWM功能:接一个直流电机驱动一下,在电机轴上装一个黑白圆盘,观察电机转速随PWM占空比的变化。

……

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

各端口的定义如下:

每侧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,以及合适的软件开发环境,并设计一些符合小车特征,且蕴含单片机学习内容的实验项目,以免让上述构想成为水中月、镜中花。

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

继续阅读