Products for USB Sensing and Control

Products for USB Sensing and Control

PHIDGETS Inc.

Unit 1 - 6115 4 St SE
Calgary AB  T2H 2H9
Canada
+1 403 282-7335

PhidgetAdvancedServo 1-Motor

ID: 1066_1

Control one RC servo motor or actuator with this controller board. Powered solely by your computer via USB.

$40.00

Quantity Available: 728

Qty Price
5 $38.00
10 $36.00
25 $32.00
50 $28.00
100 $26.00
250 $24.00
500 $22.00
1000 $20.00

The PhidgetAdvancedServo 1-Motor allows you to control the position, velocity, and acceleration of one RC servo motor. The 1066 is powered solely by the USB cable – no additional power source is required.

The 1066 measures the power consumption of the servo, and powers servo motors of up to 450mA.

The AdvancedServo connects directly to a computer’s USB port.


Comes packaged with

Product Specifications

Servo Controller
API Object Name AdvancedServo
Number of Motor Ports 1
Pulse Width Min 83.3 ns
Pulse Width Max 2.7 ms
Pulse Width Resolution 83.3 ns
Pulse Code Period Max 25 ms
Measurement Current Min 30 mA
Measurement Current Max 500 mA
Measurement Current Error 10 %
Board
Controlled By USB
API Object Name RCServo
Electrical Properties
Current Consumption Min 30 mA
Current Consumption Max 500 mA
USB Voltage Min 4.8 V DC
USB Voltage Max 5.3 V DC
Continuous Motor Current Max 450 mA
Output Impedance (Motor) 200 Ω
USB Speed Full Speed
Physical Properties
Object Temperature Min 0 °C
Object Temperature Max 70 °C

Software Objects

Channel NameAPIChannel
RC Servo Motor Controller RCServo 0
RC Servo Motor Current Sensor CurrentInput 0

API


Back Forward
Print this API

Documents

When you download the sample code, look in the "AdvancedServoExamples" folder, not the "ServoExamples" folder.

Each servo motor behaves slightly differently. The Phidgets API provides calibration parameters for a number of different models of servo motors; however these values are generic with respect to the model and not specific to each individual unit. It is possible to generate your own values through some manual calibration in the event that your application requires very accurate control or if you are using a servo for which default values are not provided. Read the following manual to find out how to do it.

Library & Driver Downloads

Code Samples

APILanguageOS
RCServo C Multiple Download
RCServo C# Windows Download
RCServo Java Multiple Download
RCServo JavaScript Any Download
RCServo Objective-C macOS Download
RCServo Python Multiple Download
RCServo Visual Basic .NET Windows Download
CurrentInput C Multiple Download
CurrentInput C# Windows Download
CurrentInput Java Multiple Download
CurrentInput JavaScript Any Download
CurrentInput Objective-C macOS Download
CurrentInput Python Multiple Download
CurrentInput Visual Basic .NET Windows Download

Projects

Product History

Date Board Revision Device Version Comment
July 20090100Product Release
May 20110101getLabelString fix for labels > 7 characters
October 20121101Mini USB Connector, Layout Change

Getting Started

Welcome to the 1066 user guide! In order to get started, make sure you have the following hardware on hand:


Next, you will need to connect the pieces:

1066 0 Connecting The Hardware.jpg
  1. Connect the servo motor to the PhidgetAdvancedServo controller.
  2. Connect the Phidget to your computer using the USB cable.


Now that you have everything together, let's start using the 1066!

Using the 1066

Phidget Control Panel

In order to demonstrate the functionality of the 1066, the Phidget Control Panel running on a Windows machine will be used.


The Phidget Control Panel is available for use on both macOS and Windows machines. If you would like to follow along, first take a look at the getting started guide for your operating system:


Linux users can follow the getting started with Linux guide and continue reading here for more information about the 1066.

First Look

After plugging the 1066 into your computer and opening the Phidget Control Panel, you will see something like this:

1066 Panel.jpg


The Phidget Control Panel will list all connected Phidgets and associated objects, as well as the following information:

  • Serial number: allows you to differentiate between similar Phidgets.
  • Channel: allows you to differentiate between similar objects on a Phidget.
  • Version number: corresponds to the firmware version your Phidget is running. If your Phidget is listed in red, your firmware is out of date. Update the firmware by double-clicking the entry.


The Phidget Control Panel can also be used to test your device. Double-clicking on an object will open an example.

RC Servo

Double-click on the RCServo object, labelled RC Servo Motor Controller, in order to run the example:

1066 Servo Example.jpg


General information about the selected object will be displayed at the top of the window. You can also experiment with the following functionality:

  • Motor calibration options are provided. You can change the minimum and maximum pulse widths for your RC servo motor in the appropriate boxes. You can also change which position these pulse widths map to.
  • The SpeedRampingState checkbox lets the 1066 know whether or not to take the Acceleration and Velocity values into account when moving the RC servo motor.
  • Use the Position slider to change the target position and move the RC servo motor.


Current Input

Double-click on the Current Input object , labelled RC Servo Motor Current Sensor, in order to run the example:

1066 CurrentInput Example.jpg


General information about the selected object will be displayed at the top of the window. You can also experiment with the following functionality:

  • Modify the change trigger and/or data interval value by dragging the sliders. For more information on these settings, see the data interval/change trigger page.


Technical Details

General

An RC servo motor can be instructed to move to a desired position by the controller. Internally, it monitors the current position, and drives the motor as fast as it can until it reaches the desired position. This is a very cheap and simple way to control a motor. It has some limitations - there is no way for the controller to know the current position and speed of the motor. Applications that want smooth movement suffer from the aggressive acceleration.

The 1066 is able to address some of these limitations. Instead of sending the desired position immediately, the 1066 sends a series of progressive positions according to acceleration and velocity parameters. In most applications, this dramatically smooths the operation of the servo, and allows reasonably precise control of position, velocity and acceleration. The 1066 has a built in switching regulator - this allows it to efficiently operate from a wide voltage range (6-15VDC), and maintain proper power to the servo motors even if the power supply is varying. This built in voltage regulator will not operate if your power supply is undersized.


For more information about servo motors and controllers, check out the Servo Motor and Controller Primer.

Connecting your Servo Motor to the 1066

1066 0 Pins.jpg

The pins on the 1066 are labelled B R W on the board:

  • B for Black is the Ground
  • R for Red is 5V
  • W for White (or Yellow depending on your servo motor) is the Data Line

Current Sense

The 1066 continuously measures the current consumed by each motor. The current roughly corresponds to torque, making it possible to detect several scenarios.

  • By monitoring for no current, it’s possible to determine if the servo is not connected. It may not be possible to distinguish between a servo at rest and a servo not attached.
  • Stalled motors can be detected, by monitoring for the maximum current possible with your motor.
  • The position limits of the servo can be programmatically determined by moving the servo until it stalls against the internal or external stops.

Limitations

The 1066 does not know the current position of the motor on its own. If your motor is free to move, and is not being driven beyond the physical limitations of the motor, the position returned to your application will be very close to the position of the motor.

Using the 1066 with Continuous Rotation Servos

A continuous rotation servo is a servo motor that has had its headgear-stop removed and potentiometer replaced by two matched-value resistors. This has the effect of allowing the motor to rotate freely through a full range of motion, but disables the motor’s ability to control it’s position.

When using the 1066 with a servo motor modified in this way, the position control in software becomes the motor's speed control. Because the two resistors that replace the motor’s potentiometer are matched in value, the motor will always think its shaft is at center position. If the target position in software is set to center, the motor will believe it has achieved the target and will therefore not rotate. The further away from center the target position is set to, the faster the motor will rotate (trying to reach that position, but never doing so). Changing the value above or below center changes the direction of rotation.

Using the 1066 with Electronic Speed Controllers (ESCs)

Electronic Speed Controllers are commonly used in RC hobby planes, cars, helicopters. It's a controller that accepts a PWM input signal, and controls a motor based on that signal. The ESC accepts power from an external source, normally a battery pack.

ESCs can be controlled by the 1066, but the vast majority of ESCs on the market will destroy the 1066 if they are plugged in without modification. In a hobby RC system, the ESC is responsible for regulating some of the battery current down to ~5V, and supplying it to the radio receiver. An ESC designed to the power the receiver will advertise that it has a Battery Eliminator Circuit (BEC). When you plug an ESC into the 1066, the 1066 is acting as the radio receiver. The 1066 was not designed to be powered by the devices it controls, and the voltage regulator on the 1066 will self-destruct if a device tries to power it. If the center pin from the 3-wire servo connector between the 1066 and the ESC is disconnected, the BEC on the ESC will not be able to power the 1066, and the voltage regulator will not fail.

How the ESC inteprets the PWM signal and controls the motor is a function of the ESC. Higher end ESCs can be configured based on the application.

The hobby RC market has transitioned to Brushless DC Motors (BLDC). As you select an ESC, watch that the battery voltage input matches that of your system, and the type of motor controlled is what you have. Brushed DC and Brushless DC Motors are completely different, and require different controllers.

Wiring layout is critical with ESCs. The currents to the motor and on the ground return can be enormous. If these currents end up travelling back through USB cables, the system will not be stable. Some ESCs are optically isolated (OPTO) - a big advantage that reduces interference.

Synchronization of Multiple Servo Motors

Many applications call for several servo motors operating in unison - for example, operating a CNC table, or a robot arm. Highly precise synchronization of servos using the 1066 is not possible, as the sequencing will be affected by the real-time performance of your operating system. Each servo is controlled as a independent unit, so there is no way of arranging for a particular action to happen to all motors at the same time. Typical jitter can be 10-30mS.

Using the 1066 with High-Power Servos

You can still use the 1066 to power servos that are rated for a higher power, but you will need to provide an external power supply. Cut and reattach the red and black wires as shown in the diagram below.

Servopower.png

Make sure you disconnect the red wire from the 1066 as pictured, because reverse current from the external power supply could damage the servo controller board.


What to do Next

  • Software Overview - Find your preferred programming language here to learn how to write your own code with Phidgets!
  • General Phidget Programming - Read this general guide to the various aspects of programming with Phidgets. Learn how to log data into a spreadsheet, use Phidgets over the network, and much more.
  • Phidget22 API - The API is a universal library of all functions and definitions for programming with Phidgets. Just select your language and device and it'll give you a complete list of all properties, methods, events, and enumerations that are at your disposal.

Servo Motors

The PhidgetAdvancedServo can drive one servo motor. Each of the servo motors in the list below is compatible with this Phidget and plugs directly to the board with no extra cables or soldering required. Servos come in two major varieties: limited rotation and continuous rotation. With limited rotation servos, the motor has a limited range of motion, but can be precisely controlled within that range. A continuous rotation servo can rotate continuously, but you won't be able to tell the servo to move to a specific location in degrees; instead you'll specify a direction and speed and for it to rotate at.

Product Motor Properties
Image Part Number Price Motor Type Range of Rotation Rated Torque Maximum Speed at Rated Voltage
3000_1 $12.00 Limited Rotation Servo 180° 3 kg·cm 286°/s
3200_0 $52.00 Limited Rotation Servo 180° 19.8 kg·cm 125°/s
3201_0 $57.75 Limited Rotation Servo Approx. 2700° 11 kg·cm 225°/s
3202_0 $18.75 Continuous Rotation Servo 2.8 kg·cm 44 RPM
3203_0 $19.00 Limited Rotation Servo 180° 4.8 kg·cm 272°/s
3204_0 $40.50 Limited Rotation Servo 180° 7.7 kg·cm 300°/s
3205_1 $11.00 Limited Rotation Servo 175° 2.2 kg·cm 545°/s
3206_0 $10.50 Limited Rotation Servo 180° 1.3 kg·cm 600°/s
3207_0 $12.50 Limited Rotation Servo 180° 2.4 kg·cm 375°/s
3209_0 $10.00 Limited Rotation Servo 180° 3.5 kg·cm 400°/s
3212_0 $18.00 Continuous Rotation Servo 12.2 kg·cm 50 RPM

Enclosures

You can protect your board from dust and debris by purchasing an enclosure. An enclosure will also prevent unintentional shorts caused by objects touching the pins on the bottom of the board or any terminal screws.

Product Physical Properties
Image Part Number Price Material
3816_1 $7.00 Clear Acrylic

USB Cables

Use a USB cable to connect this Phidget to your computer. We have a number of different lengths available, although the maximum length of a USB cable is 5 meters due to limitations in the timing protocol. For longer distances, we recommend that you use a Single Board Computer to control the Phidget remotely.

Product Physical Properties
Image Part Number Price Connector A Connector B Cable Length
3017_1 $3.00 USB Type A USB Mini-B 280 mm
3018_0 $5.00 USB Type A USB Mini-B 1.8 m
3020_0 $12.00 USB Type A USB Mini-B 4.5 m
3036_0 $3.50 USB Type A USB Mini-B 600 mm
3037_0 $4.00 USB Type A USB Mini-B 1.2 m

Have a look at our servo controllers:

Product Servo Controller
Image Part Number Price Number of Motor Ports Pulse Width Resolution
1061_1B $85.00 8 83.3 ns
1066_1 $40.00 1 83.3 ns