DC Motor Phidget

 

 

 

 

 

 

This DC Motor Phidget attaches to your VINT hub and controls the direction and voltage of one DC motor using high frequency pulse-width modulation to achieve smooth operation. It also has current control, allowing you to set a current limit, which puts a maximum on the amount of torque exterted by the motor and allows you to use larger power supplies than what the motor is normally rated for.

 

 

 

Quadrature Encoder Input

 

This controller comes equipped with an encoder input that can read in the quadrature signal from an encoder attached to the shaft of your motor. You can use this information to make a closed-loop position controller.

 

VoltageRatio Input

 

Similar to a VINT port opened in VoltageRatioInput mode, this port will read in a ratiometric sensor. This is useful for motors that come with attached potentiometers like a DC Linear actuator, so you can incorporate position feedback without needing to buy another input board.

 

High Compatibility

 

Many variations of brushed DC motors exist: permanent magnet motors, electromagnet motors, coreless motors, and linear motors. The DC Motor Controller can be used with any of these, as well as other devices that use pulse-width modulation such as small solenoids, incandescent light bulbs, and the hydraulics of pneumatic devices like small pumps and valves.

 

Motor Current Sensing

 

This Phidget also lets you monitor how much current is going through your motor coils at any given time. You can use this feature to determine how much physical resistance the motor is working against; the larger the load, the greater the current the motor will draw.

 

Reliability and Protection

 

The VINT port on this device is isolated, greatly improving reliability and eliminating ground loops.

 

The power terminals on this device are polarity protected: if you happen to hook up the power supply backwards, the device simply won’t power up and won’t be damaged.

 

There is a fuse included on-board to protect the controller in an over-current event. Board temperature and motor current can be monitored for cooling control and power management. This board has no power-saving features built in; if you want to control power consumption, you’ll need to switch the power supply using a relay. The attached fan can be configured and automatically or manually controlled through the API.

 

Related Videos

 

 

 

 

 

 

 

Product Specifications

 

 

Board Properties
Controlled By VINT
Voltage Sensor
Number of Voltage Inputs 1
Sampling Interval Min 500 ms/sample
Sampling Interval Max 60 s/sample
VoltageRatio Input Resolution 0.00026
Input Voltage Min (DC) 0 V DC
Input Voltage Max (DC) 5 V DC
Measurement Error Max 0.5 %
Sensor Input Impedance 324 k?©
Controller Properties
Motor Type DC Motor
Number of Motor Ports 1
Velocity Resolution 0.001 % Duty Cycle
Acceleration Resolution 1 % Duty Cycle/s
Acceleration Min 0.5 % Duty Cycle/s
Acceleration Max 10000 % Duty Cycle/s
Acceleration Time Min 10 ms
Acceleration Time Max 200 s
PWM Frequency 25 kHz
Sampling Interval Min 50 ms/sample
Sampling Interval Max 60 s/sample
Current Limit Resolution 17.9 mA
Electrical Properties
Continuous Motor Current Max 25 A
Supply Voltage Min 8 V DC
Supply Voltage Max 30 V DC
Current Consumption (Unconfigured) (VINT Port) 500 ?¼A
Current Consumption Max (VINT Port) 2 mA
Power Consumption (Unconfigured) 288 mW
Power Consumption motor power plus 700 mW
Encoder Interface
Number of Encoder Inputs 1
Encoder Interface Resolution x4
Count Rate Max 400000 pulses/s
Time Resolution 1 ?¼s
Sampling Interval Min 50 ms/sample
Sampling Interval Max 60 s/sample
Encoder Input Low Voltage Max 800 mV DC
Encoder Input High Voltage Min 2 V DC
Temperature Sensor
Temperature Resolution 0.04 ?°C
Physical Properties
Recommended Wire Size 10 – 26 AWG
Operating Temperature Min -40 °C
Operating Temperature Max 85 °C

 

 

 

 


// <![CDATA[
var phidgetDocConfig = { clearContent: function () { $('#phiddoc').empty(); }, setSelection: setSelection, targetid: 'phiddoc', lang: 'C', privateapi: false, unreleasedapi: false }; var phidgetDoc = new PhidgetDoc(phidgetDocConfig); function setSelection(loc) { if (loc._dev) { setSelectedDevice(loc._dev); loadVersions(); setSelectedVersion(loc._ver); loadChannels(); setSelectedChannel(loc._ch); } else { setSelectedDevice(loc.class.name); clearMenus(); } } $(document).ready(function () { $('#topdocgenmenu').stick_in_parent(); phidgetDoc.loadClass({ class: window['Phidget'] }); loadDevices(); $('#selectDevice').change(); var changeFunc = function () { if (isNaN(getSelectedDevice())) $('#selectDevice').change(); else $('#selectChannel').change(); } $('#selectLang').on('change', changeFunc); }); function loadClass(cls, channel) { var selected = $('#selectLang option:selected'); phidgetDoc.setLang(selected.val()); optionSelected(selected); if (channel === undefined) { phidgetDoc.loadClass({ class: cls }); toggleApiNavButtons(); return; } phidgetDoc.loadClass({ class: cls, channel: channel, _dev: getSelectedDevice(), _ver: getSelectedVersion(), _ch: getSelectedChannel() }); toggleApiNavButtons(); } function loadDevices() { for (var b in PhidgetBoardsSorted) { if (PhidgetBoardsSorted[b].sku === 'DCC1000_0') break; if (PhidgetBoardsSorted[b].alternatesku !== undefined && PhidgetBoardsSorted[b].alternatesku.indexOf('DCC1000_0') >= 0) break; } var devname = PhidgetBoardsSorted[b].name; if (devname === undefined) { for (var d in PhidgetDevices) { if (PhidgetDevices[d].uid === PhidgetBoardsSorted[b].release[0].deviceuid.toString().split(',')[0]) { devname = PhidgetDevices[d].name; break; } } } $('#selectDevice').prepend('' + PhidgetBoardsSorted[b].sku + ' - ' + devname + ''); $('#selectDevice').on('change', deviceChange); } function deviceChange() { clearMenus(); $('#phiddoc').empty(); /* * Classes are the class name * Devices are */ var selectedDev = getSelectedDevice(); if (isNaN(Number(selectedDev))) { var cls = window[selectedDev]; if (typeof (cls) === 'undefined') { console.log('Couldn't find class: ' + selectedDev); return; } loadClass(cls); return; } var board = PhidgetBoardsSorted[selectedDev]; if (typeof (board) === 'undefined') { console.log('unknown board:' + selectedDev); return; } loadVersions(board); $('#selectVersion').change(); }; function clearMenus() { $('#selectChannel').remove(); $('#selectVersion').remove(); } function loadVersions(board) { if (board === undefined) { var selectedDev = getSelectedDevice(); board = PhidgetBoardsSorted[selectedDev]; if (typeof (board) === 'undefined') { console.log('unknown board:' + selectedDev); return; } } $('#selectVersion').remove(); $('#phiddocheaderform').append(''); var versionCnt = 0; for (var rel in board.release) { for (var v in board.release[rel].version) { var uidlist = board.release[rel].deviceuid.toString().split(','); var devIndexList = []; for (var u in uidlist) { var deviceIndex = -1; for (var d in PhidgetDevices) { if (PhidgetDevices[d].uid === uidlist[u]) { devIndexList.push(d); break; } } } $('#selectVersionGroup').append('' + board.release[rel].version[v] + ''); versionCnt++; } } $('#selectVersion').on('change', versionChange); $('#selectVersion option:eq(' + (versionCnt - 1).toString() + ')').attr('selected', 'selected'); }; function versionChange() { loadChannels(); $('#selectChannel').change(); } function loadChannels() { var selver = getSelectedVersion(); if (selver === undefined) return; $('#selectChannel').remove(); $('#phiddocheaderform').append(''); var devs = selver.split(','); var channelCnt = 0; for (var d in devs) { var device = PhidgetDevices[devs[d]]; if (device === undefined) return; for (var c in device.channels) { $('#selectChannel').append(''); var opt = $('#selectChannelGroup' + channelCnt); opt.append('Phidget API'); opt.append('' + device.channels[c].class + ' API'); channelCnt++; } } $('#selectChannel').on('change', channelChange); $('#selectChannel option:eq(1)').attr('selected', 'selected'); } function channelChange() { var selch = getSelectedChannel(); if (selch === undefined) return; var selectedChannel = selch.split(','); if (PhidgetDevices[selectedChannel[0]] === undefined) return; var device = PhidgetDevices[selectedChannel[0]]; var channel = device.channels[selectedChannel[1]]; if (selectedChannel.length === 3) var cls = window[selectedChannel[2]]; else var cls = window[channel.class]; if (typeof (cls) === 'undefined') { console.log('Could not find class: ' + channel.class); $('#phiddoc').empty(); $('#phiddoc').append('Not Implemented'); return; } channel.type = device.type; channel.devuid = device.uid; loadClass(cls, channel); }; function getSelectedDevice() { var selected = $('#selectDevice option:selected'); optionSelected(selected); return (selected.val()); } function setSelectedDevice(dev) { $('select#selectDevice')
// ]]>