Autor Tema: Computadora de abordo  (Leído 5532 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Computadora de abordo
« en: 10 de Junio de 2010, 12:28:09 »
Hola a todos! bueno, comienzo este tema para ir contandoles como va un proyecto que tengo en mente, es una computadora de a bordo para mi auto, por ahora no va a mostrar mucho, solo la hora, la fecha y la temperatura que hay dentro del auto como afuera.

Para ir arrancando tengo en mente utilizar:
- Un display de 2 x 16
- Dos sensores LM35
- Un microcontrolador que por ahora seria el 16F818

Cosas a tener en cuenta:
- Tengo un conocimiento MUY basico sobre microcontroladores, voy aprendiendo a medida que llevo a cabo este proyecto.

Adicionales a futuro:
- Posicionador GPS, saber las coordenadas exactas donde me encuentro
- Cantidad de kilometros a recorrer con el combustible restante
- Tiempo transucurrido de viaje.

Por supuesto, dudas, sugerencias, todo es bienvenido  :mrgreen:

Volviendo al mundo de los PIC....

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: Computadora de abordo
« Respuesta #1 en: 10 de Junio de 2010, 12:43:45 »
Vamos con la primer parte de la computadora de a bordo
Lo primero que encare fue el reloj, como el display iria posicionado en el tablero, en el lugar del actual reloj del auto, este deberia mostrar tambien la hora, este seria el codigo:

Código: [Seleccionar]
TRISA = %00011000
Define LCD_BITS = 8
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTA
Define LCD_RSBIT = 0
Define LCD_EREG = PORTA
Define LCD_EBIT = 2
Define LCD_RWREG = PORTA
Define LCD_RWBIT = 1

Dim h As Word
Dim m As Word
Dim seg As Word
h = 0                                             ` Seteo como hora de inicio las 0hs
m = 00                                          ` Seteo como minutos de inicio 0min
seg = 00                                        ` Seteo como segundos de inicio 0seg

Lcdinit 0                                         ` Inicio el display
WaitMs 50                                      ` 50ms despues muestra el msj Hora actual, este msj no apareceria en al version final
Lcdout "Hora actual"

hora:
If PORTA.3 = 1 Then m = m + 1      ` Seteo la entrada en el puerto A 3 para configurar los minutos
If PORTA.4 = 1 Then h = h + 1        ` Seteo la entrada en el puerto A 4 para configurar la hora
Lcdcmdout LcdLine2Home                ` Envio los datos del tiempo a la linea dos, primer espacio
Lcdout #h
Lcdout ":" #m
Lcdout "." #seg
seg = seg + 1                                 ` Comienzo incrementando los segundos de a 1 en 1
If seg = 60 Then m = m + 1            ` Cuando los segundos llegan a 60 el minuto se incrementa en 1
If seg = 60 Then seg = 00               ` Cuando los segundos llegan a 60 se vuelven a 0
If m = 60 Then h = h + 1                 ` Cuando los minutos llegan a 60 la hora se incrementa en 1
If m = 60 Then m = 00                    ` Cuando los minutos llegan a 60 se vuelven a 0
If h = 24 Then h = 00                      ` Cuando la hora llega a 24 se convierte en 00
WaitMs 1000                                    ` Se reinicia todo el siclo despues de 1 segundo
Lcdcmdout LcdLine2Clear                 ` Se limpia la linea 2 del display, para refrescar la hora
Goto hora
End                       

Cosas a mejorar:
- Cambiar la velocidad de seteo de las horas y minutos, actualmente cambia de un paso por segundo.
- En horas, minutos y segundos, del 1 al 9 se muestra solo un digito, ej: 4seg = 4 en lugar de 04

Acepto sugerencias/criticas  :oops:

Saludos!

Volviendo al mundo de los PIC....

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Computadora de abordo
« Respuesta #2 en: 10 de Junio de 2010, 13:09:02 »
Hola!! para el tema de la fecha y hora te recomiendo q uses un RTC. Es un integrado q lleva la cuenta del tiempo, inclusive cuando el microcontrolador este apagado. Aca hay un articulo muy completo sobre el ds1307 http://www.todopic.com.ar/foros/index.php?topic=13282.0
Eso ya te quita un problema de encima :wink:
Por cierto, que pensas usar como interfaz de entrada?? Creo que un teclado matricial seria lo mejor.
saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: Computadora de abordo
« Respuesta #3 en: 10 de Junio de 2010, 15:31:45 »
Hola!! para el tema de la fecha y hora te recomiendo q uses un RTC. Es un integrado q lleva la cuenta del tiempo, inclusive cuando el microcontrolador este apagado. Aca hay un articulo muy completo sobre el ds1307 http://www.todopic.com.ar/foros/index.php?topic=13282.0
Eso ya te quita un problema de encima :wink:
La verdad que es una muy buena alternativa, voy a tener que aprender a pelear para poder leerlo y llevar al lectura al display, bueno, no lo ultimo, pero si leerlo tnx!  :mrgreen:


Por cierto, que pensas usar como interfaz de entrada?? Creo que un teclado matricial seria lo mejor., no
saludos!!
Solamente tengo pensado colocarle un pulsador para subir minutos y otro para las horas, nada mas, es toda la entrada que necesito, por que despues las otras entradas son sensores de temperatura y mas adelante leerle info de GPS, asi que no se que tanto conviene un matricial, ademas seria muy aparatoso y solo quiero que se vea el display :P

Gracias por el dato del RTC!


exitos!
Volviendo al mundo de los PIC....

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Computadora de abordo
« Respuesta #4 en: 10 de Junio de 2010, 17:00:15 »
 :D muy buen proyecto.yo llevo mucho tiempo con la idea de computerizar mi auto.
en mi caso tengo un portatil en el maletero.eso si,pelao y mondao.si teclado ni pantalla ni siquiera touch.por si lo roban,que no les sirva de mucho.

mi idea es interconectar dispositivos a este.de momento estoy poniendole servos a las trampillas del aire climatizado y recirculacion.mas adelante incorporare camaras para maniobras.

ya le he puesto hace unos años un brazo abatible electrico en el asiento del conductor.lo realize con un motor de un limpiaparabrisas.y la verdad
es que ya no puedo pasar sin el.aunque de momento se aciona al bajar el freno de mano.

he estado haciendo practicas con servos.y dire que se pueden hacer infinidad de cosas con estos.y no son muy caros.en ebay tambien se venden.
si usamos chapa de aluminio que podemos cortar en tiras,podemos realizar mecanismos con palancas y tornillos.es un metal muy maneable.

en cuanto al control de estos.estoy utilizando pics de la gama baja segun las necesidades.y uso un pic por servo si los servos estan muy alejados.
mi idea es controlarlos mediante comunicacion serie.asi puedo conectar varios circuitos-servos en paralelo y controlarlos segun necesidad.

es la mejor manera de ahorrar cableado y complegidad de los circuitos.solo que estoy pensando en realizar un protocolo o utilizar uno hecho.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: Computadora de abordo
« Respuesta #5 en: 10 de Junio de 2010, 22:00:03 »
:D muy buen proyecto.yo llevo mucho tiempo con la idea de computerizar mi auto.
en mi caso tengo un portatil en el maletero.eso si,pelao y mondao.si teclado ni pantalla ni siquiera touch.por si lo roban,que no les sirva de mucho.

mi idea es interconectar dispositivos a este.de momento estoy poniendole servos a las trampillas del aire climatizado y recirculacion.mas adelante incorporare camaras para maniobras.

ya le he puesto hace unos años un brazo abatible electrico en el asiento del conductor.lo realize con un motor de un limpiaparabrisas.y la verdad
es que ya no puedo pasar sin el.aunque de momento se aciona al bajar el freno de mano.

he estado haciendo practicas con servos.y dire que se pueden hacer infinidad de cosas con estos.y no son muy caros.en ebay tambien se venden.
si usamos chapa de aluminio que podemos cortar en tiras,podemos realizar mecanismos con palancas y tornillos.es un metal muy maneable.

en cuanto al control de estos.estoy utilizando pics de la gama baja segun las necesidades.y uso un pic por servo si los servos estan muy alejados.
mi idea es controlarlos mediante comunicacion serie.asi puedo conectar varios circuitos-servos en paralelo y controlarlos segun necesidad.

es la mejor manera de ahorrar cableado y complegidad de los circuitos.solo que estoy pensando en realizar un protocolo o utilizar uno hecho.

La verdad que si, los servos nos permiten hace cosas muy buenas, los conozco por que los utilizo en radiocontrol  :D

Por ahora no pretendo mecanizar nada, solo pienso colocar el display a la vista y que ahi este la info, por ahroa no se me cruza por la cabeza mecanizar nada, pero nunca se sabe  ;-)

exitos!
Volviendo al mundo de los PIC....

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: Computadora de abordo
« Respuesta #6 en: 11 de Junio de 2010, 10:46:00 »
Bueno, el tema basico del reloj esta (o al menos hay una idea), habria que cambiarlo y probar un un RTC, pero por ahora no seria mayor problema, ya que el micro estaria alimentado permanentemente con la bateria del vehiculo.
El otro punto que estaba pendiente era medicion de temperatura, hice un codigo bien basico para leer los datos desde RA0/AN0, la señal la simule con un lm35 conectado "a la que te criaste", y obtuve buenos resultados, al menos en el simulador.

Este es el codigo de lectura analogico:

Código: [Seleccionar]
Define CONF_WORD = 0x3f72
Define CLOCK_FREQUENCY = 4
AllDigital
ADCON1 = 0x0e

Define LCD_BITS = 8
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTC
Define LCD_RSBIT = 0
Define LCD_RWREG = PORTC
Define LCD_RWBIT = 1
Define LCD_EREG = PORTC
Define LCD_EBIT = 2
Define LCD_READ_BUSY_FLAG = 1
Lcdinit

Dim an0 As Word

temp1:
Adcin 0, an0
Lcdcmdout LcdClear
Lcdout "Entrada RA0/AN0"
Lcdcmdout LcdLine2Home
Lcdout "Valor: ", #an0
WaitMs 250
Goto temp1

Como veran ocupo mas codigo en setear el LCD que en la lectura analogica.

Ahora solo debo hacer lo mismo para AN1 y tendria las dos lecturas de temepratura (adentro y fuera del vehiculo).

Como siempre, acepto sugerencias  :)

Exitos!
Volviendo al mundo de los PIC....

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: Computadora de abordo
« Respuesta #7 en: 11 de Junio de 2010, 11:31:09 »
Cambie el micro y pase directamente al 16F877

Bueno, ahora con dos mediciones de temperatura, mas reloj quedaria algo asi:

Código: [Seleccionar]
Define CONF_WORD = 0x3f72
Define CLOCK_FREQUENCY = 4
AllDigital
ADCON1 = 0x0e

Define LCD_BITS = 8
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTC
Define LCD_RSBIT = 0
Define LCD_RWREG = PORTC
Define LCD_RWBIT = 1
Define LCD_EREG = PORTC
Define LCD_EBIT = 2
Define LCD_READ_BUSY_FLAG = 1
Lcdinit

Dim an0 As Word
Dim an1 As Word
Dim h As Word
Dim m As Word
Dim seg As Word

h = 0
m = 00
seg = 00

WaitMs 50

Lcdout "PEUGEOT 206"
Lcdcmdout LcdLine2Home
WaitMs 1000
Lcdout "El Leon"
WaitMs 2000

hora:
If PORTC.5 = 1 Then Goto sethora
Adcin 0, an0
Adcin 1, an1
Lcdcmdout LcdClear
Lcdout "T1:", #an0, "  T2:", #an1
Lcdcmdout LcdLine2Home
Lcdout #h
Lcdout ":", #m
Lcdout ".", #seg
seg = seg + 1
If seg = 60 Then m = m + 1
If seg = 60 Then seg = 00
If m = 60 Then h = h + 1
If m = 60 Then m = 00
If h = 24 Then h = 00
WaitMs 1000
Lcdcmdout LcdLine2Clear
Goto hora

sethora:
Lcdcmdout LcdLine2Home
Lcdout #h
Lcdout ":" #m
Lcdout "." #seg

If PORTC.3 = 1 Then m = m + 1
If m = 60 Then m = 00

If PORTC.4 = 1 Then h = h + 1
If h = 24 Then h = 00

WaitMs 500
If PORTC.5 = 1 Then Goto sethora
Goto hora

End

El reloj tiene como modificacion el switch en PORTC.5 que al activarlo me permite cambiar horas y minutos mas rapidamente que en en codigo inicial que era una actualizacion por segundo, ahora se baja el tiempo a la mitad. Si el switch no esta activado el tiempo no se puede modificar.
Otra cosa nueva, al iniciar por primera vez el sistema, aparecera un mensaje, la idea (lo hare mas adelante) es que al poner el vehiculo en contacto aparezca el mensaje y luego la lectura de horas y temperatura, mientras que estando el vehiculo "apagado" solo se vea la hora, eso lo hago con un relecito en alguna de las entradas del micro.

Aca dejo el archivo para proteus y el hex para que lo prueben si quieren, pero los tiempos que tiene son diferentes, para poder ver mejor en la simulacion, si pongo los tiempos reales en waitms anda muy lento.

Exitos!
Volviendo al mundo de los PIC....

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: Computadora de abordo
« Respuesta #8 en: 14 de Junio de 2010, 09:01:49 »
Ya va tomando mas color, ahora con la modificacion del mensaje al poner en contacto el vehiculo y en el modo "apagado" solo muestra la hora, mientras que en marcha se ve la hora y las dos temperaturas.
Queda pendiente que aparezca el mensaje cada vez que se arranca el vehiculo, por que asi como esta ahora solo aparece al primera vez que se enciende el circuito y nunca mas.

Aca necesito que me den una mano, por que cuando los minutos o segundos son menores a 10 se muestra un solo digito y quiero que se vean dos, ejemplo: son las 10:02.08 y se muestra 10:2.8

Adjunto el hex, el diseño para proteus y la captura de como esta todo hasta ahora.
(los tiempos estan cambiados para podr simularlo mejor)


Exitos!  :)
Volviendo al mundo de los PIC....

Desconectado Strepto

  • PIC16
  • ***
  • Mensajes: 159
    • Pictronics
Re: Computadora de abordo
« Respuesta #9 en: 14 de Junio de 2010, 10:44:01 »
Idea: Tambien podrias añadirles sensores de proximidad para la hora de tener que aparcar el coche (es algo que yo tengo en mente hacer  :P )

Un saludo!

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: Computadora de abordo
« Respuesta #10 en: 14 de Junio de 2010, 11:11:35 »
Idea: Tambien podrias añadirles sensores de proximidad para la hora de tener que aparcar el coche (es algo que yo tengo en mente hacer  :P )

Un saludo!


Tal cual, me seria un buen complemento, por que tengo la camara de video, y con el sensor quedaria mas completo  :mrgreen:
se podria llegar a utilizar el mismo tipo de sensores que la alarma de movimiento de adentro del auto no?

Sl2!

Martin
Volviendo al mundo de los PIC....

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Computadora de abordo
« Respuesta #11 en: 14 de Junio de 2010, 12:00:48 »
Me parece muy bueno tu proyecto, ademas de que sea para el 206 :mrgreen:
oye no quiero complicarte los esquemas, pero si sigues con el reloj dentro del pic deberia ver de usar interrupciones, porque si usas delays lo que haces es clavarte en esa instruccion y dejas el micro ocupado. Lo mejor seria que trabajes con el RTC, si buscas en alguna mother board de una PC vieja tipo XT o 286 puede que encuentres alguno.
Con las interrupciones es mas simple porque mantienes el micro libre para atender otros procesos.

Por ahi alguien dice de controlar varios PIC, para esto se puede implementar un protocolo I2C.

En los automoviles lo que se usa es el CAN BUS, donde todos los sensores se comunican a la "caja negra".
Aqui puedes ver algo, no lo he leido completo, pero se ve muy bueno :mrgreen:
http://www.todopic.com.ar/foros/index.php?topic=19182.0
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: Computadora de abordo
« Respuesta #12 en: 14 de Junio de 2010, 12:54:27 »
Me parece muy bueno tu proyecto, ademas de que sea para el 206 :mrgreen:
oye no quiero complicarte los esquemas, pero si sigues con el reloj dentro del pic deberia ver de usar interrupciones, porque si usas delays lo que haces es clavarte en esa instruccion y dejas el micro ocupado.
Interrupque? todavia no llegue a tanto, estoy con lo basico basico nomas, tengo que leer algo mas de eso  :oops:


Lo mejor seria que trabajes con el RTC, si buscas en alguna mother board de una PC vieja tipo XT o 286 puede que encuentres alguno.
Es lo que me dijeron, pero si uso el RTC no sabria, al menos por ahora, como vincularlo con el pic que me maneja el resto de las cosas, eso es algo que tambien voy a tener que leer.


En los automoviles lo que se usa es el CAN BUS, donde todos los sensores se comunican a la "caja negra".
Aqui puedes ver algo, no lo he leido completo, pero se ve muy bueno :mrgreen:
http://www.todopic.com.ar/foros/index.php?topic=19182.0

Llego a pinchar la electronica del leon y me pego un tiro ahi mismo jejejeje
pero tarde o temprano voy a tner que tocar ahi por que quiero ver el tema del combustible, rendimiento, y cuanto me queda por recorrer con el combustible restante

gracias por la info!  :mrgreen:

exitos!
Volviendo al mundo de los PIC....


 

anything