Go Down

Topic: Garage door, getting the position (Read 5180 times) previous topic - next topic

bld

Jun 12, 2010, 05:11 pm Last Edit: Jun 13, 2010, 08:05 am by bld Reason: 1
I am still working on my garage port controller, but I am unsure on how to determine the position of the port.

I would like to be able to set the position (maybe) 0 - 100% where 0% would be closed, and 100% fully opened. Thought about adding a rotary encoder to the motor, and then just count how far it moves, and then calculate that into percent. The problem there is just that if the power has been off, or program reset in the arduino, it wouldn't know where the port then is.

Any idea on what to do with this? Or would the rotary encoder be the best, and then let the arduino open or close the port to measure the port position.
captain-slow.dk | non contagious!

Jeff K

If geared right, you could use a pot.  Something similar to a servo.  That way you would always know where it was.

Something that may or may not be harder to achieve... Create a gray-scale line across the length of the door. From black to white and then read the reflectivity with a sensor.
Jeff K - JKDevices.com - home of the MegaMini

tkbyd

One solution to the "if power fails" problem is as follows....

You use both a relative "has gone x units forward" sensor, and an absolute "it has reached the end" sensor.

On every power up, you cause the door to move until the "it has reached the end" sensor is tripped, and then count from "there".... until the whole thing has to be repeated after the next power failure. (You also use the "reache end" indication to take care of "drifting" between power failures.)

bld

#3
Jun 12, 2010, 05:35 pm Last Edit: Jun 12, 2010, 05:37 pm by bld Reason: 1
hmm, the strip is a good idea, but cant be used, the port is moving longer than its own length, so it would move off the scale. And it folds too, so a big area isn't possible to use. Should then use two sensors, but that might be a mess to work with too.

I should try to see if I could count the rotations of the motor, to see if it would be possible to use a multi turn pot.

Quote
On every power up, you cause the door to move until the "it has reached the end" sensor is tripped, and then count from "there".... until the whole thing has to be repeated after the next power failure. (You also use the "reache end" indication to take care of "drifting" between power failures.)

Yes, was thinking about that too, but would like it not to have to move on power up.
captain-slow.dk | non contagious!

zoomkat

If you have access to a rotating component, then gearing down the rotation to where full travel of the port is less than a whole rotation would allow the attachment of a pot. Some hobby shops have adjustable gear boxes, or look for a cheap toy with a geared setup to hack.  
Google forum search: Use Google Advanced Search and use Http://forum.arduino.cc/index in the "site or domain:" box.

bld

Trying to count the rotations it takes to fully open or close the port. But it is a bit difficult as it is turning pretty fast, and hard to see in there.

If it turns less rotations than it takes to move a multi turn pot from minimum to maximum, then that would be the best thing to use, I think. It would then just be to connect it directly to the shaft, and make a little mount for the pot.
captain-slow.dk | non contagious!

cr0sh

Quote
hmm, the strip is a good idea, but cant be used, the port is moving longer than its own length, so it would move off the scale. And it folds too, so a big area isn't possible to use. Should then use two sensors, but that might be a mess to work with too.


By "port", I am assuming you are meaning "door" - ie, a "garage door" to let an automobile in/out of the garage.

You don't say what kind of door this is, nor what is moving it. Here in the US, we have two typical kinds of garage doors - one that is basically a slab that moves on special hinges and large springs to tilt it up and over:

http://www.remodelguide.com/improve/garage/garage_intro.gif  (right image)

...and one that is composed of segmented pieces that moves on a curved track, typically with a coiled spring and cable counterweights to carry the extra load:

http://garagedoorrepairhelp.com/wp-content/uploads/2009/06/garage_door_parts_diagram.jpg
http://www.easyrollgaragedoors.co.uk/garage_doors_yorkshire_images/garage-doors-sectional-doors2.jpg
http://earlcarterlumber.com/images/affina_interior_432.jpg


...then there are the roll-up doors composed of multiple small segments - but you only see them usually on commercial buildings. There are other options (side swinging, plus some variations on the hinged vs segmented roller), but the majority here are one of the two types above (with the segmented roller version becoming more widely used despite its much higher initial cost - you see them more on new homes and remodels).

Either type of door can be moved by an opener that has the long rail and slider (chain, belt, or screw drive); sometimes on the segmented doors, though, the opener goes in place of the coiled spring and cables counterweight system:

http://www.1stdooropeners.com/walljackshaft.jpg

Knowing exactly what type of door you are moving, and what kind of system is moving it, may help us to help you come up with a positioning solution.

Quote
I should try to see if I could count the rotations of the motor, to see if it would be possible to use a multi turn pot.


A multi-turn pot with a gearing system might be the best (and simplest) way of implementing a positioning system. You could also do something similar with a regular potentiometer (because really, that is all a multi-turn pot is - a regular pot - sometimes linear travel - that is geared down to the knob).

The idea of a gray-scale line could be done, but doing it would be difficult. What might be better (depending on the door style) would be to set up a simple "bar-code" (look into "Gray Code") along the edge of the door (if on a track) that could be read by a few photo-detectors. You could probably position the door within a few centimeters of precision with such a system (not sure what your needs are, but that seems reasonable to me).

If your door is the "tilting slab/hinged" type, you could connect the potentiometer to one of the moving guide bars on the hinging system via a linkage; since the door moves in a fraction of a circle, a standard pot could be easily used.

Another way to measure the position would be to connect a tape measure tape to the end of the door; as it moves up and down, the tape would move in and out (the torsion spring in the measure would retract it). Add a means to sense the movement of the tape (bar code, contact roller/gear mechanism, etc). Something similar could be done also via a retractable clothes line mechanism.
I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

mrmeval

Since that is something that has to be done safely you'd want an optical incremental rotary encoder with a home position.

http://www.arduino.cc/playground/Main/RotaryEncoders This gives a basic understanding of them. Industrial ones are available on ebay for around $25. I picked up one that does 1024 pulses per revolution and works at 5-24 volts which allows it to work with the Arduino or with 24volt industrial controllers. You want the line driver version.



If it was designed by man it can be repaired by man.

bld

#8
Jun 12, 2010, 09:49 pm Last Edit: Jun 12, 2010, 09:53 pm by bld Reason: 1
Yes it is a door... Language confusion, door and port isn't the same in Danish. A door is something that is sized for persons to walk through, and port  for bigger "doors" that are for car and such.

Mine is one with hindges that bend when it opens

Video of it here:
http://www.youtube.com/watch?v=vBooiW4eCQk

This also shows how the motor opening it is working.

The idea with a measure tape is good, but I just finished removing the old wires from it, and made it all nice and tidy (and changed the switches to some magnetic ones instead http://bld-live.dk/?p=68), so I would like to keep it as clean as possible, with as few things hanging around as possible too. :) Also thought if it could be possible to do inside or near the rails the wheels are running in, but they are shielded in a way that prevent things to come in between, so can't attach anything there and still make it invisible.


Quote
Since that is something that has to be done safely you'd want an optical incremental rotary encoder with a home position.

http://www.arduino.cc/playground/Main/RotaryEncoders This gives a basic understanding of them. Industrial ones are available on ebay for around $25. I picked up one that does 1024 pulses per revolution and works at 5-24 volts which allows it to work with the Arduino or with 24volt industrial controllers. You want the line driver version.

With a home position? Isn't that only for telling you where on the 360 degrees rotation it is? I need something that can tell the Arduino where it is somewhere in 50-80 revolutions.
captain-slow.dk | non contagious!

Graynomad

#9
Jun 13, 2010, 02:17 am Last Edit: Jun 13, 2010, 02:20 am by graynomad Reason: 1
You can also get absolute rotary encoders, same as the pot idea but digital.

Thinks...but that would need X inputs whereas the pot only needs 1.

Quote
Yes it is a door... Language confusion

A "door" in English is basically anything that opens and closes to let anything pass through, regardless of size.
Rob Gray aka the GRAYnomad www.robgray.com

zoomkat

What is the total travel length of the port? I looked at the video, and lots of different possibilitys. The joint panels flex as they are moving which could be monitored. I think a martini is in order to get the creative juices flowing.  ;)
Google forum search: Use Google Advanced Search and use Http://forum.arduino.cc/index in the "site or domain:" box.

bld

Quote
The joint panels flex as they are moving which could be monitored. I think a martini is in order to get the creative juices flowing.

That sounds like a solusion that will leave nothing than a headacke, just like the martini. ;)

Quote
I would put a layer of insulating tape down the side of the aluminum channel (the one with the lead-screw inside). Then I would put a length of carbon conductive tape to form a 3-meter long "slide pot". That would give you an absolute reading on position and you can connect it directly to an Arduino analog input.

That is a very good idea! Only problem is to add a wire to the moving door, or maybe that can be worked around by putting two up, and then just connect one to another, and then read two instead of one.
captain-slow.dk | non contagious!

BenF

What about ultrasound?

A distance sensor mounted at the bottom edge of the door pointing downwards would allow you to read the door position relative to ground at all times.

bld

Quote
A distance sensor mounted at the bottom edge of the door pointing downwards would allow you to read the door position relative to ground at all times.

Would work too, but I would then still have to attach a wire to the moving door.

I could also let the arduino time the door every time it is doing a full move, but I think that would get very inaccurate efter 2-3 steps without a full move, plus the time changes depending on how cold it is, because there are much bigger resistance from the rubber seals on the outside when it is cold.
captain-slow.dk | non contagious!

zoomkat

Questions:
1) what is the position accuracy you need?
2) How much $$$ are you willing to spend?
Google forum search: Use Google Advanced Search and use Http://forum.arduino.cc/index in the "site or domain:" box.

Go Up