Page 1 of 1

Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Fri Oct 02, 2015 6:33 pm
by Markfa
Hey guys,

The last few days I have been working with the Arduino OBD I2C adapter, an arduino mega adk and the basic rpm code. It seemed to be pretty easy, but somehow it didn't work despite all the useful topics on this forum. After two days we tried to hook up the system with a 2008 peugeot. It worked straight out of the box.

Since it is a 2009 grande punto, it should have a universal OBDII connector which support the 29B 500K can protocol. I tried lot's of things including 'manually configuring the baudrate', ' manually selecting the right can protocol" and many other quick fixes mentioned in different topics. However it didn't help, the code gets stuck at the obd.init part. I also bought a UART cable. This one does work on the Peugeot, but again it doesn't work on the Punto.

I added the I2C code which worked properly on the Peugeot, but didn't work on the Punto.

Thanks in advance for the replies.

Kind regards,
Mark

Code: Select all

#include <Arduino.h>
#include <Wire.h>
#include <OBD.h>

COBDI2C obd;

void setup()
{
  // start the serial connection (show messages on the tools/serial monitor,
  // select correct baud rate (in my case it was 9600))
  Serial.begin(9600);
  // we'll use the debug LED as output
  pinMode(13, OUTPUT);
  // start communication with OBD-II adapter
  obd.begin();
  Serial.println("About to start");
  // initiate OBD-II connection until success
  while (!obd.init()){
  Serial.println("Connecting with obd...");
  // makes the led blink during connecting
  digitalWrite(13,LOW);
  delay(200);
  digitalWrite(13,HIGH);
  delay(200);
  }
  Serial.println("Connection established");
}

void loop()
{
  Serial.println("Acquiring RPM data");
  // turn of the led after entering the loop
  digitalWrite(13,LOW);
  int value;
  // save engine RPM in variable 'value', return true on success
  if (obd.read(PID_RPM, value)) {
  // light on LED on Arduino board when the RPM exceeds 1500   
  digitalWrite(13, value>1500 ? HIGH:LOW);
  Serial.println("value is above 1500 rpm");
  }
}

Re: Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Mon Oct 05, 2015 12:11 pm
by stanley
I have no idea about this yet. Are you very sure that your Punto supports the 29B 500K can protocol? Have you tried manually set protocol by obd.init(protocol)?

Re: Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Mon Oct 05, 2015 6:46 pm
by Markfa
Thanks for the fast reply.

Yes, I have tried to manually set the protocol. I know for sure it is 29B. To be sure it wasn't 250K instead of 500K, I also changed the protocol to 29B 250K and tested it. It didn't work either.

We did however try the system on a 2003 Alfa GTV. We used the code with the automatic protocol selection, and it worked out of the box. We are actually not sure if it isn't the OBD of the car itself which is broken.

Kind regards,
Mark

Re: Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Wed Oct 07, 2015 5:30 pm
by stanley
This might be an individual case of compatibility issue. Meanwhile I have no idea and I will discuss with my partner for possible cause.

Re: Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Sat Oct 17, 2015 2:04 am
by Markfa
Oke, now we uploaded the Megalogger on the arduino and tested it on the Punto. It didn't work, so we tried some other cars.

MEGALOGGER:
Seat Ibiza Diesel - did not work
Ford fiesta gpl - did connect, didn't show any data
Lancia Ypsilon patrol - did connect and showed data
Fiat Bravo diesel - did not connect
Renault clio diesel - did connect and showed data

RPM code:
Peugeot ... patrol - did connect and showed data
Alfa Romeo GTV patrol - did connect and showed data

All cars are 2003 or newer. For now it seems to work on patrol cars from Italy and all cars from France. I will check if there is a specific protocol which doesn't work.

There were some issues on some cars, like tachometers which didn't work while connected with the car, and audiosystems booting up instantly, just like air-conditioning systems.

Does this ring a bell?

Kind regards,
Mark

Re: Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Sun Oct 18, 2015 12:18 pm
by stanley
We just found the initializing procedure may have too short timeout value (2 seconds) for some cars. Could you try delaying for some time after ATZ command is issued.

Re: Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Mon Oct 19, 2015 8:43 pm
by Markfa
Hey Stanley,

Thanks for the reply. Do you want me to delay in the megalogger script or in the OBD.cpp script. I tried both, but so far no succes.

I added a delay of 2 seconds after "const char *initcmd[] = {"ATZ\r","ATE0\r","ATL1\r"};"

I am new to c coding, so I might have misplaced the delay, did I?

Kind regards,
Mark

Re: Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Tue Oct 20, 2015 1:00 am
by Markfa
Hereby a shot of the screen while the obd is connected to the Punto, while the car engine isn't running. If the car is running it will show "NO DATA" instead of "Timeout" and " UNABLE TO CONNECT".

Image

Re: Arduino OBD I2C on Fiat Grande Punto diesel 2009

Posted: Tue Nov 10, 2015 3:15 am
by Markfa
Anyone who has a clue of what's causing my issues with the OBD?