ADISense1000 Version 2.1 code base

Fork of AdiSense1000_V21 by Sean Wilson

Committer:
RGurav
Date:
Tue Sep 18 16:46:40 2018 +0000
Revision:
33:640b6bebda17
ADISense1000 Version 2.1 code base

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RGurav 33:640b6bebda17 1 /*
RGurav 33:640b6bebda17 2 * File: sample_lut_data.c
RGurav 33:640b6bebda17 3 * The following example illustrates how individual tables can be declared, and
RGurav 33:640b6bebda17 4 * later assembled into a complete LUT data structure using adi_sense_1000_AssembleLutData().
RGurav 33:640b6bebda17 5 * That LUT data structure can then be written to the ADI Sense 1000 device
RGurav 33:640b6bebda17 6 * using adi_sense_1000_SetLutData().
RGurav 33:640b6bebda17 7 */
RGurav 33:640b6bebda17 8
RGurav 33:640b6bebda17 9 #include "adi_sense_1000_lut_data.h"
RGurav 33:640b6bebda17 10 #include "adi_sense_1000_sensor_types.h"
RGurav 33:640b6bebda17 11
RGurav 33:640b6bebda17 12 /*
RGurav 33:640b6bebda17 13 * The following table provide linearisation data for a 4-wire bridge sensor
RGurav 33:640b6bebda17 14 * identified with the ADI_SENSE_1000_ADC_SENSOR_BRIDGE_4WIRE_1_DEF_L2
RGurav 33:640b6bebda17 15 * sensor type. The Look-Up Table provided maps a range of input (X)
RGurav 33:640b6bebda17 16 * values to a corresponding range of output (Y) values. In this example,
RGurav 33:640b6bebda17 17 * the bridge sensor input in millivolts is effectively translated to volts.
RGurav 33:640b6bebda17 18 */
RGurav 33:640b6bebda17 19
RGurav 33:640b6bebda17 20 ADI_SENSE_1000_LUT_DESCRIPTOR loadcell_1 =
RGurav 33:640b6bebda17 21 {
RGurav 33:640b6bebda17 22 .geometry = ADI_SENSE_1000_LUT_GEOMETRY_NES_1D,
RGurav 33:640b6bebda17 23 .equation = ADI_SENSE_1000_LUT_EQUATION_LUT,
RGurav 33:640b6bebda17 24 .dir = ADI_SENSE_1000_LUT_TC_DIRECTION_FORWARD,
RGurav 33:640b6bebda17 25 .sensor = ADI_SENSE_1000_ADC_SENSOR_BRIDGE_4WIRE_3_DEF_L2,
RGurav 33:640b6bebda17 26 .dataType = ADI_SENSE_1000_LUT_DATA_TYPE_FLOAT32,
RGurav 33:640b6bebda17 27 .length = 0, /* Filled by adi_sense_1000_AssembleLutData() */
RGurav 33:640b6bebda17 28 .crc16 = 0 /* Filled by adi_sense_1000_AssembleLutData() */
RGurav 33:640b6bebda17 29 };
RGurav 33:640b6bebda17 30
RGurav 33:640b6bebda17 31 ADI_SENSE_1000_LUT_1D_NES loadcell_1_data =
RGurav 33:640b6bebda17 32 {
RGurav 33:640b6bebda17 33 .nElements = 10,
RGurav 33:640b6bebda17 34 .lut =
RGurav 33:640b6bebda17 35 {
RGurav 33:640b6bebda17 36 -3300.0f, /* x(min) || mV */
RGurav 33:640b6bebda17 37 -0.7556152f,
RGurav 33:640b6bebda17 38 -0.626709f,
RGurav 33:640b6bebda17 39 -0.5058594f,
RGurav 33:640b6bebda17 40 -0.3776855f,
RGurav 33:640b6bebda17 41 -0.1120605f,
RGurav 33:640b6bebda17 42 0.5334473f,
RGurav 33:640b6bebda17 43 1.1896973f,
RGurav 33:640b6bebda17 44 13.340413f,
RGurav 33:640b6bebda17 45 +3300.0f, /* x(max) || mV */
RGurav 33:640b6bebda17 46 -0.001f, /* y(min) || kg */
RGurav 33:640b6bebda17 47 0.0f,
RGurav 33:640b6bebda17 48 0.1f,
RGurav 33:640b6bebda17 49 0.2f,
RGurav 33:640b6bebda17 50 0.3f,
RGurav 33:640b6bebda17 51 0.5f,
RGurav 33:640b6bebda17 52 1.0f,
RGurav 33:640b6bebda17 53 1.5f,
RGurav 33:640b6bebda17 54 10.0f,
RGurav 33:640b6bebda17 55 +100.0f, /* y(max) || kg */
RGurav 33:640b6bebda17 56 },
RGurav 33:640b6bebda17 57 };
RGurav 33:640b6bebda17 58
RGurav 33:640b6bebda17 59 ADI_SENSE_1000_LUT_DESCRIPTOR loadcell_2 =
RGurav 33:640b6bebda17 60 {
RGurav 33:640b6bebda17 61 .geometry = ADI_SENSE_1000_LUT_GEOMETRY_NES_1D,
RGurav 33:640b6bebda17 62 .equation = ADI_SENSE_1000_LUT_EQUATION_LUT,
RGurav 33:640b6bebda17 63 .dir = ADI_SENSE_1000_LUT_TC_DIRECTION_FORWARD,
RGurav 33:640b6bebda17 64 .sensor = ADI_SENSE_1000_ADC_SENSOR_BRIDGE_4WIRE_2_DEF_L2,
RGurav 33:640b6bebda17 65 .dataType = ADI_SENSE_1000_LUT_DATA_TYPE_FLOAT32,
RGurav 33:640b6bebda17 66 .length = 0, /* Filled by adi_sense_1000_AssembleLutData() */
RGurav 33:640b6bebda17 67 .crc16 = 0 /* Filled by adi_sense_1000_AssembleLutData() */
RGurav 33:640b6bebda17 68 };
RGurav 33:640b6bebda17 69
RGurav 33:640b6bebda17 70 ADI_SENSE_1000_LUT_1D_NES loadcell_2_data =
RGurav 33:640b6bebda17 71 {
RGurav 33:640b6bebda17 72 .nElements = 10,
RGurav 33:640b6bebda17 73 .lut =
RGurav 33:640b6bebda17 74 {
RGurav 33:640b6bebda17 75 -3300.0f, /* x(min) || mV */
RGurav 33:640b6bebda17 76 0.2766113f,
RGurav 33:640b6bebda17 77 0.4162598f,
RGurav 33:640b6bebda17 78 0.5400391f,
RGurav 33:640b6bebda17 79 0.6694336f,
RGurav 33:640b6bebda17 80 0.9326172f,
RGurav 33:640b6bebda17 81 1.5837402f,
RGurav 33:640b6bebda17 82 2.2387695f,
RGurav 33:640b6bebda17 83 12.25284823f,
RGurav 33:640b6bebda17 84 +3300.0f, /* x(max) || mV */
RGurav 33:640b6bebda17 85 -0.001f, /* y(min) || kg */
RGurav 33:640b6bebda17 86 0.0f,
RGurav 33:640b6bebda17 87 0.1f,
RGurav 33:640b6bebda17 88 0.2f,
RGurav 33:640b6bebda17 89 0.3f,
RGurav 33:640b6bebda17 90 0.5f,
RGurav 33:640b6bebda17 91 1.0f,
RGurav 33:640b6bebda17 92 1.5f,
RGurav 33:640b6bebda17 93 10.0f,
RGurav 33:640b6bebda17 94 +100.0f, /* y(max) || kg */
RGurav 33:640b6bebda17 95 },
RGurav 33:640b6bebda17 96 };
RGurav 33:640b6bebda17 97
RGurav 33:640b6bebda17 98 ADI_SENSE_1000_LUT_DESCRIPTOR loadcell_3 =
RGurav 33:640b6bebda17 99 {
RGurav 33:640b6bebda17 100 .geometry = ADI_SENSE_1000_LUT_GEOMETRY_NES_1D,
RGurav 33:640b6bebda17 101 .equation = ADI_SENSE_1000_LUT_EQUATION_LUT,
RGurav 33:640b6bebda17 102 .dir = ADI_SENSE_1000_LUT_TC_DIRECTION_FORWARD,
RGurav 33:640b6bebda17 103 .sensor = ADI_SENSE_1000_ADC_SENSOR_BRIDGE_4WIRE_1_DEF_L2,
RGurav 33:640b6bebda17 104 .dataType = ADI_SENSE_1000_LUT_DATA_TYPE_FLOAT32,
RGurav 33:640b6bebda17 105 .length = 0, /* Filled by adi_sense_1000_AssembleLutData() */
RGurav 33:640b6bebda17 106 .crc16 = 0 /* Filled by adi_sense_1000_AssembleLutData() */
RGurav 33:640b6bebda17 107 };
RGurav 33:640b6bebda17 108
RGurav 33:640b6bebda17 109 ADI_SENSE_1000_LUT_1D_NES loadcell_3_data =
RGurav 33:640b6bebda17 110 {
RGurav 33:640b6bebda17 111 .nElements = 10,
RGurav 33:640b6bebda17 112 .lut =
RGurav 33:640b6bebda17 113 {
RGurav 33:640b6bebda17 114 -3300.0f, /* x(min) || mV */
RGurav 33:640b6bebda17 115 0.2521973f,
RGurav 33:640b6bebda17 116 0.3740234f,
RGurav 33:640b6bebda17 117 0.5178223f,
RGurav 33:640b6bebda17 118 0.6574707f,
RGurav 33:640b6bebda17 119 0.9311523f,
RGurav 33:640b6bebda17 120 1.6118164f,
RGurav 33:640b6bebda17 121 2.3029785f,
RGurav 33:640b6bebda17 122 13.96175153f,
RGurav 33:640b6bebda17 123 +3300.0f, /* x(max) || mV */
RGurav 33:640b6bebda17 124 -0.001f, /* y(min) || kg */
RGurav 33:640b6bebda17 125 0.0f,
RGurav 33:640b6bebda17 126 0.1f,
RGurav 33:640b6bebda17 127 0.2f,
RGurav 33:640b6bebda17 128 0.3f,
RGurav 33:640b6bebda17 129 0.5f,
RGurav 33:640b6bebda17 130 1.0f,
RGurav 33:640b6bebda17 131 1.5f,
RGurav 33:640b6bebda17 132 10.0f,
RGurav 33:640b6bebda17 133 +100.0f, /* y(max) || kg */
RGurav 33:640b6bebda17 134 },
RGurav 33:640b6bebda17 135 };
RGurav 33:640b6bebda17 136
RGurav 33:640b6bebda17 137 ADI_SENSE_1000_LUT_DESCRIPTOR loadcell_4 =
RGurav 33:640b6bebda17 138 {
RGurav 33:640b6bebda17 139 .geometry = ADI_SENSE_1000_LUT_GEOMETRY_NES_1D,
RGurav 33:640b6bebda17 140 .equation = ADI_SENSE_1000_LUT_EQUATION_LUT,
RGurav 33:640b6bebda17 141 .dir = ADI_SENSE_1000_LUT_TC_DIRECTION_FORWARD,
RGurav 33:640b6bebda17 142 .sensor = ADI_SENSE_1000_ADC_SENSOR_BRIDGE_4WIRE_4_DEF_L2,
RGurav 33:640b6bebda17 143 .dataType = ADI_SENSE_1000_LUT_DATA_TYPE_FLOAT32,
RGurav 33:640b6bebda17 144 .length = 0, /* Filled by adi_sense_1000_AssembleLutData() */
RGurav 33:640b6bebda17 145 .crc16 = 0 /* Filled by adi_sense_1000_AssembleLutData() */
RGurav 33:640b6bebda17 146 };
RGurav 33:640b6bebda17 147
RGurav 33:640b6bebda17 148 ADI_SENSE_1000_LUT_1D_NES loadcell_4_data =
RGurav 33:640b6bebda17 149 {
RGurav 33:640b6bebda17 150 .nElements = 10,
RGurav 33:640b6bebda17 151 .lut =
RGurav 33:640b6bebda17 152 {
RGurav 33:640b6bebda17 153 -3300.0f, /* x(min) || mV */
RGurav 33:640b6bebda17 154 0.4609375f,
RGurav 33:640b6bebda17 155 0.5895996f,
RGurav 33:640b6bebda17 156 0.7226562f,
RGurav 33:640b6bebda17 157 0.857666f,
RGurav 33:640b6bebda17 158 1.1184082f,
RGurav 33:640b6bebda17 159 1.7749023f,
RGurav 33:640b6bebda17 160 2.432373f,
RGurav 33:640b6bebda17 161 13.60091103f,
RGurav 33:640b6bebda17 162 +3300.0f, /* x(max) || mV */
RGurav 33:640b6bebda17 163 -0.001f, /* y(min) || kg */
RGurav 33:640b6bebda17 164 0.0f,
RGurav 33:640b6bebda17 165 0.1f,
RGurav 33:640b6bebda17 166 0.2f,
RGurav 33:640b6bebda17 167 0.3f,
RGurav 33:640b6bebda17 168 0.5f,
RGurav 33:640b6bebda17 169 1.0f,
RGurav 33:640b6bebda17 170 1.5f,
RGurav 33:640b6bebda17 171 10.0f,
RGurav 33:640b6bebda17 172 +100.0f, /* y(max) || kg */
RGurav 33:640b6bebda17 173 },
RGurav 33:640b6bebda17 174 };
RGurav 33:640b6bebda17 175
RGurav 33:640b6bebda17 176
RGurav 33:640b6bebda17 177 /*
RGurav 33:640b6bebda17 178 * The following variables can be passed as parameters to
RGurav 33:640b6bebda17 179 * adi_sense_1000_AssembleLutData()
RGurav 33:640b6bebda17 180 */
RGurav 33:640b6bebda17 181 ADI_SENSE_1000_LUT_DESCRIPTOR *sample_lut_desc_list[] =
RGurav 33:640b6bebda17 182 {
RGurav 33:640b6bebda17 183 &loadcell_1,
RGurav 33:640b6bebda17 184 &loadcell_2,
RGurav 33:640b6bebda17 185 &loadcell_3,
RGurav 33:640b6bebda17 186 &loadcell_4,
RGurav 33:640b6bebda17 187
RGurav 33:640b6bebda17 188 };
RGurav 33:640b6bebda17 189
RGurav 33:640b6bebda17 190 ADI_SENSE_1000_LUT_TABLE_DATA *sample_lut_data_list[] =
RGurav 33:640b6bebda17 191 {
RGurav 33:640b6bebda17 192
RGurav 33:640b6bebda17 193 (ADI_SENSE_1000_LUT_TABLE_DATA *) &loadcell_1_data,
RGurav 33:640b6bebda17 194 (ADI_SENSE_1000_LUT_TABLE_DATA *) &loadcell_2_data,
RGurav 33:640b6bebda17 195 (ADI_SENSE_1000_LUT_TABLE_DATA *) &loadcell_3_data,
RGurav 33:640b6bebda17 196 (ADI_SENSE_1000_LUT_TABLE_DATA *) &loadcell_4_data,
RGurav 33:640b6bebda17 197
RGurav 33:640b6bebda17 198 };
RGurav 33:640b6bebda17 199
RGurav 33:640b6bebda17 200 unsigned sample_lut_num_tables =
RGurav 33:640b6bebda17 201 (sizeof(sample_lut_desc_list) / sizeof(sample_lut_desc_list[0]));
RGurav 33:640b6bebda17 202