TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: Gjalken en 13 de Enero de 2006, 06:52:00

Título: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Gjalken en 13 de Enero de 2006, 06:52:00
Mi problema es que soy novato en esto, y necesito hacer un programita pal 16F84A que me permita mover un motor paso a paso 180° hacia la derecha, dos horas despues 180° a la izquierda, despues de dos horas moverlo hacia la derecha (para mover la bandeja de una incubadora).....etc etc, ya he visto que el motor lo tengo que manejar mediante un driver, el problema es que no he encontrado en el comercio, asi que he visto en las hojas de datos de los driver algunas configuraciones que me sirven y esas si las puedo hacer con componentes que si he encontrado en el comercio, la cosa es que no se me ocurre como hacer lo del retardo de dos horas, si me pudieran orientar con mi problema se los agradeceria mucho.
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: vszener en 13 de Enero de 2006, 08:08:00
Hombre retardo de dos horas....es mucho retardo para cargarselo al timer del pic, y mas al del F84A que el de 8 bits que eso en la formula:

Temporizacion = Tcm · Prescaler · (256-Carga TMR0)

da una temporizacion maxima de: 65,536 ms
Teniendo en cuenta un cristal de 4MHz: Tcm= 1u
Prescaler: 256
Carga TMR0: 0

Mucha tela temporizar dos horas.....ahora bien si dicha temporizacion no es exacta! es decir permite margenes de tolerancias, puedes intentarlo mediante el timer, en cambio si dicha temporizacion deben ser lo mas exactas posibles te recomiendo(y para tu caso de temporizaciones altas mas aconsejable todavia) un integrado que te produzca la señal de 2 horas requerida, existe en el mercado unos cuantos, el mas conocido el integrado 555, dicho integrado lo pones en la patita RB0 y programas el pic para que cada vez que RB0 detecte un flanco de subida/bajada producido por el 555(cada dos horas) produzca una interrupcion, en dicha interrupcion debera realizarse el control de los motores.

Te he puesto la patita RB0 ya que es la interrupcion externa!

Suerte!!!Giño
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Gjalken en 13 de Enero de 2006, 08:09:00
otra consultita, los pines que no utilize del PIC debo conectarlos a algo (5V) o los puedo dejar sin coneccion????

Utilizando el MicroCode Studio Plus se podria meter un retardo dentro de un ciclo for ??? algo asi como

Detenido:
    FOR x=1 to "algun valor"
    "codigo de retardo max"
    RETURN

o utilizar el SLEEP que por lo visto soporta tiempo de 65535 segundos, pero por lo visto este utiliza el WATCHDOG TIMER,

como puedo hacer para que el pic me reconozca un flanco de subida?
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Chaly29 en 13 de Enero de 2006, 08:20:00
Hola Gjalken, acá te dejo una rutina de retardo de aproximadamente 2 horas, digo aproximada porque le faltan casi 4 segundos para las 2, pero como para conseguir mayor precisión lleva un buen tiempo y en tu caso 4 segundos no influye, acá esta:

CONTADOR1      EQU      .13
CONTADOR2      EQU      .14
CONTADOR3      EQU      .15
CONTADOR4      EQU      .16

DEMORA
   movlw   .48
   movwf   CONTADOR1
RET1
   movlw   .255
   movwf   CONTADOR2
RET2
   movlw   .255
   movwf   CONTADOR3
RET3
   movlw   .255
   movwf   CONTADOR4
RET4
   clrwdt
   decfsz   CONTADOR4,F
   goto   RET4
   decfsz   CONTADOR3,F
   goto   RET3
   decfsz   CONTADOR2,F
   goto   RET2
   decfsz   CONTADOR1,F
   goto   RET1
   return

Esta rutina es puramente por software, las hay también por hardware y combinadas, pero se te complicaría un poca mas la cosa.

Los pines que queden libres del micro simplemente no los conecte y listo, ya que si los conectas corres el riesgo de quemar el PIC.

Espero te ayude, suerte.

Atte. CARLOS


Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Gjalken en 13 de Enero de 2006, 08:33:00
Vamos a probar gracias por sus respuestas, les cuento como me fue Sonrisa

Chaly29, ese codigo que me enviaste esta en C????es que estaba tratando de hacerlo con l MicroCode Studio Plus, se puede? o tendria que cambiar el codigo?
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: vszener en 13 de Enero de 2006, 08:41:00
Hombre yo la verdad que para retardos grandes como 2 horas no lo realizaria por software, ¿por que no? pues sencillo, los retardos por software es hacer que nuestro pic trabaje continuamente perdiendo el tiempo, eso significa un consumo mayor, el pic siempre esta trabajando 2 horas perdiendo el tiempo por lo tanto un desgaste mayor de microcontrolador(esto puede ser despreciable pero vamos a la larga se puede quedar colgado el pic) y etc etc etc, para retardos como los tuyos aconsejo que uses un chip externo que le "diga" al pic que debe actuar sobre los motores, esto implica un consumo menor, el microcontrolador casi siempre esta en reposo........

Suerte!!!Giño
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Gjalken en 14 de Enero de 2006, 22:56:00
vszener, gracias por la sugerencia, mas no he podido lograr el retardo de dos horas con el 555, lo trate de configurar como astable, total, lo que va a reconocer el PIC va a ser un canto de subida cada dos horas, pero no he logrado hacerlo Enfurruñado se tendra que hacer con varios NE555??? estoy probando con un 555 y dos 4017 (contdores de decada) el 555 a una frec de 0.01387 Hz y los dos contadores se encargan de dividir la frec para lograr los 7200 seg (dos horas) lo pruebo mañan y les cuento si me sale.
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Nocturno en 15 de Enero de 2006, 01:46:00
Me has dejado helado Helado con el argumento del desgaste, Vszener, no lo había oído nunca.
Cuando pienso ahora el desgaste que deben tener los chips de mi PC, que no se apaga nunca, o los integrados del reloj que está siempre encendido ... loco
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: vszener en 15 de Enero de 2006, 06:02:00
Jeje...haber como dije en mi comentario:
Codigo:

...desgaste mayor de microcontrolador(esto puede ser despreciable pero vamos a la larga se puede quedar colgado el pic)....


puse que puede ser despreciable, eso si, seguro que en tu PC ni en tu reloj que siempre estan encendidos el microcontrolador no esta haciendo una rutina de espera de 2 horas!sino que tiene un periferico conectado a él que le indique el retardo(en caso que sean grandes), eso significa que tus microcontroladores que estan en el PC  o en el reloj "casi siempre" estan a la espera del los perifericos que le rodean, el microcontrolador o microprocesador simplemente actua cuando le viene la orden de algunos de sus perifericos. En resumen, el micro "casi siempre" esta a la espera.

 Lo que a la larga se quede colgado es facil, sinonimo de que se quede un microcontrolador colgado muchas veces se traduce a que se queme! hay llevas el desgaste....jeje

Pero vamos que me reitero en lo de antes, yo por lo menos no he visto un pic realizar retardos tan grandes a efectos practicos industriales ni comerciales, y si deben ser retardos precisos mucho menos!teniendo en cuenta que el desbordamiento de los timer"s no son exactos y suelen tener margenes de tolerancia bastante grandes!

Suerte!!!Giño
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: miltonmc en 15 de Enero de 2006, 11:39:00
Hola a todos.
Bueno si los micros tienen desgaste con el estar perdiendo el tiempo creo que pronto tendré muchos líos. Llorica
Ya que tengo una línea de Cargadores de baterías de ciclo profundo de alta potencia.
Y esos si pierden el tiempo como 12 horas más o menos mientras usan los A/D y los PWM.
Uso el PIC 16f877a y están funcionando desde hace  2 años, y son como muchos y nunca e tenido problemas con ninguno.
Espero que el desgaste no ocurra muy rápido ya que serán muchas las quejas. Muchas risas
De todos modos el retardo de 2 horas no es algo muy complejo ni creo que afecte el PIC ya que si fuera así muchos equipos dejaran de funcional.
Creo que en el almacén hay un programa que sirve para general retardos y funciona muy bien. Refresca el perro guardián y no deja que el micro se cuelgue.
Si no lo encuentra te lo envió por privado.
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: miltonmc en 15 de Enero de 2006, 11:47:00
Creo que aquí lo expusieron. http://miarroba.com/foros/ver.php?foroid=6510&temaid=4043855&marcar=retardos
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: kain589 en 15 de Enero de 2006, 11:57:00
Yo creo que lo que se refiere vszener, es a realizar la rutina de 2 horas completamente por software, no a que el pic trabaje sin cesar.
Otra opcion seria emplear el temporizador con un divisor exacto de esa temporizacion, si utilizas un cristal de 4Mhz puedes temporizar 50 o 60 milisegundos, y gestionar el desbordamento por interrupciones y mientras temporiza que caiga en un bule infinito: nada goto nada. Otra opcion es utilizar un cristal, de 32k por ejemplo creo que hay 1, de menor frecuencia que te permite temporizar un mayor tiempo.
Y contabilizar el numero de veces que reboza, para asi conseguir mayores temporizaciones.
Aunque estas opciones requieren que el pic este constantemente trabajando, tambien puedes hacer hibridos usando el Ne555 y si no consigues temporizar 2 horas del tiron con tiempos menores divisores exactos de 2 horas conectado a RB0 y contabilizar el numero de veces que debe cambiar hasta llegar a las 3 horas
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: miltonmc en 15 de Enero de 2006, 12:01:00
aqui esta el del almacen.
http://miarroba.com/foros/ver.php?foroid=79706&temaid=70446
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: miltonmc en 15 de Enero de 2006, 12:17:00
Hola a todos.
En la mayoría de mis diseños el micro nunca se duerme ya que esta siempre trabajando en una u otra función.
Un retardo por software de 2 horas no es mucha cosa, ya que tengo uno  que cada 12 horas cambia un dato en la eeprom. Y dura 12 horas mas y cambia de nuevo así cuando lee la eeprom sabe cuantas veces a cambiado.
Gjalken si quiere te hago una subrutina de 2horas para que hagas tu incubadora

Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Chaly29 en 15 de Enero de 2006, 12:40:00
Hola gente, el desgaste de 2 horas no es nada creo que los micros vienen diseñado para trabajar 100000 horas si no me equivoco, cuanto seria? un poco mas de 11 años sin parar. Si acá a 11 años tenemos problemas con un micro creo que nadie lo notará, aparte, de algo hay que vivir ¿NO?. Muchas risas

Gjalken la rutina que te expuse esta en asembler.

Con respecto al programa Picdel_sp anda muy bien pero no llega a demoras de 2 horas, yo lo e probado hasta el limite que dá, siendo de 2147483 Ms= 35m47s483ms en 4MHz y demora un monton, mas de una hora

Suerte

Atte.CARLOS


Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: maunix en 17 de Enero de 2006, 17:50:00
Amigos, a ver si opino un poco.

Usar un 555 para hacer un retardo de 2horas con un pic??? No les parece redundar? Más de lo mismo?

Al que me haga un retardo de 2.00000000000000 horas justas con un 555, estable en temperatura y tensión a lo largo del tiempo.... le doy 1 millón de dolares jajaja.

Estamos en la misma muchachos, para que usar un timer para otro timer para otro timer... está todo en el PIC!!   A dejar de gastar plata.  Los microcontroladores han hecho que los 555 sean OBSOLETOS cuando hay un microcontrolador presente...Luego es todo cuestion de ingenio y capacidad para programar.

Como?? Simplemente usando cualquier timer que elijan y usando contadores extras.

Si tienen preocupación por el CLOCK o el "desgaste" del pic... les digo que tengo equipos andando hace años a 20Mhz  y aún no se desgasta el PIC... a no ponerse locos.  Por ahi salen articulos de esto o aquello que no tienen mayor sentido práctico, solo sirven para divagar o para comparar empresas de microcontroladores, una dice "mis microcontroladores duran 100.000 horas" y la otra dice "los mios duran 200.000 horas".... acaso no es suficiente tiempo para que ya queden obsoltos antes que ocurra??? Aún tengo mi viejita 486 andando... y eso que es viejita eh?

Si estan preocupados por el consumo o por el "desgaste" del pic, entonces se puede o bien utilizar un clock mas chico (32 Khz por ejemplo) el cual sería suficiente si solo se quiere mover un motor paso a paso lentamente ya que a un motor paso a paso tampoco se le puede mandar los pulsos muy rápido porque las constantes físicas del mismo impiden que acepte muchos pasos por segundo!!  Entonces uno se la pasa a retardos....

La otra opción es usar el SLEEP con el timer.  Como seria esto?

No recuerdo ese pic, pero habria que ver que timer hace levantarlo de un sleep entonces

1) enciendo la interrupcion y configuro el timer
2) Reseteo el contador del timer
3) Encender Timer
4) Mandar al PIC a dormir con SLEEP
5) El evento despierta al PIC y va a la rutina de interrupcion
6) Incrementar contadores auxiliares al timer
7) Llegue a la cuenta de 2 horas?? NO? vuelvo a 2) si voy a 8
8) Mover el motor en la otra dirección.

Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Chaly29 en 17 de Enero de 2006, 18:09:00
Hola maunix, ¿sabes? tienes toda la razón, yo postee el dato de 100000 horas, ya que lo e visto por algún lado y lo recuerdo, pero mi pregunta es ¿como saben que en promedio duran 100000 horas si a lo sumo y con suerte a los IC le hacen pruebas durante 2 años y salen al mercado?

Pareciera que las fabricas tuvieran días de 137 horas  locoloco

Me parece que Gjalken en ves de orientarse a una solución esta mas perdido con las respuestas que le dimos. Muchas risasMuchas risas

Atte. CARLOS


Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Gjalken en 17 de Enero de 2006, 19:09:00
la verdad, es que si, toy medio perdido, aunque tb habia visto ese comando SLEEP solo que lo habia pensado primero haciendo el retardo con el 555 y dos 4017 y la señal resultante enviarla al RB0 que por lo que me dijeron aca se podia hacer algo con interrupciones, pero en ese punto me quede pegao, me colgue yo antes que el PIC Muchas risas, aunque pensando en la otra opcion de que solo el pic que se encargue de todo (retardo de +- dos horas (unos pocos minutos mas, unos pocos minutos menos), no creo que PIC haciendo el retardolo se gaste mucho, y si miltonmc tiene uno que tiene una demora de 12 horas, creo que dos horas no es tanto. ahh el programa con el que estoy trabajando (en realidad aprendiendo) es el MicrocodeStudio Plus. gracias por sus respuestas.
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: kain589 en 18 de Enero de 2006, 06:30:00
Si no recuerdo mal en el f84 cuando mandas el pic a dormir Sleep, deja de funcionar el oscilador interno y por tanto se detiene el timer, habria que irse a un modelo que permita excitar el timer con un oscilador externo, tipo timer 1 en multitud de pics como el 876, para pics mas parecidos al f84 podria optarse por usar la serie 16f62x,16f64x con patillaje equivalente, aunque no estoy seguro de que permita el uso de oscilador externo todo es mirar los datasheet
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: Azicuetano en 25 de Enero de 2006, 18:01:00
Hola colegas!

Un retardo de 2 horas?? Se puede utilizar el LM555 ??? Pues... si que se puede pero... no es necesario y te ahorras pasta. Si el PIC puede temporizar... por que no utilizarlo?? Si nos ponemos a plantear teorías de desgaste... podríamos pensar que hasta un simple termómetro nos puede desgastar el A/D del PIC.

Yo creo que hay que machacar al PIC al máximo, con una programación correcta no hay nada que temer. Un PIC no cuelga así porque así. Un buen diseño electrónico y una buena programación hacen que un PIC trabaje al 100% de sus posibilidades hasta que Dios decida que ese PIC se valla al otro mundo.

El dinero también es importante, si se hacen 5 o 10000 unidades de un producto hay que tenerlo en cuenta. Un LM555 no cuesta mucho pero (0.20 * 10000 = 2000 Euros).

Bueno, es agradable leer la forma de pensar de los demás y ahí va mi humilde opinión. Para que la gente que disfruta como yo de este foro se entretenga un rato.

Un saludo desde Alicante.
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: maunix en 02 de Febrero de 2006, 14:38:00
Azicuetano coincido contigo, de hecho lo mencione unos posts antes que no tiene sentido usar un 555 para temporizar si nuestro pic está al vicio tanto tiempo!

Si lo que se quiere es ahorrar consumo y ahorrar dinero, lo mejor es un pic16 con nano watt technollogy.  Tienen oscilador que se le puede cambiar la frecuencia y hacerlo andar a 32Khz por horas... con timer y modo sleep quedan consumiento eso... nanowatts!!  Entonces que mejor que eso?

Es una sugerencia.

Y al que le guste usar mucho hardware para que el pic no haga nada... allá el, el día que tenga que montar 100 de esas placas se va a acordar de nosotros jaja que solo usaremos un pic (sin necesidad de cristal, ni circuito de reset, ni 555, ni capacitores de compensacion del cristal... ) y lo podremos montar mucho más rápido.

Saludos
Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: maunix en 02 de Febrero de 2006, 14:45:00
Escrito originalmente por Chaly29
..., pero mi pregunta es ¿como saben que en promedio duran 100000 horas si a lo sumo y con suerte a los IC le hacen pruebas durante 2 años y salen al mercado?

Pareciera que las fabricas tuvieran días de 137 horas  locoloco




Carlos respecto a esto hay dos criterios.

En los semiconductores según leí hace mucho, se toman tiempos de decaimiento o envejecimiento del semiconductor, el cual aumenta cuando aumenta la potencia que se le hace pasar por el...  

Alguna vez vieron a su pentium que se deje de funcionar por envejecerse o en realidad fue por un golpe de tensión?

Los datos de envejecimiento son "chapa" es decir "publicidad" para el fabricante, pero por supuesto no hay forma de problarlo

Otra cosa que se hace es en electrónica medir el MBTF o Mean Time Between Failures que significa tiempo promedio entre fallas.  Ese es mas facil.
Por ejemplo en un disco duro, ponen 1000 discos duros a funcionar 1000 horas.  Eso suma 1 millon de horas, si cada 100 horas falló un disco entonces el tiempo promedio entre fallas será de 100.000 horas. (10 fallaron en 1 millon de horas cada 100.000 horas promedio).  Y nuevamente todo esto es solo "un parámetro", porque nos compramos el disco y tal vez nunca nos falle y si falla lo mas probable sea porque le pegamos una patada a la PC sin querer o tal vez tengamos justo la mala suerte de qeu el disco falle SOLITO sin que uno le haga nada... en esto es cuestión de estadisticas.

Ya saben la frase "si hay un rico que gana u$s 100.000 por mes y un pobre que gana u$s 10 por mes" para la estadística el promedio de ingreso es u$s 50.005 per cápita...  osea , todo depende si fuimos afortunados o no.

De todas formas insisto en lo mismo, NO TIENE CASO hacerse el ahorrativo con el consumo del pic para que este "viva mas" ... solo tiene sentido si lo alimentamos y queremos ahorrar el consumo.

Saludos

Título: RE: Tiene un maximo el retardo que puede manejar un PIC16F84A?
Publicado por: vszener en 03 de Febrero de 2006, 05:14:00
Jopeeee no veas la que estan montando!jeje vamos haber, dije y vuelo a decir que "es despreciable" perooooo e insito jeje que realizar subrutinas de retardo de codigo puras y duras para mi modo de ver es una tonteria cuandoooo hablamos d etemporizaciones grandes!, despues salio a la palestra el caso del timer!jeje bien dije, que me parecia mejor opcion peroooooo que en el caso de ser interrupciones precisas tendriamos que realizar una subrutina de redondeo o lo que sea para compensar el timer ya que no es exacto!jeje y en caso de querer una interrupcion exacta o lo mas exacta posible!necesitamos una interrupcion generada del exterior! y eso hace que nuestro pic se desentienda de todo el jaleo de contar!(y haber quien se acordara entonces de quien en cuanto veais que el tiempo ya noe s exacto y "eso esta desfasao" me refiero al sistema claro esta!jeje), bueno sin animo de crear polemicas, simplemente de poner mi opinion, decir y de nuevo repetir, que para temporizaciones largas recomedacion del uso del timer, para temporizacione slargas y precisas, por supuesto utilizacion de generar la interrupcion del exterior(asi se modulan el programa!), y por supuesto añadir que si nuestro pic realiza varias cosas, la interrupcion mejor del exterior!imaginate si se averia....vete a saber de que a sido si no tienes modulado el programa!pero bueno.....como dije en otro mensaje...es cuestion de formas de programar y diseñar circuitos....

Suerte!!!Giño