【得捷电子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
-
-
- 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)
-
-
- dac = adafruit_mcp4725.MCP4725(i2c)
-
- dac.value = 65535
-
- dac.raw_value = 4095
-
- dac.normalized_value = 1.0
-
- while True:
-
- print("Going up 0-3.3V...")
- for i in range(4095):
- dac.raw_value = i
-
- print("Going down 3.3-0V...")
- for i in range(4095, -1, -1):
- dac.raw_value = i
-
效果
播放器加载失败: 未检测到Flash Player,请到 安装
IMG_3647
代码
代码下载
|