Tag Archives: Cat Feeder Unreminder

Cat Feeder Unreminder Breadboarded

I got the entire project onto a breadboard… mostly! A combination of evaluation boards and breakout boards and I was able to verify all the subsystems are working correctly together.

The entire system draws ~5.6uA at 3.3V from the super capacitors. Measured through the uCurrent.

Here is the breadboard with the subsystems called out.

Up next is to complete the enclosure design and then the board layout!

DG469 Analog Switch

The DG469 is an analog switch that can be controlled with digital signals. The switching part of the chip is bi-direction which is perfect for switching analog signals.

The DG469 designed in Eagle in the SOIC-8 package.

I will be using this IC to switch which segments on the TN LCD get powered up. The NC (Normally Connected) will send power to the “Don’t feed” notification state. The NO (Normally Open) will send power to the “Feed” notification state.

It also has very low power requirements which will be perfect for my project.

Here is the schematic for the DG469 for the Cat Feeder Unreminder.

I put V- to ground through a jumper because the datasheet isn’t very clear on how to set it up for unipolar power supplies. Gives me a chance to change what that voltage is.

Wiring up the CFU Display

The CFU (Cat Feeder Unreminder) will notify the user that it is safe and timely to feed the cat through a use of a TN style LCD. These are typically a 7-segment style instead of graphical. The CFU also needs to notify the user that the device is still operating.

Part Number: VI-422-DP-RC-S

The common (COM) pin of the display will be directly connected to one leg of the oscillator circuit. Depending on where the other leg of the oscillator is routed, the display will either show “FEEd” or will light up the S1 segment.

LTC2956 Schematic for the Cat Feeder Unreminder

Based on my testing of the evaluation board, this is the schematic for the LTC2956 I am using in the Cat Feeder Unreminder.

The resistor from RANGE to LONG pin is set to 100K ohms. This is specified in the datasheet.

To set the actual time for the timer to activate the EN pin (t PERIOD), You need to first select the range resistance from the chart below. In my case I want to activate every 22hrs. 162K ohms is the resistor I chose which sets NRANGE to 262,144.

To calculate the period resistor, this is the formula provided by in the datasheet.


For 22hrs, tPERIOD becomes 22 x 60 x 60 x 1000 = 79,200,000. This gives an R PERIOD of 120,849.609 ohms. I picked a 121K ohm resistor.

To send the device into the sleep state, I tied the SLEEP signal through a switch to VCC (3.3V). This brings SLEEP high on button press. When the button is released, SLEEP has a falling edge which is what the LTC2956 is looking for to send it into the sleep state.

Unboxing a DC2254A-A Evaluation board for the LTC2965-1

For keeping the time for the Cat Feeder Unreminder I am planning on using the LTC2956-1 which is a super low power timer that has push button reset control. It can accurately handle very long timers that a traditional RC style timers (think 555 timer) wouldn’t be able to do.

To see if this chip will work for my application I picked up the DC2254A-A evaluation board.

The box the DC2254A-A evaluation board comes in.

Inside the box.

The Evaluation Board

Here is the datasheet for the evaluation board.

For my use case, I am going to pull ONMAX to GND which will disable the timer that turns off the AWAKE timer. I will toggle the Sleep pin from low to high to low to reset the timer.

Seems to work!

LTC2956 Wake-Up Timer

To handle the timing aspect of the Cat Feeder Unreminder I am going to use the Analog (It is actually a Linear Technology part!) LTC2956 timer component.

This is a wake up timer IC that has built in push button support for reset. Perfect for this project.

The timer itself is configured with just a few resistors and can range from 250ms to
39 days. Setting it to the required 22 hours is a piece of cake for this timer.

In shutdown, it only pulls 800nA while active and 300nA in shutdown mode which is one of the lowest current use for a timer that I can find.

To set this up for the Cat Feeder Unreminder we need to stay in RUN MODE. The device can’t leave SHUTDOWN MODE without interacting with the PB switch and that would make for a hungry cat. The AWAKE STATE with EN=1 is when the device will tell us to feed the cat. SLEEP STATE with EN=0 is in standby counting till next feeding

  • ONMAX to GND
    • This sets the T ONMAX time to the max
    • T ONMAX will stay FALSE
    • We don’t want the device to auto fall into the SLEEP STATE
  • SLEEP to a switch
    • We will use this to send the device to the Sleep State
    • Active Lowq
  • Set LONG to max time
  • Tie PB HIGH
    • Makes sure we don’t fall into SHUTDOWN MODE
  • Set Period/Range for timer to activate in 22hrs

This should allow the EN pin to go high every 22 hours and will reset low when the push button on PB is pressed.

Part in Eagle designed.

AEM10941 Schematic

Just wrapped up the schematic side for the AEM10941 portion of the Cat Feeder Unreminder.

I broke out all the configuration pins to their own pullup / pulldown combos so I can experiment with voltage cutoffs for the super capacitors. Most likely leave most of configuration resistors unpopulated!

I found these really neat push button terminals that I am going to try to use for attaching the solar panel to the PCB. Part Number: TBL009-254-02GY-2GY

LPS4012 Inductor from Coilcraft

For the Cat Feeder Unreminder, the AEM10941 “ambient energy manager” has built in boost and buck regulators. These need external components like capacitors and inductors to function.

The example schematic in the datasheet for the AEM10941 looks like this and has these recommended components.

Schematic from the Datasheet for the AEM10941

The capacitors are just your standard 0603, which are kinda small for the values. My project can handle larger sizes which will net better performance and lower leakage current.

For example GRM32ER61A106KA01L (10uF 10V X5R 1210) vs GRM155R61A106ME11 (10uF 10V X5R 0402). While its hard to specify leakage current as it varies with voltage, temperature, and frequency you can look at the insulation resistance and the larger the package the larger the insulation resistance.

Anyways, enough about capacitors. The Coilcraft inductor the schematic specs is from the LPS4012 series. I didn’t have this family in my EDA tool already designed so I opened up the datasheet to this horror.

Land pad for the LPS4012 series inductor

This doesn’t look too bad but this showcases one of my pet peeves about how part manufactures dimension parts. Its pretty clear that mechanical engineers dimension parts. PCB Design tools don’t dimension like Mechanical Design Tools. In PCB tools, you typically specify the absolute location of the point/vertex of the line. This is different then Mechanical Design tools where you specify lengths and relationships between points.

For example look at this point right here that I circled in red.

For the EDA tool I use (Eagle) the only way to do this is to tell that point of that polygon is at point (-0.75mm, 1.17mm) assuming the center of the part is (0, 0). X is easy, 1.5mm / 2. Y on the other hand is (3.89mm/2) – 0.775mm. Again just some arithmetic, but this is where the problems occur on validating new footprints and having to spin a prototype again just due to a slip of math.

Part manufacturers either need to give the data in a way that makes it easy to translate into the tools the electrical engineer uses or EDA tools need to become more like Mechanical tools in how you parametrically associate line edges and dimension footprints.

The component EN2342QI, found on the CursedFootprint twitter account.

Now, I know that Autodesk has been working on bringing PCB layout design (and maybe schematic?) to the Fusion 360 ecosystem which would solve this problem. I don’t know how far along that product is but I should look into it for the next board I design. If Eagle libraries can be ported over then that would be rad.

Anyways there is the part designed in Eagle. You can get it in my part library which is on github.