树莓派 Pico ADC温度测量
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. 开发
- 为了能够直观看到温度,我们需要通过串口将温度打印出来需要启用USB UART。
- 由于这次还需要使用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)
程序方面:
- 初始化IO。
- 初始化ADC
- 启用温度传感器。
- ADC选择4号引脚读取。
- 循环读取计算温度。
#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温度测量相关推荐
- 微雪树莓派PICO笔记——1.基础介绍
文章目录 基础硬件 原理图讲解 电路图重点讲解 点灯实操 基础硬件 长度51mm,宽度21mm,板厚1mm pcb使用了沉金工艺,所以引脚都做了半孔设计,即可焊接2.54mm的排针,也可以直接焊在主板 ...
- 1024 程序员节:低代码低成本硬件 - 树莓派 Pico 2040
恰逢 1024 程序员节,程序员们忙着开交流会.或者写代码,来庆祝节日,或者随便写点什么,留下自己的足迹.CSDN 组织了好几个线下.线上的会,大家也在讨论开源.开放:小米的崔总,引用了<论语& ...
- 【树莓派 Pico 和 Pico W】
树莓派 Pico 和 Pico W 1. Pico族 2. 树莓派 Pico 和 Pico H 2.1 主要特点: 2.2 引脚和设计文件 3. 树莓派 Pico W 3.1 主要特点: 3.2 引脚 ...
- 树莓派Pico W无线WiFi开发板使用方法及MicroPython网络编程实践
树莓派Pico W开发板是树莓派基金会于2022年6月底推出的一款无线WiFi开发板,它支持C/C++和MicroPython编程.本文介绍树莓派Pico W无线WiFi开发板的使用方法及MicroP ...
- 树莓派PICO入门教程
文章目录 1.板子介绍 2.led开关 4.开关控制: 5.中断: 6.按按钮灯循环亮: 7.模拟输入: 8.PWM Control 9.OLED 10.H桥控制器小型直流电机 11.用上全部 树莓派 ...
- 树莓派Pico与MicroSD卡模块接口及MicroPython编制读写MicroSD存储卡程序
介绍树莓派(RPi)Pico开发板(或树莓派Pico W无线开发板)与MicroSD卡模块SPI接口技术原理及SPI接口硬件连接的具体步骤,讲述采用MicroPython和SDCard类编制程序读写M ...
- 树莓派pico和LM358运放组成的简单音频采样系统
基于树莓派pico和LM358运放的音频采样系统 简介 项目优势 采样板制作 简介 闲来无事,利用网上的图片,手动焊接了一个放大电路.采用LM358运放放大咪头信号,树莓派pico采样,ssd1306 ...
- 首款微控制器级树莓派 Pico,超廉价只需4美元
2021年1月21日,树莓派基金会发布了首款微控制器级产品:Raspberry Pi Pico. 该产品基于全新的 RP2040 芯片构建,售价仅 4 美元,国内标准售价 29.99 元人民币,目前在 ...
- 树莓派 Pico Clion开发
准备 交叉编译工具链 ARM GNU:下载页面 GNU工具链包括了 LD.GCC.G++等交叉编译连接工具 下载完成后下一步下一步安装就可以,注意一下安装路径. 树莓派Pico SDK下载: Pico ...
- 树莓派Pico开发板与大功率MOSFET/IGBT器件驱动控制24V直流电机技术实践
摘要:本文在介绍MOSFET器件和IGBT器件作为电子开关基本原理的基础上,讲述了树莓派Pico与MOSFET&IGBT器件驱动控制24V直流电机硬件接口技术,最后给出了树莓派Pico开发板G ...
最新文章
- 计算机网络:单播,多播
- AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算
- java线程死亡_java – 如何暂停main()直到所有其他线程死亡?
- ubuntu设置始终亮屏_如何设置默认显示亮度?
- matlab单边衰减正弦信号,指数衰减正弦信号
- windows下cmd中清屏
- 反射+javacsv+scv文件构建资源获取
- 百度Java三面:现场面试39题目实拍含答案!
- LeetCode刷题(36)--Text Justification
- JUC与JVM并发编程学习笔记03
- matlab tabular,LaTeX表格tabular背景色添加技巧
- infer的用法_使用 Infer 进行代码扫描
- 无人机实时流怎么开_直播解决方案,如何利用无人机进行直播
- 程序员约架事件中,薛非到底是因为不会用Github还是不会写Tokenizer而没有应战?...
- webapp期末作业-oneapp
- 计算机专业论文1000字英语作文,计算机专业毕业论文一千字以上
- 移动直播明争暗战五年:人性、梦想与资本的碰撞
- 逻辑运算符与或非(基础学习)
- linux里怎么看终端类型,如何区分Linux下的几种终端类型:tty、pty和pts
- python写完后打不开门_你的解锁方式为什么打不开门?
热门文章
- Glide异步加载图片,设置默认图片和错误图片
- Element-Ui 双重el-tabs组件选中第二层时,刷新导致第一层选中样式丢失问题以及解决方法
- java-php-python-ssm医药网络挂号系统计算机毕业设计
- python中print输出变量_python中如何使用print函数?
- .lnk 文件恢复默认打开方式
- 力扣刷题 DAY_68 回溯
- php编写网页实例,网页实例:怎么详细介绍用PHP来编写网页记数器
- 导出数据提示--secure-file-priv选项问题的解决方法
- opencv imwrite()保存图片崩溃
- php入侵代码,入侵PHP网站就这么简单.pdf