- 2024-01-15
-
发表了主题帖:
【得捷电子Follow Me第二期】补充 NAU7802 ADC模块和MCP4725 DAC模块的使用
本帖最后由 eew_sqNFJw 于 2024-1-15 01:42 编辑
任务一 NAU7802 ADC模块的使用
本次任务使用nau7802模块和LM32模拟温度传感器获取当前的温度
nau7802模块是一款精密低功耗 24 位模数转换器 (ADC),具有板载低噪声可编程增益放大器 (PGA)、板载 RC 或晶体振荡器,以及精密 24 位 Σ-Δ (Σ-Δ) 模数转换器 (ADC)。该设备能够高达 23 位 ENOB(有效位数)性能。该设备提供了一个完整的前端电桥/传感器测量的解决方案,例如体重秤、应变仪和许多其他高分辨率,低采样率应用。许多内置功能使高性能应用程序的外部部件数量非常少。此外,工作电流和待机电流都非常低,许多电源管理功能包括在内。这些可以只为芯片中需要的那些元件供电,并且此外,如果不需要完整的 23 位 ENOB 性能,则以大大降低的功率运行可编程增益放大器 (PGA) 提供 1 至 128 的可选增益。A/D 转换用 Sigma-Delta 调制器和可编程 FIR 滤波器执行,该滤波器提供同时50Hz和60Hz陷波滤波器,有效提高抗干扰能力。此外,该设备提供了一个与 I2C 协议兼容的标准 2 线接口,用于简单直接地连接到和与各种可能的主机处理器互操作。
LM35 是由National Semiconductor 所生产的温度传感器,其输出电压为摄氏温标。LM35是一种得到广泛使用的温度传感器。
nau7802模块
LM35模块
import board
from io import BytesIO
import displayio
import busio
from digitalio import DigitalInOut
import adafruit_imageload
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
import socketpool
import adafruit_requests
import ssl
import wifi
import time
from adafruit_datetime import datetime, date,timezone,timedelta
import json
import re
from adafruit_display_shapes.roundrect import RoundRect
import asyncio
import rtc
from adafruit_esp32spi import adafruit_esp32spi
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
import adafruit_minimqtt.adafruit_minimqtt as MQTT
import neopixel
from adafruit_led_animation.animation.blink import Blink
import adafruit_led_animation.color as color
from cedargrove_nau7802 import NAU7802
# Instantiate 24-bit load sensor ADC; two channels, default gain of 128
nau7802 = NAU7802(board.I2C(), address=0x2A, active_channels=1)
def zero_channel():
print(
"channel %1d calibrate.INTERNAL: %5s"
% (nau7802.channel, nau7802.calibrate("INTERNAL"))
)
print(
"channel %1d calibrate.OFFSET: %5s"
% (nau7802.channel, nau7802.calibrate("OFFSET"))
)
print("...channel %1d zeroed" % nau7802.channel)
def read_raw_value(samples=2):
sample_sum = 0
sample_count = samples
while sample_count > 0:
while not nau7802.available():
pass
sample_sum = sample_sum + nau7802.read()
sample_count -= 1
return int(sample_sum / samples)
enabled = nau7802.enable(True)
time.sleep(3)
nau7802.channel = 1
display = board.DISPLAY
group = displayio.Group(scale=1)
color = 0xffffff
font = bitmap_font.load_font("/font/font.pcf")
date = label.Label(font, text="", color=color)
date.x = 0
date.y = 30
group.append(date)
display.show(group)
while True:
print("=====")
nau7802.channel = 1
value = read_raw_value()
print("temperature: %2.1f" % (value* (5/10.24)))
date.text="temperature: %2.1f" % (value* (5/10.24))
效果
任务二 MCP 4725 DAC模块的使用
本次任务使用mcp4725模块生成0到3.3v连续变化的电压
mcp4725模块介绍 MCP4725模块是一款i2c 控制的数模转换器(DAC),DAC可以从数字源发送的数字信号转换为模拟信号
import board
from io import BytesIO
import displayio
import busio
from digitalio import DigitalInOut
import socketpool
import adafruit_requests
import ssl
import wifi
import time
from adafruit_datetime import datetime, date,timezone,timedelta
import json
import re
from adafruit_display_shapes.roundrect import RoundRect
import asyncio
import rtc
from adafruit_esp32spi import adafruit_esp32spi
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
import adafruit_minimqtt.adafruit_minimqtt as MQTT
import neopixel
from adafruit_led_animation.animation.blink import Blink
import adafruit_led_animation.color as color
import busio
import adafruit_mcp4725
i2c = busio.I2C(board.SCL, board.SDA)
# Initialize MCP4725.
dac = adafruit_mcp4725.MCP4725(i2c)
dac.value = 65535
dac.raw_value = 4095
dac.normalized_value = 1.0
while True:
# Go up the 12-bit raw range.
print("Going up 0-3.3V...")
for i in range(4095):
dac.raw_value = i
# Go back down the 12-bit raw range.
print("Going down 3.3-0V...")
for i in range(4095, -1, -1):
dac.raw_value = i
效果
[localvideo]a498ba4e7d259a86fc8b33a46e6bf5b9[/localvideo]
代码
代码下载
-
上传了资料:
【得捷电子Follow me第2期】补充项目代码
- 2023-12-28
-
加入了学习《【得捷电子Follow me第2期】 项目总结视频》,观看 follow me 2 任务总结视频