• sales

    +86-0755-88291180

DDSM315 User Guide

Overview

Introduction

The DDSM315 direct drive servo motor is based on an integrated development concept, combining an outer rotor brushless motor, encoder, and servo drive into a highly reliable permanent magnet synchronous motor. It features a compact design, easy installation, and stable operation. Its small size and high speed are particularly suitable for the following direct drive applications: driving wheels for small AGVs, driving wheels for balance vehicles, and high-end robotics projects for developing vehicle platforms.

Through the optimization of the number of pole slots, geometry, air gap, permanent magnet materials, etc., the motor is guaranteed to have a speed of up to 315±10RPM in the no-load state, and can rotate at a rated speed of 200RPM combined with a rated torque of 0.55Nm, which can be used for robot projects that require high-speed rotation and low torque requirements, providing users with high-performance direct drive application solutions.

The motor is compatible with a driver that utilizes the Field Oriented Control (FOC) algorithm, combined with high-precision sensors integrated into the motor, achieving precise control over the motor and better noise reduction. The driver has a complete and reliable motor OBD (On-board diagnostics) monitoring mechanism and protection function to ensure the safe and reliable operation of the motor.

At the same time, we provide an open source four-wheel drive off-road vehicle structure model for this model of direct drive servo motor, you can download the model and engineering files of the open source structure in the bottom "Resources" - "Open Source Structure".


Features

  • Ultra-low noise
  • High precision and zero-backlash
  • Fast response, direct drive without delay
  • Integrated motor and driver, compact structure and high integration
  • Supports RS485 communication method
  • Motor feedback information such as position, speed, current, error code can be obtained through communication
  • Supports Hall position detection, over-current protection and other functions
  • Supports electric brakes
  • No drive mechanical friction, drive efficiency close to 99.99%


Specifications

DDSM315 Hub Motor
Rated voltage18V DCOperating voltage12~24V DC
Rated speed200rpmNo-load speed315±10rpm
Rated current0.5ANo-load current0.25A
Stall current3.5AAmbient temperature-20~45℃
Rated torque0.55NmStall torque1.1Nm
Encoder resolution4096Relative accuracy1024
Total weight349±5gSingle wheel load10kg
Speed constant17.5rpm/VNoise level≤55dB(A)

Precautions

1. Confirm whether the operating voltage is within the specified voltage range as listed in Specifications before use.

2. Ensure that the motor is used within the specified ambient temperature range (-20℃~45℃).

3. Please avoid soaking the motor in water, otherwise it may cause abnormal operation or damage to the motor.

4. Please ensure that the connections are correct and secure before use to avoid poor contact.

5. Please refer to the installation instructions before using the motor to ensure that the motor is installed correctly and steadily.

6. Please refer to the installation instructions before using the motor to ensure that the external output part of the motor is installed correctly and steadily.

7. Please avoid damaging the cables when using, as this may lead to abnormal operation or damage to the motor.

8. Do not touch the rotating part of the motor when using to avoid injury.

9. When the motor produces a large torque output, it may become hot. Do not touch the motor to avoid burns.

10. Do not disassemble the motor without permission, otherwise it may cause abnormal operation or damage to the motor, and may bring potential safety hazards.


Motor Interface and Wiring Description


  • Interface type: ZH1.5*4P
  • Wiring harness number: red and black power cable – 26AWG; white and yellow signal cable – 28AWG
No.NameColorTypeDescription
1GNDYellowPower Negative-
2AWhiteSignal cable485 bus A
3BBlackSignal cable485 bus B
4ReservedRed-Reserved


  • Interface type: XH2.54*2P
No.NameColorTypeDescription
1VCCYellowPower PositiveRated 18V DC
2GNDWhitePower Negative-


Installation Guide

Please refer to the size and location of the motor mounting hole to install the motor to your project. You can also use our suspension component UGV Suspension (A) to install a hub motor.

  • The size of the mounting hole at the mounting end of the motor is M2.1, the depth is 6mm, and the centers of the mounting holes are evenly distributed on a circle with a diameter of 15.2mm. Self-tapping screws are required during the installation process, please select the appropriate screw for installation.


Product Use

Simple Usage

Hardware Connection

You can directly use our matching DDSM Driver HAT (A) drive board to drive this motor;

Serial Port Debugging Assistant

Serial Port Device Check

Ensure that you have correctly connected according to the content in the above hardware connection, and after plugging the USB to TTL module into the computer, search for "Device Manager" in the left lower corner of Windows to check if the serial port is connected properly.


Drive Motor

Here introduces the use of a simple serial port debugging assistant to control the hub motor. Download Serial Port Debugger Assistant, after downloading, open "cktszsss32.exe", select the correct serial port, choose a baud rate of 115200, check "HEX Display" and "HEX Send", click "Open Serial Port", as shown in the following image.


After powering on the motor, it is in a disabled state. It needs to be enabled first. After enabling, it defaults to the current loop mode. According to the communication protocol, the motor mode can be switched to the speed loop for control, as detailed in the Motor Mode Switch Transmission Protocol section of the communication protocol. The default ID of the factory motor is 1 or 2.

Example: To make the ID1 motor rotate at 30RPM, you can send the following command in the serial port assistant:

  • Enable command: 01 A0 08 00 00 00 00 00 00 6F
  • Switch to speed loop command: 01 A0 02 00 00 00 00 00 00 E4
  • Given a 30RPM RPM command: 01 64 01 2C 00 00 00 00 00 A6
  • Given a 0RPM RPM command: 01 64 00 00 00 00 00 00 00 50

Example: To make the ID2 motor rotate at 30RPM, you can send the following command in the serial port assistant:

  • Enable command: 02 A0 08 00 00 00 00 00 00 9A
  • Switch to speed loop command: 02 A0 02 00 00 00 00 00 00 11
  • Given 30RPM RPM command: 02 64 01 2C 00 00 00 00 00 53
  • Given 0RPM RPM command: 02 64 00 00 00 00 00 00 00 A5

Common Command Set

Motor Mode Switching

This command has no feedback
01 A0 00 00 00 00 00 00 00 01 (Current loop)
01 A0 00 00 00 00 00 00 00 02 (Speed loop)
01 A0 00 00 00 00 00 00 00 03 (Position loop)
The motor speed of the switching position loop needs to be less than 10rpm

Current Loop Command

Given value range: -32767~32767; corresponding range: -8A~8A
01 64 F8 30 00 00 00 00 00 08 (-2000)
01 64 EC 78 00 00 00 00 00 D3 (-5000)
01 64 D8 F0 00 00 00 00 00 78 (-10000)
01 64 00 00 00 00 00 00 00 50 (0)
01 64 07 D0 00 00 00 00 00 27 (2000)
01 64 13 88 00 00 00 00 00 A7 (5000)
01 64 27 10 00 00 00 00 00 57 (10000)

Speed Loop Command

Given value range: -330~330 rpm
01 64 FF CE 00 00 00 00 00 DA (-50rpm)
01 64 FF 9C 00 00 00 00 00 9A (-100rpm)
01 64 00 00 00 00 00 00 00 50 (0rpm)
01 64 00 32 00 00 00 00 00 D3 (50rpm)
01 64 00 64 00 00 00 00 00 4F (100rpm)

Acceleration Time

Take motor ID 1 and speed 30rpm as an example:
01 64 00 1E 00 00 00 00 00 18 (default acceleration time is 0)
01 64 00 1E 00 00 01 00 00 B3 (acceleration time set to 1)
01 64 00 1E 00 00 0A 00 00 72 (acceleration time set to 10)

Brake Command

Valid in speed loop mode:
01 64 00 00 00 00 00 FF 00 D1 (Motor 1)
02 64 00 00 00 00 00 FF 00 24 (Motor 2)

Obtain Motor Feedback

01 74 00 00 00 00 00 00 00 04 (Motor 1)
02 74 00 00 00 00 00 00 00 F1 (Motor 2)


Communication Protocol

Communication Setting

  • Baud rate: 115200; Data bit: 8bit; Stop bit: 1bit; Parity bit: None
  • Data length: 10 bytes
  • Response format: one question, one answer
  • Rate: up to 250Hz
  • In current loop mode: -32767~32767 corresponds to -8A~8A (non-motor current range), the data type is signed 16-bit;
  • In speed loop mode: -330~330, unit rpm, the data type is signed 16-bit;
  • In position loop mode: 0~32767 corresponds to 0 °~360 °, the data type is unsigned 16-bit;

Note: The baud rate cannot be modified by command

Operation steps:

       ①Set the motor ID (power-off save) 
②Send the enable command, default current loop when enabled
③Send the given value


CRC8 Checksum Calculation Method

  • CRC8 value: The value after performing CRC8 checksum on the values DATA[0] to DATA[8].
  • CRC algorithm: CRC-8/MAXIM
  • Polynomial: x8 + x5 + x4 +1

In the verification product stage, the check digit can be calculated through this website: https://crccalc.com/

Example: Set the factory motor ID to 2:

Input the values of DATA[0]~DATA[8] into the input box on the above website. After inputting, select "HEX Input" and "HEX Output", choose "CRC-8", and you will see the numbers change below. Note that the result of CRC-8/MAXIM-DOW is 0x92. The command to set the motor ID to 2 is: AA 55 53 02 00 00 00 00 00 92

800px-800px-DDSM400 CRC8.png


Protocol 1: Drive Motor to Rotate

Send to the motor:
Data domainDATA[0]DATA[1]DATA[2]DATA[3]DATA[4]DATA[5]DATA[6]DATA[7]DATA[8]DATA[9]
ContentID0x64Given high 8 bits of speed/position/currentGiven low 8 bits of speed/position/current00Acceleration timeBrake0CRC8
Motor feedback:
Data domainDATA[0]DATA[1]DATA[2]DATA[3]DATA[4]DATA[5]DATA[6]DATA[7]DATA[8]DATA[9]
ContentIDMode valueHigh 8 bits of torque currentLow 8 bits of torque currentHigh 8 bits of speedLow 8 bits of speedHigh 8 bits of positionLow 8 bits of positionFault codeCRC8


  • Acceleration time: Valid in speed loop mode, the acceleration time per 1rpm is 0.1ms. When set to 1, the acceleration time per 1rpm is 0.1ms. When set to 10, the acceleration time per 1rpm is 10*0.1ms=1ms. When set to 0, the default value is 1, and the acceleration time per 1rpm is 0.1ms.
  • Brake: Other values of 0XFF do not brake, and are valid in speed loop mode.


Protocol 2: Obtain Other Feedback

Send to the motor:
Data domainDATA[0]DATA[1]DATA[2]DATA[3]DATA[4]DATA[5]DATA[6]DATA[7]DATA[8]DATA[9]
ContentID0x740000000CRC8
Motor feedback:
Data domainDATA[0]DATA[1]DATA[2]DATA[3]DATA[4]DATA[5]DATA[6]DATA[7]DATA[8]DATA[9]
ContentIDMode valueHigh 8 bits of torque currentLow 8 bits of torque currentHigh 8 bits of speedLow 8 bits of speedWinding temperatureU8 position valueFault codeCRC8


  • U8 position value: 0~255 corresponds to 0~360°
  • Winding temperature: unit ℃
  • Fault code:
Fault valueBIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0
ContentReservedReservedReservedOvertemperature failureStall faultPhase current overcurrentOvercurrent failureSensor failure

For example, the fault code is 0x02, which means 0b00000010, indicating an overcurrent fault has occurred.


Protocol 3: Motor Mode Switch Transmission Protocol

Send to the motor:
Data domainDATA[0]DATA[1]DATA[2]DATA[3]DATA[4]DATA[5]DATA[6]DATA[7]DATA[8]DATA[9]
ContentID0xA00000000Mode value
  • Mode value:
    • 0x01: Set to current loop
    • 0x02: Set to speed loop
    • 0x03: Set to position loop
The motor speed needs to be less than 10 rpm when switching to the position loop.


Protocol 4: Motor ID Set Transmission Protocol

Send to the motor:
Data domainDATA[0]DATA[1]DATA[2]DATA[3]DATA[4]DATA[5]DATA[6]DATA[7]DATA[8]DATA[9]
Content0xAA0x550x53ID00000
Note: When setting the ID, please ensure that only one motor is powered on. It is only allowed to be set once each time it is powered on. The motor is set after receiving 5 ID setting commands.


Protocol 5: Motor ID Query Sending Protocol

Send to the motor:
Data domainDATA[0]DATA[1]DATA[2]DATA[3]DATA[4]DATA[5]DATA[6]DATA[7]DATA[8]DATA[9]
Content0xC80x640000000CRC8
Motor feedback:
Data domainDATA[0]DATA[1]DATA[2]DATA[3]DATA[4]DATA[5]DATA[6]DATA[7]DATA[8]DATA[9]
ContentIDMode valueHigh 8 bits of torque currentLow 8 bits of torque currentHigh 8 bits of speedLow 8 bits of speedHigh 8 bits of positionLow 8 bits of positionFault codeCRC8

Note: Please make sure that there is only one motor on the bus when querying the ID.


Protection Rules

1. Bus overcurrent protection threshold: 3A. When overcurrent occurs, the shutdown protection is triggered, and it is released after 5 seconds;

2. Motor overtemperature protection threshold: 80 ℃, the protection will be released when the temperature is below the threshold of 5 ℃;

3. Phase current protection threshold: 4.6A, the shutdown protection will be triggered, and it will be released after 5 seconds;

4. Stall prevention: the protection will be triggered after the stall duration exceeds 5S, and it will be automatically released after 5S (the speed loop is effective)


Resources

3D Model


Open Source Structure


Serial Port Debugging Assistant


Support

Monday-Friday (9:30-6:30) Saturday (9:30-5:30)

Email: services01@spotpear.com

TAG: Milk-V Duo S UART Serial Console​ Arduino IR Thermal Imaging Camera LuckFox Pico CAN FD Lidar ADXL357BEZ MPTPU Raspberry Pi 5 TPU AI Kit 2TOPS PCIe to TPU HAT Pi5 For Google Coral Edge TPU RV1103 0.49inch OLED Screen Display 64×32 SSD1315 Arduino Raspberry Pi ESP32 Pico STM32 1.5inch LCD Industrial Modbus POE ETH RJ45 To Relay 30CH RTU/Modbus TCP-Ethernet For IOT Raspberry Pi 5 PCIe to M.2 NVMe SSD Adapter Board HAT Pi5-PCIe-MPS2242-2230-Board Zero LCD HAT (A) Raspberry pi Pico development board RP2040 Core A Based On Official RP2040 Dual Core Processor DeepSeek XiaoZhi AI Chat Robot ESP32-S3 1.54 inch LCD N16R8 MUMA Development Board Display Screen Wifi Weather Station TimeClock i5-1135G7 Sipeed NanoCluster Mini Cluster Board mini data center For Raspberry Pi CM45 / Computer /LM3H /M4N Raspberry Pi Real time clock Raspberry Pi 5 27W FT4232HL USB TTL RS232 Industrial UART 4-Ch UART