Skip to content

第9周:输入设备 ​

本文档内容由我向 Claude 3.7 Sonnet 提供课程大纲内容,以及本课程视频会议课程的字幕后,由 AI 提炼生成。

课程概要 ​

本周课程专注于输入设备和传感器技术,教授如何将各种传感器连接到微控制器并从中读取数据。课程涵盖了多种输入设备,包括按钮开关、磁场传感器、步进响应测量、温度传感器、光传感器、运动传感器、距离传感器、实时时钟、位置传感器、加速度计、声音传感器、力量传感器和摄像头等。学生将学习如何使用这些传感器测量物理量,并将这些信息输入到数字系统中进行处理。

详细课程内容 ​

1. 课程简介与背景 ​

在制造电子设备的过程中,输入设备是与外部世界交互的关键环节。本周课程将深入探讨各种传感器技术及其应用。在接下来的几周中,我们将依次学习输出设备(如电机和显示器)、多处理器间的通信以及如何构建完整的机器系统。

2. 微控制器输入基础 ​

2.1 数据手册与引脚功能 ​

2.2 信号处理基础 ​

  • 模拟比较器:快速比较两个电压值
  • 模拟数字转换器:将模拟信号转换为数字值
  • I2C通信:越来越多的传感器使用I2C通信协议

3. 按钮和开关 ​

3.1 按钮原理 ​

  • 按钮类型:瞬时按钮、滑动开关
  • 去抖动(Debouncing):按钮按下时会产生振荡信号,需要通过软件或硬件去抖

3.2 按钮编程示例 ​

以下是基于 ESP32-C3 的按钮示例:

其他微控制器示例:

4. 磁场传感器 ​

4.1 霍尔效应传感器 ​

  • 原理:霍尔效应传感器测量磁场并输出相应电压
  • 方向性:翻转传感器可以测量不同方向的磁场
  • 灵敏度:足够灵敏可以测量地球磁场
  • 应用:检测盖子关闭状态、轴接近终点
  • 示例:hello.mag.45、板设计、代码、视频

4.2 矢量磁力计 ​

5. 可变电阻器(电位器) ​

6. 步进响应测量(Step Response) ​

6.1 电容感应原理 ​

  • 测量原理:基于充放电时间测量电容变化
  • 应用范围:测量电阻、电容、电感、位置、压力、倾斜、加速度、湿度、接近度等
  • 人体电容测量:利用人体导电特性测量接触或接近
  • 动画演示:步进响应模拟

6.2 自电容测量(单引脚) ​

6.3 远程处理器测量 ​

6.4 互电容测量(双引脚) ​

6.5 远程放大器测量 ​

6.6 介电谱测量 ​

  • 高频应用:在更高频率下可以测量物质特性
  • 物质识别:可以区分酒精、马提尼、啤酒、葡萄酒等不同液体
  • 参考资料:应用说明、理论、测量方法

6.7 应用示例 ​

7. 温度传感器 ​

7.1 热敏电阻桥式电路 ​

7.2 红外温度测量 ​

8. 光传感器 ​

8.1 光电晶体管 ​

8.2 同步检测 ​

8.3 颜色传感器 ​

9. 运动传感器 ​

9.1 多普勒雷达 ​

9.2 热释电传感器 ​

10. 距离传感器 ​

10.1 激光飞行时间测量 ​

10.2 超声波传感器 ​

11. 实时时钟(RTC) ​

12. 位置和时间传感器(GPS) ​

13. 加速度、旋转和方向传感器 ​

13.1 三轴加速度计 ​

13.2 六轴IMU(惯性测量单元) ​

13.3 九轴IMU ​

14. 声音传感器 ​

14.1 MEMS麦克风 ​

14.2 驻极体麦克风 ​

15. 其他传感器简介 ​

16. 图像传感器 ​

16.1 摄像头模块 ​

16.2 人工智能模块 ​

16.3 网络摄像头 ​

16.4 图像处理库 ​

16.5 网页图像处理 ​

作业要求 ​

小组作业 ​

探测输入设备的模拟电平和数字信号:

  1. 选择一种输入设备(如按钮、传感器等)
  2. 使用示波器或其他工具测量其模拟电平
  3. 观察并记录数字信号的特性
  4. 分析信号模式并理解其工作原理

个人作业 ​

测量某物:向你设计的微控制器板添加传感器并读取数据

  1. 设计并制作一个包含微控制器和传感器的电路板
  2. 编程读取传感器数据
  3. 数据可视化(通过Arduino/Thonny内置绘图工具或Python代码)
  4. 记录过程并撰写文档,说明传感器原理、应用和测量结果

参考示例:Adrian Torres的输入设备项目

建议:如果不确定选择哪种传感器,尝试使用步进响应(step response)技术,因为它只需要处理器引脚和简单的铜电极即可制作出各种有趣的界面和传感器。

学习资源 ​

参考资料 ​

  1. Input Devices课程主页
  2. AVR DB系列数据手册
  3. I2C通信协议说明

编程库和工具 ​

  1. Adafruit FreeTouch库
  2. [ESP32触摸传感器API](https://docs.espressif.com/projects/esp-idf/en