Jeronimo
Guest
Sun May 20, 2007 5:59 pm
Hola:
Me estoy haciendo para el coche, que es un poco antiguo, un ordenador de
viaje, creo que los llaman así, con un PIC 16F877A y una pantalla LCD.
Todo empezó con un problema, que tuve, con los frenos delanteros, que no
recuperaban bien y las pastillas no volvían bien a su posición de reposo,
con lo que se calentaban demasiado, cambie las pastillas y alguna cosa mas,
pero como no me fiaba demasiado, me hice unos sensores de temperatura, con
unos LM35, y los coloque en cada pastilla, con lo que me voy enterando en
cada instante de si la temperatura es normal o demasiado alta.
Posteriormente me quede, sin avisar, sin batería, con lo que añadí al
ordenador, otro circuito para controlar la tensión de batería. Como el PIC
estaba desaprovechado, le puse también temperatura exterior y interior, y un
medidor de combustible, en litros, para que no fuese el típico de aguja 1/2
deposito 1/4 etc. Y según se me van ocurriendo funcionalidaes, se las pienso
ir incorporando.
Como ya tengo la medida en litros que llevo en el deposito y sabiendo lo que
gasta el coche cada 100 Km, puedo calcular la autonomía en Km que tengo con
el combustible que llevo, esto se puede afinar mas sabiendo el gasto
instantáneo de combustible, pero de momento me conformo con saber este dato,
a grosso modo. Y aquí tengo el problema con una simple regla de tres lo
podría hallar, pero no se como haderlo con el PIC, al multiplicar los litros
que tengo en el deposito por 100 ( para después dividirlo por el consumo
medio), en algunos casos me paso de 255, que es lo máximo que puedo
almacenar en un Byte, san google me ha informado que puedo hacer la
multiplicación y almacenarla en dos Bytes, pero como se dividen esos dos
Bytes por el Byte del consumo medio, que este siempre será un Byte, mi coche
no gasta mas de 11 litros cada 100 en las peores condiciones, que se puede
meter perfectamente en un Byte.
Lo estoy programando en ensamblador, no conozco, otra forma, supongo que en
C, se podría hacer, pero no es el momento de aprender a programar en C.
Alguien me echa una mano o me da alguna idea. Gracias.
Saludos
Eduardo
Guest
Sun May 20, 2007 9:43 pm
"Jeronimo" <GRAFAELLLLLL_at_terra.es> escribió en el mensaje
news:q004i.4196287$D7.8317515_at_telenews.teleline.es...
Quote:
................
Como ya tengo la medida en litros que llevo en el deposito y sabiendo lo
que
gasta el coche cada 100 Km, puedo calcular la autonomía en Km que tengo
con
el combustible que llevo, esto se puede afinar mas sabiendo el gasto
instantáneo de combustible, pero de momento me conformo con saber este
dato,
a grosso modo. Y aquí tengo el problema con una simple regla de tres lo
podría hallar, pero no se como haderlo con el PIC, al multiplicar los
litros
que tengo en el deposito por 100 ( para después dividirlo por el consumo
medio), en algunos casos me paso de 255, que es lo máximo que puedo
almacenar en un Byte, san google me ha informado que puedo hacer la
multiplicación y almacenarla en dos Bytes, pero como se dividen esos dos
Bytes por el Byte del consumo medio, que este siempre será un Byte, mi
coche
no gasta mas de 11 litros cada 100 en las peores condiciones, que se puede
meter perfectamente en un Byte.
Suponiendo que la resolucion en la lectura del tanque es 1 litro, la
resolucion en la autonomia sera casi 10Km, sumado a el error en la lectura
del combustible mas el hecho que el consumo real sera solo 'parecido' al
promedio, podemos presentar la lectura de la automia como dos digitos
seguidos de un cero fijo.
La autonomia (en 'decenas' de Km) seria:
Auton = Litros_tanque*10/Consumo
Se hace esta trampa, en lugar de multiplicar por 10 y dividir por el
consumo, se hace:
q = (10/consumo)*256
q = 10/11*256 = 233
Si por ejemplo, una medicion mas fina del consumo medio te da 10.8 litros
@100Km
la constante q redondeada al entero mas proximo es:
q = (10/10.

*256 = 237
Y ahora que?
Pues bien, si usas la rutina de libreria MUL8x8 y haces:
ByteH, ByteL = Litros_tanque * 233
entonces en ByteH tienes directamente el resultado (en decenas de Km) y si
ByteL es mayor que 127 le sumas 1 a ByteH (el redondeo).
Si la resolucion en combustible fuera menor de un litro, el algoritmo es
similar, es decir, transformar A = B/C en A' = B* (2^n /C) , y despues de
multiplicar hacer un desplazamiento (o eliminar bytes), solo que para eso
vas a tener que usar una multiplicacion de 16 bits.
Eduardo.
Fleming
Guest
Mon May 21, 2007 2:49 am
Quote:
y un
medidor de combustible, en litros, para que no fuese el típico de aguja
1/2
deposito 1/4 etc. Y según se me van ocurriendo funcionalidaes, se las
pienso
ir incorporando.
Buenas,
Primero disculpa por no responder a tu pregunta (... yo lo haría en C),
pero... ¿como mides el consumo de combustible?
Saludos.
Jeronimo
Guest
Mon May 21, 2007 3:28 pm
Hola:
Gracias por tu respuesta, Eduardo.
Lo voy a solucionar como dices, mientras mis medios de obtener los datos
sean tan rudimentarios, los resultados también lo serán, pero por el momento
me valen.
Solo una aclaración cuando te refieres a librería MUL8x8, supongo que vale
cualquiera que me multiplique dos Bytes y el resultado me lo entregue en dos
Bytes, ByteH, ¿siempre es así?.
En respuesta a Fleming, de momento la medida del consumo es el calculo en
tantos litros por Km, creo que los ordenadores de los coches, lo hacen con
hilo radiante, midiendo el volumen de aire aspirado y calculando el consumo
instantáneo, mas adelante, intentare hacerlo así, pero de momento me vale de
está forma, aunque sea un poco chapucero.
Saludos.
"Jeronimo" <GRAFAELLLLLL_at_terra.es> escribió en el mensaje
news:q004i.4196287$D7.8317515_at_telenews.teleline.es...
Quote:
Hola:
Me estoy haciendo para el coche, que es un poco antiguo, un ordenador de
viaje, creo que los llaman así, con un PIC 16F877A y una pantalla LCD.
Todo empezó con un problema, que tuve, con los frenos delanteros, que no
recuperaban bien y las pastillas no volvían bien a su posición de reposo,
con lo que se calentaban demasiado, cambie las pastillas y alguna cosa
mas,
pero como no me fiaba demasiado, me hice unos sensores de temperatura,
con
unos LM35, y los coloque en cada pastilla, con lo que me voy enterando en
cada instante de si la temperatura es normal o demasiado alta.
Posteriormente me quede, sin avisar, sin batería, con lo que añadí al
ordenador, otro circuito para controlar la tensión de batería. Como el PIC
estaba desaprovechado, le puse también temperatura exterior y interior, y
un
medidor de combustible, en litros, para que no fuese el típico de aguja
1/2
deposito 1/4 etc. Y según se me van ocurriendo funcionalidaes, se las
pienso
ir incorporando.
Como ya tengo la medida en litros que llevo en el deposito y sabiendo lo
que
gasta el coche cada 100 Km, puedo calcular la autonomía en Km que tengo
con
el combustible que llevo, esto se puede afinar mas sabiendo el gasto
instantáneo de combustible, pero de momento me conformo con saber este
dato,
a grosso modo. Y aquí tengo el problema con una simple regla de tres lo
podría hallar, pero no se como haderlo con el PIC, al multiplicar los
litros
que tengo en el deposito por 100 ( para después dividirlo por el consumo
medio), en algunos casos me paso de 255, que es lo máximo que puedo
almacenar en un Byte, san google me ha informado que puedo hacer la
multiplicación y almacenarla en dos Bytes, pero como se dividen esos dos
Bytes por el Byte del consumo medio, que este siempre será un Byte, mi
coche
no gasta mas de 11 litros cada 100 en las peores condiciones, que se puede
meter perfectamente en un Byte.
Lo estoy programando en ensamblador, no conozco, otra forma, supongo que
en
C, se podría hacer, pero no es el momento de aprender a programar en C.
Alguien me echa una mano o me da alguna idea. Gracias.
Saludos
Eduardo
Guest
Mon May 21, 2007 4:26 pm
On May 21, 12:28 pm, "Jeronimo" <GRAFAELLL...@terra.es> wrote:
Quote:
.........
Solo una aclaración cuando te refieres a librería MUL8x8, supongo que vale
cualquiera que me multiplique dos Bytes y el resultado me lo entregue en dos
Bytes, ByteH, ¿siempre es así?.
Si.
Jeronimo
Guest
Mon May 21, 2007 6:33 pm
Gracias.
"Eduardo" <abdulai_at_tutopia.com> escribió en el mensaje
news:1179764766.306669.301520_at_z24g2000prd.googlegroups.com...
On May 21, 12:28 pm, "Jeronimo" <GRAFAELLL...@terra.es> wrote:
Quote:
.........
Solo una aclaración cuando te refieres a librería MUL8x8, supongo que vale
cualquiera que me multiplique dos Bytes y el resultado me lo entregue en
dos
Bytes, ByteH, ¿siempre es así?.
Si.