Error con ELM327 [solucionado]

Hola,
Buenos pues estoy intentando usar una librería para OBDII, pero el caso es que no soy capaz de hacerla funcionar.
Me he comprado un adaptador OBDII basado en el ELM327, conectándolo directamente al pc y usando un programa de diagnostico puedo ver los datos de mi coche. Ahora bien, el problema es al usar arduino, no hay manera de enviar un comando at y que el ELM327 lo entienda, no recibo ninguna notificación por su parte.

He usado el hiper terminal y he mandado el comando ATZ y recibo "ELM327 v1.4b", vamos que esta todo bien en el adaptador, pero haciendo un programa sencillo en arduino, mando ese mismo comando, y no recibo nada.

¿Puede ser algun problema en la velocidad de datos del puerto serie? he puesto 38400 bps y 9600 bps y nada, es como si no se sincronizara...

Alguna idea??

¿A que no le mandas el caracter de retorno de carro y avance de linea, que probablemente necesite, desde el arduino?

Ponle la misma velocidad al inicializar el arduino y envia los comandos con serial.println

Normalmente estos cacharrines funcionan a 9600,n,8,1

PD: Una duda, tu arduino tiene puerto serie rs232? y si es asi, has hecho bien el cable serie?

Heke:
¿A que no le mandas el caracter de retorno de carro y avance de linea, que probablemente necesite, desde el arduino?

Ponle la misma velocidad al inicializar el arduino y envia los comandos con serial.println

Normalmente estos cacharrines funcionan a 9600,n,8,1

PD: Una duda, tu arduino tiene puerto serie rs232? y si es asi, has hecho bien el cable serie?

Lo primero es gracias por contestar.
Este es el adaptador para el puerto OBDII http://www.dealextreme.com/p/elm327-com-obd2-auto-diagnostic-scanner-tool-116395?item=16

Con el hiper terminal configurado a 38400,n,8,1 y mandandole el comando ATZ me responde correctamente, a 9600,n,8,1 lo he probado pero no me funcionaba, no estoy seguro si lo hice bien en ese momento. Hasta hay todo bien, porque me responde perfectamente.

He usado el Arduino UNO y el MEGA y en enviado la siguiente cadena:
Serial.println("atz");
y también de la siguiente forma:
Serial.print("atz\n");

El puerto serie de arduino lo he puesto asi:
void setup() {
Serial.begin(38400);
}

Uso las salidas TX0 y RX0 de arduino, el LED TX de arduino parpadea y LED de RX del adaptador parpadea también, pero no responde.

Las salidas del adaptador OBDII las he obtenido de la siguiente forma:

El TX del adaptador lo conecto al RX0 de arduino, el RX del adaptador al TX0 de arduino y el GND del adaptador al GND de arduino.

Por que no usas la shield y librería de @Igor? Hechale un ojo a su blog. Usar un ELM327 es complicarte la vida muchiiiiiiiiiiiiiisimo

http://secuduino.blogspot.com.es/

Si de todas formas quieres usar un ELM327 esto te ayudara.

Casi seguro que estas intentando conectar el conector de 9 pines del ELM a arduino sin usar un conversor a TTL (Max232)

Justo lo que te preguntaba y Flico te ha corroborado.

No empleas un adaptador de niveles, por eso te preguntaba si tenias un arduino con RS232

Los niveles del puerto serie del arduino que no lleva rs232, o sea, los de USB, y normalmente pines 0 y 1 (tx rx) son TTL o sea como mucho los 3.3 voltios y te va a hacer falta adaptarlos a los niveles standares de RS232 que pueden ser desde +-6v a +-15 y ojo he puesto + y -

Una solucion facil es un adaptador TTL-RS232 para el arduino, funcionan bien, y no son caros:

Mira, yo al principio de empezar con arduino, empleaba este clon con puerto serie y controlaba con comandos AT el modem que ves detras, luego emplee el mega con un adaptador como el que te he puesto en la foto.

Muchas gracias por la ayuda, ya creo que se cual era mi error, vuestras explicaciones me han llevado a encontrar mi error. Estaba siguiendo este articulo para usar la librería OBDII http://www.arduinodev.com/arduino-talk-with-car-through-obd-ii/ Yo pensaba que el arduino usaba los niveles de RS232 en su puerto serie y por eso conectaba directamente la salida del adaptador al arduino, y como bien decis esa salida era con niveles RS232 incompatibles para el arduino que uso. Se me paso por alto que el articulo que os he puesto dice:

La mayoría de ellos adaptadores consiste en un micro-controlador PIC18F2480 y un MAX232 o FT232. Así que lo que necesitamos es la salida TTL del microcontrolador. He utilizado dos cables para llevar a cabo el pin 17 (Tx) y el pin 18 (Rx) del PIC

Como bien dice, tengo que tomar el RX y TX del PIC (ELM327)!!!! que es un nivel TTL y no el RX y TX del conector DB9 que pasa por el mencionado Max232 que convierte la señal TTL del PIC a niveles RS232.

Otra solución a este problema seria ponerle al arduino adaptador TTL-RS232 que ha comentado Heke para usar la salida del conector DB9 del adaptador OBD, (que quizás sea lo mas recomendable para distancias entre RX y TX mas largas), pero yo voy a utilizar la salida TTL del PIC para ahorrarme el MAX232.

Hago la modificación y os comento el resultado.

Hola chicos,
Pues he hecho las modificaciones y realizado las pruebas. Ahora si que funciona!!!! Espero que este tema pueda ayudar a otros con el mismo problema. Gracias por la ayuda! :wink:

Me alegro

Ahora seria interesante que cambiaras el titulo del post añadiendo el texto [solucionado] para que cualquiera que busque localize mas facil

Un saludo.

Hola, me podrias decir como es que solucionaste este problema que tenias, es que al intentar abrir el link me dice que ya no lo encuentra, de ante mano muchas gracias

Hola, puedes poner un ejemplo de lo que capturas con el arduino? es decir por el puerto de serie.
gracias