Need some advice on stepper motors, gears, power

Hi All, for part of our astronomy observatory automation project I need to find a stepper motor to move my focuser and DSLR camera and hold it there when its not moving.

My camera is a canon 450d and my telescope is one of these:
http://www.williamoptics.com/telescopes/zenithstar66sd_features.php

I estimate the combined weight of focuser, camera, field flattener, and light pollution filter unit to be around 2-2.5KG. the telescope angle changes quite a lot so torque will be changing I guess? but it will need to hold the dslr/focuser in position when pointing at Zenith (straight up).

Can anyone advise on a suitable motor and on how to achieve the torque I need? Should I go for a geared stepper if so what sort of ratio, or a servo (I currently have a standard servo moving a different focuser and camera) or do I use microstepping? Which step angle do I go for?

the stepper I'm looking at for reference has the following spec:
Model Phase Voltage Current Resistance Inductance Holding Torque(gm/cm) Detent Torque (gm/cm)
42BYG006 2 12 0.8 15 19 1600 <200

I was thinking that with a 1600gm/cm holding and 200gm/cm dentent torque stepper motor that adding a 10:1 gear would roughly give me 16KG of holding torque but not really enough to move it, so a 20:1 gear ratio would give me oodles of holding torque and should cover me adequately for moving the unit whilst it's pointing straight up? anyone got any thoughts on this?

Regards,
Reggie.

I made a sketch in arduino for getting continuous control of two steppers without software delays. You could rewrite it for one pretty easily. The steppers are connected to two Easy Driver Stepper controllers, Here is da code.

int dirpin1 = 4;
int steppin1 = 5;
int dirpin2 = 7;
int steppin2 = 8;
int x = 0;
int step1Position = 0;
int step2Position = 0;
int stepper1Flag;
int stepper2Flag;
long stepper1EventTime = 0;
long stepper2EventTime = 0;
void setup() {
Serial.begin(9600);
pinMode(dirpin1, OUTPUT);
pinMode(steppin1, OUTPUT);
pinMode(dirpin2, OUTPUT);
pinMode(steppin2, OUTPUT);
}
void loop() {
if (stepper1Flag == 0 && x==0)
{
stepper1Flag= 1;
digitalWrite(dirpin1, LOW);
digitalWrite(steppin1, LOW);
digitalWrite(steppin1, HIGH);
step1Position++;
stepper1EventTime= millis() + (1/16);
};
if (stepper1Flag == 1 && stepper1EventTime < millis())
{
digitalWrite(steppin1, LOW);
digitalWrite(steppin1, HIGH);
step1Position++;
stepper1EventTime= millis() + (1/16);
if (step1Position > 22499) {
stepper1Flag = 0;
x=1;
};
};
if (stepper2Flag == 0 && x==0)
{
stepper2Flag= 1;
digitalWrite(dirpin2, LOW);
digitalWrite(steppin2, LOW);
digitalWrite(steppin2, HIGH);
step2Position++;
stepper2EventTime= millis() +(1/16);
};
if (stepper2Flag == 1 && stepper2EventTime < millis())
{
digitalWrite(steppin2, LOW);
digitalWrite(steppin2, HIGH);
step2Position++;
stepper2EventTime= millis() + (1/16);
if (step2Position > 6999) {
stepper2Flag = 0;
x=1;
};
};
}

Thanks for taking the time and posting the code but we don't have a problem with the stepper code at all. In fact I've just written the code to make a servo emulate a stepper too. Its the physical stepper motor I am asking about, whether the one I am looking at is good enough to hold 2-2.5KG in position and move it when needed.

You could of course use a worm gear setup which would relieve the motor of the need to hold the whole rig in place.

Worm gears are a possibility although mounting might be an issue.