758|1

2

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子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

效果

播放器加载失败: 未检测到Flash Player,请到安装
IMG_3647

代码

代码下载
 

最新回复

这效果非常好呀,期待大佬能拿好名次。  详情 回复 发表于 2024-1-15 14:06
点赞 关注
 
 

回复
举报

7145

帖子

11

TA的资源

版主

沙发
 
这效果非常好呀,期待大佬能拿好名次。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表