Anyone doing an arduino controller?

Is anyone out there working on an arduino-based reef controller?

Continuing on the trend of using my current nano project as a test bed for ideas to incorporate into a very large tank at some point down the road, I'd like to pilot some controller ideas.

However, none of the controllers on the market do exactly what I want, and/or are prohibitively over-priced. I'm interested in functionality along the following lines:

- oscillating PWM output to control Tunze or other low-voltage DC pumps and/or waveboxes
- PWM output that ramps up and down at different times of the day to dim LED lighting arrays, gving as true as possible simulation of natural sunlight on a reef
- super-basic response to digital inputs, i.e. turning an ATO on and off in response to float switches
- interface to a PC for datalogging and remote control

It seems like all the reasonably-priced controllers focus on stuff I would consider secondary (temperature monitoring, pH monitoring, etc.). I may even just use an RKL or other cheap controller for that sort of functionality, rather than trying to design and build an interface to monitor analog probes.

I'm no EE, so it's going to take me months to get to the point where I feel comfortable enough to even think about tackling a project like this, but I'm trying to do research now. It seems like using the arduino or other similar product would be the easiest way to DIY a controller, so I'm interested to know if anyone here has attempted that.
 
I've got an arduino controller in progress right now. I've got some of the basic functionality working: OLED touchscreen GUI, access to data/control via web, etc. The reason I wanted to make my own (besides cost) is that eventually I want the software to be smart enough to be able to detect/identify instrument malfunction, so that a broken sensor doesn't cause the system to do something stupid.

I haven't had much time to spend working on it lately though.

Scott
 
I am not a fan of the arduino becuase I do not like C or C structured programming languages. It is a great platform, but I prefer a BASIC language environment. I use the Atmega devices with the BASCOM-AVR IDE and/or VB6 and VB.NET for most of my projects. I have authored true sunrise sunset calculation for both the BASCOM and VB platforms that do lat/long accurate sun rise/set nautical/civil/astronomical twilight, etc. I also have code for % of disc illuminated and other moon fucntions. I am not sure if I am willing to share the code outright and am not sure if you are able to translate BASIC style code to C style code. I would be more than happy to get you headed in the right direction though. You will likely find much more community support for the arduino than you will BASCOM.

There is a somewhat commercial thread here somewhere that has an arduino based project that is supposed to be open source, though it does not appear that the source has been released yet.

Look into the Dallas 1-wire devices, they are well suported with the platform you have chosen. I would also look into adding 0-5V I/O to the controller.
 
Last edited:
ive been kicking it around. i have 6 SSR's and a been working on a basic sketch andhave been kicking around a DIY temp probe.
 
Wow, I was half expecting this topic to fade into obscurity, but instead, three good responses in mere hours!

Scooter, I may be looking you up in a few months.

Bean, thanks for the advice. I'm not married to the arduino or any particular approach, so it's interesting to hear about another option.

rsuplido, do you have any involvement in that project? I've found that, and at least half a dozen other sites, blogs, or forum threads where people have gotten an exciting start, but unfortunately it seems like the follow-through to completion isn't as well documented (or hasn't happened as often!)
 
I have also started working on a tank tracker project/site tracking test results and visualizing data. if both projects got traction, we could add the NIC shield and have the tracker updated... [geek-dar going wild!]



nerdkit temp sensor
 
I am using the a wiznet board on my Atmega128 dosing controller... Not sure if I am happy with it though. It is the wiz810mj and it has some problems but then again I am not a tcp/ip stack guru either. It would appear that others are having decent luck with it (I can post some links if there is interest).

Here are some photos of the current project. I designed the main board. It holds the WIZNET board and an ATMEGA128 daughter card. The project is not done and will not be until this fall (to busy to even mess with it).

dosing_pump_raw_pcb.jpg


dosing_pump_partial_pcb.jpg


dosing_controller_bench_2.jpg


Doisng_controller_fully_populated_2.jpg


OpCode, neat link :) In our case we don't need the predictive filtering, as our system temperatures are very stable and change rather slowly. We are better served by noise filtering that throws out highs and lows that are more than X units from the current baseline temperature in time T.

der_wille_zur_macht:
There are a hundred ways to tackle a project like this. It may be prudent to look at the different development platforms and see what type of code style is a comfortable fit. You will find more public help with C based architectures (liek the arduino), but will likely find BASIC architectures easier to learn (albiet sometimes less powerful). Once you find something that feels right, then map out your planned features. Once the features are mapped out, it is time to see if the chosen architecture can accomodate those features. If not, then it is back to square one :)

Have you looked that the linksys reef controller thread? It uses linux (owfs) and dallas 1-wire products. Pretty cool. Stugray is using a Rabbit ethernet enabled micro (C based code I think) and he loves it.
 
Last edited:
I have also been eyeing this:

http://www.microchipdirect.com/ProductSearch.aspx?Keywords=DV164131

It is a PICKit 3 debug kit.

It has everything you need to get going for only $70.

It has a PIC18F45k20 on a development board.

that chip has 4 hardware PWMs built in.
I am guessing it would be trivial to make a 4 channel PWM with timers & a LCD display.

Stu


Bean - Good to see you back....again

Oh and "again I am not a tcp/ip stack guru either."
That is one reason I like the Rabbit - royalty free TCP stack SW ( plug & play ).
 
Arduino is a physical computing/prototyping environment. It's an approach, not a single product.

Basically, it's a standard hardware design based on an ATMega microcontroller, and a set of software tools that make it easy to program the chip, vs. having to build your own hardware and write software from scratch.

People use them for everything from posting a message on twitter every time they flush their toilet to controlling robots.
 
I built a fully working controller controlling everything including LED's. I have programmed in random weather patterns as well that really make it neat to watch the passing clouds throught the day as well as thunderstorms and lightning. It is built off of the mega board. I can post the code if anyone is interested.
 
http://www.diy-labs.com/projects/arduarium-controller

Not my hardware or my coding. I have merely offered suggestions and feedback. It may be considered somewhat commercial as he is selling boards, boards + kits, and completed kits; however, he isn't making much per board. I etched my own boards from his eagle files and ordered the components from mouser because I like to do that sort of thing. I also ordered a complete set of kit boards from him. So far it works as advertised, pH, temp working, and hopefully ORP soon. It controls my LEDs nicely also. Future plans include datalogging, controlling 16 ssr's via i2c expansion, ATO duties, etc.

Again I have no affiliation other than being an early adopter/supporter. If this post is viewed as commercial, please remove it, as I do not want to end this thread or cause any uproar in the community.
 
I built a fully working controller controlling everything including LED's. I have programmed in random weather patterns as well that really make it neat to watch the passing clouds throught the day as well as thunderstorms and lightning. It is built off of the mega board. I can post the code if anyone is interested.

Yes please!

Im starting down the Arduino road (did a swap for a barely used Diecimila, which runs an Atmega 168) so Im very interested in other people's approaches and ideas
 
just curious for the arduino, how are you guys getting the pin address you want? i have been looking at alot of different code and not sure how you are getting them, is the software 2 way, if you grounded a pin would it come back on the software what pin is being grounded with its address? Any feed back would be great
thanks jeff
 
Drake, I'm not really sure what you're asking. The pins are numbered, so if you want to do something to or with a pin, you just use the pin's number in the appropriate function. For instance, pin 3 is a PWM pin. If you were using it to dim LEDs and at one point in the day you wanted the LEDs to be at 50%, you'd use the AnalogWrite function, which takes a pin number and a value. So you'd have this line of code:

analogWrite(3, 127);

Similarly, if you had a float switch attached to pin 7 and you wanted to know if it was "on" or "off" you'd use the digitalRead() function, like this:

digitalRead(7);

If you're looking at someone else's code and you see something like this:

analogWrite(ledPin,150);

then it's because they have a variable called ledPin that's been assigned a number representing the pin the LED is attached to. This is common practice because it keeps all the pin assignments in one place, and makes the code more readable. If you see that line in your code, you know it's setting the value for an LED, instead of just seeing a number in the function.
 
Back
Top