DIY Rotator

pmneo85

Aktives Mitglied
Hallo Zusammen,

ich möchte euch heute meinen DIY Rotator vorstellen:

20220720_200003.jpg

Der Rotator besteht im wesentlichen aus 4 Teilen:
explosion.jpg


Kern des ganzen ist ein großes Kugellager und ein GT-2 Riemenantrieb:

20220615_075652.jpg 20220615_075631.jpg

Zunächst hatte ich versucht ein normalen Schrittmotor zu verwenden, jedoch ist dieser nicht selbst-sperrend, was den großen Nachteil hat, das sich die Kamera stromlos sehr einfach drehen lässt.

Inzwischen habe ich ein Schrittmotor mit 1:158 Getriebe im Einsatz.

Gesteuert wird das ganze mit derselben Platine, welche ich auch für meine Motofokus verwende. Als Protokoll habe ich die des Falcon Rotator implementiert, somit musste keine extra INDI oder ASCOM Treiber implementiert werden.

Rotator2.jpg

Ich bin sehr zufrieden, mein First Light damit war CBT-1:



Gruß
 
Hallo Philip,

Großartige Arbeit! Gefällt mir sehr gut.
Mit welchem Auflagemaß ist für den Rotator zu rechnen? Planst Du eine Veröffentlichung oder Vertrieb? Wie sind Deine bisherigen Erfahrungen mit Verkipping des Systems?

CS, Ralf
 
Hallo Philip,

hat der TS APO so einen großen Backfocus?
 
Das Problem dürfte doch wie bei den fertigen Rotatoren auch der Backfokus der Korrektoren sein. Die üblichen 55mm sind halt nicht viel, wenn ein Filterrad und ggf. noch ein OAG mit drin hängen sollen.

CS, Ralf
 
Vermutlich ist auch das einer der Gründe, weshalb ZWO noch keinen im Portfolio hat.
 
Moin,

vielleicht eine dumme Frage: Wozu brauchts bei einem polar montierten Teleskop einen Rotator? Wegen der "Restbildfelddrehung" durch Aufstellfehler während der Aufnahme oder zur Orientierung des Bildfelds aus gestalterischen Gründen?

CS
Jörg
 
Die meisten Fotografen werden den wohl zum Framing haben wollen. Parallaktisch montiert hat es ja keine Rotation mehr.

Für die weit verbreiteten Celeston AZ-Teleskopsysteme kann ich mir das auch ganz spannend vorstellen.

CS, Ralf
 
Zuletzt bearbeitet:
Hallo!
Das Problem dürfte doch wie bei den fertigen Rotatoren auch der Backfokus der Korrektoren sein. Die üblichen 55mm sind halt nicht viel, wenn ein Filterrad und ggf. noch ein OAG mit drin hängen sollen.
Da hast Du recht! Bin sehr froh, dass ich keinen OAG brauche! ;)
nerrone-falcon-adapter-01.jpg
Bei mir bleiben mit dem Falcon von 55 mm noch 11 mm. Würde ich statt ASI294/183 mit 6,5 mm Sensorabstand eine ASI2600 mit 17,5 mm Sensorabstand verwenden dann wäre gar kein "Backfokus mehr übrig!" Außer man verwendet keine Filterschublade oder eine die weniger als 16 mm Platz braucht. Und ich habe den Baader Komakorrektor, der da innen mit drin ist, schon ziemlich tief in Richtung Fangspiegel im OAZ verschraubt.

Ich bin sehr zufrieden mit meiner AZ-EQ5 im AZ-Modus und dem Derotieren durch den Falcon. Allerdings ist das "Derotieren" für Alt-AZ alles anderes als trivial, wird aber beim Falcon sehr gut umsetzt. Je nach Position und Höhe des Objekts muss man sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn drehen. Ich hatte mich zum Derotieren vor dem Kauf schlau gemacht und nicht schlecht gestaunt! Zuerst dachte ich, man muss ja nur ... 15° je Stunde ... weit gefehlt.

Wenn es jemanden interessiert hier gibt es eine sehr interessante Seite dazu mit allen technischen und mathematischen Details zum Derotieren bei AltAZ!

ich möchte euch heute meinen DIY Rotator vorstellen:
Hallo PMNEO85!

Gut gemacht, schaut toll und professionell aus! Gratulation! :y:

Willst Du es nur für EQ nutzen oder hast auch vor eine Derotation für AltAZ zu realisieren?

Servus - MünchenBeiNacht - Ewald
 
Hallo Zusammen,

vielen Dank schon mal :)

Hallo Philip,

Großartige Arbeit! Gefällt mir sehr gut.
Mit welchem Auflagemaß ist für den Rotator zu rechnen? Planst Du eine Veröffentlichung oder Vertrieb? Wie sind Deine bisherigen Erfahrungen mit Verkipping des Systems?

CS, Ralf
Verkippung sieht sehr gut aus bis jetzt. Auflagenmaß liegt bei 20mm.

Wenn Interesse besteht, kann ich das ganze Projekt ggf. mal auf GitHub Pushen.

Hallo Philip,

hat der TS APO so einen großen Backfocus?
Mit dem TSFlat 2.0 hat man genügend Backfocus bei 480mm

Moin,

vielleicht eine dumme Frage: Wozu brauchts bei einem polar montierten Teleskop einen Rotator? Wegen der "Restbildfelddrehung" durch Aufstellfehler während der Aufnahme oder zur Orientierung des Bildfelds aus gestalterischen Gründen?

CS
Jörg

Es geht einzig und allein um das Framing z.B. für Mosaike etc..

Die Derotationsfunktion habe ich wegen fehlender Anwendung aktuell nicht implementiert.

Gruß
 
Hallo,

richtig schöne Arbeit, gefällt mir gut!
Einen Rotator zu haben wäre schon genial, auch für noch weitere Automatisierung. Man kann in den Aufnahmesoftwares ja mittlerweile ganze Aufnahmepläne schreiben und je nach Uhrzeit bzw. Höhe über dem Horizont automatische Motivwechsel vornehmen. Richtig sinnvoll wird die Funktion erst mit Rotator, zumindest bei größeren Objekten, wo Framing notwendig ist.
 
Hi,
Aus reiner Verwirrung weil ich auch einen Rotator bauen will (allerdings machanisch etwas anders) und ihn gerne in am Raspberry Pi betreibe würde und daher vom INDI Treiber abhängig bin:
Gesteuert wird das ganze mit derselben Platine, welche ich auch für meine Motofokus verwende. Als Protokoll habe ich die des Falcon Rotator implementiert, somit musste keine extra INDI oder ASCOM Treiber implementiert werden.
Welche Platine meinst du und wie bekommst du das hin das er ihn als Falcon Rotator erkennt?

LG und CS
Michael
 
Ich habe das Protokoll des Falcon nachimplementiert:

Code:
float StringProxy_AF3::getStepsPerDeg( ) {
    double stepsPerDeg = 3792.0f * _eeprom->getStepMode(); //steps per 360 of motor shaft
    stepsPerDeg *= ( 100.0f / 20.0f ); //steps per 360 deg of rotator
    stepsPerDeg /= 360.0f; //steps per deg
    return stepsPerDeg;
}

float StringProxy_AF3::stepsToDeg( unsigned long steps ) {
    float stepsPerDeg = this->getStepsPerDeg();

    float deg = steps / stepsPerDeg;
    
    deg -= 90.0f; //shift by 90deg

    while( deg < 0.0f ) {
        deg += 360.0f;
    }
    while( deg >= 360.0f ) {
        deg -= 360.0f;
    }

    return deg;
}
unsigned long StringProxy_AF3::degToSteps( float deg ) {
    float stepsPerDeg = this->getStepsPerDeg();

    deg += 90.0f; //shift by 90deg

    while( deg < 0.0f ) {
        deg += 360.0f;
    }
    while( deg >= 360.0f ) {
        deg -= 360.0f;
    }

    unsigned long steps = deg * stepsPerDeg;

    return steps;
}

char const *StringProxy_AF3::processFalconCommand( char *command, char *commandParam, int commandParamLength ) {
    float deg;
    unsigned long maxSteps;
    unsigned long steps;

    if( command[0] == 'F' ) {
        switch( command[1] ) {
            case '#': //status
                return "FR_OK";

            case 'S':
                dtostrf(this->getStepsPerDeg(), 1, 2, _resultBuffer2);
                sprintf(_resultBuffer1, "FS:%s",_resultBuffer2 );
            return _resultBuffer1;

            case 'A': //full status
                /*
                Receive: FR_OK:43:32:50.00:0:0:0:0
                status FR_OK means that focuser is up and running
                position_in_deg Position in degrees (double number, 2 decimals)
                is_running Boolean value: Prints 1 if falcon motor is running, 0 if not
                limit_detect Boolean value: Prints 1 if limit is detected, Print 0 if limit is not detected
                do_derotation Boolean value: Print 1 if derotation is active, Print 0 if is deactivated
                motor_reverse Boolean value: Print 1 if reverse is enabled, 0 if is disabled
                */

               dtostrf(this->stepsToDeg( _eeprom->getPosition() ), 1, 2, _resultBuffer2);
               sprintf(_resultBuffer1,
                    "FR_OK:%lu:%s:%c:0:0:%c",
                    _eeprom->getPosition(),
                    _resultBuffer2,
                    _motor->isMoving() ? '1' : '0',
                    _eeprom->getReverseDirection() ? '1' : '0'
                );
                
            return _resultBuffer1;

            case 'V': //Report firmware version - FV:n.n
                return "FV:1.3";

            case 'D': //Report position in degrees - FD:nn.nn
                dtostrf(this->stepsToDeg( _eeprom->getPosition() ), 1, 2, _resultBuffer2);
                sprintf(_resultBuffer1, "FD:%s", _resultBuffer2 );
                return _resultBuffer1;

            case 'P': //Report position in steps - FP:n..
                sprintf(_resultBuffer1, "FP:%lu", _eeprom->getPosition() );
                return _resultBuffer1;

            case 'H': //Halt Falcon Rotator FH:1
                 _motor->stopMotor();
                return "FH:1";
          
            case 'R': //Print 1 if rotator is running, Print 0 if rotator is idle - FR:1 or FR:0
                sprintf(_resultBuffer1, "FR:%c", _motor->isMoving() ? '1' : '0' );
                return _resultBuffer1;
          
            case 'N': //Reverse Motor (1 = reverse, 0 = normal), One off setting – stored in EEPROM - FN:1 or FN:0
                _eeprom->setReverseDirection(atoi(commandParam));
                sprintf(_resultBuffer1, "FN:%c", _eeprom->getReverseDirection() ? '1' : '0' );
                return _resultBuffer1;

            case 'F': //Reload Rotator Firmware
                return "FR_OK";
        }
    }
    else if( command[0] == 'V' && command[1] == 'S' ) { //Report input voltage in raw format - VS:n..
        return "VS:0";
    }
    else if( command[0] == 'D' && command[1] == 'R' ) { //Enable Derotation. Provided number is the derotation time (in millisec) interval per step e.g (1 step per 1000 millisec) (DR:0 disables derotation) - DR:nn..
        return "DR:0";
    }
    else if( command[0] == 'S' && command[1] == 'D' ) { //Set Degrees: Set New position in degrees as the actual rotator position (without turning rotator) - SD:nn.nn
        deg = atof( commandParam );

        steps = this->degToSteps( deg );
        maxSteps = (this->getStepsPerDeg() * 360.0f);

        _eeprom->syncPosition( steps );
        _eeprom->setMaxPosition( maxSteps );
        _eeprom->setMaxMovement( maxSteps );

        dtostrf( this->stepsToDeg( steps ), 1, 2, _resultBuffer2 );
        sprintf(_resultBuffer1, "SD:%s", _resultBuffer2 );
        return _resultBuffer1;
    }
    else if( command[0] == 'M' && command[1] == 'D' ) { //Move to Degrees: Move motor to new degrees. (accepts a decimal number e.g 33.55) - MD:nn.nn
        deg = atof( commandParam );

        steps = this->degToSteps( deg );

        _eeprom->setTargetPosition( steps );
        _motor->applyStepMode();
        _motor->startMotor();

        dtostrf( this->stepsToDeg( steps ), 1, 2, _resultBuffer2);
        sprintf(_resultBuffer1, "MD:%s", _resultBuffer2 );
        return _resultBuffer1;
    }
    else if( command[0] == 'M' && command[1] == 'S' ) { //Move to Position: Move motor to new position MS:nn..  - MS:nn..
        steps = strtoul(commandParam, NULL, 10);
        _eeprom->setTargetPosition( steps );
        _motor->applyStepMode();
        _motor->startMotor();

        sprintf(_resultBuffer1, "MS:%lu", _eeprom->getTargetPosition() );
        return _resultBuffer1;
    }

     return "FR_INVALID_CMD";
}

Wie willst du es denn mechanisch lösen?

Gruß
 
Vielen herzlichen Dank für die Erklärung.

Meine mechanische Lösung ist ein M48 CAA. Dadurch hab ich beidseitig M48 verschraubungen. Dieser ist in einen 3D gedruckten timing pulley eingeklebt und soll über Riemen von einem Motor angetrieben werden. Im Prinzip passiert das selbe wie in deinem Fall aber angeleg wie beim Arduino myRotator (Arduino myRotator).

Die mechanische Lösung ist nicht das Problem, die elektronik wollte ich wie beim Arduino Xygyl Filterrad lösen:
Mein Problem ist nur ich hab keine Ahnung wie ich den Arduino zum laufen bringe. Für ASCOM ist es kein Problem aber bei mir läuft alles über Raspberry Pi und ich muss es daher irgendwie über INDI steuern können.
Bin daher über jede hilfe Dankbar.

LG und CS
 
Moin zusammen,

ich bin über deine Idee/Lösung des Rotator gestoßen und finde es sehr interessant. Bisher habe ich die Kamera immer manuell gedreht, die zu kaufenden Rotator sind mir einfach zu teuer. Daher wäre ein Eigenbau eine gute alternative.
Wie sind bisher deine Erfahrungen mit dem Eigenbau? Wie hast du die Anschlussmöglichkeiten verwirklicht? Sprich Kamera zum Rotator sowie Rotator zum Teleskop. Auf den Bildern habe ich eine Hülse am Zahnring gesehen. Doch der Rotator muss ja auch irgendwie am Teleskop halt finden.
Besteht ggf. die Möglichkeit die Daten der 3D Vorlage zu bekommen? Sofern du diese preisgeben möchtest?

Besten Dank

Groetjes
Stefan
 
Eine Rotator-Bauanleitung mit Arduino-Ansteuerung gibts hier:
Er läßt sich per Windows, Linus und über ASCOM steuern. Unter EKOS/INDI müßte man mal nachschauen, ob er inzwischen implementiert wurde.
(myRotator)

Grüße
Hartmut
 
Eine Rotator-Bauanleitung mit Arduino-Ansteuerung gibts hier:
Er läßt sich per Windows, Linus und über ASCOM steuern. Unter EKOS/INDI müßte man mal nachschauen, ob er inzwischen implementiert wurde.
(myRotator)
Der gute Robert Brown - ich hab den Focuser Pro von ihm gebaut
 
Auch auf die Gefahr hin, dass ich mit meiner Frage zu spaet bin ;)

Welches Kugellager hast du hier verwendet? Wichtig ist hier ja, dass das Ding absolut verkippungsfrei ist.

vielen Dank im voraus

Philipp
 
Zurück
Oben