TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: andpic en 20 de Octubre de 2005, 06:58:00
-
Hola Muchachos: No tengo mucha experiencia con pic por lo que les piedo por favor si me pueden pasar alguna rutinita en C para armar un contador de días con un pulsador de reset. Al ser un contador de días debe contar 24H y un reset para cuando se presione, el contador vuelva a cero.
Gracias
-
No creo que nadie te regale nada ... intenta plantearla tu mismo y te ayudaremos con los errores. Para empezar, deberias dar mas datos, por ejemplo si necesitas mucha precisión requeriras un cristal de un valor para que el conteo de segundos sean perfectos.
-
OK,Tenés razón. El tema es que me lo han pedido que lo haga urgente. Por otro lado si es necesario que el conteo lo haga lo mejor posible, por lo que SI necesitaría un cristal. Lo que necesito armar es un contador de días sin accidentes para una empresa. La verdad nosé por donde empezar. La idea es que el pic controle un display de 7 seg de 4 digitos y tenga un botón de reset para cuando ocurra un accidente.
Saludos
-
Aqui en el subforo de c en ejemplitos en c hay un programa que maneja 4 display"s de 7seg, es un contador ascendente....solo tendrias que programar lo que necesitas....y para el boton de reset ponlo en la patita de reset externa del pic:MRCL.....aqui el enlace(mira en el indice SUPER CONTADOR 0000a9999):
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4061462
Suerte!!!
-
Lo mas facil seria utilizar un reloj de tiempo real y que lo haga el todo no?
-
Si lo unico que va hacer el PIC es eso, el RTC para esta apliación le va sobrao, solo tendria que estar multiplexando los displays y contando el tiempo mediante interrupciones, y cuando haga X, sumará 1. Con 4 digitos hay para 9999 días que son 27 años


en una empresa sin accidentes, con 3 vas muy sobrao. Intenta ajustarte al máximo los gastos para la utilidad que tendrá.
-
Hola amigos:
Si se va la luz, ..., ¿no se pondrá a cero el contador, verdad?, ...

, Os propongo que almaceneis el valor de la cuenta en la EEPROM del PIC, para que delante de pequeños accidentes (desconexiones fortuitas, ajenas a todos,
), siempre pueda el programa al inicio, recuperar la cuenta, y siempre, de forma manual poner a cero, cuando proceda, dicho valor (usando cualquier PIN de un puerto del PIC).
Es una sugerencia, basada en experiencias,...


¿Que os parece?...SALUDOS..
-
Si vas a tener en cuenta posibles desconexiones, tendras que hacer tambien un programa (con su correpondiente hard) para actualizar los registros que utilizes para el conteo, para cuando vuelva la electricidad. A no ser que tampoco te importe perder unos minutos u horas en dicho conteo.
-
Hola, no pensaste la opcion de un timekeeper? o sea, lo que queres hacer ya estaria mas que solucionado con eso, ya que la mayoria de estos IC, cuentan segundos,minutos,hora,dia de la semana,dia del mes, mes,año,y calculan solo el año bisiesto, con un error infimo.
Bueno, digo, porque no son caros, y por ahi te convendria. Si aun asi lo vas a hacer con pic, ponele un oscilador de pocos Hz y alta precision, asi minimizas el error que se arrastra con el tiempo. Saludos
-
Para el programa tendrias que tener en cuenta que: el error por año en el calenadario Gregoriano(es el que usamos nosotros) es de 5 horas 56 minutos, por eso se hace el año bisiesto cada 4 años(el año debe ser multiplo de 4), pero para corregir el error sobrante(los 4 minutos), se hace que si el numero de año es multiplo de 400, se saltea el año bisiesto que le correspondira x ser multiplo de 4. Saludos.
-
Muchachos: Antes que nada Gracias por la ayuda y buena Onda.
Voy a responder algunas de las cosas que me preguntan:
Vszener: Gracias por el link, está muy bueno. Lo voy a estudiar para y tratar de implementar a ver si me anda.
Manusilcar: Es verdad lo que decis, me parece que debería almacenar en la eemprom del pic por si se corta la luz, etc. Como se hace esto? Que pic vienen con esa posibilidad?
Radon: Sería seguro usar el RTC para el conteo. O tendría que usar un reloj en tiempo real, como implementaría esto último?
Alex22ra: Idem Manusilcar. Como podría usar un reloj de tiempo real?. Como se lo agregaría al pic?
BrunoF: Nose que es un timekeeper. Se programan? en C? Talvez me sirva aunque no me interesa el dia del año, ni el mes, ni el año. Si me podría interesar que los días lo cuente bien, es decir que llegada las 24h cambie el contador. Talvez en ese caso me pueda servir, pero como te dige antes no se que es y como se usa.
-
que digo yo... poniendonos en el peor de los casos... se va la luz varias veces al dia... llegará un momento en que el contador realice mal la cuenta (si se van acumulando todas las idas de luz), por mucho q se restaure desde la EEPROM la cuenta, cuando está apagado no cuenta

Lo mejor y mas seguro es hacerlo con un RTC como el DS1307 por ejemplo, q en caso de desconexión de la luz el sigue operando gracias a la bateria.
Para usar el DS1307 es muy sencillo con I2C y programando en C, si buscas en el foro de lenguaje C encontraras varias librerías para el control de este dispositivo, yo postee una que es la que uso normalmente y hasta el momento va perfecta... dale unas cuantas vueltas a un diagrama de funcionamiento y seguimos
-
Un timekeeper es muy similar a un reloj serial de tiempo real(DS1307 por ejemplo)...
Vienen algunos con bateria de respaldo, como este DS1307 que menciona J1M. Controlarlo con el PIC es bien sencillo.
Cabe destacar que estamos hablando de un integrado aparte, no es un programa del PIC.
Y no se programan, simplemente, puedes setear fecha y hora(como seteas un reloj despertador) y leer hora y fecha luego.
Exitos...
-
De vuelta Muchas Gracias. Voy a ver las distintas alternativas. Una pregunta mas: Que consideración tengo que tener al momento de armar el circuito.? Es decir circuito donde conectaré los display y como conecto el DS1307 al pic?
Gracias
-
Pues la verdad es muy sencillo la conexion de RTC al PIC, es por conexion I2C.
La verdad no son caros estos circuitos el DS1307 cuesta 4 USD. Vale la pena y te ahorras muchos dolores de cabeza.
Entonces debes usar un PIC con modulo SSP.
Yo te recomiendo el 16F628... asi tienes 2 lineas de I2C , 7 de los segmentos, 4 de los digitos y uno para el RESET. Por lo que ocuparias 14 lineas de las 16 con que cuenta el PIC.
La direccion del Datasheet del DS1307 es http://pdfserv.maxim-ic.com/en/ds/DS1307.pdf
-
kuauhtemok : Qus es el modulo SSP del pic? Este pic que me aconsejas tiene eeprom?
Saludos
-
Ese modulo es el que contiene el I2C y si efectivamente tiene eeprom el 16F628...
Debes de ponerte a estudiar detenidamente estos circuitos para poder sacar adelante tu proyecto.... asi que ya sabes... A LEER !!!
-
Muchas Gracias por toda la ayuda. Con esto tengo mas que suficiente para empezar a estudiar. Lo unico que quisiera consultarles es que estuve pensando en colocarle, cuando arme el circuito, un multiplexor. El tema es el siguiente: el contador de dias tiene que contar los dias sin accidentes de la empresa, pero tambien los de la zona y los de los contratados, por lo tanto necesito manejar 12 display: Es decir 3 contadores de 4 display cada uno para lo cual había pensado en un multiplexor para no sobrecargar al pic, de esa manera manejaría cada uno de los contadores a través del multiplexor.Se entiende la idea?. Por favor espero su opiniones de si es viable esta alternativa?
Gracias
-
HOLA SALUDOS
PRIMERO QUE TODO .... EN MI CASO Y EXPERIENCIA NO UTILIZARIA NINGUN CIRCUITO EXTERNO DE PRECISION LO MANEJARIA POR SOFTWARE EL CONTADOR DE DIA ...
EXPLICACION:
COMO DICES QUE NECESITAS IMPLEMENTAR 12 DISPLAY EN LOS CUALES POR VARRIDO ESTARIA MOSTRANDO LOS VALORES DE CADA DIGITO, YO LE RECOMIENDO QUE TRABAJE CON UN CONVERSOR BCD A 7 SEGMENTOS Y UN TRANSISTOR NPN PARA ENCENDIDO DE CADA DISPLAY
GASTO DE PUERTOS
4 PUERTOS DATO BCD
12 PUERTOS PARA CONTROL DE DISPLAYS
3 PUERTOS PARA RESET DE CUALQUIERA DE LOS CONTADORES
GASTO = 4 + 12 + 3 = 19 PINES ...
PIC 16FXXX
CRISTAL 4MHZ
BIEN RETOMANDO EL TEMA SE DEBE TENER UNAS RUTINAS EN LAS CUALES MUESTRE LOS VALORES DE LOS DISPLAY <<-- ESTO IMPLICA GASTO DE TIEMPO EL CUAL DEBE SER CALIBRADO PARA QUE IMPLEMENTE VARIABLES DE CONTROL COMO SON MICROSEG MILISEG SEG MIN HORAS Y DIAS LAS CUALES LE PERMITAN CALIBRAR EL SISTEMA Y ASI TENER UNA MAYOR PRECISION
ADEMAS ... ESO SI GUARDAR TODOS LOS VALORES EN LA EEPROM DEL PIC PARA QUE EN DADO CASO SI SE VA LA LUZ RETORNE EN DONDE QUEDO
PARA ESTO SEGUN EL FABRICANTE SE TIENEN LAS RESPECTIVAS RUTINAS DE ESCRITURA Y LECTURA DE LA EEPROM
SALUDOS