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

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

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #570 en: 21 de Febrero de 2009, 16:14:12 »
Arameo.
Te pongo una imagen del resultado del calculo de seteos del BUS CAN a 250 Kbps y 20 MHz de cristal.
Yo normalmente copio los valores directamente a los tres registros BRGCON1, 2 y 3.
Para eso comento todos los seteos de los bits individuales.

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 #571 en: 22 de Febrero de 2009, 09:33:21 »
Aquí está disponible el otro programa que yo decia para configurar los registros del Can:

artic can bit time calculator

Para mi es más intuitivo que el otro programa.

Desconectado teleko

  • PIC10
  • *
  • Mensajes: 41
Re: Mis experiencias con el BUS CAN
« Respuesta #572 en: 23 de Febrero de 2009, 08:15:54 »

...

2) Mi segundo problema es el "vacie" antes puesto entre comillas... :-p
Tengo puesto unos LED's tanto en TX y RX del Serie del PIC y en TX y RX del CAN del PIC
EL led de TX del PIC NUNCA prende (ya lo teste y funciona bien)

Asi que imagino que tengo cierto problema con la funcion can_putd() , estoy investigando sobre ello.

La buena noticia es que con la configuracion de baud_rate antes mencionada recibo la siguiente trama una sola vez al principio:

Código: [Seleccionar]

CAN_GETD(): BUFF=0 ID=000007E8 LEN=8 OVF=0 FILT=0 RTR=0 EXT=0 INV=1
    DATA = 03 7F 01 11 AA AA AA AA


Es la primera vez que recibo una trama con ID 7E8, asi que eso me pone contento y pilas para seguir. Tambien tengo que descifrar el significado de la misma.

Bueno, cualquier otra novedad se las comentare a la brevedad.
Agradezco nuevamente por la ayuda brindada.

Una pregunta, ¿estaba el motor funcionando en esta petición?

Desconectado arameo

  • PIC10
  • *
  • Mensajes: 17
Re: Mis experiencias con el BUS CAN
« Respuesta #573 en: 23 de Febrero de 2009, 18:26:26 »
teleko, ahi realice varias pruebas y lamentablemente en todos los casos recibo la misma respuesta: 03 7F xx 11 AA AA AA AA

variando XX en:

01, 03, 07, 17

Probe varios tipos de trama, con el auto en contacto, en marcha, etc.
Espero el error este en algun otro lugar. Algo se me esta escapando....

Saludos

Desconectado arameo

  • PIC10
  • *
  • Mensajes: 17
Re: Mis experiencias con el BUS CAN
« Respuesta #574 en: 24 de Febrero de 2009, 22:05:19 »
Mas pruebas.... y lamentablemente la misma respuesta.

Probe: 07 01 00 20 40 60 80 A0
al Id: 7DF

y no obtuve respuesta.

realice envio a distintos  ID's 7E2 , 7E6 , 7E7 preguntando por pids soportados y tampoco.

Veo que la trama que me responde 7E8 posee un 1 en INV.
Mas en detalle eso que quiere decir ?

Algun consejo ?

Desconectado zagoaristides

  • PIC12
  • **
  • Mensajes: 99
    • deportes de contacto y fitness
Re: Mis experiencias con el BUS CAN
« Respuesta #575 en: 01 de Marzo de 2009, 22:05:39 »
Hola gente, bueno, terrible post!!! Recién luego de 3 días (entrecortados) leyendo termino con esto. Bueno les cuento que mi proyecto està parado hace tiempo por la selección del método de comunicación.

Básicamente son sensores dispuestos en un brazo robótico para ver su posición espacial (3D). Primero pensé en SMACK pero se me fue complicando el tema velocidad y CRC y demás, luego el I2C tampoco servía por no estar orientado a grandes distancias, luego RS485 pero no me gustaba por el tema de los cables y de nuevo el CRC que nunca entendí bien. Ahora luego de leer todo el hilo creo que este protocolo puede servirme a mis propósitos. Siempre hice proyectos interesantes pero la parte comunicación se la dejaba a otra persona y ahora decidí aprender y me cuesta bastante.

Me gustaría si alguno de los que entienden más que yo (el 90%) de los del hilo puedan resumirme en una respuesta o cita que necesito para practicar seriamente con CanBus.

Puede ser la placa de entrenamiento de CCS? Puede ser otra placa o placas? Las que hicieron algunos de los de aquí, cuál/es? Podrían si es así poner los esquemáticos y los negativos para hacer las placas.

Luego para debbugear, como proceden? Leí sobre los sniffers pero al parecer ninguno está completamente funcional, al menos los seriales.

Sería una especie de resumen para alguien que desea empezar a practicar. No importan que chips hagan falta, los compraré o de ser una placa X también estoy dispuesto a hacerlo.

Muchísimas gracias y espero que sus proyectos sigan adelante.


Aristides - Campana, Bs. As.
Nadie nació sabiendo...Que genio ese Nadie!!!

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #576 en: 01 de Marzo de 2009, 22:14:36 »
Hola gente, bueno, terrible post!!! Recién luego de 3 días (entrecortados) leyendo termino con esto. Bueno les cuento que mi proyecto està parado hace tiempo por la selección del método de comunicación.

Básicamente son sensores dispuestos en un brazo robótico para ver su posición espacial (3D). Primero pensé en SMACK pero se me fue complicando el tema velocidad y CRC y demás, luego el I2C tampoco servía por no estar orientado a grandes distancias, luego RS485 pero no me gustaba por el tema de los cables y de nuevo el CRC que nunca entendí bien. Ahora luego de leer todo el hilo creo que este protocolo puede servirme a mis propósitos. Siempre hice proyectos interesantes pero la parte comunicación se la dejaba a otra persona y ahora decidí aprender y me cuesta bastante.

Me gustaría si alguno de los que entienden más que yo (el 90%) de los del hilo puedan resumirme en una respuesta o cita que necesito para practicar seriamente con CanBus.

Puede ser la placa de entrenamiento de CCS? Puede ser otra placa o placas? Las que hicieron algunos de los de aquí, cuál/es? Podrían si es así poner los esquemáticos y los negativos para hacer las placas.

Luego para debbugear, como proceden? Leí sobre los sniffers pero al parecer ninguno está completamente funcional, al menos los seriales.

Sería una especie de resumen para alguien que desea empezar a practicar. No importan que chips hagan falta, los compraré o de ser una placa X también estoy dispuesto a hacerlo.

Muchísimas gracias y espero que sus proyectos sigan adelante.


Aristides - Campana, Bs. As.

Creo que lo mejor que podrias hacer es armarte o comprarte una placa como la de CCS o de MikroC.
De la de CCS puedo pasarte los esquematicos.

Mi placa la hice siguiendo en parte la de CCS, mezclada con algunas de Microchip.

De microchip esta interesante la placa que puse unos post antes, tiene buen precio y conecta por USB, tienes una placa para hacer debug y otra para aplicaciones.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado zagoaristides

  • PIC12
  • **
  • Mensajes: 99
    • deportes de contacto y fitness
Re: Mis experiencias con el BUS CAN
« Respuesta #577 en: 03 de Marzo de 2009, 03:42:51 »
Hola gente, bueno, terrible post!!! Recién luego de 3 días (entrecortados) leyendo termino con esto. Bueno les cuento que mi proyecto està parado hace tiempo por la selección del método de comunicación.

Básicamente son sensores dispuestos en un brazo robótico para ver su posición espacial (3D). Primero pensé en SMACK pero se me fue complicando el tema velocidad y CRC y demás, luego el I2C tampoco servía por no estar orientado a grandes distancias, luego RS485 pero no me gustaba por el tema de los cables y de nuevo el CRC que nunca entendí bien. Ahora luego de leer todo el hilo creo que este protocolo puede servirme a mis propósitos. Siempre hice proyectos interesantes pero la parte comunicación se la dejaba a otra persona y ahora decidí aprender y me cuesta bastante.

Me gustaría si alguno de los que entienden más que yo (el 90%) de los del hilo puedan resumirme en una respuesta o cita que necesito para practicar seriamente con CanBus.

Puede ser la placa de entrenamiento de CCS? Puede ser otra placa o placas? Las que hicieron algunos de los de aquí, cuál/es? Podrían si es así poner los esquemáticos y los negativos para hacer las placas.

Luego para debbugear, como proceden? Leí sobre los sniffers pero al parecer ninguno está completamente funcional, al menos los seriales.

Sería una especie de resumen para alguien que desea empezar a practicar. No importan que chips hagan falta, los compraré o de ser una placa X también estoy dispuesto a hacerlo.

Muchísimas gracias y espero que sus proyectos sigan adelante.


Aristides - Campana, Bs. As.

Creo que lo mejor que podrias hacer es armarte o comprarte una placa como la de CCS o de MikroC.
De la de CCS puedo pasarte los esquematicos.

Mi placa la hice siguiendo en parte la de CCS, mezclada con algunas de Microchip.

De microchip esta interesante la placa que puse unos post antes, tiene buen precio y conecta por USB, tienes una placa para hacer debug y otra para aplicaciones.

Me pasarías los esquemáticos de las que creas me sirvan? zagoaristides algarroba hot...
Nadie nació sabiendo...Que genio ese Nadie!!!

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #578 en: 03 de Marzo de 2009, 09:48:30 »
En este link puedes bajarte el manual de la placa de CCS y su libro de ejemplos.

Placa CCS
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado arameo

  • PIC10
  • *
  • Mensajes: 17
Re: Mis experiencias con el BUS CAN
« Respuesta #579 en: 07 de Marzo de 2009, 21:19:16 »
Gente, a modo informativo por si alguien esta leyendo el foro con propositos de conectarse al bus CAN de algun auto, les comento que en la mayoria de los autos que circulan por la calle no se encuentra implementado.
Los scanners y demas, utilizan el protocolo KWP (Linea k-L) para sacar la info. (en los conectores OBD-II, figuran ambos pines CAN y KWP, supongo por su imp. a futuro)

Recien algunos autos FABRICADOS en el 2006 en adelante cuenta con dicho protocolo implementado. (Honda, Subaru, algunos Ford americanos, entre otros)
La interfaz antes realizada en teoria funciona y va a quedar como un desarrollo para poder ser testeada en coches q lo implementen.

Actualmente voy a desarrollar el protocolo KWP con el PIC para poder comunicarme y adaptarlo a la plaqueta.

Por si alguien quiere seguir este tema, estoy posteando aqui:
http://www.gncusers.com.ar/phpBB2/viewtopic.php?f=8&t=7156&sid=b6900c83269b4caba3ca5e92e540575b&start=640

Saludos.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Mis experiencias con el BUS CAN
« Respuesta #580 en: 07 de Marzo de 2009, 22:12:25 »
Quien eres en ese foro??
Lo del ELM, sabes donde se consigue??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado arameo

  • PIC10
  • *
  • Mensajes: 17
Re: Mis experiencias con el BUS CAN
« Respuesta #581 en: 08 de Marzo de 2009, 00:19:02 »
Quien eres en ese foro??

este... entiendo por esa pregunta, con que nick estoy, pues con el mismo que aca, arameo

Lo del ELM, sabes donde se consigue??
aca en Argentina nose, existe la pagina oficial de ELM - > http://www.elmelectronics.com/
Donde creeria que tienen envio a todo el mundo, pagando con tarjeta de credito.

Desconectado teleko

  • PIC10
  • *
  • Mensajes: 41
Re: Mis experiencias con el BUS CAN
« Respuesta #582 en: 08 de Marzo de 2009, 09:32:40 »
Quien eres en ese foro??
Lo del ELM, sabes donde se consigue??

El ELM se puede comprar en esta página: ELM

Hay varios modelos de interfaz, el más conocido es el ELM327, ya que abarca todos los protocolos: CAN (ISO15765) y CAN (SAE J1939), KWP (ISO14230), ISO9141, SAE J1850, PWM y VPW. Y además le puedes programar el CAN a diferentes velocidades (por si quieres leer en otros CAN que traen los coches).

Sale por unos 35$ sólo el chip, aunque si lo buscas por ebay, también venden cables OBD con el elm ya integrado, y un FTDI para conexión USB (aunque sean copias chinas también funcionan).

A mi me han dejado un interfaz ELM ya montado en una caja, y para conectarte con el pc, en lugar de cable serie usa bluetooth. A la hora de usarlo es igual, se hace una conexión serie por bluetooth y luego ya funciona igual que si estuviera por cable.

Desconectado hech

  • PIC10
  • *
  • Mensajes: 4
Re: Mis experiencias con el BUS CAN
« Respuesta #583 en: 12 de Marzo de 2009, 23:49:03 »
Hola a todos, este mi primer aporte en el tema del Bus-Can, bueno les cuento, me compre una interface can usb http://www.canusb.com/index.htm, muy buena por cierto te dan un programa para ver los datos y algunos ejemplos con labview y otros, lo probe en un vehiculo y me leyo todos los datos, con esos datos me dispuse a armar mi propia interface usando el dspic 30f4011 con el mcp2551 y cristal de 20Mhz, lo programe con el mikrobasic para dspic, y bueno despues de tanto lidiar logre configurar para enviar y recibir mensajes 500Kbps, y aqui viene mi problema cuando conecto el dspic con la interface usb me envia y recibe bien los datos, pero cuando lo conecto con el vehiculo, este se resetea, si solo programo el dspic para enviar no hay  problema, pero si lo configuro asi sea solo para recibir se me resetea, nose porque si alguien me puede ayudar, les adjunto el programa del dspic. gracias

Código: FreeBasic
  1. program TX_RX_CAN_500Kbs
  2. include "logo"
  3. dim Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags, MSG_RCVD, RX_DATA_LEN, X as word
  4.     Tx_Data  as byte[8]
  5.     Rx_Data  as byte[8]
  6.     txt as string[3]
  7.     Rx_ID, Tx_ID as longint
  8.  
  9. main:
  10.   ADPCFG = $FFFF
  11.   Can_Init_Flags   = 0
  12.   Can_Send_Flags   = 0
  13.   Can_Rcv_Flags    = 0
  14.  
  15.   Can_Send_Flags   = CAN_TX_PRIORITY_1 and           ' SE UTILIZA PARA
  16.                      CAN_TX_STD_FRAME and            '  CANSendMessage
  17.                      CAN_TX_RTR_FRAME
  18.  
  19.   Can_Init_Flags   = CAN_CONFIG_SAMPLE_THRICE and    ' SE ULILIZA PARA
  20.                      CAN_CONFIG_PHSEG2_PRG_ON and    '  CANInitialize
  21.                      CAN_CONFIG_XTD_MSG and
  22.                      CAN_CONFIG_DBL_BUFFER_ON and
  23.                      CAN_CONFIG_ALL_VALID_MSG  and
  24.                      CAN_CONFIG_LINE_FILTER_OFF
  25.  
  26.   CAN1Initialize(1,2,4,4,1,Can_Init_Flags)           ' configurado a 500kbs con oscilador
  27.                                                       'de 20 MHz
  28.   CAN1SetOperationMode(CAN_MODE_NORMAL, 0x00)         ' set CONFIGURATION mode
  29.  
  30.  
  31.   CAN1SetMask(CAN_MASK_B1, -1, CAN_CONFIG_MATCH_MSG_TYPE and CAN_CONFIG_STD_MSG)   ' set all mask1 bits to ones
  32.   CAN1SetMask(CAN_MASK_B2, -1, CAN_CONFIG_MATCH_MSG_TYPE and CAN_CONFIG_STD_MSG)   ' set all mask2 bits to ones
  33.   CAN1SetFilter(CAN_FILTER_B1_F1, 5,CAN_CONFIG_STD_MSG) ' set id of filter B2_F3 to 3
  34.   CAN1SetOperationMode(CAN_MODE_NORMAL, 0x00)           ' modo Normal ENVIA Y RECIBE
  35.  
  36. ' -----------------configuracion del glcd 128x64
  37.   Glcd_Init(PORTC,13,PORTC,14,PORTE,8,PORTD,1,PORTB,8,PORTD,3,PORTB) 'conf d puertos
  38.   delay_ms(2000)
  39.  
  40.     Glcd_Fill(0x00)  ' Limpiar pantalla
  41.     Glcd_Image(LOGOTIPO_bmp)         'dibujar imagen
  42.     Delay_MS(5000)
  43.     Uart2_Init(9600)                   'INICIALIZAMOS RS232
  44.     Glcd_Fill(0x00)  ' Limpiar pantalla
  45. MOSTAR:
  46.   while TRUE
  47.     Tx_ID=$100
  48.     Tx_Data[0] = $EC
  49.     Tx_Data[1] = $04
  50.     Tx_Data[2] = $00
  51.     Tx_Data[3] = $00
  52.     Tx_Data[4] = $00
  53.     Tx_Data[5] = $A9
  54.     Tx_Data[6] = $0B
  55.     Tx_Data[7] = $6a
  56.     CAN1Write(Tx_ID, Tx_Data, 8, Can_Send_Flags)   ' envio los datos
  57.     Tx_ID=$500
  58.     Tx_Data[0] = $5E
  59.     Tx_Data[1] = $00
  60.     Tx_Data[2] = $F8
  61.     Tx_Data[3] = $02
  62.     Tx_Data[4] = $D2
  63.     Tx_Data[5] = $02
  64.     Tx_Data[6] = $26
  65.     Tx_Data[7] = $02
  66.     CAN1Write(Tx_ID, Tx_Data, 8, Can_Send_Flags)   ' envio los datos
  67.     FOR X=0 TO 100
  68.     DELAY_MS(1)           'PAUSA ENTRE ENVIO RECEPCION
  69.     NEXT X
  70.    
  71.     Msg_Rcvd = CAN1Read(Rx_ID , Rx_Data , Rx_Data_Len, Can_Rcv_Flags)
  72.  
  73.     IF Rx_ID=$112 THEN
  74.     Uart2_Write_TEXT ("112")
  75.     Glcd_Set_Font(@System3x6, 3, 6, 32)
  76.     Glcd_Write_TEXT("RX_ID=112   DLC=", 3, 0, 2)
  77.     ByteToStr(Rx_Data_LEN, txt)
  78.     Glcd_Write_TEXT(TXT, 63, 0, 2)
  79.     ByteToStr(Rx_Data[0], txt)
  80.     Glcd_Write_TEXT(TXT, 3, 1, 0)
  81.     ByteToStr(Rx_Data[1], txt)
  82.     Glcd_Write_TEXT(TXT, 18, 1, 0)
  83.     ByteToStr(Rx_Data[2], txt)
  84.     Glcd_Write_TEXT(TXT, 33, 1, 0)
  85.     ByteToStr(Rx_Data[3], txt)
  86.     Glcd_Write_TEXT(TXT, 48, 1, 0)
  87.     ByteToStr(Rx_Data[4], txt)
  88.     Glcd_Write_TEXT(TXT, 63, 1, 0)
  89.     ByteToStr(Rx_Data[5], txt)
  90.     Glcd_Write_TEXT(TXT, 78, 1, 0)
  91.     ByteToStr(Rx_Data[6], txt)
  92.     Glcd_Write_TEXT(TXT, 93, 1, 0)
  93.     ByteToStr(Rx_Data[7], txt)
  94.     Glcd_Write_TEXT(TXT, 108, 1, 0)
  95.     END IF
  96.  
  97.     IF Rx_ID=$512 THEN
  98.     Uart2_Write_TEXT ("512")
  99.     Glcd_Set_Font(@System3x6, 3, 6, 32)
  100.     Glcd_Write_TEXT("RX_ID=512   DLC=", 3, 2, 2)
  101.     ByteToStr(Rx_Data_LEN, txt)
  102.     Glcd_Write_TEXT(TXT, 63, 2, 2)
  103.     ByteToStr(Rx_Data[0], txt)
  104.     Glcd_Write_TEXT(TXT, 3, 3, 0)
  105.     ByteToStr(Rx_Data[1], txt)
  106.     Glcd_Write_TEXT(TXT, 18, 3, 0)
  107.     ByteToStr(Rx_Data[2], txt)
  108.     Glcd_Write_TEXT(TXT, 33, 3, 0)
  109.     ByteToStr(Rx_Data[3], txt)
  110.     Glcd_Write_TEXT(TXT, 48, 3, 0)
  111.     ByteToStr(Rx_Data[4], txt)
  112.     Glcd_Write_TEXT(TXT, 63, 3, 0)
  113.     ByteToStr(Rx_Data[5], txt)
  114.     Glcd_Write_TEXT(TXT, 78, 3, 0)
  115.     ByteToStr(Rx_Data[6], txt)
  116.     Glcd_Write_TEXT(TXT, 93, 3, 0)
  117.     ByteToStr(Rx_Data[7], txt)
  118.     Glcd_Write_TEXT(TXT, 108, 3, 0)
  119.     END IF
  120.  
  121.      IF Rx_ID=$712 THEN
  122.     Uart2_Write_TEXT ("700")
  123.     Glcd_Set_Font(@System3x6, 3, 6, 32)
  124.     Glcd_Write_TEXT("RX_ID=700   DLC=", 3, 4, 2)
  125.     ByteToStr(Rx_Data_LEN, txt)
  126.     Glcd_Write_TEXT(TXT, 63, 4, 2)
  127.     ByteToStr(Rx_Data[0], txt)
  128.     Glcd_Write_TEXT(TXT, 3, 5, 0)
  129.     ByteToStr(Rx_Data[1], txt)
  130.     Glcd_Write_TEXT(TXT, 18, 5, 0)
  131.     ByteToStr(Rx_Data[2], txt)
  132.     Glcd_Write_TEXT(TXT, 33, 5, 0)
  133.     ByteToStr(Rx_Data[3], txt)
  134.     Glcd_Write_TEXT(TXT, 48, 5, 0)
  135.     ByteToStr(Rx_Data[4], txt)
  136.     Glcd_Write_TEXT(TXT, 63, 5, 0)
  137.     ByteToStr(Rx_Data[5], txt)
  138.     Glcd_Write_TEXT(TXT, 78, 5, 0)
  139.     ByteToStr(Rx_Data[6], txt)
  140.     Glcd_Write_TEXT(TXT, 93, 5, 0)
  141.     ByteToStr(Rx_Data[7], txt)
  142.     Glcd_Write_TEXT(TXT, 108, 5, 0)
  143.     END IF
  144.   wend
  145. GOTO MOSTRAR
  146. end.

MGL. Perdon por la edicion, pero asi se puede ver tu codigo sin tener el editor...


soy nuievo en este tema y estoy haciendo un proyecto con el mencioado bus can utilizando el dspic304013 y quiesiera saber si algruin tiene algunos ejemplos de esta paluicaion con domotica, ante antes mis felisitaciones MGSOFT por abrir este tema que es un poco escaso la informacion pero bastante empleado e interesante y de antemano agradecer buestras respuestas gracias

Desconectado arameo

  • PIC10
  • *
  • Mensajes: 17
Re: Mis experiencias con el BUS CAN
« Respuesta #584 en: 13 de Marzo de 2009, 00:09:11 »
hech, a que vehiculo te conectaste ?

Estas seguro que tiene implementado el Bus-CAN ? , la interface que adquiriste puede estar leyendo los datos de algun otro protocolo (ISO 9141 , ISO 14230 , etc.)

Te lo pregunto pq tengo armada un interfaz con un PIC 18F258 y un MCP2551 , logre la comunicacion y el auto me responde con tramas de PIDs no soportados.

Saludos


 

anything