#!/usr/bin/env python3 import sys import numpy BOLT_THREAD = 1.25 NR_TEETH_BIG=51 NR_TEETH_SMALL=13 EARTH_SIDERAL_DAY = 1440 HINGE_ROD_LEN = 200 def rodlen_to_angle(rod_len): return numpy.arctan(rod_len / HINGE_ROD_LEN) def drivegear_angle_to_rodlen(angle): return BOLT_THREAD*angle/(2*numpy.pi) def steppergear_angle_to_drivegear_angle(sangle): return sangle * NR_TEETH_SMALL/NR_TEETH_BIG def debug_from_step_angle(sangle): step_angle = float(sangle) print("Step angle {}rad".format(step_angle)) drivegear_angle = steppergear_angle_to_drivegear_angle(step_angle) print("Drive gear angle {}rad".format(drivegear_angle)) rodlen = drivegear_angle_to_rodlen(drivegear_angle) print("Rod length {}mm".format(rodlen)) final_angle = rodlen_to_angle(rodlen) print("Final angle {}rad".format(final_angle)) def get_step_angle_from_time(time_in_sec): final_angle = time_in_sec * 2 * numpy.pi / (1440*60) sangle = numpy.tan(final_angle) * HINGE_ROD_LEN * 2 * numpy.pi * NR_TEETH_BIG / (BOLT_THREAD * NR_TEETH_SMALL) print("For {} sec, final angle is {} rad ({} deg) => step angle is {}".format(time_in_sec, final_angle, final_angle * 360 /(2*numpy.pi), sangle)) verif_final = debug_from_step_angle(sangle) get_step_angle_from_time(int(sys.argv[1]))