@@ -374,6 +374,15 @@ def set_speed(self, axis: int, speed: int) -> None:
374374 axis_name = self ._axis_mapper [axis ]
375375 self .get_command (bytes (f"SPEED { axis_name } ={ speed } " , "ascii" ))
376376
377+ def find_max_speed (self , axis : int ):
378+ axis_name = self ._axis_mapper [axis ]
379+ speed = 100000000
380+ #set the sepeed
381+ self .get_command (bytes (f"SPEED { axis_name } ={ speed } " , "ascii" ))
382+ #read off the max speed set by controller
383+ response = self .get_command (bytes (f"SPEED { axis_name } ?" , "ascii" ))
384+ return (float (response .strip ()[5 :]))
385+
377386 def wait_for_motor_stop (self , axis : int ):
378387 # give axis a chance to start maybe?
379388 time .sleep (0.2 )
@@ -414,9 +423,9 @@ def __init__(self, dev_conn: _ASIController, axis: int) -> None:
414423 # mosaic etc... Maybe we just need to know it!
415424 self .min_limit = 0.0
416425 self .max_limit = 100000.0
417- # arbitrary speed of 5 mm/s 10 is too fast for y but X appears
418- # to be fine on my stage at this speed.
419- self .set_speed (5 )
426+ # As detailed in ASI manual set speed to 67% of max
427+ max_speed = self . _dev_conn . find_max_speed ( self . _axis )
428+ self .set_speed (max_speed * 0.67 )
420429
421430 def move_by (self , delta : float ) -> None :
422431 self ._dev_conn .move_by_relative_position (self ._axis , int (delta ))
0 commit comments