My Neptune Apex web interface compatible DIY reef controller

Doughboy when you update the github do you update the download zip so that it has the latest files in it? I was working on a new computer that wasn't setup to do a get and so I downloaded the zip. Just wanted to make sure I got the latest files by doing that. Krazie :jester:

yes, clicking download zip button will download all the latest version of the files.
 
ok, I see.
You actually need to set your lower float switch to a lower level such that when the skimmer is on, the float switch is still closed. Only when enough water evaporates to lower the level, then the ato pump with turn on. When you turn off the skimmer, the water level will rise higher than the lower float switch, so your ato pump will remain off.

The float switch status is checked once per second. If you find that your water level is too turbulent such that it makes the float switch switch too often (at most is once per second), you may want to check out float switch with "slosh guard". (its like the float switch is inside a container) I know you can get them from Grainger.

like this
MadisonMS8000Medium2.jpg
That will only work until the water evaporates to the floats top off level. When the skimmer shuts off the float will of coarse be submerged but when the skimmer turns back on the ato float will then close due to the loss of evaporated water. Three floats would be optimal (one for system failure, one for when the skimmer is running, and one for when the skimmer is not).
 
That will only work until the water evaporates to the floats top off level. When the skimmer shuts off the float will of coarse be submerged but when the skimmer turns back on the ato float will then close due to the loss of evaporated water. Three floats would be optimal (one for system failure, one for when the skimmer is running, and one for when the skimmer is not).

I don't see anything wrong with that.
That happens even on my setup. I turn off the skimmer one hour every 4 hours. when the skimmer turns back on, the ATO will come on to add fresh water. My lower float switch level is set to when skimmer is on.
 
When the skimmer is running the lowest float should be the one that calls for the ato to turn on or off. When the skimmer is not running the second float should determine whether the ato turns on or off. Finally the third float is a failsafe if the ato does not shut off.
 
When the skimmer is running the lowest float should be the one that calls for the ato to turn on or off. When the skimmer is not running the second float should determine whether the ato turns on or off. Finally the third float is a failsafe if the ato does not shut off.

you need to modify the code to make it work exactly as you need it.
 
Hey! Doughboy, Hat's off to your work and all efforts you have given to this project and thank you so much for sharing everything. I have followed this thread since the start and got inspired to do the same. I bought all the hardware and connected everything as shown in your schematic. I also followed all the instructions given by you on https://github.com/d0ughb0y/Chauvet16 but I'm getting these errors during compilation. Can you please suggest me something on that. I think i have placed all the libraries at right place and made all the changes correctly. I'm using Arduino 1.0.5 on windows 8 (tried on windows 7 as well but getting the same errors). I'll really appreciate your feed back!!

Code:
Chauvet16\Sensor.cpp.o: In function `Sensor::getAvg()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:94: multiple definition of `Sensor::getAvg()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:94: first defined here
c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
Chauvet16\Sensor.cpp.o: In function `Sensor::getVal()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:103: multiple definition of `Sensor::getVal()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:103: first defined here
Chauvet16\Sensor.cpp.o: In function `Sensor::isInitialized()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:132: multiple definition of `Sensor::isInitialized()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:132: first defined here
Chauvet16\Sensor.cpp.o: In function `Sensor::getEC()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:134: multiple definition of `Sensor::getEC()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:134: first defined here
Chauvet16\Sensor.cpp.o: In function `Sensor::getName()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:138: multiple definition of `Sensor::getName()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:138: first defined here
Chauvet16\Sensor.cpp.o: In function `SensorSerial::getresponse()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:155: multiple definition of `SensorSerial::getresponse()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:155: first defined here
Chauvet16\Sensor.cpp.o: In function `SensorI2C::getresponse()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:191: multiple definition of `SensorI2C::getresponse()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:191: first defined here
Chauvet16\Sensor.cpp.o: In function `SensorI2C::send(char*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:185: multiple definition of `SensorI2C::send(char*)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:185: first defined here
Chauvet16\Sensor.cpp.o: In function `SensorSerial::send(char*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:150: multiple definition of `SensorSerial::send(char*)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:150: first defined here
Chauvet16\Sensor.cpp.o: In function `Sensor::calibrate(char*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:111: multiple definition of `Sensor::calibrate(char*)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:111: first defined here
Chauvet16\Sensor.cpp.o: In function `Sensor::update()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:69: multiple definition of `Sensor::update()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:69: first defined here
Chauvet16\Sensor.cpp.o: In function `Sensor::init()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:18: multiple definition of `Sensor::init()'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:18: first defined here
Chauvet16\Sensor.cpp.o: In function `Sensor':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:11: multiple definition of `Sensor::Sensor(char*, Sensor::SensorType, Sensor::SensorAddrType, unsigned char)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:11: first defined here
Chauvet16\Sensor.cpp.o: In function `Sensor':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:11: multiple definition of `Sensor::Sensor(char*, Sensor::SensorType, Sensor::SensorAddrType, unsigned char)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:11: first defined here
Chauvet16\Sensor.cpp.o: In function `SensorI2C':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:175: multiple definition of `SensorI2C::SensorI2C(char*, Sensor::SensorType, unsigned char)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:175: first defined here
Chauvet16\Sensor.cpp.o: In function `SensorI2C':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:175: multiple definition of `SensorI2C::SensorI2C(char*, Sensor::SensorType, unsigned char)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:175: first defined here
Chauvet16\Sensor.cpp.o: In function `SensorSerial':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:142: multiple definition of `SensorSerial::SensorSerial(char*, Sensor::SensorType, HardwareSerial*, unsigned char)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:142: first defined here
Chauvet16\Sensor.cpp.o: In function `SensorSerial':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/Sensor.cpp:142: multiple definition of `SensorSerial::SensorSerial(char*, Sensor::SensorType, HardwareSerial*, unsigned char)'
Sensor.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/Sensor.cpp:142: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::get_path()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:381: multiple definition of `TinyWebServer::get_path()'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:381: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::get_type()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:383: multiple definition of `TinyWebServer::get_type()'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:383: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::read_next_char(Client&, unsigned char*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:534: multiple definition of `TinyWebServer::read_next_char(Client&, unsigned char*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:534: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::read(Client&, unsigned char*, unsigned int)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:543: multiple definition of `TinyWebServer::read(Client&, unsigned char*, unsigned int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:543: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::get_line(char*, int)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:551: multiple definition of `TinyWebServer::get_line(char*, int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:551: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebPutHandler::read_chars(TinyWebServer&, Client&, unsigned char*, int)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:624: multiple definition of `TinyWebPutHandler::read_chars(TinyWebServer&, Client&, unsigned char*, int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:624: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebPutHandler::read_fast(TinyWebServer&, Client&, unsigned char*, int)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:633: multiple definition of `TinyWebPutHandler::read_fast(TinyWebServer&, Client&, unsigned char*, int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:633: first defined here
Chauvet16\TinyWebServer.cpp.o:(.bss.mime_types+0x0): multiple definition of `mime_types'
TinyWebServer.cpp.o:(.bss.mime_types+0x0): first defined here
Chauvet16\TinyWebServer.cpp.o:(.bss.content_type_msg+0x0): multiple definition of `content_type_msg'
TinyWebServer.cpp.o:(.bss.content_type_msg+0x0): first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::write(char const*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:526: multiple definition of `TinyWebServer::write(char const*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:526: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::write(unsigned char const*, unsigned int)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:531: multiple definition of `TinyWebServer::write(unsigned char const*, unsigned int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:531: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::write(unsigned char)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:523: multiple definition of `TinyWebServer::write(unsigned char)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:523: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::send_file(SdFile&)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:511: multiple definition of `TinyWebServer::send_file(SdFile&)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:511: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::get_mime_type_from_filename(char const*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:473: multiple definition of `TinyWebServer::get_mime_type_from_filename(char const*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:473: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::is_requested_header(char const**)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:299: multiple definition of `TinyWebServer::is_requested_header(char const**)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:299: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::get_header_value(char const*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:387: multiple definition of `TinyWebServer::get_header_value(char const*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:387: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebPutHandler::put_handler(TinyWebServer&)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:637: multiple definition of `TinyWebPutHandler::put_handler(TinyWebServer&)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:637: first defined here
Chauvet16\TinyWebServer.cpp.o:(.bss._ZN17TinyWebPutHandler14put_handler_fnE+0x0): multiple definition of `TinyWebPutHandler::put_handler_fn'
TinyWebServer.cpp.o:(.bss._ZN17TinyWebPutHandler14put_handler_fnE+0x0): first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::send_error_code(Client&, int)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:335: multiple definition of `TinyWebServer::send_error_code(Client&, int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:335: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::begin()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:95: multiple definition of `TinyWebServer::begin()'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:95: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `malloc_check':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:59: multiple definition of `malloc_check(unsigned int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:59: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::get_field(char const*, int)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:572: multiple definition of `TinyWebServer::get_field(char const*, int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:572: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::decode_url_encoded(char const*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:401: multiple definition of `TinyWebServer::decode_url_encoded(char const*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:401: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::get_file_from_path(char const*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:453: multiple definition of `TinyWebServer::get_file_from_path(char const*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:453: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::assign_header_value(char const*, char*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:312: multiple definition of `TinyWebServer::assign_header_value(char const*, char*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:312: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::process_headers()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:99: multiple definition of `TinyWebServer::process_headers()'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:99: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::process()':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:222: multiple definition of `TinyWebServer::process()'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:222: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:72: multiple definition of `TinyWebServer::TinyWebServer(TinyWebServer::PathHandler*, char const**)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:72: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:72: multiple definition of `TinyWebServer::TinyWebServer(TinyWebServer::PathHandler*, char const**)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:72: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::send_content_type(__FlashStringHelper const*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:376: multiple definition of `TinyWebServer::send_content_type(__FlashStringHelper const*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:376: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::send_content_type(char const*)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:371: multiple definition of `TinyWebServer::send_content_type(char const*)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:371: first defined here
Chauvet16\TinyWebServer.cpp.o: In function `TinyWebServer::send_content_type(unsigned int)':
C:\Users\Gourav\Documents\Arduino\libraries\Chauvet16/TinyWebServer.cpp:359: multiple definition of `TinyWebServer::send_content_type(unsigned int)'
TinyWebServer.cpp.o:C:\Users\Gourav\AppData\Local\Temp\build5450523118256065823.tmp/TinyWebServer.cpp:359: first defined here
 
I got the source driver chip today and tested it. It does not work well. The Vce is too high, like 7 volts, leaving the fan with only 5 volts. From the datasheet circuit diagram, the driver does not use pnp transistor for output. I think that is why this chip is not as popular as the uln2003 npn driver chip.

So the circuit that will use the least component now is a ULN2003 to drive the 4 dosing pumps, and drive the 3 pwm fans via 3 PNP transistors (with one base resistor and one diode). The BC328 pnp should be able to handle up to 500ma.
Why can't you use the uln2003a to drive the fans? That's what I have in my circuit now but it's not up and running yet so just seeing what the problem is going to be?
 
Why can't you use the uln2003a to drive the fans? That's what I have in my circuit now but it's not up and running yet so just seeing what the problem is going to be?


Yes, there will be problem in the PWM output and the RPM reading since the main fan power will be floating above ground. Not all fans can be turned off completely by the ULN chip. Not only that, that fan will not run at full rated RPM due to it getting only 11v or less. With the PNP transistor, I measure the fan getting 11.98v from a 12.02 power source. If it was just a single load (like dosing pump), it would be fine, but not if you are using pwm or RPM reading in the circuit.

If the circuit does not get the Rpm reading, then you will not be aware the fan is not running at full speed when driven by ULN.
 
hello all



what is the idea of turn off the skimmer one hour every 4 hours


I did it to cut down on power usage. I considered replacing the return pump with a DC pump, but that won't give me as much benefit. Maybe when the DC pump price comes down.
 
I'll check out the price. I know the wp pump price has come way down. It's still added cost and will take time to break even. Turning off the skimmer 6 hours a day did not cost me anything up front.
 
I just updated github.
The latest code now does temperature compensation for conductivity and ph probes.
I also update the calibration page buttons so now you can do a single point calibration for condiuctivity.

Just to add to the pwm fan circuit note, the problem of fan not completely turning off is due to the Tach pin (RPM) requiring a pull up resistor and ends up powering the fan due to the fan's 12v floating above ground. meaning, using uln, to turn off the fan, instead of setting the V pin to 0, you set the Gnd pin to V or close to V.
Using PNP circuit ensures the fan power is at ground reference, and turning off the fan means setting V pin to 0 and the Tach pin pull up does not affect the circuit and not end up powering the fan.
I posted the question here
http://forum.arduino.cc/index.php?topic=265019.0
 
I just updated github.
The latest code now does temperature compensation for conductivity and ph probes.
I also update the calibration page buttons so now you can do a single point calibration for condiuctivity.

Just to add to the pwm fan circuit note, the problem of fan not completely turning off is due to the Tach pin (RPM) requiring a pull up resistor and ends up powering the fan due to the fan's 12v floating above ground. meaning, using uln, to turn off the fan, instead of setting the V pin to 0, you set the Gnd pin to V or close to V.
Using PNP circuit ensures the fan power is at ground reference, and turning off the fan means setting V pin to 0 and the Tach pin pull up does not affect the circuit and not end up powering the fan.
I posted the question here
http://forum.arduino.cc/index.php?topic=265019.0
Wow, I'm actually starting to understand all this :D

If I'm not using the tach pin though, am I alright with the uln?
 
Never mind, I have the circuit in place so I will do some testing and figuring out and maybe have a better understanding of it afterwards ;)

How's the pwm led control going? Have you decided how you are going to do it yet, ie ramp up, hold, ramp down or hourly changeable values, moonlight etc?
 
I'm currently shopping for parts to do a diy led so I have something to test the code with.

I've decided to get one of those 5 channel multi chip, but can't decide yet if I should get a lumia 5.1 (sells for $38) or the 100w epistars (sells for $55). I don't want to go overboard and spend too much.

as to the features, it will calculate sunrise sunset time each day for a selected location, and you specify a ramp time (default 1 hour) and ramp is via sine function. You can define max level for each channel. For night, you specify the max level for each channel as well, and it is adjusted to moon phase. In theory, the sun ramps up till noon then ramps down till sunset via sine function, so sun is really at peak for one moment only.

suggestions welcome.
 
I'm currently shopping for parts to do a diy led so I have something to test the code with.

I've decided to get one of those 5 channel multi chip, but can't decide yet if I should get a lumia 5.1 (sells for $38) or the 100w epistars (sells for $55). I don't want to go overboard and spend too much.

as to the features, it will calculate sunrise sunset time each day for a selected location, and you specify a ramp time (default 1 hour) and ramp is via sine function. You can define max level for each channel. For night, you specify the max level for each channel as well, and it is adjusted to moon phase. In theory, the sun ramps up till noon then ramps down till sunset via sine function, so sun is really at peak for one moment only.

suggestions welcome.

The Lumia 5.1 is an okay chip but if you are planning on actually using the fixture on a tank I would spend the extra and get the Lumia 5.2 instead. Yes, it's more money but it's also CREE LED's and the spectrum on it is pretty nice.
 
I wish I bought a 5.2 when I did my diy leds, very good reviews for colour and coral growth.

I would have to agree with the reviews. I'm getting great growth and incredible color with the 5.2 Only had it running for 3 weeks and so far it's putting my T5's to shame. I would highly recommend. Krazie :jester:
 
do you use ldd-500 or ldd-700 on the 5.1?
when 5.1 came out, it was the best thing since sliced bread, now it turns out it is not.

the 5.2 would need 2 1.5a driver? ldd only goes to 1a.
will 48v power supply still work with 5.2 since each channel is now under 20v. I take it the ldd will automatically detect the required voltage and do the conversion.
 
Back
Top