我如何确定我的电路板是否即将到期?


12

我有一个uno,我已经使用了三年了。我将在一个相当关键的项目中再次使用它,其中董事会方面的失败可能是相当昂贵和危险的。因此,我想确保董事会不会快要寿终正寝或即将失败。有没有可靠的方法可以确定电路板在不发生故障或性能下降的情况下能够运行多长时间?


“董事会的失败可能是相当昂贵和危险的”。定义昂贵并定义危险。也许Arduino并不是最适合您的应用程序,也许您需要以故障安全机制进行设计。
jippie 2014年

@jippie考虑小型无人机和/或其他中小型机器人。
asheeshr 2014年

Answers:


8

不幸的是,在固态电子设备中,没有太多方法可以真正确定“磨损”。

可能最有可能发生故障的是电解电容器和连接器。


首先,如果您将ATmega CPU用作可能伤害某人的东西,请与ATMEL联系并就安全注意事项进行交谈。大多数arduino型号使用的ATmega CPU 不适用于此类情况。

在每个数据表中:

Atmel产品无意,未经授权或担保用作旨在支持或维持生命的应用中的组件。

现在,实际上,这可能主要是律师排斥,但您仍应采取适当的预防措施。

真的,尽管除了连接器之外,通用arduino板上没有任何真正磨损的东西,但您为什么要以潜在的巨额成本节省30美元呢?只需购买一个新板。

我也强烈建议您选择带有SMT ATmega328P的板,因为这样可以将IC插座触点从关注的列表中删除。如果可能的话,还请移开排针,然后将焊锡丝直接焊接到板上。尽量减少连接器,因为它们是经常出现的故障点。


4

随着时间的推移,Arduino可能变得不可靠的部分之一就是其内存。在基于AVR的Arduino板上使用的微控制器中有三个内存池

  • 闪存(程序空间)是Arduino草图的存储位置。
  • 草图(SRAM)是草图在运行时创建和操纵变量的地方。
  • EEPROM是程序员可以用来存储长期信息的存储空间。

内存是电路板的一部分,可以对其进行检查和验证,从而评估其可靠性/运行状况。检查内存的最基本方法是在内存中的每个地址上写入特定的8位模式(字节字符),然后从每个地址读取存在的值。如果写入的值与读取的值匹配,则内存中的特定8位块目前正在正确运行。

ROM存储器中的磨损通常以逐块模式发生,即n * 8位块随时间而变差。因此,对于2K字节的ROM芯片,可以通过在芯片上的每个字节进行写入和读取以及计算正确运行的块的百分比来估算芯片的运行状况。如果失败块的百分比很高(15%-20%),则意味着内存可能很快就会失败。

可以使用单独的方法为每个内存部分编写测试代码。

SRAM

静态或动态声明的任何变量都分配在SRAM上。因此,我们可以声明一个大字符数组(〜2000),并用255(所有位1)填充每个元素。然后,我们可以尝试读取每个元素,并查看所读取的值是否确实为255。

EEPROM

可以使用EEPROM库操作EEPROM。该库提供了从EEPROM中特定位置读取和写入的功能。因此,只需在整个内存空间上循环即可测试所有内存地址。此操作将需要500次写入和读取。

根据电路板的使用情况,EEPROM最有可能首先发生故障,但对电路板的运行并不重要。

可以使用PROGMEM指令将数据存储在闪存中。与SRAM类似,可以在此处声明和初始化大型数组。然后,可以读取和检查值。


这只集中在微控制器上,而这在板上的可靠性最低。闪光灯的额定周期为10k-这很难实现。同样,该测试只能证明它现在可以正常工作,而不能放在应用程序中。确定只对程序存储器进行编程还是对EEPROM进行验证就容易得多。
Cyber​​gibbons

我想问一句“随着时间的流逝,Arduino可能变得不可靠的部分之一”。-闪存可以执行10k周期,而EEPROM可以执行100k周期。大量的写作。
Cyber​​gibbons

@Cyber​​gibbons内存密集型应用程序最终可能每分钟执行100次以上的写操作。这并不常见,但在使用大量传感器时可能出现。该测试将为我们提供正常工作的内存的百分比。我对Arduino上的ROM芯片没有特别的了解,但是许多ROM都具有在整个芯片上扩展读写周期的能力。这样的效果是,即使某些内存位置降级,也表明整个芯片很快就会降级。即使R / W周期尚未普及,即使是这样,如果某些地区开始失效,那么它是一个迹象,表明...
asheeshr

切屑的至少一部分经受了明显的磨损,从而使切屑部分不可靠。无论哪种情况,评估可用的整个内存范围都是找出芯片当前状态的可靠方法,这可以在不久的将来指示故障。是的,这不会告诉我该芯片在下一个项目中是否会失败,但是在危险或昂贵的应用程序中,我当然不会将出现故障可能性更高的芯片投入工作。
asheeshr 2014年

如果您要写入EEPROM或每分钟刷新数百次,那么您的寿命可能不到一天。那只是不当使用。ATmega中没有损耗平衡。
Cyber​​gibbons 2014年

-4

编辑:那些不赞成我投票的人,噢,别太傻了!为此,您需要是电子,然后通过电路本身检查一切是否正常:)

将评估板插入计算机的USB端口,并检查评估板上的绿色LED电源指示灯是否点亮。标准Arduino板(Uno,Duemilanove和Mega)在复位开关附近有一个绿色LED电源指示灯。

电路板上电时,电路板中心附近的橙色LED(下图中标记为“ Pin 13 LED”)应闪烁(从工厂预装了软件的电路板可以使LED闪烁),以方便检查。板正在工作)。

在此处输入图片说明

如果将主机板连接到计算机时电源LED指示灯不亮,则可能是主机板未接通电源。

闪烁的LED(连接到数字输出引脚13)由板上运行的代码控制(新板上预装有Blink示例草图)。如果13脚LED指示灯闪烁,则草图运行正确,这表示板上的芯片正在工作。如果绿色电源LED亮起,但插针13 LED不闪烁,则可能是工厂代码未在芯片上。如果您不使用标准板,则其插针13上可能没有内置LED,因此请查看文档以获取有关板的详细信息。

WindowsMac OS XLinux上都可以找到有关Arduino入门的在线指南。


2
问题是如何检查电路板是否接近故障,而不是是否已经故障
asheeshr 2014年

@AsheeshR:哦,别太傻了!为此,您需要成为电子,并通过电路本身检查一切是否正常:)
Hardik Thaker 2014年

2
@HardikThaker为什么不把它放在答案中呢?我想那会更好。另外,如果您不想丢掉答案(这很有用),则可以随时提出正确的问题并自己回答。通常是由专家来解决诸如此类的常见问题。
里卡多

@里卡多:那该死!谢谢,兄弟 !我会记住这一点:P下次给我带来更好的运气;)
Hardik Thaker 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.