×

CSS555 EEPROM编程器开源分享

消耗积分:0 | 格式:zip | 大小:0.02 MB | 2022-11-02

张娟

分享资料个

描述

今年世界著名的555定时器IC迎来50周年!从那时起,IC 发生了很多事情,但 555 定时器 IC 仍然有其追随者。大多数设计人员都知道,如果您需要一个计时器用于必须节省电力的项目,现在您可以购买经典 555 计时器的 CMOS 版本。然而,似乎没有多少人知道CSS555计时器。这款 IC 在很多方面都非常特别。首先,它仅使用其他低功率CMOS 555 IC(例如TLC555)使用的功率的1/10。其次,CSS555 有一个内置的 EEPROM,允许您对其进行编程,以将延迟时间乘以 1(标准 555)到 100 万倍。这太棒了,因为 555 定时器的长时间延迟总是需要使用非常大的电解电容器。因此,使用 CSS555,您可以跳过它并坚持使用数量级更小的陶瓷电容器。这样可以节省空间并使电路总体上更可靠。看看下图中的两个电容器。左边是10uF陶瓷电容,右边是1000uF电解电容。使用普通的 555 定时器(例如 NE555 或 TLC555)并使用相同的延时电阻,较大的电解电容器会产生比小得多的陶瓷电容器产生的延迟长 100 倍的时间延迟。但是,使用 CSS555 计时器,您可以将其编程为具有 1、000、000 的乘法因子。如果这样做,则意味着您可以从较小的陶瓷电容器中获得时间延迟,该时间延迟比较大的电容器使用常规 555 计时器所提供的时间长 10, 000 (!)....

 
一个 10uF 陶瓷电容(左)和一个 1000uF 电解电容(右)。使用 CSS555 定时器,您可以从较小的 10uF 电容器获得时间延迟,比使用较大 1000uF 电容器的标准 555 定时器获得的时间延迟长 10,000...
 

除了 CSS555 定时器外,还有一个 CSS555C 定时器,它还具有一个内置电容器,您可以将其值编程为 (85-115 pF)。这将使您可以轻松地微调电路!简而言之,如果您要设计需要定时器并依靠电池供电长时间运行的电路,那么 CSS555/CSS555C 定时器值得一看。

基于 Arduino 的 EEPROM 编程器

虽然很高兴能够在 CSS555/CSS555C 中对内部 EEPROM 进行编程,但您还需要一些东西来对其进行编程。您过去可以为这些 IC 购买一个编程器(EZ-programmer ),但在本文中,我将向您展示一种使用 Arduino 对这些 IC 进行编程的简单方法。我应该提到我的程序的一部分是基于我在网上找到的由 Ron Spooner 编写的代码。谢谢罗恩!!但是,我的代码有一些关键的时间差异,它扩展了功能,还包括验证功能。这样,您就知道在将已编程的 CSS555/CSS555C 插入电路之前编程进行得很顺利。

对于这个 EEPROM 项目,我选择了基于 I2C OLED 显示器和 4x4 键盘的用户界面。我还包括一个控制 CSS555/CSS555C 电源的功能,这样您就可以在不关闭 Arduino 电源的情况下热插拔 CSS55/CSS555C。因此,我必须在这个项目中使用 Arduino Mega,因为 Uno 和 Nano 都缺少我们需要的数字引脚数量(需要 1 个额外的引脚)。

除了 Arduino Mega、OLED 显示屏和键盘外,该项目还使用了两个晶体管(2N2222 和 2N2907)、两个 510 欧姆电阻、一个 5.1K 电阻和一个绿色 LED。LED 指示 555 的电源何时打开,这在读/写操作期间是短暂的。当 LED 熄灭时,可以安全地移除 CSS555/CSS555C。

pYYBAGNht8-ABQ_fAAxMk3svwWc387.jpg
用于 CSS555/CSS555C 的基于 Arduino MEGA 的 EEPROM 编程器
 

如何使用 EEPROM 编程器

程序员正在使用一组菜单,允许您设置 CSS555 和 CSS555C IC 中的所有参数。此外,它还允许您设置外部参数(Ra、Rb、Cx),它会根据设置自动计算延迟时间。此外,每次写入 EEPROM 时,设置都会存储在 Arduino 内部,并在下次启动 Arduino 时调用。这将使您不必重新输入您通常使用的所有值。

当您使用编程器时,以下按键具有特殊功能:

A) 进入主菜单

B) 跳到下一个子类别

C) 增加显示的值

D) 减少显示的值

7) 大幅减少显示的值

9) 大幅增加显示的值

#) 写入 EEPROM

pYYBAGNht9aAXexTAArSJVfjA7E474.jpg
EEPROM 编程器的特写,显示启动时的主菜单。
 
pYYBAGNht-OALSlcAAvhOWY1a_A614.jpg
用于输入信息的 4x4 键盘。
 

外部参数(Ra、Rb 和 Cx)选自 E6 系列。电阻器以 Kohm 为单位,其值可以在 100K-10M 范围内。电容以 pF 为单位,值在 10pF-10nF 范围内。如果不使用外部电容,它也可以设置为零。但请注意,软件会自动将内部寄生电容 (26 pF) 考虑在内,以进行所有计算。这个寄生值是通过一系列实验发现的。

内部电容(仅限 CSS555C)可以在 85pF 和 115pF 之间设置,增量约为 0.1pF(8 位,256 级,30pF 范围)。

pYYBAGNht-uADAo4AAtB1Z3Ywpg254.jpg
设置内部电容值时的 EEPROM 编程器特写。延迟时间 (T) 以 HH:MM:SS 格式显示。在这种情况下,延迟时间计算为 1 小时 12 分 38 秒。
 

仔细查看 EEPROM 信号和时序

完全配置 CSS555/CSS555C 只需要两个字节(配置字节和电容字节)。虽然这听起来很容易,但我很快发现这很困难。这主要是由于该 IC 的文档(旧版本)中存在与时序相关的错字。但在制造商的帮助下,通过使用示波器查看信号,我终于弄清楚了如何让这一切正常工作。因此,我想我可以在这里分享我的发现,因为它可能会为那些对这些计时器感兴趣的人提供一些关于协议的信息。

对于您将设置或读取的每个字节(配置字节和电容字节),与 CSS555/CSS555C 的通信是一个两步过程。首先,您发送一个命令字节,指示您想要做什么(设置或读取以及您引用的字节),然后您发送字节或从 CSS555/CSS555C 读回一个字节。

在 CSS555/CSS555C 上设置一个字节

在下面的图 1a 中,我展示了当我们发送命令字节 0001-0010 然后发送配置字节 0000-1011 时信号的样子。这里要注意的重要一点是,触发发生在命令字节的时钟脉冲的上升沿(低到高)和配置字节的下降沿(高到低)!我在图中用垂直线标记了触发点。还应该指出的是,在与 EEPROM 通信时,所有位都以相反的顺序发送(LSB 在前)。

poYBAGNht-2APhTHAADVicifZmE266.png
图 1a:设置命令/数据字节阶段的信号。黄色:启用,粉色:时钟,蓝色:CSS555 上的数据输入引脚,绿色:CSS555 上的数据输出引脚。设置(数据字节中的最后四位):1011,单稳态 1000X。示波器:Sigilent SDS1104X-E。
 

从 CSS555/CSS555C 读取一个字节

当我们想从 CSS555/CSS555C 读取一个字节时,我们首先必须发送一个指示我们想要做什么的命令,然后监听来自 CSS555/CSS555C 的字节。在下面的图 1b 中,我展示了当我们发送命令字节 0001-0001 然后读回字节 0000-1011 时,该相位在示波器上的样子。和以前一样,请注意,发送命令字节时触发发生在时钟脉冲的上升沿(低到高),而从 CSS555/CSS555C 读取字节时,触发发生在时钟脉冲的下降沿(高到低)。

poYBAGNht--AOH__AADRwbIKhFc265.png
图 1b:设置命令/回读数据字节阶段的信号。黄色:启用,粉色:时钟,蓝色:CSS555 上的数据输入引脚,绿色:CSS555 上的数据输出引脚。设置(数据字节中的最后四位):1011,单稳态 1000X。示波器:Sigilent SDS1104X-E。
 

最后的想法

在这个项目中,我们展示了如何轻松地为 CSS555/CSS55C 定时器 IC 制作基于 Arduino 的 EEPROM 编程器。两个定时器的区别在于 C 版本还包括一个可编程电容器,该电容器的值可以设置为 85 到 115 pF。

然而,在我对这两个版本的实验中,我发现了一些非常有趣的东西。在我的设置中,CSS555 版本的 IC 实际上具有大约 26 pF 的内部寄生电容。但是您为 C 版本编写的值包括此值!因此,实际上 C 版本中的可编程电容可以取 59 到 89 pF 的值,因为内部 26 pF(常数)被添加到该值。这并不重要,但值得指出的是,您为 C 版 IC 设置的电容是包括内部寄生电容在内的总电容。

最后,是什么让这些计时器如此出色?就我而言,我在控制基于 Arduino Nano 的项目的电源的电路中使用 CSS555/CSS555C。这样该项目可以在标准 9V 电池上运行多年(!!!)...在下面的图 2 中是我的台式万用表的屏幕转储,显示了 9V 电池在睡眠周期期间的总电流消耗为我基于 Arduino Nano 的项目提供动力:8.55uA!

poYBAGNht_GASn28AABpA6yiWew701.bmp
图 2 我的台式万用表的屏幕截图显示了睡眠周期期间为我的基于 Arduino Nano 的项目供电的 9V 电池的总电流消耗。数字万用表:Siglent SDM3045X
 

是的,您可以使用更适合的微控制器以及代码中的各种或多或少的高级睡眠模式来实现类似甚至更好的结果。但我想要一种简单的方法来在使用 9V 电池长时间运行的项目中使用我的标准 Arduino Nano 或 Uno。在 CSS555/CSS555C 的帮助下,这很容易实现。所有这些都没有带有睡眠模式或拆焊不必要组件的单行代码!

问题或意见?请随时通过abaruk*@gmx.com与我联系(将地址中的“b”替换为字母 m,将星号替换为数字 1)。

更新 1

我现在已经使用这个基于 Arduino 的 EEPROM 编程器大约两个月了。在这段时间里,我可能已经对一百多个 CSS555 和 CSS555C IC 进行了编程,并且编程过程每次都有效!嗯,这并不完全正确......它实际上让我失败了一次,但那是因为我把 CSS555 放在了错误的方式(颠倒)......令我惊讶的是,这个愚蠢的操作错误并没有导致 CSS555 爆炸向上!不,在我以正确的方式放置相同的 CSS555 后,我可以成功地对其进行编程!

pYYBAGNhuAiAGBYxAA1IntBUVQw465.jpg
我的一些编程 CSS555 IC 用于快速检查基于 555 的电路。
 

更新 2

经过几个月的使用,我决定根据这个设计设计一个定制的 PCB。我将 PCB 设计为 Arduino MEGA 的屏蔽层。下面是一些显示结果的图片。

poYBAGNhuA6AV5VEAAyJ061wcj427.jpeg
带有 EEPROM 编程器的 Arduino MEGA 扩展板。
 

 

poYBAGNhuByAC2ERAAy3wijIqtA48.jpeg
正在运行的 Arduino MEGA 盾牌的特写镜头。
 

 

poYBAGNhuCGAYGLUABAPJokZPDg379.jpg
三个并排的 EEPROM 编程器。
 

 

pYYBAGNhuCiAfq_MAA1TWqTGHTI160.jpg
用于设计 Arduino MEGA 扩展板的定制 PCB。
 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !