663|0

21

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow Me第二期】【补充】NAU7802 ADC模块与六轴传感器LIS30H模块的使用 [复制链接]

 

【得捷电子Follow Me第二期】补充NAU7802 ADC模块与六轴传感器LIS30H模块的使用


任务一 NAU7802 ADC

 本次任务使用nau7802ADC来获取电压测量值

nau7802模块是一款精密低功耗 24 位模数转换器 (ADC),具有板载低噪声可编程增益放大器 (PGA)、板载 RC 或晶体振荡器,以及精密 24 位 Σ-Δ (Σ-Δ) 模数转换器 (ADC)。该设备能够高达 23 位 ENOB(有效位数)性能。该设备提供了一个完整的前端电桥/传感器测量的解决方案,例如体重秤、应变仪和许多其他高分辨率,低采样率应用。许多内置功能使高性能应用程序的外部部件数量非常少。此外,工作电流和待机电流都非常低,许多电源管理功能包括在内。这些可以只为芯片中需要的那些元件供电,并且此外,如果不需要完整的 23 位 ENOB 性能,则以大大降低的功率运行可编程增益放大器 (PGA) 提供 1 至 128 的可选增益。A/D 转换用 Sigma-Delta 调制器和可编程 FIR 滤波器执行,该滤波器提供同时50Hz和60Hz陷波滤波器,有效提高抗干扰能力。此外,该设备提供了一个与 I2C 协议兼容的标准 2 线接口,用于简单直接地连接到和与各种可能的主机处理器互操作。

 

通过连接adc与单片机io口 让io口输出高电平将将io口插入 A+端 可以明显看到adc输出数值的变化

代码如下

from adafruit_bitmap_font import bitmap_font

import socketpool

import adafruit_requests as req

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 sock

import adafruit_minimqtt.adafruit_minimqtt as MQTT

import neopixel

from adafruit_led_animation.animation.blink import Blink

import adafruit_led_animation.color as col

from cedargrove_nau7802 import NAU7802



sensor_1 = NAU7802(board.I2C(), address=0x2A, active_channels=1)



def calibrate_zero():

    print("ch %1d calibrate.INTERNAL: %5s" % (sensor_1.channel, sensor_1.calibrate("INTERNAL")))

    print("ch %1d calibrate.OFFSET:   %5s" % (sensor_1.channel, sensor_1.calibrate("OFFSET")))

    print("...ch %1d zeroed" % sensor_1.channel)



def read_raw_samples(samples=2):

    sample_sum = 0

    sample_count = samples

    while sample_count > 0:

        while not sensor_1.available():

            pass

        sample_sum += sensor_1.read()

        sample_count -= 1

    return int(sample_sum / samples)



enabled = sensor_1.enable(True)

print("Digital and analog power enabled:", enabled)



print("REMOVE WEIGHTS FROM LOAD CELLS")

time.sleep(3)



sensor_1.channel = 1

display = board.DISPLAY

grp = displayio.Group(scale=1)

clr = 0xffffff



fnt = bitmap_font.load_font("/font/font.pcf")

dt = label.Label(fnt, text="", color=clr)

dt.x = 0

dt.y = 30

grp.append(dt)

display.show(grp)



while True:

    sensor_1.channel = 1

    val = read_raw_samples()

    print("ADC Value is %d" % val)

    dt.text = "ADC Value is %d" % val

任务二 LIS30HLIS3DH是一个三轴加速度传感器,可用于检测X、Y、Z轴上的加速度,以及设置阈值,在加速度超出阈值时触发中断,支持SPI和IIC读写。

 

下面主要是IIC方式读写:

 

SPI方式读写类似,参考手册即可。一般情况下,可以用2根线,没必要用3线或者4线。而且IIC用GPIO模拟很方便,网上例程很多,这里就不贴了,搜一搜就有。

首先硬件连接会决定该模块的IIC地址

如果SAO脚接地,IIC地址为0X30(不包含最低位).

如果接V3.3,则IIC地址为0X32(不包含最低位).

 

 

< class="p" style="">这个器件地址很重要,因为读写寄存器都是要先写一下对应的器件地址,然后再执行命令的。

 

注意先发送的器件地址只是前7位,最后一位决定的是读写位,0是写寄存器,1为读寄存器,所以写寄存器时是先写入“LIS_ADDR|0x00”,读的时候则是先写入“LIS_ADDR|0x01”,(LIS_ADDR这里指上文的IIC地址)。

a、主机向从机写一个字节,下表是通过IIC向LIS3DH寄存器写一个字节的流程。简单来说就是:先写1个字节的写命令+IIC地址,再写一个字节的你要写的寄存器地址,最后写一个字节你要写入寄存器的内容。

  代码如下

import time

import board

import busio

import adafruit_lis3dh



# Hardware I2C setup. Use the CircuitPlayground built-in accelerometer if available;

# otherwise check I2C pins.

if hasattr(board, "ACCELEROMETER_SCL"):

    i2c = busio.I2C(board.ACCELEROMETER_SCL, board.ACCELEROMETER_SDA)

    lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, address=0x19)

else:

    i2c = board.I2C()

    lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c)



lis3dh.range = adafruit_lis3dh.RANGE_2_G



while True:

    x, y, z = [value / adafruit_lis3dh.STANDARD_GRAVITY for value in lis3dh.acceleration]

    print("x = %0.3f G, y = %0.3f G, z = %0.3f G" % (x, y, z))

    time.sleep(0.1)

 

代码.zip

595.84 KB, 下载次数: 0

点赞 关注
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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