TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: luarken en 09 de Mayo de 2008, 01:54:54
-
hola a todos tengo un pequenio problema
estoy haciendo un medidor de distancia y ya tengo todo lo necesario ya esta funcionando el programa y todo
me pasaron este programa y funciona bien pero solo para medir distancias
pero necesito hacerle unas modificaciones
que a sierta medida me mande un alto a un pin y a otra medida lo ponga en bajo, como si fuera medidor de nivel
necesito agregarle un menu para poder cambiarle las distancias, ya sea la minima distancia o la maxima
espero me puedan ayudar aqui dejo todo lo q tengo de este programa
mi fin es hacer un medidor de nivel
espero me puedan ayudar gracias
lo estoy compilando con matlab y es leguaje ensamblador
-
Saludos luarken! :-)
Según lo que veo en tu código, lo que haces es que, una vez que ECO se coloca en 1, incrementa la variable "distancia" cada vez que pasan 60us con interrupción por desbordamiento en timer0. Eso lo haces en la rutina "servicio de interrupción". Y esperas hasta que ECO se coloque en 0 (fin del pulso). Para insertar lo del medidor de nivel, en el programa principal, luego que haces "clrf INTCON" allí restas la distancia con tu medida específica (el nivel que deseas detectar) y evalúas el bit c de status para ver si es mayor o menor... ejemplo de esto lo puedes ver al comienzo de la subrutina "visualiza".
Y entonces colocas "bsf porta,0"(pone en alto el pin RA0, suponiendo que sea ese pin el que quieras usar) o "bcf porta,0" (pone en bajo el mismo pin)... dependiendo del caso que corresponda... y eso es todo...
En cuanto a lo del menú... no entendí muy bien lo que quieres, pero supongo que vas a conectar unos pulsadores para que hagan una pequeña interfaz con el LCD no?
Bueno recuerda conectar los pulsadores entre los pines RB4-RB7 para que puedas usar la interrupción por cambio de estado en puerto b.
Ahora bien, dices que ese programa te lo pasaron... mi pregunta es: sabes algo de programación de pics? entiendes el programa que tienes?
Porque de lo contrario será poco el provecho que vas a sacar de la ayuda que podamos darte...
De todos modos usa el buscador del foro, estoy seguro que por allí ya hay más información que puede serte útil...
Ok no más pues, nos leemos! :mrgreen:
-
gracias firepic
se un poco de programacion estoy apendiendo poco a poco.
si eso q me dices de la distancia si sabia, lo q pasa es q el sensor tiene un rango de funcionamiento en distancia x eso es q tienen las limitantes, y siempre esta realizando mediciones con el retardo de tiempo
pero lo q kiero hacer es q en ese ranto q tengo de 3 cm a 250 cm, me mida en nivel del agua de un depesito o tinaco
y q un ejemplo si kiero q a los 90 cm prenda una bomba para que el reposito se llene y que a los 200 cm se apague.
y lo del menu q digo es para poder cambiarle los rrangos de minimo y maximo cambiar los 90 cm y los 200 cm del ejemplo anterior.
tengo el lcd, y este asi como esta el programa ya funciona, pero solo me desplega la distancia medida.
gracias por la ayuda.
-
Hola.
¿De quien es el programa?
Vas a necesitar agregarle un teclado(o un par de pulsadores al menos) para poder setear los valores...
¿Que pines estas usando para el LCD?
Saludos.
-
Si, sería bueno que colocaras el esquema de tu circuito a ver qué tienes...
Yo en una ocasión hice un menú como lo que tú quieres hacer...
Usé tres pulsadores: uno para incrementar el valor, otro para decrementar, y el otro para "aceptar" (cuando presionaba "aceptar" el nuevo valor era guardado en memoria EEPROM del pic y el display volvía a mostrar la lectura actual; además ese mismo pulsador de aceptar lo usaba para entrar al modo de configuración del valor, cuando lo dejaba presionado por más de 10segundos, de lo contrario el display mostraba la lectura normal).
En cuanto pongas el circuito seguimos viendo...
Nos leemos! :mrgreen:
-
oh disculpen por no poner el circuito
el programa me lo paso un amigo hace algun tiempo.
como dises firepic pensaba hacerlo con unos pulsadores, para no tener que comprar un teclado
gracias por su ayuda
-
Saludos!
Luarken, podrías pasar los códigos de los programas que llamas aquí:
INCLUDE <RETARDOS.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
INCLUDE <BIN_BCD.INC>
Para compilarlo y simularlo...
Y ver si puedo ayudarte con las modificaciones que necesitas...
Ok nos leemos! :mrgreen:
-
ya los puse estan el el archivo medidor.zip en el primer post
gracias.
-
Ah disculpa no me había fijado :D
Ok nos leemos!
-
estaba sacando el diagrama de como pienso hacer lo del menu del sensor y las cosas q tengo q agregarle
aki dejo el diagrama.
?se puede hacer de alguna manera q me guade en memoria las ultimas 20 mediciones y mirarlas en el lcd??
agregandole una opcion al menu, como, (ultimas mediciones) y q las despliege como baner #1 10 cm #2 20 cm, .....
gracias
-
?se puede hacer de alguna manera q me guade en memoria las ultimas 20 mediciones y mirarlas en el lcd??
Formas hay, el tema es que el pic que has elegido tiene muy poca memoria. Eso si es que quieres manenterlo solo durante la ejecución del programa, sino tienes alternativa de usar una eeprom externa pero nuevamente estarás limitado por la capacidad de programa de tu pic que es bastante limitado.
Para no tener tantas limitaciones te recomiendo usar un 16F628A, un 16F883 , un 16F873A, estos tienen mucha más memoria de programa, memoria ram y eeprom interna.
Saludos
-
si solo durante la ejecucion o si se pueden almacenar
como cuantos se pueden???
gracias.
-
Saludos!
De la datasheet del 16F84A:
(http://img231.imageshack.us/img231/7526/imagen1uz9.jpg)
Como puedes ver, la EEPROM de tu pic solo permite 64 bytes. La cosa es que también son solo 1024 palabras para la memoria de programa. Como te dice el maestro maunix, eso te limita bastante.
Bueno mira las datasheets y los precios de los pics que te menciona maunix y ve qué decides.
Nos leemos!