6.7 KiB
BBD203 Connection Guide
Quick Start - Connecting Your BBD203 Controller
This guide explains how to connect your ThorLabs BBD203 motor controller to nueScan using the simplified serial number method.
Step 1: Physical Connection
-
Connect USB Cable
- Connect the USB cable from your BBD203 controller to your computer
- Wait for Windows/Linux to recognize the device
- No special drivers needed (uses standard FTDI USB-Serial)
-
Power On Controller
- Ensure BBD203 is powered on
- Front panel should be lit
Step 2: Find Serial Number
The serial number is printed on a label on your BBD203 controller.
Common Locations:
- Back panel of the controller
- Side panel
- Original packaging
Format:
- Usually 8 digits (e.g.,
83123456) - May include letters (e.g.,
83A12345)
Example Label:
ThorLabs BBD203
S/N: 83123456
Step 3: Connect in nueScan
Using the GUI
-
Launch nueScan
python -m nuescan -
Enter Serial Number
- Locate the "ThorLABS MLS Stage Serial:" field at the top of the window
- Type your serial number (e.g.,
83123456)
-
Click Connect
- Click the "Connect" button next to the serial field
- Wait 1-2 seconds for connection
-
Success!
- If successful, you'll see a confirmation dialog
- Button changes to "Disconnect"
- All 3 motor channels are now enabled
Programmatic Connection
from hardware.thorlabs_stage import ThorLabsStage
# Create stage instance
stage = ThorLabsStage(encoder_counts_per_mm=20000)
# Connect by serial number
success = stage.connect('83123456')
if success:
print("Connected! Ready to home axes.")
else:
print("Connection failed.")
Troubleshooting
"Device not found" Error
Problem: Connection fails with "Could not find BBD203 with serial number..."
Solutions:
-
Check USB Connection
- Ensure USB cable is fully inserted
- Try a different USB port
- Try a different USB cable
-
Verify Serial Number
- Double-check the serial number on the controller label
- Ensure no typos (0 vs O, 1 vs I, etc.)
-
List Available Devices
- The error dialog will show all detected ThorLabs devices
- Check if your device appears with a different serial number
- If no devices shown, check USB connection and drivers
-
Windows: Check Device Manager
- Open Device Manager
- Look under "Ports (COM & LPT)"
- Should see "USB Serial Port (COMx)" with FTDI in description
- If device shows with "!" icon, driver issue
-
Linux: Check Permissions
# Check if device is detected lsusb | grep -i ftdi # Check serial ports ls -l /dev/ttyUSB* # Add user to dialout group (may require logout) sudo usermod -a -G dialout $USER
Connection Succeeds but No Response
Problem: Connection successful but motors don't respond
Solutions:
-
Check Power
- Verify motors are connected and powered
- Check motor power LEDs on BBD203 front panel
-
Enable Channels
- Channels should auto-enable on connection
- Check status indicators in UI
-
Home Axes
- Axes may need homing before movement
- Try homing each axis
Multiple Controllers
Problem: You have multiple BBD203 controllers connected
Solution:
- Each controller has a unique serial number
- Connect to specific controller by entering its serial number
- Error dialog will show all connected devices
What Happens During Connection
Automatic Process
When you click "Connect", the following happens automatically:
-
USB Enumeration
- Scans all USB ports
- Finds ThorLabs devices (FTDI vendor ID: 0x0403)
- Matches your serial number
-
Port Assignment
- Determines the COM port (e.g., COM3, /dev/ttyUSB0)
- Opens serial connection at 115200 baud
-
Controller Initialization
- Requests hardware information
- Enables automatic status updates
- Enables all 3 motor channels
-
Default Configuration
- Sets velocity: 1.0 mm/s
- Sets acceleration: 5.0 mm/s²
- Starts position monitoring
Status Updates
After connection:
- Position updates received every ~100ms
- Status bits monitored (homed, moving, errors)
- Move completion notifications enabled
Advanced Configuration
Custom Encoder Resolution
If you're using a stage with different encoder resolution:
# Example: Stage with 2,000 counts/mm instead of default 20,000
stage = ThorLabsStage(encoder_counts_per_mm=2000)
stage.connect('83123456')
Common resolutions:
- MLS203: 20,000 counts/mm (default)
- DDS220: 2,000 counts/mm
- Custom: Check your stage specifications
Direct Port Connection (Not Recommended)
If you need to connect to a specific port instead of using serial number:
from hardware.bbd203_driver import BBD203Driver
driver = BBD203Driver()
driver.connect('COM3') # or '/dev/ttyUSB0' on Linux
System Requirements
Operating Systems
- ✅ Windows 7/8/10/11
- ✅ Linux (Ubuntu, Fedora, etc.)
- ✅ macOS (with FTDI driver)
Dependencies
- Python 3.8+
- PySerial 3.5+
- PyQt6 6.4+
USB Requirements
- USB 2.0 or higher
- FTDI USB-Serial drivers (usually automatic)
Next Steps
After successful connection:
-
Home the Axes
- Required before first movement
- Establishes zero position reference
-
Test Movement
- Try small movements to verify operation
- Check position feedback in UI
-
Configure Scan Parameters
- Set scan area (X/Y start, delta)
- Set row spacing
- Configure velocity if needed
-
Begin Scanning
- All systems should show "Ready"
- Click "Begin Scan" to start
Support
For issues with the BBD203 driver or connection:
-
Check Debug Output
- Console window shows connection details
- Look for "INFO:", "DEBUG:", and "ERROR:" messages
-
Review Driver Documentation
BBD203_DRIVER_README.md- Complete driver referenceBBD203_Communications_Protocol.md- Protocol details
-
ThorLabs Support
- For hardware issues: techsupport@thorlabs.com
- For driver/protocol questions: Review APT documentation
Example Session
$ python -m nuescan
# UI appears
# Enter serial: 83123456
# Click Connect
# Console output:
INFO: Connecting to BBD203 with serial number 83123456
DEBUG: Found ThorLabs device - Serial: 83123456, Port: COM3
INFO: Found device 83123456 on port COM3
INFO: Connecting to BBD203 on COM3
INFO: Successfully connected to BBD203 on COM3
INFO: Stage connected and channels enabled
# Success dialog appears
# Button changes to "Disconnect"
# Ready to home and move!
For detailed technical information, see BBD203_DRIVER_README.md