TYD5660.h 12.8 KB
Newer Older
崔立宝's avatar
崔立宝 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137


#ifndef _TYD5660_H_
#define _TYD5660_H_

#include "stdint.h"
#include "Motor_Controller.h"

/******************************************************************************
步进电机特性参数
******************************************************************************/
#define   STEPPER_MOTOR_TOTAL_PHASE         40          //每一微步对应转子旋转15度,转子旋转一周共24微步
#define   STEPPER_MOTOR_STEP_PER_10DEG      187         //电机输出转轴每10度对应120微步
#define   STEPPER_MOTOR_SPEED_MAX           5000//1683  //电机最大转速,单位:微步/秒
#define   STEPPER_MOTOR_SPEED_MIN           10          //电机最小转速,单位:微步/秒
#define   STEPPER_MOTOR_ACC_MAX             50          //最大加速度,用于限制加速度范围

/******************************************************************************
步进电机应用参数
******************************************************************************/
/*=============================================================================
警告:应用参数必须设置在对应的特性参数范围内
=============================================================================*/
#define   STEPPER_MOTOR_DIR_SWITCH_SPEED    120         //电机最大换向转速,低于此转速电机才可以切换旋转方向,单位:微步/秒
#define   STEPPER_MOTOR_CAL_SPEED_MIN       560         //电机最小校准速度,校正模式时电机以不低于此速度旋转,单位:微步/秒
#define   STEPPER_MOTOR_FULL_RST_SPEED      5000        //电机大角度归零速度,单位:微步/秒
#define   STEPPER_MOTOR_FINE_RST_SPEED      560         //电机小角度归零速度,单位:微步/秒
#define   STEPPER_MOTOR_SHDN_RST_SPEED      1683        //电机断电归零速度,单位:微步/秒

#define   STEPPER_MOTOR_BRAKE_ACC           50          //电机制动加速度
#define   STEPPER_MOTOR_FULL_RST_ACC        50          //电机大角度归零加速度
#define   STEPPER_MOTOR_FINE_RST_ACC        10          //电机小角度归零加速度
#define   STEPPER_MOTOR_SHDN_RST_ACC        10          //电机断电归零加速度

#define   STEPPER_MOTOR_DAMPING_FACTOR      2           //电机阻尼系数,阻尼系数越大,电机减速越慢

/******************************************************************************
步进电机力矩调节
******************************************************************************/
/*=============================================================================
警告:错误的力矩设置将有可能导致步进电机丢步甚至卡滞
      调节力矩时需要考虑同步调整步进电机应用参数
=============================================================================*/
#define   STEPPER_MOTOR_MOMENT_FACTOR       100      //调节范围为0 - 100(对应0% - 100%)

/******************************************************************************
步进电机相位表
******************************************************************************/
static const uint16_t StepperMotorCosDutyCycleTable[STEPPER_MOTOR_TOTAL_PHASE]  =
{
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)100 / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)99  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)95  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)89  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)81  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)71  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)59  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)45  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)31  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)16  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)0   / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)16  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)31  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)45  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)59  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)71  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)81  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)89  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)95  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)99  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)100 / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)99  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)95  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)89  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)81  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)71  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)59  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)45  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)31  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)16  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)0   / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)16  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)31  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)45  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)59  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)71  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)81  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)89  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)95  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)99  / (uint32_t)10000) | 0x8000,
};

static const uint16_t StepperMotorSinDutyCycleTable[STEPPER_MOTOR_TOTAL_PHASE]  =
{
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)0   / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)16  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)31  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)45  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)59  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)71  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)81  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)89  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)95  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)99  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)100 / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)99  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)95  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)89  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)81  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)71  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)59  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)45  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)31  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)16  / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)0   / (uint32_t)10000),
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)16  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)31  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)45  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)59  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)71  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)81  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)89  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)95  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)99  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)100 / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)99  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)95  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)89  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)81  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)71  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)59  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)45  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)31  / (uint32_t)10000) | 0x8000,
  (uint16_t)((uint32_t)MOTOR_CONTROLLER_PERIOD * (uint32_t)STEPPER_MOTOR_MOMENT_FACTOR * (uint32_t)16  / (uint32_t)10000) | 0x8000,
};

#endif