Estoy tratando de aplicar ingeniería inversa a los datos enviados desde un antiguo registrador de datos de bus CAN. Envía una ID única que se puede seleccionar desde un interruptor DIP.
El único bit de datos con el que estoy luchando es el RPM
Planeo introducir estos datos en un STM32F Discovery, en el pasado, la mayoría de este tipo de datos es lineal y es fácil trabajar con ellos, por ejemplo, RPM = CANbus data x 0.32, pero si observo mis datos a continuación, no es lineal y No puedo encontrar una manera simple de interpretarlo:
RPM CAN Bus Decimal Data
1000 = 0312
1250 = 0389
1500 = 0464
1750 = 0541
2000 = 0613
2250 = 0688
2500 = 0762
2750 = 0828
3000 = 0903
3250 = 0979
3500 = 1058
3750 = 1140
4000 = 1226
4250 = 1313
4500 = 1401
4750 = 1485
5000 = 1568
5250 = 1653
5500 = 1736
5750 = 1821
6000 = 1900
6250 = 1984
6500 = 2063
6750 = 2144
7000 = 2224
7250 = 2301
7500 = 2377
Así que necesito crear una ecuación para poder ponerla en mi código para calcular las RPM.
RPM = Data x 0.3 + 12 está muy cerca pero no lo suficientemente cerca
He trazado lo anterior en un gráfico y la línea de mejor ajuste es: y = 0.00000357058x ^ 2 + 0.29145x + 11.9358 pero esto parece muy complicado de intentar replicar en código y tampoco puedo ver por qué el diseñador habría complicado los datos.
Entonces, mi pregunta es ¿cómo puedo tomar los datos anteriores y crear una ecuación o código para que mi dispositivo pueda interpretar los RPM de los datos del bus CAN?