ELMduino: Wrong RPM
Hi, I’m just trying to program a data logger for my motorbike. It will combine GPS, Angle, rpm and kph. SD for logging and a Display for setup and control.
Using ELM327 for rpm and kph. Connection is established. When I try to read rpm I always get the fix value 884. In this LOG the ignition was on but the engine was not running. Got the same when the engine is at different rpm. Any idea?
#include "BluetoothSerial.h"
#include "ELMduino.h"
BluetoothSerial SerialBT;
#define ELM_PORT SerialBT
#define DEBUG_PORT Serial
ELM327 myELM327;
uint32_t rpm = 0;
// To change for a different ELM327
uint8_t MyBTAddress[6] = {0x66, 0x1E, 0x11,
0xEE, 0xAD, 0xAC}; // ELM MAC Adress
void setup() {
#if LED_BUILTIN
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
#endif
DEBUG_PORT.begin(115200);
ELM_PORT.begin("ArduHUD", true);
ELM_PORT.setPin("1234");
if (!ELM_PORT.connect(MyBTAddress)) {
DEBUG_PORT.println("Couldn't connect to BT - Phase 1");
while (1)
;
}
if (!myELM327.begin(ELM_PORT, true, 2000)) {
Serial.println("Couldn't connect to OBD - Phase 2");
while (1)
;
}
Serial.println("Connected to ELM327");
}
void loop() {
float tempRPM = myELM327.rpm();
if (myELM327.nb_rx_state == ELM_SUCCESS) {
rpm = (uint32_t)tempRPM;
Serial.println(rpm);
} else if (myELM327.nb_rx_state != ELM_GETTING_MSG)
myELM327.printError();
}
LOG: Clearing input serial buffer Sending the following command/query: AT D Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Clearing input serial buffer Sending the following command/query: AT Z Received char: A Received char: T Received char: Z Received char: \r Received char: \r Received char: \r Received char: E Received char: L Received char: M Received char: 3 Received char: 2 Received char: 7 Received char: _ Received char: v Received char: 1 Received char: . Received char: 5 Received char: \r Received char: \r Received char: > Delimiter found. All chars received: ATZELM327v1.5 Clearing input serial buffer Sending the following command/query: AT E0 Received char: A Received char: T Received char: E Received char: 0 Received char: \r Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: ATE0OK Clearing input serial buffer Sending the following command/query: AT S0 Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Clearing input serial buffer Sending the following command/query: AT AL Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Clearing input serial buffer Sending the following command/query: AT ST 00 Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Clearing input serial buffer Sending the following command/query: AT TP A0 Received char: O Received char: K Received char: \r Received char: \r Received char: > Delimiter found. All chars received: OK Connected to ELM327 Service: 1 PID: 12 Normal length query detected Query string: 010C1 Clearing input serial buffer Sending the following command/query: 010C1 Received char: S Received char: E Received char: A Received char: R Received char: C Received char: H Received char: I Received char: N Received char: G Received char: . Received char: . Received char: . Received char: \r Timeout detected with overflow of 0ms Received: SEARCHING… ERROR: ELM_TIMEOUT Service: 1 PID: 12 Normal length query detected Query string: 010C1 Clearing input serial buffer Sending the following command/query: 010C1 Received char: 4 Received char: 1 Received char: 0 Received char: C Received char: 0 Received char: 0 Received char: 0 Received char: 0 Received char: \r Received char: \r Received char: > Delimiter found. All chars received: 410C0000 Expected response header: 410C Single response detected 64-bit response: 0 responseByte_0: 0 responseByte_1: 0 responseByte_2: 0 responseByte_3: 0 responseByte_4: 0 responseByte_5: 0 responseByte_6: 0 responseByte_7: 0 884 Service: 1 PID: 12 Normal length query detected Query string: 010C1 Clearing input serial buffer Sending the following command/query: 010C1 Received char: 4 Received char: 1 Received char: 0 Received char: C Received char: 0 Received char: 0 Received char: 0 Received char: 0 Received char: \r Received char: \r Received char: > Delimiter found. All chars received: 410C0000 Expected response header: 410C Single response detected 64-bit response: 0 responseByte_0: 0 responseByte_1: 0 responseByte_2: 0 responseByte_3: 0 responseByte_4: 0 responseByte_5: 0 responseByte_6: 0 responseByte_7: 0 884
About this issue
- Original URL
- State: closed
- Created 8 months ago
- Comments: 16 (7 by maintainers)
Commits related to this issue
- Fix #185 — committed to DerKleinePunk/ELMduino by PowerBroker2 7 months ago
- Fix #185 — committed to DerKleinePunk/ELMduino by PowerBroker2 7 months ago
Just changed it… and it works.
Tested it with rpm and kph. Both fine.
Thanks for your support.