Instructables
Picture of CatGenie:  Resetting a SaniSolution Cartridge
Some Background:
I have two CatGenies, both of which take a proprietary cartridge that are good for sixty cycles. The CatGenie will not run without a non-empty cartridge installed. In my home, each unit runs four times a day (I have six cats), so a cartridge lasts only fifteen days. Each cartridge is about fifteen bucks. For those of you following along without benefit of a calculator, that totals sixty bucks a month in cartridges.

Environmentally, four cartridges per month equals a lot of foil, plastic and little circuit boards in the landfill - and I really don't see how CatGenie could sell refills without totally redesigning the cartridge.

Proposed Solution:
Adding new solution to an empty cartridge is not that complicated (see my other instructable), but it isn't really helpful because the cartridge has a microchip on it that acts as a counter. When the counter reaches zero, the cartridge is trash. This instructable will demonstrate how to reset the counter on the cartridge to "full" - allowing you to drop it back into the unit and rock on.

NOTE:
This instructable does cover resetting but does not cover refilling the solution in the cartridge; it assumes you have done so already. If you need help with the refilling process, please see my other instructable.
 
Remove these adsRemove these ads by Signing Up
1-40 of 135Next »
PaulF13 months ago

Hi mamalang. I know your post was 4 years ago, but I wanted to share with you the code I dressed up to current Arduino standard.

#include <Wire.h>

#define CG (B1010000)

boolean resetSuccess = false;int isReset = 13;int byteArray []= {01, 01, 01, 60, 60, 60, 60, 60, 60, 8, 8, 8, 33, 33, 33, 255};void setup(){ pinMode(isReset, OUTPUT); digitalWrite(isReset, LOW); Wire.begin();}

// join i2c bus (address optional for master)

void loop(){ if (resetSuccess) { delay (2000);resetSuccess = false; }

// our work is done - pause for a while

else { resetCartridge(); resetSuccess = verifyCartridge(); digitalWrite(isReset, resetSuccess); }}void resetCartridge(){ for (int i=3; i < sizeof(byteArray)/2; i++) { Wire.beginTransmission(CG); Wire.write(i); Wire.write(byteArray[i]); Wire.endTransmission(); delay(4); }}void movePointerTo(int deviceAddr, int memoryAddr){ Wire.beginTransmission(deviceAddr); Wire.write(memoryAddr); Wire.endTransmission();}boolean verifyCartridge(){ boolean success = true; movePointerTo(CG, 3); Wire.requestFrom(CG, 3); while (Wire.available()) { if (Wire.read() == 60 && success == true) {

// looking good so far

} else { success = false; } } return success;}

Updated code for Arduino 1.0.1 and above. Power up and LED will light, attach contacts (insert cartridge) and when it is complete LED will flash several times.

#include <Wire.h>
#define CG (B1010000)
boolean resetSuccess = false;
int isReset = 13;
int byteArray []= {01, 01, 01, 60, 60, 60, 60, 60, 60, 8, 8, 8, 33, 33, 33, 255};
void setup()
{
pinMode(isReset, OUTPUT);
digitalWrite(isReset, LOW);
if (isReset == HIGH)
isReset = LOW;
Wire.begin(); // join i2c bus (address optional for master)
}
void loop()
{
if (resetSuccess)
{
delay (2000); // our work is done - pause for a while
resetSuccess = false;
} else {
resetCartridge();
resetSuccess = verifyCartridge();
digitalWrite(isReset, resetSuccess);
}
}
void resetCartridge()
{
for (int i=3; i < sizeof(byteArray)/2; i++)
{
Wire.beginTransmission(CG);
Wire.write(i);
Wire.write(byteArray[i]);
Wire.endTransmission();
delay(4);
}
}
void movePointerTo(int deviceAddr, int memoryAddr)
{
Wire.beginTransmission(deviceAddr);
Wire.write(memoryAddr);
Wire.endTransmission();
}
boolean verifyCartridge()
{
boolean success = true;
movePointerTo(CG, 3);
Wire.requestFrom(CG, 3);
while (Wire.available())
{
if (Wire.read() == 60 && success == true)
{
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second

// looking good so far
} else {
success = false;
}
}
return success;
}
And no need to tear your cat genie apart. Here is the resetter I made from wire, electrical tape and a little piece of cardboard. I just hold it on the cartridge when I want to reset.
IMG_0884.JPGIMG_0883.JPG

what size of wires did you use and what kind

Can you make one for me? I will pay you! I have the CG60, please reply! I need this bad!
(removed by author or community request)
PM me.
catbox1204 years ago
The 120 Cartridge (clear) do not work within the original CatGenie, which only uses the 60 Cartridge (green) The 60 Cartridge do not work within the CatGenie 120.
I was wondering if this instructable worked on the cat-genie 120 cartridges, NOT if the cartridges are interchangeable!!! Still waiting on a answer...
Hi
I am British (don't hold that against me). I have the Cat Genie 120. Only had it since April 2013, yes I have a love hate relationship with it already. We have 8 cats so it is proving to be expensive. Has anyone managed to refil and re use a 120 cartridge. And if so could you walk me through the steps. Would be grateful. In desperate need of some help
Graham
I am also wondering if this will work with the 120, have you gotten a response yet Graham?

TIA!
~G~
silentfett1 year ago
geezus. i am so tech impaired and I managed to do this on the first try. I had a broken cat genie I bought from CL for 10 bucks for the spare parts so I used the cartridge part and now have a separate cartridge holder yay! I cannot believe how amazing this is i'm still shocked how easy it was. The only thing that was weird was that I had to turn the LED around so the flat side had to be the opposite of the directions. But, in the end, I found the LED wasn't necessary at all with the Duemilanove because the board has another blinking light that blinks the same cadence(?) as the LED once it works. GREAT DARN INSTRUCTABLE!
tirano1 year ago
Hi,
Does this works with the new 120 sani solution cartridges?
Thanks
katerlyn2 years ago
does anyone know what i have to do with my cat genie, on first cartridge only...it is full of water and wont finish the cycle. i cannot TOLERATE calling them, having serial number found, and waiting for a call back, help!
http://www.litterbox-central.com/litter-box/catgenie/topic3138.html
i have switched to wood pellets, and 20 cent aluminum trays from warehouse club....they are wonderful and i make many ahead of time like they do at shelters! but thank you for when i tackle emptying my genie that has been brown for many weeks now........full of water!!
The Snake5 years ago
Great work!

I've made a few mods to the code which :
- Flash the LED on for 5 seconds at startup, to show the program is working
- Correctly lights and blanks the LED on a successful cartridge reset. Previously it was always on.

You should remove the cartridge during the time that the "reset OK" light is on (2 seconds).

This worked well on my Duemilanove.

For some reason they don't allow code to be pasted into comments - new code is available at http://www.poptart.org/catgenie.pde
is there any way to make this unit set for 255 cycles? if so what do i need to change on the program
thanks
It is byteArray[3] that holds the number of uses to be written to the cartridge, so that's the 4th number in the array.

You can try changing that to a higher number, though beware that the CatGenie might not like it (haven't tried myself as I like to be reminded when the carts are getting empty).

If it doesn't work, just change it back to 60 and re-flash.


J>

omg that sounds like way to much info for im not that smart is theire any way ican get one all ready made please me im laid off and icat keep buying them they cost way to much and ihave 5 cats the needy cat lady heidi
sorry forgot email see heide1963@aol.com
Every time I do this, the light continually blinks after I put the cartridge in the holder.
Maybe I'm doing this wrong- When I use your program on my Duemilanove, it loads fine and when I reset the board it turns the light on for 5 seconds, then shuts it off. That's it until I reset it again. If I connect the cartridge after the light goes out, still nothing. I don't get the "reset OK" light, at all. And none of this seems to reset the cartridges, regardless of the LED lighting or not. Is the proper sequence turn on board, wait for light to go out, connect cartridge, wait for "reset OK" light, remove cartridge while light is on? How important is it that this all be done exactly right? I have successfully reset all 5 of my cartridges twice before, with the older version of the resetting program. However, I have had some weird issues lately with my cartridges not wanting to work after resetting, or working sporadically. The CG was complaining that the cartridge was empty (it was full), so I reset it and the CG ran a cycle, then started complaining again... Is it possible that I have damaged the chips on the cartridges? I'm just having a really hard time knowing what is going wrong, and I'd like to be sure I'm doing as many things right as possible. Thanks!
UPDATE- I bought new cartridges, and they fixed it. I think I definitely managed to "pop" my chips somehow... I'm still interested in the proper sequence, etc, though. Please, help me not pop my cartridges again!
That link to the program appears to be broken (for me at least). Can you re-post a new one please?
Hi... think there was a network problem at the time. Can you try again now? Seems OK for me.
Yes, it must have been a network problem because it is working fine now. Thanks a lot for the work on the updated code!
WORKS FINE...! thanks!
polemos3 years ago
Does it work with CatGenie 120 cartridges?
Its called the "Cartridge Genius"
There is a device on the market that works with the 120 now. Here is a link to the forum that its posted on. http://www.litterbox-central.com/litter-box/catgenie/topic3601.html#p20848
CartridgeGenius-1.jpg
cd113 years ago
In one of the previous strings someone mentioned that you could get the cartridge 're-setter' already made but the people selling them had to go underground due to law suit threats by Cat Genie. How does a person find someone selling these? I read the string about how to do it yourself and it is waaaaaaay beyond me. If someone has information I can provide my email. thank you.
Jayefuu3 years ago
Nice ible! Your humour in your writing kept me reading all the way to the end :D A cute picture of cats prowling around the CatGenie (after cleaning not before!) would probably make this front page worthy! It's very well written and probably something a lot of people would thank you for!
Idid it! I did it! I am not a computer geek at all but I can follow instructions. Bought the board, hooked up as described and it worked. Thank you all!! Especially the author of this thread.
The Snake3 years ago
Hi I've just uploaded a new Instructable that builds on this one. Take a look at http://www.instructables.com/id/CatGenie-A-smart-resettable-SaniSolution-cartrid/. There's a new version of the code and some other enhancements.
ExpressZero3 years ago
Use the below code when programming your Arduino. Upon powering up, the LED will remain lit. When you apply your board to the contacts on the cartridge, it will flash on and off several times, and you know it will have worked.

#include
#define CG (B1010000)
boolean resetSuccess = false;
int isReset = 13;
int byteArray []= {01, 01, 01, 60, 60, 60, 60, 60, 60, 8, 8, 8, 33, 33, 33, 255};
void setup()
{
pinMode(isReset, OUTPUT);
digitalWrite(isReset, LOW);
if (isReset == HIGH)
isReset = LOW;
Wire.begin(); // join i2c bus (address optional for master)
}
void loop()
{
if (resetSuccess)
{
delay (2000); // our work is done - pause for a while
resetSuccess = false;
} else {
resetCartridge();
resetSuccess = verifyCartridge();
digitalWrite(isReset, resetSuccess);
}
}
void resetCartridge()
{
for (int i=3; i < sizeof(byteArray)/2; i++)
{
Wire.beginTransmission(CG);
Wire.send(i);
Wire.send(byteArray[i]);
Wire.endTransmission();
delay(4);
}
}
void movePointerTo(int deviceAddr, int memoryAddr)
{
Wire.beginTransmission(deviceAddr);
Wire.send(memoryAddr);
Wire.endTransmission();
}
boolean verifyCartridge()
{
boolean success = true;
movePointerTo(CG, 3);
Wire.requestFrom(CG, 3);
while (Wire.available())
{
if (Wire.receive() == 60 && success == true)
{
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second
digitalWrite(isReset, HIGH); // sets the LED on
delay(50); // waits for a second
digitalWrite(isReset, LOW); // sets the LED off
delay(50); // waits for a second

// looking good so far
} else {
success = false;
}
}
return success;
}
sonar19713 years ago
I keep getting this when i try uploading the sketch:
undefined reference to setup.

Anyone have any ideas??
sagus3 years ago
Okay, I'm about to put my head through a wall with this one. :(

I'm using the modified code posted in the first comment, and everything LOOKS like it's going to go through fine, but when I put a catridge in... nothing. No light, nada. I know other people have mentioned the same result but the reset worked... however, when I go and plop the cartridge into my catgenie, the reset never went through. Tried it with 3 carts, all to the same result.

I'm using a Mega2560, but the code looks pretty standard, and all the pins are right where they belong. This is just baffling to me, but I will be damned if I have to shell out money for more of those damned cartridges. :) Any idea what my issue may be?
candyann3 years ago
I would pay for one of these as I have no hacker smarts. Please email candyann@telus.net
Thanks.
Doctorhash6 years ago
After reading through allot of the blogs it sounds like to me that the cartridge is using a RC charge timer to disable the cartridge. They do this in the auto industry to tell the computer the engine is still in its break time. After so many hours of charging the cap through a resistor the computer triggers on a set voltage setting a bit in the computer and then computer allows the engine to run at full power and acceleration limits. I read in one of the blogs that a gentleman shorted the two center contacts on the cat genie and he could constantly refill the cartridges. While another Gentleman tried this after the cartridge had been disabled and it would not work. I think what happened is the gentleman it worked for did this while the cartridge was new, shorting the blue contact to ground never gives the capacitor a chance to charge. But if you do it after the cartridge reaches 60 cycles you have to reset the EEprom which gets set when the cat genie reaches 60 cycles. So what I am saying is if you short the two contact pins (4 pins) in the center before the cartridge is disabled the cat genie never triggers on the RC time constant voltage and the EEprom never gets set. What keyed me in on this is you are using the analog voltage pins, why the analog voltage pins. If the cat genie is also using analog voltage I/O pins which are different from Digital I/O pins then there has to be a reason. Let me know what you think. I have a cat genie with about 8 wash cycles on it and a new cartridge. I am going to measure the voltage on those pins with a DMM to see if there is a difference between the two cartridges. If there is I will get back to you and let you know.
1-40 of 135Next »