Autor Tema: Mis experiencias con el BUS CAN  (Leído 892265 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Kid_Bengala

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 490
Re: Mis experiencias con el BUS CAN
« Respuesta #630 en: 09 de Octubre de 2009, 15:50:50 »
Ya terminé mi proyecto, al final he conseguido comunicarme con el bus CAN del coche. El PIC lee los datos de OBD y muestra los PIDS seleccionados por la pantalla LCD.

Tiene 2 modos de funcionamiento, uno conectado al ordenador por puerto serie, y se le envían comandos para transmitir al vehículo y configurar las opciones. El otro modo, es automático cuando no se le envia nada por el puerto serie, comienza a hacer peticiones de los datos del OBD, según el protocolo ISO 15765 (OBD sobre CAN).

En este video se muestra como funciona la placa del montaje.



:shocked: plas plas plas !!!

Muy interesante,¿no sabras donde conseguir informacion para hacer algo como esto? algun ejemplo de codigo para pic asi como de otros protocolos,es para saber si puedo leer el kilometraje total y esas cosas.gracias

saludos de antonio

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #631 en: 10 de Octubre de 2009, 09:36:24 »
Ya terminé mi proyecto, al final he conseguido comunicarme con el bus CAN del coche. El PIC lee los datos de OBD y muestra los PIDS seleccionados por la pantalla LCD.

Tiene 2 modos de funcionamiento, uno conectado al ordenador por puerto serie, y se le envían comandos para transmitir al vehículo y configurar las opciones. El otro modo, es automático cuando no se le envia nada por el puerto serie, comienza a hacer peticiones de los datos del OBD, según el protocolo ISO 15765 (OBD sobre CAN).

En este video se muestra como funciona la placa del montaje.


Felicitaciones TELEKO !!
Lo has logrado!!

Si quieres despues comentarnos mas sobre tu proyecto, puedes hacerlo aqui, ya que hay seguidores de tu proyecto.
Si abres otro hilo, por favor pon aqui un link asi van directo al hilo tuyo... :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado teleko

  • PIC10
  • *
  • Mensajes: 41
Re: Mis experiencias con el BUS CAN
« Respuesta #632 en: 11 de Octubre de 2009, 08:11:26 »

Felicitaciones TELEKO !!
Lo has logrado!!

Si quieres despues comentarnos mas sobre tu proyecto, puedes hacerlo aqui, ya que hay seguidores de tu proyecto.
Si abres otro hilo, por favor pon aqui un link asi van directo al hilo tuyo... :mrgreen: :mrgreen:


Gracias a vosotros por la ayuda, este foro me ha ayudado mucho.

He basado parte de mi código de librerías que hay publicadas. Como el flex_lcd, o las de can de ccs. La mayoría de lo que es la parte de OBD es mia desde cero, siguiendo la normativa SAE OBDII J1979 y la ISO 15765. Y algunas cosas de la representación de los PIDS por pantalla está basado en este código:

Código: [Seleccionar]
http://code.google.com/p/avrobdii/source/browse/trunk/code/obdii.c
El funcionamiento es sencillo, conectado al puerto serie se puede configurar la placa, desde los parámetros del CAN (velocidad, identificadores,etc...) hasta la configuracion de los PIDS que se desean consultar. También permite enviar tramas OBD directamente al bus, introduciendo por teclado el contenido del campo de datos. Una vez configurado, se almacena todo en la EEPROM, y ya siempre almacena esa configuración. Pudiendo asi desconectarla de alimentación cada vez que se desconecta el cable OBD.

Una vez configurada y conectada al vehículo, lo que realiza es un bucle de una petición contínua de los pids guardados, usando el servicio $01. Hace la petición y muestra por pantalla los datos ya formateados para que se puedan leer bien.

Lo siento, pero no puedo pasar el código completo, ya que el proyecto es de la universidad. Aunque sí puedo resolver las dudas que tengais.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Mis experiencias con el BUS CAN
« Respuesta #633 en: 12 de Octubre de 2009, 10:31:28 »
Hola muy interezante tu proyecto yo tengo todo lo necesario en casa para empezar con un proyecto similar con mi ford fiesta 2008, de momento seguire tus recomendacion y buscare las normativas que mensionas SAE OBDII J1979 y la ISO 15765.

Lo otro que pienso hacer y tener claro es definir bien la interface a usar en este modelo de carro.

Saludos y estamos en contacto.
atten.
Alexander Santana.
Venezuela-Barcelona
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Mis experiencias con el BUS CAN
« Respuesta #634 en: 12 de Octubre de 2009, 18:41:26 »
Buenas tardes dandole un poco de color a mi experiencia con el can bus aplicado a mi ford fiesta ya tengo bien definido el pinout de conector obd2 de 16pines que tienes los carros para su comunicacion tambien llamado conector j1962.
OBD 2 CAN pinout
Pin    Signal                   Description
4      CGND                   GND
5      SGND                   GND
6      CAN High              Canal H
14    CAN Low               Canal L
16    +12v                     Battery power

Ahora voy a hacer el esquematico de la interface usando mi placa easypic5 y los modulos can bus.

Saludos y si alguien tiene informacion al respecto bienvenida sea.
Atten.
Alexander Santana.
Venezuela-Barcelona

EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Mis experiencias con el BUS CAN
« Respuesta #635 en: 12 de Octubre de 2009, 22:34:15 »
por fin termine de leer todos los post de este tema y les dijo que ganas le han puesto mil felicitaciones y espero llegar a su la mitad de su nivel porque seria mucho pedir estar a nivelo de ustedes.

Saludo.
Atten.
Alexander Santana
Venezuela-Barcelona
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado teleko

  • PIC10
  • *
  • Mensajes: 41
Re: Mis experiencias con el BUS CAN
« Respuesta #636 en: 13 de Octubre de 2009, 07:56:25 »
Aquí pueden descargar la memoria de mi proyecto:

memoria pdf


Ahí se explica lo necesario sobre la normativa OBD, aunque no viene nada del código del PIC.

PD: Espero que les sea de ayuda, me ha llevado mucho tiempo hacer este proyecto y su memoria.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re: Mis experiencias con el BUS CAN
« Respuesta #637 en: 13 de Octubre de 2009, 08:12:06 »
La verdad es que es una chulada verlo funcionando, pero la memoria es IMPRESIONANTE.

Yo estuve buscando en una ocasión información sobre OBD y no encontré nada que mereciera la pena. Ahora, con tu enciclopedia a mano, va a ser mucho más facil.

Gracias

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #638 en: 13 de Octubre de 2009, 08:18:00 »
Que suerte Manolo que pudieras ver ese documento, en mi caso es la tercer vez que intento abrirlo y me da error... :oops: :oops: :oops:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado teleko

  • PIC10
  • *
  • Mensajes: 41
Re: Mis experiencias con el BUS CAN
« Respuesta #639 en: 13 de Octubre de 2009, 08:33:20 »
Prueba a darle con el boton derecho del ratón, y pincha en guardar como.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #640 en: 13 de Octubre de 2009, 08:38:04 »
Ahi fue bien, gracias Teleko!! :-/ :-/
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Mis experiencias con el BUS CAN
« Respuesta #641 en: 13 de Octubre de 2009, 15:31:12 »
hola buenas tardes, yo pude bajar el documento sin problema y en la noche me lo leo con calma y asi me oriento mas para mi proyecto y nuevamente gracias y felicitaciones al colega teleko por su informacion y al amigo MGLSOFT  por hacer  posible este post.

Saludos y estamos en contacto.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado mc_leon

  • PIC10
  • *
  • Mensajes: 1
No logro comunicar dos pics mediante Bus CAN
« Respuesta #642 en: 13 de Octubre de 2009, 23:54:19 »
Saludos...
Soy nuevo en el foro, por lo que pido paciencia en lo que domino el uso de este foro. Como comenté en el título del post, tengo un extraño problema con el Bus CAN, estoy tratando de realizar una comunicación mediante pics (en este momento solo dos, un nodo y otro como concentrador), por favor, alguien que me ayude, estoy programando en CCS y empleo el PIC 18F2680 y el 18F2480.

Los archivos de cabecera de mi programa son los siguientes:

#include <18F2480.h>
#include <stdlib.h>
#include <math.h>
#fuses HS,NOWDT,NOPROTECT, NOBROWNOUT,NOLVP,NOCPD
#use delay(clock=20M)
#use rs232(baud=19200, xmit=PIN_C6,rcv=PIN_C7)
#define MAX517_SDA PIN_C0 //pin11 pic al pin4 del max517
#define MAX517_CLK PIN_C1 //pin12 pic al pin3 del max517
#use i2c(master, sda=MAX517_SDA, scl=MAX517_CLK, FAST)

#define CAN_DO_DEBUG TRUE
#include <can-18xxx8.c>

// ------------------------- Variables CAN -----------------------------------
int32 rx_id = 5;
int16 buffer[8] = {0, 0, 0, 0, 0, 0, 0, 0};
int rx_len = sizeof(buffer);
struct rx_stat rxstat;
//------------------------------------------------------------------------------


void main (void)
{

while(1)
  {
   setup_adc_ports(ALL_ANALOG|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
   can_init();
   enable_interrupts(GLOBAL);

   set_adc_channel(1);
   delay_us(20);
   yk = read_adc();
   buffer[0] = yk;
   can_putd(5, &buffer[0], rx_len, 1, 1, 0);   //
  }
}

para mi concetrador, un PIC18F4680 el codigo es:

#include <18F4680.h>
#include <stdlib.h>
#include <math.h>
#fuses HS,NOWDT,NOPROTECT, NOBROWNOUT,NOLVP,NOCPD
#use delay(clock=20M)
#use rs232(baud=19200, xmit=PIN_C6,rcv=PIN_C7)
#define MAX517_SDA PIN_C0 //pin11 pic al pin4 del max517
#define MAX517_CLK PIN_C1 //pin12 pic al pin3 del max517
#use i2c(master, sda=MAX517_SDA, scl=MAX517_CLK, FAST)

int32 rx_id;
   int16 buffer[8];
   int16 a = 0;
   int rx_len = sizeof(buffer);
   int i;
   struct rx_stat rxstat;

void main (void)
{
printf("CONCENTRADOR 4680_ID5\n\r");

     
   
   enable_interrupts(GLOBAL);
   can_init();
   printf("Running...  receptor\n\r");



   while(TRUE)
   {
   
         can_getd(rx_id, &buffer[0], rx_len, rxstat);
                         
          printf("buffer = %Ld\n\r",buffer[0]);

    }

 }

Por el momento no quiero checar si el identificador corresponde al destinatario, sólo quiero ver si recibe algo

el hardware es el pic y el mcp2551,

          PIC              MCP
CAN_TX (23) -> TX_MCP(1)
CAN_RX (24) -> RX_MCP(4)
                         PIN2_VSS
                         PIN3_VDD
                         PIN5_NO_CONECTADO
                         CAN_H del concentrador con el respectivo CAN_H del nodo
                         CAN_L del concentrador con el respectivo CAN_L del nodo
                          PIN_8_VSS

¿alguien puede descifrar mi error?, !me urge!                         
       

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #643 en: 14 de Octubre de 2009, 08:57:05 »
Revisado, solo dos observaciones:

Los Buffer de CAN son de maximo 8 bytes, en ambos programas declaras a los buffer como Int16, pasalos a Int...

Para que habilitas las interrupciones si no las utilizas?? Comenta ambas lineas Enable Interrupt (global)

Prueba y nos comentas...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

penguin

  • Visitante
Re: Mis experiencias con el BUS CAN
« Respuesta #644 en: 16 de Noviembre de 2009, 17:31:05 »
Hola! NO se donde poner esta pregunta, en que hilo, es CAN, pero el nivel de pregunta no es para este hilo, si algun moderador lo muebe ok :). beuno ahi voy.
Tenemos esta definicion de variables :
Código: C
  1. void main() {
  2.    struct rx_stat rxstat;
  3.    int32 rx_id;
  4.    int buffer[8];
  5.    int rx_len;
( he quitado algunas que no me interesan). Esto es del archivo ex_can_ccsa.c. Primero, no entiendo muy bien que hace ese struct, si no hay nada metido, para mi un struct seria tal como :
Código: C
  1. struct estructuraMia{
  2. int primera;
  3. byte segunda
  4. }

ese struct lo usa aqui
Código: C
  1. if ( can_kbhit() )
  2.       {
  3.          printf("\r\n");
  4.          if(can_getd(rx_id, &buffer[0], rx_len, rxstat)) {

Donde, segun mi entender, donde aparece rxstat es infromacion tal como decir si es extended can o starndard can ( que es para lo que yo quiero). Si no define nada, como sabe el compilador con


 

anything