Repository navigation
Spectral BLDC firmware V110 — application image for flashing via the Spectral bootloader. Mostly gripper work: an SSG-48 gripper (a Spectral Micro in gripper mode) now ends its moves cleanly and closes fully at position 255. Everything below is described in the manual: Spectral Micro docs; what a driver keeps and what to run after the update: Upgrading from older firmware.
Grippers
- A move ends cleanly. On 109 the current took over two seconds to settle after a move: the speed loop's integral was carried into the hold and unwound slowly through friction. Now the integral is dropped on arrival, the last stretch of a move slows down, and the hold has a small dead zone (a quarter of a position count). A few mA are left after a move.
- A soft start. A move picks up speed over 0.1 s instead of starting at full speed.
- Positions 0 and 255 clear the stops, and 255 is fully closed. On 109 the calibration read the ends while pushing at 500 mA, so 0 and 255 lay inside the stops: a full open or close pressed on the stop, drew the grip current for good and often reported an object. Each end is now read under a light 100 mA push (released to no current, the SSG-48's free-running jaws spring back about 1 mm off the stop); 0 sits 32 ticks inside the open stop and 255 16 ticks from the closed one. On an SSG-48 the jaws stop 0.12 mm short of fully closed at 255, and the calibration repeats within 4 ticks.
- Object detection reports an object after the jaws have stood still against it for 50 ms.
- The gripper pushes with its own current limit. On 109 every gripper command overwrote the driver's current limit (parameter 16) with its grip current, and a Save config then stored it.
- The gripper calibration can be started again while it runs, ends on a timeout or a stroke under 1000 ticks, and puts the current limit back. The position is rounded to the nearest count (it was cut off).
CAN bus
- Parameters 90-93: 90
#Rstint, 91 the thermistor (#Term), 92 gripper mode (#Gripper, written only while idle), each 0 or 1 and saved by Save config, so a preset over CAN can set everything (issue #1); 93, read only, the gripper's stroke between positions 0 and 255 in ticks (0 until calibrated).
UART
#Estop: the E-stop, as CAN has it. The motor is released, a running calibration ends, and the E-stop latches until#Clear.#Closeduring a motor calibration stops the calibration (Close: the calibration is stopped). On 109 it switched the mode under the running calibration.
Settings and safety
- Brake or coast when idle (parameter 18) is saved by Save config. On 109 it was back to its default at every power-up. A driver that never saved it coasts, as before.
- Watchdog: a trip while the driver is idle no longer starts the hold or the descend (on 109 it did, for the whole fallback time). A trip while a loop is closed holds as before.
Compatibility
- The settings and the motor calibration of 109 are kept. The gripper calibration is kept in RAM, as always: calibrate the gripper after the update.
- Python library 1.22 (
pip install --upgrade Spectral-BLDC) names parameters 90-93; 1.21 reads them by number. Motor GUI 0.7.0 uses what 110 adds: STOP over UART sends#Estop, brake or coast counts as saved, a preset over CAN writes 90-92. - Bench-tested for this release on an SSG-48 gripper: the moves and the hold, moves of one count, the ends and the closed gap, the soft start, gripping objects, the calibration's repeatability, parameters 90-93, brake or coast over a save and a restart, the driver's current limit through gripper moves, the watchdog while idle and in a closed loop, an aborted gripper calibration.
#Estopand#Closewere tried over UART on the STEPFOC, which has the same code. Not tested on the bench: an upgrade from V103 with the ST-Link, and a downgrade.
Assets
spectral-bldc-firmware-V110.bin— application firmware image (flash at0x08003000, target STM32F103CB).firmware.json— manifest with version, size, and SHA-256 for download verification by the web flasher.
Integrity
- SHA-256:
eae54f56b4d0eb3677155447a5ce68156bfbda16e81534513ad71cb0dbbbfb21 - Size: 112984 bytes
Built from commit 38d210d on Bootloader_main (#Info shows it as Build: 38D210D). Includes bootloader entry support (CAN/UART reset-into-bootloader).