1 工作原理

1.1 ADC基础原理介绍

树莓派Pico内置5个ADC引脚,其中4引脚接入了内置的温度传感器。

ADC(analogue-digital converter) 也即模拟数字转换器,也就是把模拟信号转换为数字信号。

  • RP2040芯片上搭载的ADC能够支持12比特的数模转换: 000~2122^{12}212
  • RP2040工作电压范围为: 0~3.3V。

可以得到电压与ADC采集参数的换算关系如下:

factor=3.3212factor = \frac {3.3}{ 2^{12}} \qquad factor=2123.3​

设ADC读数为 nnn ,那么电压vvv为:

v=n∗3.3212v = n * \frac {3.3}{ 2^{12}} \qquad v=n∗2123.3​

详见 [1] 4.9. ADC and Temperature Sensor

1.2 温度传感器

由于ADC直连温度传感器,温度传感器将会把温度以电压的形式反馈输出到ADC中,由ADC转换为数值。

根据官方给出的物理参数可知:

  • ADC 4通道接入温度传感器,见ADC图电路图。
  • 温度27°C时,电压为 0.706V
  • 温度与电压变换的函数的斜率为 -1.721mV/°C,翻译一下就是每增加1°C那么电压下降0.001721V

设温度为TTT,当前温度传感器的电压为vvv,可得到如下关系:

T=27−(v−0.706)0.001721T = 27 - \frac {(v - 0.706)}{0.001721} \qquad T=27−0.001721(v−0.706)​

电压vvv可以通过ADC的读数nnn通过转换公式得到,这样我们就可以通过ADC读数计算出当前温度:

T=27−(n∗3.3212−0.706)0.001721T = 27 - \frac {(n * \frac {3.3}{ 2^{12}} \qquad - 0.706)}{0.001721} \qquad T=27−0.001721(n∗2123.3​−0.706)​

详见 [1] 4.9.4

2. 开发

  1. 为了能够直观看到温度,我们需要通过串口将温度打印出来需要启用USB UART。
  2. 由于这次还需要使用ADC硬件外设,因此还需需要链接hardware_adc库。

Makefile.txt关键内容如下:

add_executable(adc_temp main.c)
target_link_libraries(adc_temp pico_stdlib hardware_adc)pico_enable_stdio_usb(adc_temp 1)
pico_enable_stdio_uart(adc_temp 0)pico_add_extra_outputs(adc_temp)

程序方面:

  1. 初始化IO。
  2. 初始化ADC
  3. 启用温度传感器。
  4. ADC选择4号引脚读取。
  5. 循环读取计算温度。
#include "pico/stdio.h"
#include "hardware/adc.h"
#include "pico/stdlib.h"
#include <stdio.h>// 数模转换器为 0~3.3v 最大值为 12bit
const float conversion_factor = 3.3f / (1 << 12);int main() {float v;float t;stdio_init_all();printf("Use adc channel 4, measuring temptutre\n");// ADC初始化adc_init();adc_set_temp_sensor_enabled(true);adc_select_input(4);while (true) {// 数字转换为电压v = adc_read() * conversion_factor;t = 27 - (v - 0.706) / 0.001721;printf("%.2f\n", t);sleep_ms(1000);}return 0;
}

程序烧录后读数如下:

可以发现读数并不准确,根据官方说法根据设备情况的不同,温度随电压的斜率可能会不一致,需要用户校准,才可以获得较为准确的读数。

参考文献

[1]. raspberrypi . rp2040 datasheet . 2021.11. https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf
[2]. raspberrypi . pico-examples . hello_adc . https://github.com/raspberrypi/pico-examples/blob/master/adc/hello_adc/hello_adc.c

树莓派 Pico ADC温度测量相关推荐

  1. 微雪树莓派PICO笔记——1.基础介绍

    文章目录 基础硬件 原理图讲解 电路图重点讲解 点灯实操 基础硬件 长度51mm,宽度21mm,板厚1mm pcb使用了沉金工艺,所以引脚都做了半孔设计,即可焊接2.54mm的排针,也可以直接焊在主板 ...

  2. 1024 程序员节:低代码低成本硬件 - 树莓派 Pico 2040

    恰逢 1024 程序员节,程序员们忙着开交流会.或者写代码,来庆祝节日,或者随便写点什么,留下自己的足迹.CSDN 组织了好几个线下.线上的会,大家也在讨论开源.开放:小米的崔总,引用了<论语& ...

  3. 【树莓派 Pico 和 Pico W】

    树莓派 Pico 和 Pico W 1. Pico族 2. 树莓派 Pico 和 Pico H 2.1 主要特点: 2.2 引脚和设计文件 3. 树莓派 Pico W 3.1 主要特点: 3.2 引脚 ...

  4. 树莓派Pico W无线WiFi开发板使用方法及MicroPython网络编程实践

    树莓派Pico W开发板是树莓派基金会于2022年6月底推出的一款无线WiFi开发板,它支持C/C++和MicroPython编程.本文介绍树莓派Pico W无线WiFi开发板的使用方法及MicroP ...

  5. 树莓派PICO入门教程

    文章目录 1.板子介绍 2.led开关 4.开关控制: 5.中断: 6.按按钮灯循环亮: 7.模拟输入: 8.PWM Control 9.OLED 10.H桥控制器小型直流电机 11.用上全部 树莓派 ...

  6. 树莓派Pico与MicroSD卡模块接口及MicroPython编制读写MicroSD存储卡程序

    介绍树莓派(RPi)Pico开发板(或树莓派Pico W无线开发板)与MicroSD卡模块SPI接口技术原理及SPI接口硬件连接的具体步骤,讲述采用MicroPython和SDCard类编制程序读写M ...

  7. 树莓派pico和LM358运放组成的简单音频采样系统

    基于树莓派pico和LM358运放的音频采样系统 简介 项目优势 采样板制作 简介 闲来无事,利用网上的图片,手动焊接了一个放大电路.采用LM358运放放大咪头信号,树莓派pico采样,ssd1306 ...

  8. 首款微控制器级树莓派 Pico,超廉价只需4美元

    2021年1月21日,树莓派基金会发布了首款微控制器级产品:Raspberry Pi Pico. 该产品基于全新的 RP2040 芯片构建,售价仅 4 美元,国内标准售价 29.99 元人民币,目前在 ...

  9. 树莓派 Pico Clion开发

    准备 交叉编译工具链 ARM GNU:下载页面 GNU工具链包括了 LD.GCC.G++等交叉编译连接工具 下载完成后下一步下一步安装就可以,注意一下安装路径. 树莓派Pico SDK下载: Pico ...

  10. 树莓派Pico开发板与大功率MOSFET/IGBT器件驱动控制24V直流电机技术实践

    摘要:本文在介绍MOSFET器件和IGBT器件作为电子开关基本原理的基础上,讲述了树莓派Pico与MOSFET&IGBT器件驱动控制24V直流电机硬件接口技术,最后给出了树莓派Pico开发板G ...

最新文章

  1. 计算机网络:单播,多播
  2. AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算
  3. java线程死亡_java – 如何暂停main()直到所有其他线程死亡?
  4. ubuntu设置始终亮屏_如何设置默认显示亮度?
  5. matlab单边衰减正弦信号,指数衰减正弦信号
  6. windows下cmd中清屏
  7. 反射+javacsv+scv文件构建资源获取
  8. 百度Java三面:现场面试39题目实拍含答案!
  9. LeetCode刷题(36)--Text Justification
  10. JUC与JVM并发编程学习笔记03
  11. matlab tabular,LaTeX表格tabular背景色添加技巧
  12. infer的用法_使用 Infer 进行代码扫描
  13. 无人机实时流怎么开_直播解决方案,如何利用无人机进行直播
  14. 程序员约架事件中,薛非到底是因为不会用Github还是不会写Tokenizer而没有应战?...
  15. webapp期末作业-oneapp
  16. 计算机专业论文1000字英语作文,计算机专业毕业论文一千字以上
  17. 移动直播明争暗战五年:人性、梦想与资本的碰撞
  18. 逻辑运算符与或非(基础学习)
  19. linux里怎么看终端类型,如何区分Linux下的几种终端类型:tty、pty和pts
  20. python写完后打不开门_你的解锁方式为什么打不开门?

热门文章

  1. Glide异步加载图片,设置默认图片和错误图片
  2. Element-Ui 双重el-tabs组件选中第二层时,刷新导致第一层选中样式丢失问题以及解决方法
  3. java-php-python-ssm医药网络挂号系统计算机毕业设计
  4. python中print输出变量_python中如何使用print函数?
  5. .lnk 文件恢复默认打开方式
  6. 力扣刷题 DAY_68 回溯
  7. php编写网页实例,网页实例:怎么详细介绍用PHP来编写网页记数器
  8. 导出数据提示--secure-file-priv选项问题的解决方法
  9. opencv imwrite()保存图片崩溃
  10. php入侵代码,入侵PHP网站就这么简单.pdf