风机塔筒灾难预警系统
作者:wushuisheng
一、项目背景
风力发电作为新能源开发的一个重要领域,受到越来越多的重视,其核心技术风力发电机的研制以及风力发电机振动故障监测与诊断也广受关注。风机塔筒不仅要承载风力发电机自身机体的静态载荷,还由于风场各种风况(正常、极端风况)的存在,风力强弱、方向变化多样、有限位置的风力状况难以预测等因素的影响。对于风力发电机齿轮箱的振动监测和故障诊断研究比较详细、深入,但是对于风机塔筒振动研究还有有很大空间去研究。齿轮箱振动信号所包含特征信号高频居多,而塔筒则存在显著的低频特征,这就导致了目前用于监测齿轮箱的方法和设备并不适合塔筒振动的监测。本项目风风机塔筒灾难预警系统能够实时采集分析买际运行过程中的塔筒振动水平和频率成分,帮助进行故障判断并对故障进行预警。
二、作品简介
本项目采用LSM6DSOX+STEVAL-MKI109V3模式进行前期传感器学习与研究,主要是从训练加速度传感器检测振动和录制振动波形,训练陀螺仪传感器检测振动方向和偏移量,并记录波形进行分析;结合加速度传感器和陀螺仪传感器的动作数据就可以确定风机塔筒在各种工况下的振动强度和振动方向;在实际运用中,LSM6DSOX传感器结合低功耗芯片STM32L010RBT6芯片,就地侧主控板引出报警继电器出口用于风机塔筒侧的报警输出,通过485串口通讯接入风机scada系统将就地侧上传记录数据实时反馈风机塔筒的工作状态,可以用于分析风机塔筒振动反向和风机塔筒摆动方向记录,也可以记录分析风机塔筒正常情况下的风机塔筒固有频率和故障时候的固有频率,多方面的数据形成可以提前感知的风机塔筒灾难预警系统;
三、系统框图
本系统主要分为:供电部分、RS485通讯部分、继电器出口部分、LSM6DSOX传感器监测部分,usb转TTL电路部分,主芯片采用STM32L010RBT6低功耗芯片;主芯片与LSM6DSOX传感器采用I2C通讯,同时引出2路INT1、INT2中断信号,数据运算与分析主要在LSM6DSOX传感器,主芯片的运算大大降低,同时当有INT1 、INT2中断信号产生时,主芯片可以读取LSM6DSOX传感器的寄存器数据,判断当前状态,条件满足进而可以驱动继电器输出动作信号;动作信号也可以通过RS485上送后台进行数据反馈和状态显示;USB转TTL电路便于现场调试和监测;
四、各部分功能说明(图文结合)
1、MCU控制采用stm32l010RBT6低功耗芯片,64引脚,预留很多IO我都进行引出,方便后续扩展功能,主晶振采用8MHz;
2、LSM6DSOX传感器监测部分
本传感器直接采用标准传感器插件进行测试,官方测试板使用的是直流1.8v供电,查看手册,也可以3.3v供电,我这边电路板采用的是直流3.3V供电;采用I2C通讯并将2路INT1、INT2引出到主控芯片上进行输入中断处理,实物图如下
电路原理图如下:
INT1中断输、INT2中断输出:
并参考LSM6DSOX手册信息;
3、RS485通讯部分 本部分电路采用电源模块进行输入干扰隔离,本电路在新能源领域验证是抗干扰能力很强的可用电路,就直接继承过来了,隔离电源模块采用金升阳F0505XT-1WR2,485芯片采用6LB184芯片,信号隔离采用TLP185GB光耦;
原理图如下:
4、继电器出口部分 继电器采用宏发继电器,型号HF49FD-012-1H11;
5、 USB转TTL电路的采用也是考虑现场调试,便于现场调试和监测;
6、供电部分 供电采用12V供电,降压电源模块采用金升阳F1205D-2WR2;
硬件电路
7、原理图、pcb、实物图全家福
五、作品源码和案例中处理的传感器数据
1、FMS数据设置
2、实验检测数据
振动数据:
STEVAL-MKI197V1 (LSM6DSOX)
|
|
|
|
|
|
|
|
|
|
|
|
A_X [mg]
|
A_Y [mg]
|
A_Z [mg]
|
G_X [dps]
|
G_Y [dps]
|
G_Z [dps]
|
175
|
-52
|
937
|
0.805
|
-1.89875
|
0
|
161
|
-56
|
937
|
-0.975625
|
0.818125
|
-1.33438
|
144
|
-45
|
948
|
-0.529375
|
-2.35375
|
-1.33438
|
127
|
-36
|
958
|
-0.975625
|
1.72375
|
-0.44625
|
112
|
-39
|
970
|
-2.30563
|
-0.993125
|
-0.44625
|
95
|
-43
|
987
|
-2.75188
|
0.363125
|
-0.44625
|
84
|
-34
|
1000
|
-2.30563
|
1.26875
|
-0.888125
|
51
|
-30
|
1008
|
2.135
|
-1.89875
|
-0.888125
|
53
|
-31
|
1030
|
-0.975625
|
0.363125
|
-2.2225
|
60
|
-30
|
1022
|
-0.0875
|
-0.993125
|
0
|
65
|
-20
|
1026
|
-5.41625
|
3.535
|
0.441875
|
68
|
-18
|
1033
|
2.58125
|
-3.25938
|
-1.77625
|
76
|
-14
|
1034
|
-1.4175
|
3.08
|
-0.888125
|
81
|
-11
|
1032
|
0.805
|
-0.0875
|
-0.888125
|
85
|
-10
|
1018
|
-0.975625
|
1.26875
|
-0.888125
|
105
|
-10
|
1012
|
-0.0875
|
0.818125
|
0.888125
|
114
|
-9
|
998
|
-0.529375
|
0.363125
|
-1.77625
|
112
|
-7
|
994
|
-2.30563
|
-0.5425
|
-1.77625
|
107
|
-9
|
994
|
0.805
|
3.535
|
0.441875
|
104
|
-4
|
984
|
-2.30563
|
-0.993125
|
-2.66438
|
96
|
-3
|
972
|
0.35875
|
0.818125
|
0.441875
|
80
|
-4
|
976
|
-1.86375
|
1.26875
|
-0.888125
|
57
|
-3
|
980
|
-0.975625
|
1.26875
|
-2.2225
|
5
|
-6
|
978
|
0.805
|
2.17438
|
-1.77625
|
-5
|
-13
|
999
|
-2.75188
|
0.818125
|
-0.888125
|
-18
|
-14
|
1014
|
-2.75188
|
0.818125
|
0
|
-25
|
-8
|
1016
|
-0.975625
|
-0.0875
|
-3.11063
|
-30
|
-8
|
1026
|
-2.75188
|
1.72375
|
-1.33438
|
-35
|
-2
|
1037
|
-0.529375
|
0.363125
|
-1.33438
|
-37
|
0
|
1040
|
-1.86375
|
1.72375
|
-2.2225
|
-41
|
9
|
1042
|
0.35875
|
-0.993125
|
-0.888125
|
-55
|
9
|
1051
|
0.35875
|
-0.0875
|
1.77625
|
-62
|
8
|
1054
|
-2.98375
|
-0.065625
|
-0.65625
|
-67
|
14
|
1060
|
1.24688
|
-0.0875
|
-2.66438
|
-71
|
18
|
1057
|
-1.86375
|
-0.993125
|
0
|
-75
|
17
|
1048
|
0.35875
|
0.818125
|
1.33
|
-76
|
21
|
1049
|
-2.75188
|
-2.80438
|
-2.66438
|
-75
|
20
|
1049
|
-0.0875
|
0.818125
|
-1.33438
|
-81
|
27
|
1045
|
-0.0875
|
-2.35375
|
-0.44625
|
-83
|
29
|
1042
|
-1.86375
|
-3.25938
|
-1.33438
|
-74
|
21
|
1026
|
1.24688
|
-0.5425
|
-0.888125
|
-63
|
11
|
1022
|
1.69313
|
-1.44813
|
-1.33438
|
-58
|
-5
|
1016
|
-3.19375
|
-2.35375
|
0
|
-50
|
-18
|
1018
|
-0.0875
|
-2.80438
|
-4.44063
|
-39
|
-33
|
1018
|
-2.75188
|
-0.993125
|
2.21813
|
-28
|
-45
|
1012
|
0.805
|
-3.71
|
-2.2225
|
-10
|
-56
|
1010
|
-0.975625
|
-2.80438
|
0.441875
|
12
|
-65
|
1014
|
-2.75188
|
0.818125
|
1.33
|
43
|
-74
|
1006
|
-0.529375
|
-4.165
|
-1.77625
|
63
|
-82
|
997
|
-3.21563
|
-3.23313
|
0.231875
|
84
|
-86
|
992
|
0.805
|
-0.993125
|
0.441875
|
112
|
-77
|
988
|
-0.975625
|
-2.80438
|
-1.33438
|
147
|
-69
|
990
|
-0.0875
|
-3.25938
|
1.33
|
180
|
-61
|
987
|
0.805
|
-1.44813
|
-1.33438
|
210
|
-53
|
980
|
-3.19375
|
-1.89875
|
1.77625
|
231
|
-46
|
968
|
-0.975625
|
-1.89875
|
-3.11063
|
240
|
-46
|
951
|
2.135
|
-1.89875
|
1.77625
|
230
|
-43
|
931
|
-0.529375
|
-2.35375
|
-0.44625
|
225
|
-31
|
930
|
-0.975625
|
-0.0875
|
-1.33438
|
211
|
-48
|
927
|
-0.975625
|
-0.5425
|
-1.33438
|
195
|
-52
|
929
|
-1.4175
|
-0.5425
|
1.77625
|
183
|
-47
|
924
|
-0.529375
|
0.363125
|
-1.33438
|
165
|
-47
|
928
|
0.805
|
-1.44813
|
-2.2225
|
142
|
-49
|
940
|
-0.0875
|
1.72375
|
0.888125
|
110
|
-54
|
953
|
-3.19375
|
0.818125
|
-0.888125
|
95
|
-58
|
981
|
-0.975625
|
-3.25938
|
-4.88688
|
78
|
-56
|
995
|
3.02313
|
-1.44813
|
-3.11063
|
83
|
-46
|
996
|
-5.8625
|
1.72375
|
1.77625
|
95
|
-36
|
1004
|
1.69313
|
0.363125
|
-3.11063
|
94
|
-25
|
1016
|
-1.86375
|
1.72375
|
0.888125
|
99
|
-19
|
1018
|
-0.975625
|
0.363125
|
-3.5525
|
114
|
-14
|
1026
|
-0.975625
|
1.26875
|
1.77625
|
123
|
-6
|
1030
|
-0.975625
|
0.363125
|
-1.33438
|
129
|
2
|
1026
|
2.135
|
0.818125
|
-1.33438
|
132
|
10
|
1024
|
-0.74375
|
1.50938
|
0.231875
|
121
|
20
|
1016
|
-0.975625
|
1.26875
|
-2.2225
|
101
|
6
|
1012
|
-0.529375
|
1.26875
|
-1.77625
|
89
|
4
|
1012
|
0.35875
|
2.17438
|
0.888125
|
74
|
-5
|
1008
|
-2.75188
|
0.818125
|
-3.11063
|
51
|
-11
|
1012
|
0.805
|
2.17438
|
-1.77625
|
33
|
-8
|
1012
|
0.805
|
0.818125
|
0
|
-10
|
-7
|
1008
|
-2.30563
|
2.17438
|
-3.5525
|
-30
|
-10
|
1010
|
-4.10375
|
4.36625
|
-2.2225
|
-49
|
-16
|
1006
|
2.135
|
-0.5425
|
-0.888125
|
-65
|
-37
|
1008
|
-1.4175
|
3.08
|
-2.2225
|
-79
|
-42
|
1008
|
-0.975625
|
1.26875
|
-1.77625
|
-92
|
-40
|
1010
|
-2.30563
|
-0.0875
|
-0.888125
|
-94
|
-40
|
1022
|
-0.975625
|
0.363125
|
-3.11063
|
-97
|
-29
|
1032
|
-1.4175
|
0.818125
|
-1.33438
|
-95
|
-20
|
1038
|
-1.86375
|
-0.0875
|
1.77625
|
-74
|
-20
|
1038
|
0.35875
|
0.818125
|
-3.5525
|
-66
|
-18
|
1045
|
-2.30563
|
2.62938
|
0
|
-68
|
-13
|
1041
|
-1.4175
|
-1.44813
|
-2.2225
|
-61
|
-8
|
1038
|
0.805
|
-0.0875
|
-0.44625
|
-52
|
0
|
1038
|
-0.0875
|
-3.25938
|
-2.2225
|
-45
|
0
|
1034
|
-3.64
|
0.818125
|
1.33
|
-37
|
0
|
1024
|
1.24688
|
-0.0875
|
-0.888125
|
-46
|
-11
|
1014
|
2.58125
|
-2.80438
|
-3.11063
|
-71
|
-17
|
1006
|
-4.97438
|
-2.35375
|
0.441875
|
-78
|
-16
|
1008
|
-4.35313
|
-1.6625
|
0.441875
|
-87
|
-18
|
1004
|
3.02313
|
-2.80438
|
-2.66438
|
-92
|
-28
|
1010
|
-1.4175
|
-1.89875
|
-1.33438
|
-93
|
-26
|
1010
|
-1.4175
|
-1.44813
|
-0.888125
|
-82
|
-35
|
1008
|
-0.975625
|
-1.89875
|
-2.66438
|
-67
|
-53
|
1002
|
-0.975625
|
-3.71
|
0
|
-51
|
-59
|
999
|
-0.529375
|
-2.80438
|
-1.77625
|
-35
|
-67
|
1000
|
-1.4175
|
-2.35375
|
0
|
使用justd0提供的工具生成的图片截图(在此感谢作者)
使用wps生成的图,用于寻找出发条件;
通过分析图形,发现在整个风机转动的时候,振动变化敏感区是在x,y轴,采用这两组数据进行检查整个振动情况。
3、程序源码
*
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "../Inc/lsm6dsox.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
extern structTimer Timer;
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
extern INT1_state, INT2_state;//中断标志位
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
UART_HandleTypeDef hlpuart1;
UART_HandleTypeDef huart2;
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_LPUART1_UART_Init(void);
static void MX_USART2_UART_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int Frequency[2] = { 0,0 };
#define Frequency_num 20;
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
int Count1 = 0, Count2 = 0;
int i, j;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_LPUART1_UART_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
LED2_GPIO_CLK_ENABLE();
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Pin = LED2_PIN;
HAL_GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
/* Insert delay 100 ms */
HAL_Delay(100);
/* INT1 进行计数并记录下中断触发时间,记录满Frequency_num个 计算一下周期*/
//if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11) == 0x01)
if (INT1_state == 0x01)
{
INT1_state = 0;
Count1++;
Timer.INT1_timer[Count1] = Timer.soft_timer;
if (Count1 >= Frequency_num)
{
Count1 = 0;
Frequency[1] = (Frequency_num - 1) / (Timer.INT1_timer[Frequency_num - 1] - Timer.INT1_timer[0]) ;//算出频率
memset(Timer.INT1_timer, 0, sizeof(Timer.INT1_timer));
}
}
/* INT2 进行计数并记录下中断触发时间,记录满Frequency_num个 计算一下周期*/
//if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_12) == 0x01)
if (INT2_state == 0x01)
{
INT2_state = 0;
Count2++;
Timer.INT2_timer[Count2] = Timer.soft_timer;
if (Count2 >= Frequency_num)
{
Count2 = 0;
Frequency[2] = (Frequency_num - 1) / (Timer.INT2_timer[Frequency_num - 1] - Timer.INT2_timer[0]);//算出频率
memset(Timer.INT2_timer, 0, sizeof(Timer.INT2_timer));
}
}
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };
RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };
RCC_PeriphCLKInitTypeDef PeriphClkInit = { 0 };
/** Configure the main internal regulator output voltage
*/
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI;
RCC_OscInitStruct.MSIState = RCC_MSI_ON;
RCC_OscInitStruct.MSICalibrationValue = 0;
RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_5;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1;
PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
}
/**
* @brief LPUART1 Initialization Function
* @param None
* @retval None
*/
static void MX_LPUART1_UART_Init(void)
{
/* USER CODE BEGIN LPUART1_Init 0 */
/* USER CODE END LPUART1_Init 0 */
/* USER CODE BEGIN LPUART1_Init 1 */
/* USER CODE END LPUART1_Init 1 */
hlpuart1.Instance = LPUART1;
hlpuart1.Init.BaudRate = 9600;
hlpuart1.Init.WordLength = UART_WORDLENGTH_7B;
hlpuart1.Init.StopBits = UART_STOPBITS_1;
hlpuart1.Init.Parity = UART_PARITY_NONE;
hlpuart1.Init.Mode = UART_MODE_TX_RX;
hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&hlpuart1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN LPUART1_Init 2 */
/* USER CODE END LPUART1_Init 2 */
}
/**
* @brief USART2 Initialization Function
* @param None
* @retval None
*/
static void MX_USART2_UART_Init(void)
{
/* USER CODE BEGIN USART2_Init 0 */
/* USER CODE END USART2_Init 0 */
/* USER CODE BEGIN USART2_Init 1 */
/* USER CODE END USART2_Init 1 */
huart2.Instance = USART2;
huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&huart2) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN USART2_Init 2 */
/* USER CODE END USART2_Init 2 */
}
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
}
/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
/* USER CODE END Error_Handler_Debug */
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t *file, uint32_t line)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
4、lsm6dsox驱动源码
/*
******************************************************************************
* @file lsm6dsox_vibration_monitoring.h
* @author Sensors Software Solution Team
* @brief This file contains the configuration for vibration_monitoring
* of machine learning core
*
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef LIS6DSOX_H
#define LIS6DSOX_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#ifndef MEMS_UCF_SHARED_TYPES
#define MEMS_UCF_SHARED_TYPES
/** Common data block definition **/
typedef struct {
uint8_t address;
uint8_t data;
} ucf_line_t;
#endif /* MEMS_UCF_SHARED_TYPES */
/** Configuration array generated from Unico Tool **/
const ucf_line_t lsm6dsox_vibration_monitoring[] = {
{.address = 0x10, .data = 0x00,},
{.address = 0x11, .data = 0x00,},
{.address = 0x01, .data = 0x80,},
{.address = 0x05, .data = 0x00,},
{.address = 0x17, .data = 0x40,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xEA,},
{.address = 0x09, .data = 0x46,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xEB,},
{.address = 0x09, .data = 0x03,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xEC,},
{.address = 0x09, .data = 0x50,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xED,},
{.address = 0x09, .data = 0x03,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xEE,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xEF,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xF0,},
{.address = 0x09, .data = 0x0A,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xF2,},
{.address = 0x09, .data = 0x10,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xFA,},
{.address = 0x09, .data = 0x3C,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xFB,},
{.address = 0x09, .data = 0x03,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xFC,},
{.address = 0x09, .data = 0x52,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xFD,},
{.address = 0x09, .data = 0x03,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xFE,},
{.address = 0x09, .data = 0x5E,},
{.address = 0x02, .data = 0x11,},
{.address = 0x08, .data = 0xFF,},
{.address = 0x09, .data = 0x03,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x3C,},
{.address = 0x09, .data = 0x3F,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x3D,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x3E,},
{.address = 0x09, .data = 0x03,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x3F,},
{.address = 0x09, .data = 0x94,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x40,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x41,},
{.address = 0x09, .data = 0xFC,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x42,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x43,},
{.address = 0x09, .data = 0x7C,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x44,},
{.address = 0x09, .data = 0x1F,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x45,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x52,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x53,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x54,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x55,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x56,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x57,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x58,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x59,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x5A,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x5B,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x5C,},
{.address = 0x09, .data = 0x00,},
{.address = 0x01, .data = 0x00,},
{.address = 0x12, .data = 0x00,},
{.address = 0x01, .data = 0x80,},
{.address = 0x17, .data = 0x40,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x5E,},
{.address = 0x09, .data = 0xAE,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x5F,},
{.address = 0x09, .data = 0x27,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x60,},
{.address = 0x09, .data = 0x10,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x61,},
{.address = 0x09, .data = 0xC0,},
{.address = 0x09, .data = 0x00,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x62,},
{.address = 0x09, .data = 0x00,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x63,},
{.address = 0x09, .data = 0x3E,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x64,},
{.address = 0x09, .data = 0x21,},
{.address = 0x02, .data = 0x31,},
{.address = 0x08, .data = 0x65,},
{.address = 0x09, .data = 0xE0,},
{.address = 0x01, .data = 0x80,},
{.address = 0x17, .data = 0x00,},
{.address = 0x04, .data = 0x00,},
{.address = 0x05, .data = 0x10,},
{.address = 0x02, .data = 0x01,},
{.address = 0x01, .data = 0x00,},
{.address = 0x12, .data = 0x44,},
{.address = 0x01, .data = 0x80,},
{.address = 0x60, .data = 0x15,},
{.address = 0x01, .data = 0x00,},
{.address = 0x10, .data = 0x28,},
{.address = 0x11, .data = 0x00,},
{.address = 0x5E, .data = 0x02,},
{.address = 0x01, .data = 0x80,},
{.address = 0x0D, .data = 0x01,},
{.address = 0x01, .data = 0x00,},
};
#ifdef __cplusplus
}
#endif
#endif /* LIS6DSOX_H */
六、视频演示(视频简介+链接)
因为疫情,身在帝都没法去实际现场去测试真实风机塔筒数据,望帝都解除疫情后能够跑一趟现场测试一下效果;只能请跟随我多年的美的落地遥控电风扇(此处是广告,因为我给风扇换过电机),跟我“东征西战”还是很任劳任怨的,很对比起它的是遥控器弄丢了。
视频链接:
七、项目总结(项目文字总结+帖子分享链接汇总)
本项目也是利用我工作之余时间去学习的,这个传感器芯片还是有很多学习的地方,开始那会儿把网站上能下载的知识点都下载了一下,分门别类的放到不同文件夹中;
电脑系统都已经重装了不下10遍,资料来回剪切,还好都没丢;这个传感器配套的资料开始我是觉得很少的,学起来也费劲,毕竟是新出来的,介绍资料也是讲解的很浅,还好友坛友justd0后续陆陆续续提供的数据分析和显示工具,特别是他翻译的牛逼手册,此处要贴图为证:
学习LSM6DSOX利器,还是中文的配方最适合我的胃口了!!!!哇咔咔一下。中间很多官方测试实验的实际操作和配置理解都是基于这个读通的,实验我都是有空就实验看看效果,也没有记录的习惯,也就造成很多实验没有做记录和心得分享,看着论坛里面其他队友都是经常更新,看看他们的成长,想想我才区区两篇,实在太少,实在遗憾啊!
帖子分享链接汇总:
[经验分享] ST可编程传感器+Unico上FSM的使用学习心得
https://bbs.eeworld.com.cn/thread-1118380-1-1.html
[经验分享] LSM6DSOX传感器测试硬件平台分享
https://bbs.eeworld.com.cn/thread-1128909-1-1.html
八、其他
无
|