This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的社区:
我目前在将传感器连接到我的 Arduino Mega 2560时遇到困难。 尽管尝试了各种代码和电路设计、但仍然无法从传感器成功读取脉冲计数或温度值。 我曾尝试使用 TI 的培训视频和示例代码、但似乎什么都不起作用。
未来、我希望将总共15个 LMT01传感器连接到 Arduino Mega 2560、因此非常感谢为解决我当前的问题提供任何指导或帮助。
提前感谢您的帮助。
尊敬的 Aravind -
感谢您发帖、欢迎访问 E2E。
我可以为您指出这份培训材料、其中包括示例代码(第二个链接、来自 LMT01的产品页面)。
https://training.ti.com/how-interface-lmt01-temperature-sensor-arduino
https://www.ti.com/lit/zip/snic014
(由于 Mega2560没有内置 LCD、您可以将 LCD 打印替换为 Serial.prints 到 UART)
如果您仍然有问题、那么如果 您可以分享您连接的引脚/您正在执行的操作的原理图、这将有助于进一步帮助您。
Josh、感谢您的答复。
我尝试了您之前提供的相同代码、但做了一些修改、如下所示。 但 Arduino 串行显示器上没有输出。 我使用 WSON 封装。 VP 引脚连接到3.3电压、VN 连接到 Arduino MEGA 2560的数字引脚3、带有6.8k 的分流电阻器。
+3.3V ---------------- 副总裁-- [LMT01]----- VN ---------------- 数字引脚3
|
|
R (6.8K)
|
|
接地
------------------
//声明一个变量来保存脉冲计数,初始设置为0
volatile int pulseCount = 0;
//声明一个用于保持温度的变量,并将其初始设置为0
浮点温度= 0;
//声明一个变量来保持先前的脉冲计数,并将其初始设置为0
内部保持= 0;
//在电路板上电或复位时运行一次的设置功能
空 setup()
{
//将引脚3设置为输入
引脚模式(3、输入);
//以9600波特率开始串行通信
Serial.begin(9600);
//将模拟比较器控制和状态寄存器设置为 B01011010
ACSR = B01011010;
//将中断附加到引脚3上,该中断在信号从高电平下降到低电平时触发
attachInterrupt (digitalPinToInterrupt (3)、countPulses、Falling);
}
//重复运行的主循环函数
void loop()
{
//如果脉冲计数不为0 (即已接收到脉冲)
如果(pulseCount!= 0)
{
//等待脉冲计数稳定(即不再变化)
while (pulseCount!= HOLD)
{
HOLD = pulseCount;
延迟(1);
}
//根据脉冲计数计算温度,以摄氏度为单位
温度= 0.0625 * pulseCount - 50;
//将脉冲计数和温度打印到串行监视器上
serial.print ("脉冲计数:");
serial.print(pulseCount);
serial.print ("、温度:");
serial.print(temperature);
serial.println (" C");
//将脉冲计数重置为0以重新开始计数
pulseCount = 0;
}
//等待2毫秒,然后再次检查脉冲计数
延迟(2);
}
//在引脚3上接收到脉冲时触发的中断服务例程
void countPulses()
{
//脉冲计数递增1
pulseCount += 1;
}
-------------------------------------------------------
尊敬的 Aravind -
我认为您需要使用引脚 AIN0和 AIN1、如视频中所述、并由固件设置要使用的引脚。
在此处、根据进一步检查、与 UNO 不同、AIN0引脚(比较器的正输入)未映射到接头、但 AIN1引脚(比较器的负输入)是、因此您可能需要切换到 UNO 或 MSP430 LaunchPad。
Josh、您好!
我当前正在使用 Arduino UNO 板、但未能找到其上的 AIN0和 AIN1引脚。 我一直在参考一个视频[https://www.youtube.com/watch?v=CWDX6PdF-ZY&t=238s ]和原理图作为指南,我也尝试使用一些代码,但它没有产生所需的结果。
尊敬的 Aravind -
请访问: https://upload.wikimedia.org/wikipedia/commons/c/c9/Pinout_of_ARDUINO_Board_and_ATMega328PU.svg
引脚6和7是比较器的输入。
Josh、感谢您的帮助。 我已经通过在 UNO 引脚 D7或 Mega 引脚 D5上将 VN 连接到 AIN1成功激活了我的传感器。 我的下一个目标是以这种方式连接15个传感器、从而获取多个温度读数。 [在 MEGA 上]对这种设置本身进行任何修改、这是否可能?
若要读取多个 LMT01、您可以使用 GPIO 切换电源、如 LMT01数据表中的图34所示。
谢谢。
任
尊敬的任用户:
如前所述、i 仅在将 VN 连接到 Arduino MEGA 2560上比较器 AIN01 (数字引脚5)的负极后才获得读数 。 我如何将 VN 从15个传感器连接到单个 Arduino Mega 2560、就像您提供的那样? 这是我需要帮助的地方。 有可能吗?
谢谢你。
图34显示了连接到同一比较器的多个 VN。 您要读取的传感器由 GPIO 在 VP 端提供电源、而其余传感器在 VP 端接收悬空状态。 您需要进行的更改是 Vp、而不是 VN。
谢谢。
任
尊敬的任用户:
我很抱歉地说、我仍在努力理解您之前解释的逻辑。 您能否提供进一步的解释和指导? 我特别想知道是否有特定的 GPIO 需要连接到 Vp、以及您所描述的逻辑是否可用于同时收集来自多个传感器的输出。
对于给您带来的不便、我深表歉意、但我需要充分理解这一点、因为我需要同时从多个传感器获取数据。
感谢您的帮助。
问题可能是您需要"同时来自多个传感器的数据"。 建议的解决方案按顺序从传感器收集数据。 一次只能为一个传感器供电。 LMT01上电需要100ms 并接收其传输信号;您可能每秒从10个 LMT01传感器接收数据。 如果您需要的比较器更多、则需要更多的比较器、这可能同时还需要使用更多 MCU。
谢谢。
任