Help with Arduino controlled venetian blinds

Hi,
I'm developing an automated hydroponic garden (Window Farm) to be controlled by an arduino. I've got the hydroponics garden figured out as that's merely sending voltage to a pump at regular intervals. But whats holding me up is figuring out how to control my venetian blinds. I've about got all the hardware figured out, using an H-bridge to control 2 signals to open and close the blinds with a motor from solarbotics.

The programming is the hangup for me is programming the arduino for the blinds; largely because I want this to be automated while allowing me to open or shut the blinds as I please.
To elaborate:

  1. I would like to program this so that the arduino opens and closes the blinds at specific times of the day
  2. I would like to be able to push a mom-on switch to open and close the blinds as desired. This can be as simple as 3-5 step positions from full closed to full open; I don't need fine adjustment.

To satisfy both of these criteria without breaking my blinds, I understand the arduino needs to have some form of position monitoring. Now I don't see a nice easy way to put a potentiometer in the system to turn with the blinds so I'm wondering if I can get the arduino to monitor the blinds setting by monitoring how many milliseconds the motor has been activated (by both auto and manual) or if there's a much simpler solution to the problem?

Any suggestions are much appreciated.
Thanks,
Mike

Doesn't solve a servo your problem. Usually the 180 degree rotation limitation of a standard servo should be enough to control your venetian blinds.

It's just a motor, i can rotate it as much as I want.

What about the possibility of using an LDR to sense light level in the room, and have some way to select that you want a certain light level, then the blinds are adjusted to achieve that level (until end-stops are encountered and/or within a certain error level)?

You didn't mention -exactly- what kind of blinds you have (the term "venetian blinds" can cover a range), but if you have access (ie - can remove) the blinds from the window, and can access the control shaft in the top channel (assuming your blinds operate in that fashion), then you may be able to mount an optical reflective sensor or something to detect a "white mark" or such on the shaft or a gear inside. Then - just count the pulses.

Another possibility (though more difficult) would be to detect the back-emf from the motor, and convert that into pulses. You might also be able to mount some kind of optical sensor and simple encoder onto the output of the gear motor to detect pulses. Or maybe a hall-effect sensor and magnet...

A long time ago I made a servo controlled blind operated via a web page (below).

http://web.comporium.net/~shb/blindtilt.htm

I had considered the LDR but I'd rather control the automatic part by time and I still want to be able to manually adjust the blinds.

As for what kind of blinds, they're the run of the mill horizontal ones hanging from strings. I have direct access getting the motor attached to the wand's hook. Hardware isn't an issue; I'm trying to figure out how to think about writing the code to monitor it's position.

So you wanna be able to pull it up and let it down using the motor and not just adjusting the angle of the slats?

In this case I would install an end switch (activating when the blind is topmost) and an optical rotation encoder, a device with two photoelectric sensors and bi-colored wheel. To initialise move the blind up till the end switch triggers. From there you can move it down to the position you want and store the position.

I guess I should have clarified that. When I say open and close, I don't mean raise and lower the blinds. What I mean is cause the blinds to rotate open and shut.

It sounds as if you want to know the position of the blind, and the most obvious way to achieve that is to use a stepper motor or servo to control it - with a stepper, you'd also need to provide a way to find the starting position. Is it feasible to change your design to use a stepper/servo?