pylabrobot.big_bear.orbital_shaker.BigBearOrbitalShaker#

class pylabrobot.big_bear.orbital_shaker.BigBearOrbitalShaker(port: str, num_shakers: int = 1, timeout: float = 10.0, command_delay: float = 0.1, daisy_chain_settle: float = 5.0, stop_settle: float = 6.0)#

Bases: object

BigBear orbital shaker.

A daisy-chained orbital shaker: a single serial line drives up to 16 shaker positions (“nests”), each addressed independently by a 1-based id sent as a hexadecimal digit.

Serial settings:

9600 baud, 8 data bits, no parity, 1 stop bit, no handshake, “r” terminator.

Commands (each addressed command is “@<id>” followed by the command chars, where <id> is the nest number in hex; a value-setting command is followed by a “@<id>?<c>” read-back query):

U            enter daisy-chain mode (unaddressed)
~            report the number of shakers on the chain (unaddressed)
@<id>V<rpm>  set speed (60..3570 rpm)
@<id>A<n>    set acceleration (1..10, device scale)
@<id>+       set direction clockwise
@<id>-       set direction counter-clockwise
@<id>G       start shaking
@<id>S       stop shaking
@<id>F       find home
@<id>Q       poll status (reply is read back)
@<id>Y/X/Z   serial-number fields

A rejected command or a comms failure replies “?:”.

Not verified: has NOT been tested against hardware in PyLabRobot. A warning is emitted at setup.

Methods

__init__(port[, num_shakers, timeout, ...])

find_home([device_id])

Home a single nest.

get_serial_number([device_id])

Read the serial-number fields (Y, X, Z) of a nest and join them.

home_all()

Home every nest on the chain.

setup()

start_shaking(rpm[, acceleration, sequence, ...])

Set the parameters for a nest and start it shaking.

stop()

Stop all shakers and close the serial connection.

stop_all()

Stop shaking on every nest on the chain.

stop_shaking([device_id])

Stop shaking on a single nest.

Parameters: