150 V USB Closed-Loop Piezo Controllers

  • 1-Channel and 3-Channel Options
  • Selectable High-Power Drive Outputs
  • Front Panel Controls



Full Suite of Software Support Tools Available

Related Items

Please Wait
BPC301 Rear Panel
Click to Enlarge

BPC301 Rear Panel


  • Variable Output Selection: 75 V, 100 V, or 150 V
  • Closed-Loop PID with Advanced Control Algorithm
  • Strain Gauge or Capacitive Sensor Feedback Options
  • High-Resolution Position Control for Very Fine Positioning Applications
  • Voltage Ramp/Waveform Generation Capability for Scanning Applications
  • High Bandwidth (10 kHz) Piezo Positioning
  • Auto-Configure Function for Thorlabs Ident-Equipped Piezo Actuators
  • User-Controlled Digital I/O Port
  • USB Plug-and-Play – Multiaxis Expansion
  • Motor Control I/O Port (Jogging, Interlocks)
  • Full Software Control Suite Supplied
  • Intuitive Software Graphical Control Panels
  • Extensive ActiveX® Programming Interfaces
  • Fully Software Integrated with Other APT™ Family Controllers (Integrated Systems Development)

These single- and 3-channel, high-power (150 V) benchtop piezo controllers provide open- or closed-loop nanometer position control. They have been designed to drive our full range of open- and closed-loop piezo-equipped nanopositioning actuators and stages. In addition, flexible software settings make these units highly configurable and therefore suitable for driving a wide range of third-party piezo elements. A waveform generation capability combined with triggering outputs make these units particularly suitable for piezo scanning applications.

Manual controls are located on the front face of the unit to allow manual adjustment of the piezo position using the digitally encoded adjustment pot. The display is easy to read and can be set to show either applied voltage or position in microns. Open- or closed-loop control and zeroing of the piezo can also be selected from the front panel.

USB connectivity provides easy plug-and-play PC operation. Multiple units can be connected to a single PC via standard USB hub technology for multi-axis motion control applications. Coupling this with the user-friendly APT™ software allows the unit to get up and running quickly. For example, all relevant operating parameters are set automatically for Thorlabs' piezo actuated products. Advanced custom motion control applications and sequences are also possible using the extensive ActiveX® programming environment, which is described in more detail on the Motion Control Software tab. These ActiveX Controls can be incorporated into a wide range of software development environments including Labview, C++, and Matlab.

Cables for connecting actuators or stages to the controller are shipped with the actuators or stages, not the controller. If you need help identifying the appropriate replacement cable, please contact Tech Support.

Other Piezo Driver Controllers
K-Cube™ Single-Channel Controller and Strain Gauge Reader Open Loop Benchtop Controller
1- and 3-Channel
Closed Loop Benchtop Controller
1- and 3-Channel
Modular 2-Channel Rack System Module

Specifications (Per Channel)

Item # BPC301 BPC303
Piezoelectric Output (SMC Male)
Voltage (Software Control) 75 V, 100 V, or 150 VDC
Current 500 mA Continuous (Max) 1 A Continuous (Max)
Stability 100 ppm Over 24 Hours (After 30 min Warm-Up Time)
Noise <3 mV RMS
Piezo Capacitance 1 to 10 µF (Typical)
Bandwidth 10 kHz (1 µF Load, 1 Vp-p)
External Input (BNC)
Input Type Differential or Single Ended
Input Voltage for Full Range
(i.e. 75 V, 100 V or 150 V)
10 V ±2%
Max Output 75 V Range: -10V to 90 V DC
100 V Range: -10V to 115 V DC
150 V Range: -10 V to 159 V DC
Position Feedback (PIEZO IN) (9-Pin D-Type Female)
Feedback Transducer Typea Strain Gauge or Capacitive Sensor
Detection Method AC Bridge (18 kHz Excitation)
Typical Resolution 5 nm (for 20 µm Actuator e.g., PAZ005)
Auto Configure Identification Resistor or Stage ID EEPROM in Actuator
User Input/Output (AUX IO) (15-Pin D-Type Female)
4 Digital Inputs TTL Levels
4 Digital Outputs Open Collector
Trigger Input/Output TTL
Trigger Input Functionality Triggered Voltage Ramps/Waveforms
Trigger Output Functionality Trigger Generation During Voltage Ramp Output
User 5 V (with Ground) 250 mA (Max)
  • The controller measures a conditioned signal from the feedback sensor. For details of the circuitry, please contact Tech Support.


Specifications (Main Unit)

Item # BPC301 BPC303
Front Panel Controls
Display 5-Digit, 7-Segment
Buttons Channel Select, Volts/Microns Select, Open/Closed Loop Select, Zero,
Resolution, Max Voltage
Display Brightness Adjustable
Resolution Switchable Coarse and Fine Adjustment
Output Infinite Turn Precision Digital Potentiometer (Encoder)
USB Port Version 2.0 Full Speed Compatible
Input Power Requirements
Voltage 85 - 264 VAC
Power 150 VA 250 VA
Fuse 3.15 A 3.15 A
Housing Dimensions (W x D x H) 152 mm x 244 mm x 104 mm
(6" x 9.6" x 4.1")
240 mm x 360 mm x 133 mm
(9.5" x 14.2" x 5.2")
Weight 3.18 kg (7 lbs) 6.7 kg (14.75 lbs)

The graphs below show the drive voltage/frequency response at different capacitive loads for the BPC301 and BPC303.

BPC301 Frequency Response
Click to Enlarge

Click Here for Raw Data

BPC303 Frequency Response
Click to Enlarge

Click Here for Raw Data

Piezo In 
D-Type Female

Pin Description Pin Description Pin Description
1 Strain Gauge Excitation 4 Ground 7 Actuator ID Signalb
2 +15 V Outa 5 AC Feedback In 8 Reserved for Future Use
3 -15 V Outa 6 Ground 9 Reserved for Future Use
  • Power supply for the piezo actuator feedback circuit. It must not be used to drive any other circuits or devices.
  • This signal is applicable only to Thorlabs actuators. It enables the system to identify the piezo extension associated with the actuator.

D-Type Male

Pin Description Pin Description Pin Description
1 Not Connected 4 Not Connected 7 Not Connected
2 RX (Controller Input) 5 Ground 8 Not Connected
3 TX (Controller Output) 6 Not Connected 9 Not Connected

D-Type Female

Pin Description Return Pin Description Return Pin Description Return
1 DIG O/P 1 5, 9, 10 6 DIG I/P 1 5, 9, 10 11 For Future Use (Trigger OUT) 5, 9, 10
2 DIG O/P 2 5, 9, 10 7 DIG I/P 2 5, 9, 10 12 For Future Use (Trigger IN) 5, 9, 10
3 DIG O/P 3 5, 9, 10 8 DIG I/P 3 5, 9, 10 13 DIG I/P 4 5, 9, 10
4 DIG O/P 4 5, 9, 10 9 DIG Ground - 14 5 V Supply Output 5, 9, 10
5  DIG Ground - 10 DIG Ground - 15 5 V Supply Output 5, 9, 10

Handset In

Pin Description Pin Description
1 RX (Controller Input) 4 +5 V, 100 mA Supply for Joystick
2 Ground 5 TX (Controller Output)
3 Ground 6 Ground


B-Type Female

DB9 Female

HV Out
Male SMC


Output Voltage: 0 - 150 V
Current: 0 - 500 mA

Trig In and Trig Out 
BNC Connectors

BNC Female
Input Trig Voltage: 0 - 7 V DC
Output Trig Voltage: 0 - 5 V DC

EXT In (+) and EXT In (-)
BNC Female

BNC Female
Input Voltage: 0 - 10 V
Input Impedance: 20 kΩ


BPC301 GUI Panel

The BPC300 Series controllers have been designed for use in critical alignment applications where manual or automated nanometer level motion control is required. These high power yet low noise units deliver up to 150 V per channel and are compatible with all piezo-actuated nanopositioning actuators and stages in the Thorlabs range. They combine the latest high speed digital signal processors (DSP) with low-noise analog electronics and easy-to-use software technology for effortless software controlled piezo motion.

To support such a wide range piezo actuators these piezo units are fully configurable through software accessable key parameter settings. Intuitive, easy-to-use software graphical panels allow immediate control and visualization of the operation of the piezo controller – adjustment of many key parameters is possible through direct interaction with the graphical panel. Open or closed loop operating modes can be selected 'on the fly', and in both modes the display can be changed to show drive voltage or position (in microns). In the closed loop operation mode, both the P & I (proportional and integral) components of the feedback control loop can be altered to adjust the servo loop response. The output drive voltage or position can be adjusted by rotating the software-pane control knob.

Note that all such settings and parameters are also accessible through the ActiveX programmable interfaces which allow the user to build automated alignment routines. Refer to the Motion Control Software tab for further information on the apt™ software support for the BPC200 Series.

Waveform Output/Triggering

Over and above open and closed loop piezo positioning the DSP controllers within the BCP300 Series offer additional and useful functionality. Through software it is possible to program in a voltage (or position) ramp or waveform as a table of values and then instruct the controller to output (clock out) this table either 'single shot' or continuously. It is possible to specify a hardware output trigger to be generated at a specific point during the waveform output in order to control third party equipment as a function of the piezo voltage (position). Alternatively an external system can trigger the piezo unit to initiate the waveform output in the reverse scenario. This functionality is particularly useful for piezo scanning applications.

Full Software GUI Control Suite & ActiveX® Controls Included


A full and sophisticated software support suite is supplied with the BPC300 controller. The suite includes a number of out of the box user utilities to allow immediate operation of the unit without any detailed pre-configuration. All operating modes can be accessed manually and all operating parameters changed and saved for next use. For more advanced custom motion control applications, a fully featured ActiveX® programming environment is also included to facilitate custom application development in a wide range of programming environments. Note that all such settings and parameters described above are also accessible through these ActiveX® programmable interfaces. For further information on the apt™ software support for the BPC300 units refer to the Motion Control Software tab. Demonstration videos illustrating how to program the apt™ software are also available for viewing.

The ActiveX® apt™ system software shipped with these units is also compatible with other apt™ family controllers including our multi-channel rack-based system and smaller optical table mountable 'Cube' controllers. This single unified software offering allows seamless mixing of any apt™ benchtop, table top and rack based units in any single positioning application.

The key innovation of the apt™ range of controllers and associated mechanical products is the ease and speed with which complete automated alignment/positioning systems can be engineered at both the hardware and software level. All controllers in the apt™ range are equipped with USB connectivity. The 'multi-drop' USB bus allows multiple apt™ units to be connected to a single controller PC using commercial USB hubs and cables. When planning a multichannel application, simply add up the number and type of drive channels required and connect together the associated number of APT controllers.

Piezo Driver Bandwidth Tutorial

Knowing the rate at which a piezo is capable of changing lengths is essential in many high-speed applications. The bandwidth of a piezo controller and stack can be estimated if the following is known:

  1. The maximum amount of current the controllers can produce. This is 0.5 A for our BPC Series Piezo Controllers, which is the driver used in the examples below.
  2. The load capacitance of the piezo. The higher the capacitance, the slower the system.
  3. The desired signal amplitude (V), which determines the length that the piezo extends.
  4. The absolute maximum bandwidth of the driver, which is independent of the load being driven.

To drive the output capacitor, current is needed to charge it and to discharge it. The change in charge, dV/dt, is called the slew rate. The larger the capacitance, the more current needed:

Piezo Equation 1

For example, if a 100 µm stack with a capacitance of 20 µF is being driven by a BPC Series piezo controller with a maximum current of 0.5 A, the slew rate is given by

Piezo Equation 2

Hence, for an instantaneous voltage change from 0 V to 75 V, it would take 3 ms for the output voltage to reach 75 V.

Note: For these calculations, it is assumed that the absolute maximum bandwidth of the driver is much higher than the bandwidths calculated, and thus, driver bandwidth is not a limiting factor. Also please note that these calculations only apply for open-loop systems. In closed-loop mode, the slow response of the feedback loop puts another limit on the bandwidth.

Sinusoidal Signal

The bandwidth of the system usually refers to the system's response to a sinusoidal signal of a given amplitude. For a piezo element driven by a sinusoidal signal of peak amplitude A, peak-to-peak voltage Vpp, and frequency f, we have:

Piezo Equation 3

A diagram of voltage as a function of time is shown to the right. The maximum slew rate, or voltage change, is reached at t = 2nπ, (n=0, 1, 2,...) at point a in the diagram to the right:

Piezo Equation 4

From the first equation, above:

Piezo Equation 5

Piezo Equation 6

For the example above, the maximum full-range (75 V) bandwidth would be

Piezo Equation 7.

For a smaller piezo stack with 10 times lower capacitance, the results would be 10 times better, or about 1060 Hz. Or, if the peak-to-peak signal is reduced to 7.5 V (10% max amplitude) with the 100 µm stack, again, the result would be 10 times better at about 1060 Hz.

Triangle Wave Signal

For a piezo actuator driven by a triangle wave of max voltage Vpeak and minimum voltage of 0, the slew rate is equal to the slope:

Piezo Equation 8.

Or, since f = 1/T:

Equation 9

Square Wave Signal

For a piezo actuator driven by a square wave of maximum voltage Vpeak and minimum voltage 0, the slew rate limits the minimum rise and fall times. In this case, the slew rate is equal to the slope while the signal is rising or falling. If tr is the minimum rise time, then

Equation 11


Equation 12.


For additional information about piezo theory and operation, see the Piezoelectric Tutorials page.

Thorlabs offers two platforms to drive our wide range of motion controllers: our Kinesis® software package or the legacy APT™ (Advanced Positioning Technology) software package. Either package can be used to control devices in the Kinesis family, which covers a wide range of motion controllers ranging from small, low-powered, single-channel drivers (such as the K-Cubes™ and T-Cubes™) to high-power, multi-channel, modular 19" rack nanopositioning systems (the APT Rack System).

The Kinesis Software features .NET controls which can be used by 3rd party developers working in the latest C#, Visual Basic, LabVIEW™, or any .NET compatible languages to create custom applications. Low-level DLL libraries are included for applications not expected to use the .NET framework. A Central Sequence Manager supports integration and synchronization of all Thorlabs motion control hardware.

Kinesis Software
Kinesis GUI Screen
APT Software
APT GUI Screen

Our legacy APT System Software platform offers ActiveX-based controls which can be used by 3rd party developers working on C#, Visual Basic, LabVIEW™, or any Active-X compatible languages to create custom applications and includes a simulator mode to assist in developing custom applications without requiring hardware.

By providing these common software platforms, Thorlabs has ensured that users can easily mix and match any of the Kinesis and APT controllers in a single application, while only having to learn a single set of software tools. In this way, it is perfectly feasible to combine any of the controllers from single-axis to multi-axis systems and control all from a single, PC-based unified software interface.

The software packages allow two methods of usage: graphical user interface (GUI) utilities for direct interaction with and control of the controllers 'out of the box', and a set of programming interfaces that allow custom-integrated positioning and alignment solutions to be easily programmed in the development language of choice.

A range of video tutorials is available to help explain our APT system software. These tutorials provide an overview of the software and the APT Config utility. Additionally, a tutorial video is available to explain how to select simulator mode within the software, which allows the user to experiment with the software without a controller connected. Please select the APT Tutorials tab above to view these videos.


Kinesis Version 1.14.47

The Kinesis Software Package, which includes a GUI for control of Thorlabs' Kinesis and APT™ system controllers.

Also Available:

  • Communications Protocol
Software Download


APT Version 3.21.6

The APT Software Package, which includes a GUI for control of Thorlabs' APT™ and Kinesis system controllers.

Also Available:

  • Communications Protocol
Software Download

Thorlabs' Kinesis® software features new .NET controls which can be used by third-party developers working in the latest C#, Visual Basic, LabVIEW™, or any .NET compatible languages to create custom applications.

This programming language is designed to allow multiple programming paradigms, or languages, to be used, thus allowing for complex problems to be solved in an easy or efficient manner. It encompasses typing, imperative, declarative, functional, generic, object-oriented, and component-oriented programming. By providing functionality with this common software platform, Thorlabs has ensured that users can easily mix and match any of the Kinesis controllers in a single application, while only having to learn a single set of software tools. In this way, it is perfectly feasible to combine any of the controllers from the low-powered, single-axis to the high-powered, multi-axis systems and control all from a single, PC-based unified software interface.

The Kinesis System Software allows two methods of usage: graphical user interface (GUI) utilities for direct interaction and control of the controllers 'out of the box', and a set of programming interfaces that allow custom-integrated positioning and alignment solutions to be easily programmed in the development language of choice.

For a collection of example projects that can be compiled and run to demonstrate the different ways in which developers can build on the Kinesis motion control libraries, click on the links below. Please note that a separate integrated development environment (IDE) (e.g., Microsoft Visual Studio) will be required to execute the Quick Start examples. The C# example projects can be executed using the included .NET controls in the Kinesis software package (see the Kinesis Software tab for details).

C Sharp Icon Click Here for the Kinesis with C# Quick Start Guide
Click Here for C# Example Projects
Click Here for Quick Start Device Control Examples
C Sharp Icon

LabVIEW can be used to communicate with any Kinesis- or APT-based controller via .NET controls. In LabVIEW, you build a user interface, known as a front panel, with a set of tools and objects and then add code using graphical representations of functions to control the front panel objects. The LabVIEW tutorial, provided below, provides some information on using the .NET controls to create control GUIs for Kinesis- and APT-driven devices within LabVIEW. It includes an overview with basic information about using controllers in LabVIEW and explains the setup procedure that needs to be completed before using a LabVIEW GUI to operate a device.

Labview Icon Click Here to View the LabVIEW Guide
Click Here to View the Kinesis with LabVIEW Overview Page
Labview Icon

The APT video tutorials available here fall into two main groups - one group covers using the supplied APT utilities and the second group covers programming the APT System using a selection of different programming environments.

Disclaimer: The videos below were originally produced in Adobe Flash. Following the discontinuation of Flash after 2020, these tutorials were re-recorded for future use. The Flash Player controls still appear in the bottom of each video, but they are not functional.

Every APT controller is supplied with the utilities APTUser and APTConfig. APTUser provides a quick and easy way of interacting with the APT control hardware using intuitive graphical control panels. APTConfig is an 'off-line' utility that allows various system wide settings to be made such as pre-selecting mechanical stage types and associating them with specific motion controllers.

APT User Utility

The first video below gives an overview of using the APTUser Utility. The OptoDriver single channel controller products can be operated via their front panel controls in the absence of a control PC. The stored settings relating to the operation of these front panel controls can be changed using the APTUser utility. The second video illustrates this process.

APT User - Overview
APT User - OptoDriver Settings

APT Config Utility

There are various APT system-wide settings that can be made using the APT Config utility, including setting up a simulated hardware configuration and associating mechanical stages with specific motor drive channels. The first video presents a brief overview of the APT Config application. More details on creating a simulated hardware configuration and making stage associations are present in the next two videos.

APT Config - Overview
APT Config - Simulator Setup
APT Config - Stage Association

APT Programming

The APT Software System is implemented as a collection of ActiveX Controls. ActiveX Controls are language-independant software modules that provide both a graphical user interface and a programming interface. There is an ActiveX Control type for each type of hardware unit, e.g. a Motor ActiveX Control covers operation with any type of APT motor controller (DC or stepper). Many Windows software development environments and languages directly support ActiveX Controls, and, once such a Control is embedded into a custom application, all of the functionality it contains is immediately available to the application for automated operation. The videos below illustrate the basics of using the APT ActiveX Controls with LabVIEW, Visual Basic, and Visual C++. Note that many other languages support ActiveX including LabWindows CVI, C++ Builder, VB.NET, C#.NET, Office VBA, Matlab, HPVEE etc. Although these environments are not covered specifically by the tutorial videos, many of the ideas shown will still be relevant to using these other languages.

Visual Basic

Part 1 illustrates how to get an APT ActiveX Control running within Visual Basic, and Part 2 goes on to show how to program a custom positioning sequence.

APT Programming Using Visual Basic - Part 1
APT Programming Using Visual Basic - Part 2


Full Active support is provided by LabVIEW and the series of tutorial videos below illustrate the basic building blocks in creating a custom APT motion control sequence. We start by showing how to call up the Thorlabs-supplied online help during software development. Part 2 illustrates how to create an APT ActiveX Control. ActiveX Controls provide both Methods (i.e. Functions) and Properties (i.e. Value Settings). Parts 3 and 4 show how to create and wire up both the methods and properties exposed by an ActiveX Control. Finally, in Part 5, we pull everything together and show a completed LabVIEW example program that demonstrates a custom move sequence.

APT Programming Using LabVIEW -
Part 1: Accessing Online Help
APT Programming Using LabVIEW -
Part 2: Creating an ActiveX Control
APT Programming Using LabVIEW -
Part 3: Create an ActiveX Method
APT Programming Using LabVIEW -
Part 4: Create an ActiveX Property
APT Programming Using LabVIEW -
Part 5: How to Start an ActiveX Control

The following tutorial videos illustrate alternative ways of creating Method and Property nodes:

APT Programming Using LabVIEW -
Create an ActiveX Method (Alternative)
APT Programming Using LabVIEW -
Create an ActiveX Property (Alternative)

Visual C++

Part 1 illustrates how to get an APT ActiveX Control running within Visual C++, and Part 2 goes on to show how to program a custom positioning sequence.

APT Programming with Visual C++ - Part 1
APT Programming with Visual C++ - Part 2


For assistance when using MATLAB and ActiveX controls with the Thorlabs APT positioners, click here.

To further assist programmers, a guide to programming the APT software in LabVIEW is also available here.

Posted Comments:
gloria hoefler  (posted 2024-02-09 16:07:14.18)
We have ordered a BPC303 controller, I do not readily find on the manual an optical input for the OPM to close the loop (while performing fiber alignement)
do'neill  (posted 2024-02-26 04:11:55.0)
Thank you for reaching out. The BPC series does not have an optical input, there are a couple of options, you could use the BPC303's EXT in ports to provide a 0-10V signal, or our BNT001 controller has an optical input and is designed for tracking applications. I will reach out to you directly to discuss this with you.
Daiki Matsubayashi  (posted 2023-11-03 17:21:10.227)
Hi, I am using BPC303 with APT user. After one to two hours of use, the Event Infomation panel suddenly appears. The Event Infomation Panel shows Type [Code]: Internal Code: 16240903 Description: Hardware Notification/Response Note: A notification or response message has been received from a hardware unit. This may be indicative of a hardware fault or illegal command/parameter sent to the hardware. Extra Info: Hardware response code 32785 ((+15V Under Limit)) received from hardware unit SN 71810940 (in response to message ident 0). . If this event appears, does it need to be repaired or dealt with in any way?
do'neill  (posted 2023-11-10 04:14:38.0)
Response from Daniel at Thorlabs. I am sorry to hear this, I will reach out to you directly to troubleshoot this issue and discuss possible next steps.
Ran Zhu  (posted 2023-10-19 16:10:29.73)
Hi, could you please let me know the resolution of the output voltage? I see only the resolution of the controlled size. Thanks.
do'neill  (posted 2024-02-09 05:58:18.0)
Thank you for reaching out. The theoretical open loop resolution of the BPC300 series is 1/32767 of the voltage range. So for the 105V range it is ~4mV and for the 75V range it is ~2mV. This is a theoretical value for the resolution and not achievable as the voltage noise in the BPC300 range is higher than this (approximately 12mVpp). I will reach out to you directly to discuss this with you.
user  (posted 2023-04-05 19:36:53.19)
Hi. I want to set up closed-loop system using BPC 301 to actuate PAZ005 in ~5um displacement and several hundreds of Hz frequency. Will it be enough with two products(BPC301 and PAZ005)? Can I see the real time displacement in computer using APT or Kinesis?
Steve Andrews  (posted 2022-03-09 04:17:04.673)
Kinesis Version 1.14.31doesn't seem to allow enabling of external voltage inputs to BPC301 that is possible with APT software or am I missing something?
DJayasuriya  (posted 2022-03-10 05:19:23.0)
Thank you for your inquiry. Using the XT IN (+) and EXT IN (-) (BNC connector) allows a 0V to 10V input to drive the output to its full scale. This gives a gain of 7.5 on the 75V range, 10 on the 100V range and 15 on the 150V range. Using Kinesis BPC advance settings you have the option to choose the input source as external signal. Please connect our tech support team if you do have any future questions, we would be happy to help.
user  (posted 2022-02-10 09:29:57.617)
Hi, I would like to set up a BPC303 as well as a NanoTrak TNA001 to be controlled using Thorlabs APT ActiveX Control in MATLAB. Although I am able to connect to the devices and call some "methods" commands to control them (like SetPosOutput or similar) as expected, the programming manual of yours is still not thorough enough to allow all methods to be called, especially the 'Get...' commands. Could you please provide a more detailed programming guide for MATLAB users, including at least what the arguments stand for and the corresponding Example Code as well?
Christian Schmiegelow  (posted 2021-12-04 12:13:43.857)
Hi. I am setting up a BCP303 to be controlled from C++ with the kinesis libraries. I have already connected and can control the device correctly and as expected. I am curious about the importance of using the polling feature with the StartPolling and StopPolling commands. I am not sure what it brings. I seem be be able to command and read info from the device with and without it. Any help is well received.
cwright  (posted 2021-12-07 05:32:03.0)
Response from Charles at Thorlabs: Thank you for your query. The Polling commands will make the controller send out a series of periodic status updates so you do not need to manually ask for this update. It is just another way of doing it.
IkHwan Kwon  (posted 2021-12-01 20:55:48.65)
To Thorlabs. Hello, I have a problem for using BPC301 with Software package (Kinesis version : 1.14.30, APT version : 3.21.5) 1. Kinesis C++ example of benchtop peizo has "Access violation" from PBC_Close function 2. APT activeX control doesn't present in Visual studio 2015, 2017,2019 MFC programming.
cwright  (posted 2021-12-08 10:46:49.0)
Response from Charles at Thorlabs: Thank you for your query. We will reach out to you to discuss your code and help with troubleshooting.
Alejandro Grine  (posted 2021-09-01 17:13:16.23)
Please include cables with the controller next time! What a pain to pay good money for a controller only to realize that the necessary cables to hook it up to the stage are not included. At the very least, make it clear on the website that the cables are not included!
cwright  (posted 2021-09-02 08:32:05.0)
Response from Charles at Thorlabs: Thank you for your query. The cables are supplied with the stages such that regardless of the number of stages in the customers possession, there will always be the correct number of suitable cables. We will reach out to you to find out what stage you are using and if you received cables suitable cables with it.
Sam Quan  (posted 2021-09-01 10:50:07.693)
Dear Thorlabs, we use BPC303 as lens align controller as below: 1. set InputSource to "ExternalSignal" 2. manual changed the external voltage to set the wanna position 3. set InputSource to "SoftwareOnly" 4. software auto set the postion to optimized the wanna position when set the InputSource from "ExternalSignal" to "SoftwareOnly",the position will changed to zero or other position , this will result in the start point of software auto optimized is not the point we want, is there any method can let the position not changed when set InputSource from "ExternalSignal" to "SoftwareOnly"
cwright  (posted 2021-09-03 06:18:06.0)
Reponse from Charles at Thorlabs: Thank you for your query. When using the "Software + External Signal" option the voltage applied will be the sum of that demanded by both the external input and the software. When you switch to "Software Only" the external input would be ignored but you can keep the external input while using software control. Alternatively if you are writing your own software you could read the voltage before changing the input source settings. Then once you change the source have the old value automatically applied by the software prior to your optimisation. We will reach out to you to discuss your application.
user  (posted 2020-10-14 17:35:59.51)
Excuse me,could i change the output voltage frequency when i use the BPC301, and output a high frequency voltage?
cwright  (posted 2020-10-14 08:23:59.0)
Response from Charles at Thorlabs: Hello and thank you for contacting us. The output voltage (open loop) or position of the piezo actuator(closed loop) can be controlled from an external source via the EXT IN (+) and EXT IN (-) BNC connectors on the rear panel. The exact bandwidth achievable is dependent on a variety of factors, such as the load capacitance but in general is a few kHz in open loop mode and about 200 Hz in closed loop. For more details on configuring the EXT IN connections please see section 3.3 of the manual and the Piezo Bandwidth tutorial on the website: https://www.thorlabs.com/NewGroupPage9.cfm?ObjectGroup_ID=1912&tabname=Piezo%20Bandwidth
agarciat  (posted 2017-09-08 14:07:34.203)
Dear Thorlabs. We have got your BPC 301 controller . The problem is that the controller does not change the voltage and the position neither by the front panel nor by the software.I keep getting an internal error#16510403/Error; [Code=1252] power supply error. The front panel shows 0.60V and when turned onto closed it continues to oscillate +/-0.05 or so. As it oscillates, in the APT User window I get a new window every second with the same error. How do I increase the voltage? Please advise on possible solution.
bwood  (posted 2017-09-26 04:37:04.0)
Response from Ben at Thorlabs: I am sorry to hear about your issues here. I believe this may be a fault with your device, and we will be in contact to troubleshoot this issue further.
jedd  (posted 2017-08-11 12:23:55.113)
Is it possible to use this PZT controller to specify applied force over time instead of displacement over time?
bwood  (posted 2017-08-18 05:17:13.0)
Response from Ben at Thorlabs: Thank you for your question. The BPC has a force sensing mode, based on the the strain gauge feedback. You can configure the device for this in APT/Kinesis. One example of this functionality is with the FSC102. There is no way to directly output the force output by the piezo, but you could calculate it, see the piezo tutorial here: https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=5030
user  (posted 2016-04-13 12:48:12.44)
Is it possible to use this controller in closed loop (piezo stage+strain gauge) to eliminate hysteresis and at the same scan the stage with an external function generator?
besembeson  (posted 2016-04-14 01:41:46.0)
Response from Bweh at Thorlabs USA: Yes this is possible. Note that the bandwidth will be lower under this condition.
g.w.steen  (posted 2015-07-23 09:02:01.35)
While the controller works perfectly fine manual and with the delivered APT software, we have some difficulties using Labview. The correct ActiveX control for the ThorLabs BPC303 APT Piezo Contoller is used ('MGPiezo') and we used the SN given by the APT software. The Labview is configured as given by examples files. However still Labview returnes the error: "Control HW Communications Disabled " We also try selecting user interface as preferred execution stystem under File >> VI Properties >>Execution tab. Are we missing something obvious?
msoulby  (posted 2015-07-28 07:01:10.0)
Response from Mike at Thorlabs: We will contact you directly to trouble shoot your problem further.
sylvain.girard  (posted 2014-12-05 12:30:14.847)
I am currently using a BPC 203 controller with Nanomax 311 and also with APB 301 translation stages. However, I would like to purchase a new 3 axis translation stage with larger scale (and possibly a better linearity). No piezo stage with large range are available anymore in Thorlabs catalogue (with a dynamic range up to 100-300µm). Therefore, I wonder if it would be possible to use third party translation stages (for example from PI or PiezoJena or others...) while keeping the Thorlabs controller beacause I already spend a lot of time developping LabVIEW software for BPC203 controller. If I need a BPC303 (150V) that could be possible...
msoulby  (posted 2014-12-08 03:52:54.0)
Response from Mike at Thorlabs: At this time Thorlabs does not have a 3 axis stage with 100-300um of piezo travel. However there is no reason why the controller would not work with a third party piezo providing the piezo falls within the drive voltage specification of the controller, which is 0-75V and 500mA per channel for the BPC203. However please bear in mind that Thorlabs piezo stages that have strain gauge feedback use an auto ID resistor to tell the controller how much travel the piezo stack has and selects the correct voltage range accordingly (not applicable to open loop control and piezos) this may not be available on a third party stage so it may need to be configured manually. Also as any thir party stage will not have been tested by Thorlabs we would be unable to guarantee the stage will operate to the spec that the competitor claims and would not be responsible for any damage caused by using such a third party stage.
palmada  (posted 2013-01-28 02:39:04.603)
Hello, we are interested in getting this controller to drive the piezos on the nanoMax300. Will this work with MicroManager 64bits? Best, Pedro Almada
jlow  (posted 2013-01-18 12:25:00.0)
Response from Jeremy at Thorlabs: We do not have a comprehensive tutorial for VB 2010 at the moment. I will get in touch with you directly with some instructions and screenshots on using the APT software with VB 2010.
branderson  (posted 2013-01-18 10:30:57.933)
Hi, I have a BPC301 and have been using labview to run it, but would now like to use visual basic. We have VB 2010, which is way different than VB6 so the tutorial isn't very helpful. Do you have updated programming instructions for use with VB 2010?
tcohen  (posted 2012-10-04 15:45:00.0)
Response from Tim at Thorlabs to Diego: Thank you for contacting us. We have a variety of 50mm travel stages. One example which may be of interest to you is the LNR50SE. This stage utilizes a submicron resolution optical encoder to provide a direct readout of the absolute position. I will contact you directly to discuss your application in more depth.
jlow  (posted 2012-09-27 09:13:00.0)
Response from Jeremy at Thorlabs: We will get in contact with you directly on troubleshooting this.
dgiraldo  (posted 2012-09-26 21:54:13.0)
Dear ThorLabs: I would like to get info about a XY stage (50 mm travel), with the maximun accuracy (nm), I will use the stage to measure parts metalic or plastic, I am offering dimensional metrology services in Costa Rica and I will like offer to my customers the maximun accuracy into a micron. I need to get the value of the stage trace in mm, micron, or nm oirectly to my PC!! Is it possible? Rgds, Diego Giraldo METRIX Costa Rica
leonid_krivitskiy  (posted 2012-09-21 03:00:19.0)
Dear Thorlabs. We have got your BPC 203 controller along with the Nanomax TS stage. The problem is that channel no.1 of the controller does not change the voltage and the position neither by the front panel nor by the software. The front panal shows -12.3 V irrespective of the position of turning knob and the zeroing button. Other two channels are okay. Please advise on possible solution.
jjurado  (posted 2011-06-15 09:02:00.0)
Response from Javier at Thorlabs to last poster: Thank you very much for your feedback. We have added the piezo drive cables as related products to the pages for the BPC controllers and the NanoMax stages. We will also add a information on the Features section of these products to make it clear that the drive cables are not included with the controller, but are included with the stages. Please contact us at techsupport@thorlabs.com if you have any further questions or comments.
user  (posted 2011-06-14 10:18:32.0)
It would be useful to add the drive/feedback cables as a related product for either this page or the NanoMax pages. As of now, it is very unclear as to whether these are included with the controller, the stage, or not at all.
apalmentieri  (posted 2010-03-03 10:41:09.0)
A response to sylvain from Adam at Thorlabs: We have already responded to you via email, but wanted to update the response on our website as well. Since this feedback, We have looked into our supply of USB cables and have insured that they are all certified high speed USB cables. Currently, we do not have a complete software solution for non Active X users, but we do offer a low level comms protocol document for customer that want to program their own non Active X based software. We expect to add the piezo protocols to this document in the upcoming weeks.
sylvain.girard  (posted 2009-11-21 08:01:10.0)
I recently start using BPC203 with MAX313 to control scanning near field microscope and i have two comments: - first, the USB port of the controllers needs good quality USB A/USB B cable to avoid problems (I spent few times to discover that some troubles in the communication were due to the cable...) - it is sad that Thorlabs could not provide solutions other than Active X for programmers who prefer to develop their codes under Linux. Any solutions in this case?? Best regards
klee  (posted 2009-07-17 15:17:54.0)
A response from Ken at Thorlabs to noah: We do have some tutorial videos on APT Programming using Visual Basic. Simply click on the Video Tutorials tab on this page, click "here", then click on APT programming.
noah  (posted 2009-07-17 13:40:12.0)
Hi, I am new to visual basic, though I have extensive programming experience in other languages. I am having trouble writing vb6 code to control my BPC202 and my BPS 103. Structuring the code and calling procedures from the included libraries to create timing-sensitive & predictable object-oriented programs is rather difficult in VB, as I find myself having to guess how VB6 will sequentially execute a program, modify variables in "real time" etc. I would like from you, if possible, a version of the apt-server.hlp file compiled into a printable .pdf or something similar (rather than printing every topic individually). Better yet, a more descriptive yet concise introduction to scientific computing with VB (via Thorlabs APT products) would be a lifesaver. It would also be great if you had a repository of code that users could submit to and draw from as a learning tool; even if the code were not checked for bugs or vouched for by Thorlabs, it might help to see how others structure their programs. Any old help files or internally developed VB code snippets (the included examples are a good start) that youd be willing to share with me would be great, too.
Laurie  (posted 2009-02-05 17:18:02.0)
Response from Laurie at Thorlabs to melsscal: Thank you for your interest in our BPC203 controller. To control the piezos on the MAX313/M, you can use the BPC203 controller. Other options include the BNT001 and the TPZ001. Please let us know if you have additional questions.
melsscal  (posted 2009-02-05 03:47:58.0)
Can we use BPC203 with MAX313/M as Non Track Controller ?
acable  (posted 2007-10-18 07:47:11.0)
PHS101 remote control device is missing from this presenation (not even posted as a related product), i would add this right into the current presentation in summary with a link to the PHS01 product page. Ideally i would like to be able to order both products from this page.
Back to Top

150 V Piezo Controller

Based on your currency / country selection, your order will ship from Newton, New Jersey  
+1 Qty Docs Part Number - Universal Price Available
BPC301 Support Documentation
BPC3011-Channel 150 V Benchtop Piezo Controller with USB
BPC303 Support Documentation
BPC3033-Channel 150 V Benchtop Piezo Controller with USB
Back to Top

1-Axis Joystick

  • High-Reliability Joystick Utilizing USB HID Protocol
  • Single-Axis Control Via an Encoder Knob
  • Two Different Modes for Fast or High-Precision Moves
  • Speed Dial for Sensitivity Adjustment
  • Allows Remote Manual Control
  • Can be Reprogrammed using a PC
  • Ergonomic Design

The MJC1 Joystick has been designed to provide intuitive, tactile, manual positioning of our range of piezo-based stages. The joystick features an encoder knob for single axis control, a push button to switch between fast or high-precision movement, and a speed dial to fine tune speed control. For most applications, the default parameter settings saved with the compatible controller allow the joystick to be used out-of-the-box, with no need for further setup, negating the requirement to be connected to a host PC and allowing true remote operation. Furthermore, the parameter settings can be reprogrammed and saved to a paired controller using a PC, so the controller can be disconnected from the computer and remote operation continued.

The MJC1 Joystick is compatible with our BPC30x Series Benchtop Piezo Controllers. The joystick has both a Mini-DIN and a USB Type-C port and is shipped complete with two cables, a 6-pin Mini-DIN plug to plug cable and a USB 3.1 Type-A to Type-C cable, for use with these controllers as well as setups utilizing the USB HID class. For more information about configuring and setting up the joystick over USB HID, please see the manual by clicking on the red Docs icon (Docs Icon) below.

Based on your currency / country selection, your order will ship from Newton, New Jersey  
+1 Qty Docs Part Number - Universal Price Available
MJC1 Support Documentation
MJC11-Axis USB HID Joystick