Halloween Forum banner

1 - 11 of 11 Posts

·
Mad Monster Maker
Joined
·
2,673 Posts
Discussion Starter #1
I need help from all you electronics gurus out there. Here's my problem:

I want to build a spider prop, based on this spider
brown-widow-spider.jpg

The abdomen of the prop will be about 6 to 8 inches in diameter. The front and rear legs will be about 12 to 16 inches long, and the side legs will be proportionately shorter. Six of the legs will be static, made from armature wire, but I want the two front legs to have movement.

My idea is a simple circuit board to control a low rpm motor or servo(s) to make the front legs move up and down randomly, at irregular intervals. I'd like the motor/servos and the circuit board battery powered, so that the prop has no external wires.

Any information would be greatly appreciated.
 

·
Registered
Joined
·
3,241 Posts
Easily doable with a microcontroller, either a motor or a servo. I would probably go with a servo, the linkage would probably be easier and movement in either direction is easier to control. Decide what linkage/mech is easier for you to design and build and we can go from there.
 

·
Mad Monster Maker
Joined
·
2,673 Posts
Discussion Starter #3
After giving it some thought, I think you're right...servos is probably the better option. I did a crude (to say the least :eek:) sketch of what I had in mind

brown-widow-spider - Copy.jpg

Build a base plate foundation (blue). Mount the servos on it (green), attach the base of the front legs (red) to the corners, and attach linkages (black) to link the legs and the servos. Then build the body of the spider around the base plate.

I'm pretty good at the mechanical part, but I'm a caveman when it comes to electronics. I'm picturing some sort of simple preprogrammed circuit board to randomly move the legs, and a battery pack to run everything. They would be neatly housed in the spiders abdomen.

My concept is to build the prop to look as realistic as possible, so when people see it, they'll scrutinize it to see if it's real or a prop. That's where the leg movement comes into play. Once they're secure in thinking it's fake, the leg moves and they get a good scare.

Once I get the design and mechanics finalized and working, I'm planning on making several of these.
 

·
Registered
Joined
·
3,241 Posts
For a bare bones pre-programmed controller, I would need the min and max servo positions that your linkage will allow.
 

·
Registered
Joined
·
70 Posts
Control would be easy to do with an Arduino. In simple terms - to control a servo you send a value to it. The value range will vary depending on the application but let's say in your application the range is 0-100. Pretend 0 is a leg fully retracted and 100 is the same leg fully extended. Using the Arduino you generate a random value between 0-100, then send that value to the servo. It's literally one line of code to do that - "myservo1.write(random(1, 55));" You can also use the random number to set a delay between movements - "delay(random(1,10));" Obviously there is more to it than that but this is very simple to do. I had a labarotory panel with home made gauges that used servos to move the needles. The code above is from that project.

Using an Arduino with a motion sensor to trigger the spider would work very easily. The Arduino gives you lots of control over the whole show. For example, when the motion sensor is triggered you can have a random delay before the spider starts to move. That way people don't get the same experience every time. You can also have a delay after the show so it doesn't retrigger immediately. You can connect relays and turn on LEDs in the eyes, or trigger a pneumatic cylinder, or sound effect.

My biggest concern would be the size of the servos. My gauges had a bamboo skewer directly connected for the needle. That's effectively no mass. You will need something stronger. Talk to a local RC shop about servo size and strength.

If you decide to move ahead with the Arduino there's lots of help online. Good luck!
 

·
Registered
Joined
·
3,241 Posts
Control would be easy to do with an Arduino. In simple terms - to control a servo you send a value to it. The value range will vary depending on the application but let's say in your application the range is 0-100. Pretend 0 is a leg fully retracted and 100 is the same leg fully extended. Using the Arduino you generate a random value between 0-100, then send that value to the servo. It's literally one line of code
Controlling a servo is not as simple as that. You can't just send a random position to the servo, doing that will cause very erratic movement because you are not controlling the speed. Servo signals are sent in micro seconds, typically from 900 to 2100. If the last "random" position was 900 and the next signal is 2100, that servo is gonna try to warp speed to the next position. Depending on the servo load, it may not even make it there. The code has to be written so the next servo move is from the last position and then the movement is stepped so the speed is controlled. In addition, if the servo has any kind of pressure on it from the prop, the current position needs to refreshed every 20ms or it will not hold it's position.
 

·
Registered
Joined
·
70 Posts
Controlling a servo is not as simple as that. You can't just send a random position to the servo, doing that will cause very erratic movement because you are not controlling the speed. Servo signals are sent in micro seconds, typically from 900 to 2100. If the last "random" position was 900 and the next signal is 2100, that servo is gonna try to warp speed to the next position. Depending on the servo load, it may not even make it there. The code has to be written so the next servo move is from the last position and then the movement is stepped so the speed is controlled. In addition, if the servo has any kind of pressure on it from the prop, the current position needs to refreshed every 20ms or it will not hold it's position.
With the servo library it really is as easy as that. The Arduino servo library takes care of the heavy lifting of converting the microsecond signals the servo needs into a simple value. The range of motion determines the values for high and low limits. In my application for fake gauges I had a range of 0-55 that took my indicator from one end of the scale to the other. As I said in my post - my servo had effectively no mass so I could jump to any angle. It would only take a few lines of code to make it slowly sweep from one position to another. I had no pressure on my servos so I can't speak of the need to refresh the signal but once my servos moved to a new position they stayed there until the next move command.

Something like this (not perfect code/syntax but this is 95% correct)

// store random number to new position
newposition = random(1,100)

//loop to move from old position to new position
for(position = oldposition; oldposition < newposition; position++)
{
servo.write(position); // move servo one degree
delay(15); // wait .015 seconds to smooth motion (1000 = 1 second)
}

//once move is done store new position to variable for next movement
oldposition = newposition
 

·
Mad Monster Maker
Joined
·
2,673 Posts
Discussion Starter #10
For a bare bones pre-programmed controller, I would need the min and max servo positions that your linkage will allow.
A simple 90 degree servo arm movement would work for me. I can wrangle the mechanics and dimensions of the linkages to make it work.
 

·
Registered
Joined
·
3,241 Posts
A simple 90 degree servo arm movement would work for me. I can wrangle the mechanics and dimensions of the linkages to make it work.
That's easy enough. You could do this with one servo and a dual arm. That would move one leg up and the other leg down simultaneously. Do you want some type of trigger or just sporadic movements?
 
1 - 11 of 11 Posts
Top