adc.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**********************************
  2. * 文件名称: adc.h
  3. * 功能描述: ADC采样头文件
  4. * 主要内容:
  5. * 1. ADC值转换宏定义
  6. * 2. 外部变量声明
  7. *
  8. * 注意事项:
  9. * - 包含总线电压、电流、热敏电阻的转换宏
  10. * - 所有转换宏都基于3.3V参考电压和12位ADC分辨率
  11. **********************************/
  12. #ifndef __ADC_H_
  13. #define __ADC_H_
  14. /**
  15. * @brief 将ADC值转换为总线电压
  16. * @param adc: ADC采样值
  17. * @retval 总线电压值(V)
  18. * @note 0.000805f = 3.3f / 4095.0f,25.0f为电压分压系数
  19. */
  20. #define ADC_TO_VBUS(adc) (float)((adc)* 3.3f/ 4096.0f *25.0f)
  21. /**
  22. * @brief 将ADC值转换为电流值
  23. * @param adc: ADC采样值
  24. * @retval 电流值(A)
  25. * @note 0.000805f = 3.3f / 4095.0f,1.25f为偏置电压,0.12f为电流采样系数
  26. */
  27. #define ADC_TO_CURRENT(adc) (double)((((adc) * 3.3f / 4096.0f) ) / (0.12f) )
  28. /**
  29. * @brief 将ADC值转换为电流值(带偏移校准)
  30. * @param adc: ADC采样值
  31. * @param adc_offset: 电流偏移校准ADC值
  32. * @retval 电流值(A)
  33. */
  34. // 电压转换(反电动势)
  35. #define ADC_TO_VOL(adc) (float)((adc)* 3.3f/ 4096.0f *25.0f)
  36. /**
  37. * @brief 将ADC值转换为热敏电阻阻值
  38. * @param adc: ADC采样值
  39. * @retval 热敏电阻阻值(kΩ)
  40. * @note 4.7f为参考电阻,4095.0f为ADC满量程值
  41. */
  42. // #define ADC_TO_RT(adc) (3.3f * 4.7f / ((adc) * 3.3f/ 4095) - 4.7f) // (kohm)
  43. #define ADC_TO_RT(adc) (4.7f * 4095.0f / (adc) - 4.7f)
  44. // 外部变量声明
  45. /**
  46. * @brief 电流偏移校准标志
  47. * @note 0: 未开始校准, 1: 正在校准, 2: 校准完成
  48. */
  49. extern uint8_t get_offset_flag;
  50. extern float Ia_test,Ib_test,Ic_test;
  51. extern float Vbus, Temp;
  52. /**
  53. * @brief 电机角度
  54. */
  55. extern float theta;
  56. /**
  57. * @brief 电机角度(备用)
  58. */
  59. extern float angle;
  60. /**
  61. * @brief q轴参考电流
  62. */
  63. extern float Iq_ref;
  64. /**
  65. * @brief EKF估计的电机转速(Hz)
  66. */
  67. extern float EKF_Hz;
  68. /**
  69. * @brief 速度闭环控制标志
  70. * @note 0: 启动阶段, 1: 过渡阶段, 2: 闭环控制
  71. */
  72. extern u8 speed_close_loop_flag;
  73. /**
  74. * @brief ADC1转换值数组
  75. */
  76. extern uint16_t ADC3ConvertedValue[ADC3_DMA_BUFFER_SIZE];
  77. extern float calculate_temperature(float rt_kohm);
  78. #endif