Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

06/03/2011 #1

Avatar de Meta

Activar ventiladores con un PIC
Hola:

Tengo intención de hacer algo con un PIC pequeño que puede ser el 12F508 o el 12C509 que son los que tienen el local últimamente. Consiste en pulsar un botón conectado al PIC12F508 y active un ventilador de PC o cooler. A los 3 minutos de funcionamiento, se enciende un aparato listo para ser refrigerado gracias al ventilador. Cuando quiera apagar el aparato, pulso el botón del PIC12F508 y el aparato se apaga, mientras el ventilador sigue en funcionamiento durante 5 minutos, luego se apaga.

También se puede hacer con un PIC16F84A.

Este es el funcionamiento. Quería hacerlo mediante retardos pero el PIC se queda esclavo, mejor con el timer0.

¿Alguna sugerencia sobre el diseño de este pequeño circuito?

Saludo.
06/03/2011 #2

Avatar de pandacba

Depende en que lo programes si en asm, en basic o en C
En basic si los retardos no son de gran presición se utiliza una rutina hasta obrener eltiempo que deseas y luego activas el aparto que quieras
06/03/2011 #3

Avatar de Vegetal Digital

Hola Meta, no creo que tengas muchos problemas para activar el cooler con un transistor o algo así, y si usas la fuente atx la activas directo con el cable verde. El programa como vos dijiste lo mejor es con el timer asi que no se que dudas podras tener además tenes mucha experiencia. Por aquí te seguiré atento con el proyecto, suerte y saludos.
06/03/2011 #4

Avatar de Meta

Buenas:

Se trata de diseño, me puedo encontrar personas que me den ideas mejores que yo aunque el circuito sea simple. No usaré una fuente de PC, usaré un transformador sencillo como este, ya que la idea es para clientes.



Se que estos transformadores a pesar de su bajo coste, no son muy estables que digamos, pero para escapar, metes reguladores como el 7812 está bien.



El ventilador funciona junto con el PIC este mismo transformador, luego el aparato a refrigerar, tiene su propia fuente de alimentación.


Saludo.
06/03/2011 #5

Avatar de snakewather

Slaudos META

yo creo que con el PIC12F508 esta mas que bien y si lo programas en ASM usando retardos anidados no se te queda esclavo yo he usado hasta 7 delays anidados para crear un retardo de una hora. pero con el 16F84, si es con el 12F508 creo que a 4 si llega, y para activar el ventilador igual directo del pic al ventilador pero nunca esta de mas un TIP120, igual le puedes agregar leds indicadores se me ocurre:

LED Verde ON:ventilador de PC o cooler

LED Rojo ON: enciende un aparato

LED Amarillo parpadeando y luego todos LEDS se apagan: el aparato se apaga, mientras el ventilador sigue en funcionamiento durante 5 minutos, luego se apaga.

Esta buena la idea que me late que tambien me animo a acerlo igual y con PBP o CCS sale de volada.
06/03/2011 #6

Avatar de Meta

Hola:

Buenísima idea . Está claro que hacerlo en ASM voy a pegarme mucho tiempo en el ordenador. Está claro que hay que usar interrupciones. Mejor hacerlo en C, lo que no tengo idea del CCS que sólo lo he probado hace años por el aire. Si dices que lo haces al vuelo, ya me dirás. Te dejaré algoritmo muy fácil de lo que quiero.

Ahora si que me estás dando ideas. ¿Puedes hacer unas cosas más? Por ejmeplo:

LED Verde ON:ventilador de PC o cooler.

LED Rojo ON: enciende un aparato.

LED Amarillo parpadeando y luego todos LEDS se apagan: el aparato se apaga, mientras el ventilador sigue en funcionamiento durante 5 minutos, luego se apaga.

Este que dices arriba está bien para el 12F508.




Ahora para el 16F84A que es el que tengo y tiene EERPOM interna.

Capacidad de seleccionar con otro pulsador que se apague en 1 m., 5 m. y otro en 20 m. Es decir, predeterminado que sea de 5 minutos, al pulsar el otro pulsador puedes hacer como uin incremnento de escoger los tiempos como dije. 1, 5 ó 20 minutos.

Otra cosa más, el tercer botón que pueda escoger otros tiempos entre 1 seg., 1 m., y 3 m. Puedes seleccionarlo con incremento de este tercer botón. Por ejemplo: Si predeterminado es 1 segundo, y quiero que sean de 3 minutos, pulso dos veces hasta configurar los 3m.

Automáticamente por cada botón pulsado de las configuraciones de tiempo se guarda en la EEPROM del 16F84A. Este PIC16F84A-04 me lo dejan rebajado unos 3.62 € frente a los 4.50 € que vale normal. Se trabajará a una frecuencia de 4 MHz.

Dependiendo ya del diseño definitivo, empezaré a pasarlo al Proteus y pondré muestras para saber sus opiniones. Voy hacer uno para el 12F508 y el otro para le 16F84A.

Muy buena idea de los Led, ni se me había ocurrido. ¿Ya no es tan fácil hacerlo en CSS?
07/03/2011 #7

Avatar de snakewather

Meta dijo: Ver Mensaje
Hola:

Buenísima idea . Está claro que hacerlo en ASM voy a pegarme mucho tiempo en el ordenador. Está claro que hay que usar interrupciones. Mejor hacerlo en C, lo que no tengo idea del CCS que sólo lo he probado hace años por el aire. Si dices que lo haces al vuelo, ya me dirás. Te dejaré algoritmo muy fácil de lo que quiero.

Ahora si que me estás dando ideas. ¿Puedes hacer unas cosas más? Por ejmeplo:

LED Verde ON:ventilador de PC o cooler.

LED Rojo ON: enciende un aparato.

LED Amarillo parpadeando y luego todos LEDS se apagan: el aparato se apaga, mientras el ventilador sigue en funcionamiento durante 5 minutos, luego se apaga.

Este que dices arriba está bien para el 12F508.




Ahora para el 16F84A que es el que tengo y tiene EERPOM interna.

Capacidad de seleccionar con otro pulsador que se apague en 1 m., 5 m. y otro en 20 m. Es decir, predeterminado que sea de 5 minutos, al pulsar el otro pulsador puedes hacer como uin incremnento de escoger los tiempos como dije. 1, 5 ó 20 minutos.

Otra cosa más, el tercer botón que pueda escoger otros tiempos entre 1 seg., 1 m., y 3 m. Puedes seleccionarlo con incremento de este tercer botón. Por ejemplo: Si predeterminado es 1 segundo, y quiero que sean de 3 minutos, pulso dos veces hasta configurar los 3m.

Automáticamente por cada botón pulsado de las configuraciones de tiempo se guarda en la EEPROM del 16F84A. Este PIC16F84A-04 me lo dejan rebajado unos 3.62 € frente a los 4.50 € que vale normal. Se trabajará a una frecuencia de 4 MHz.

Dependiendo ya del diseño definitivo, empezaré a pasarlo al Proteus y pondré muestras para saber sus opiniones. Voy hacer uno para el 12F508 y el otro para le 16F84A.

Muy buena idea de los Led, ni se me había ocurrido. ¿Ya no es tan fácil hacerlo en CSS?
R= ahhhh no se vale subir la dificultad jejejejee, Empezare por lo mas sencillo hasta llegar con la EEPROM, (Por que ando atrasado en otros proyectos del trabajo) hire postenado.

Por cierto esta bien el 16F84A y a 4MHZ esta bien aunque tambien se le puede poner uno de 12,16 o 20MHz si me ha jalado asi.

Entonces en que vas a programas en PBP o C de Microchip?
08/03/2011 #8

Avatar de Meta

Mejor hacerlo fácil. No se C para PIC, si el ASM por eso mejor hacerlo sencillo.

Entonces vamos por el 16F84A a 4 MHz que es el que me venden. Si es de 20 MHz tengo el 16F88, pero este PIC es más caro y más dificil de conseguir.

Puedes hacer el ejemplo en C. Voy hacer el esquema con el 16F84A en el Proteus y lo pasaré por aquí.

La parte que dijieste está muy bien.


LED Verde ON:ventilador de PC o cooler

LED Rojo ON: enciende un aparato

LED Amarillo parpadeando y luego todos LEDS se apagan: el aparato se apaga, mientras el ventilador sigue en funcionamiento durante 5 minutos, luego se apaga.
Voy de dejarlo el funcionamiento más simple como puede ser este:

Un aparato debe ser refrigerado lo mejor posible, al activar un dicho aparato, se activa los 12V, en el cual lo detecta el PIC16F84A.

Cuando el PIC detecte los 12V, se activan un o más ventiladores de 12VDC, controlador por el PIC.

Cuando deje de detectar los 12V el PIC, los ventiladores siguen activos al menos 3 minutos, luego se apaga.

El PIC debe tener un botón que al pulsarlo active los mismos ventiladores y quedarse encendido. Otro botón más para apagarlo y que tarde 3 minutos, otro botón más que al pulsarlo los ventiladores se apaguen inmediantamente ya.

En resumen:
El PIC contiene 3 pulsadores.
Transistor de entrada para que detecte los 12V, una entrada digital, en realidad 5V para el PIC, es como un pulsador.
Salida del PIC para controlar los ventiladores.
Salidas para cada Led, Verde, Rojo, Amarillo.

Gracias a ustedes se está haciendo mejor de lo que creía.

Los ventiladores de 12V tienen tacómetro que a su salida sueltan 5V. Es buena idea ya que con un Led te avisa que los ventiladores siga funcionando, también puedes colocarlo directo al PIC y que de el aviso de no encender el aparato ya que los ventiladores no se activan. Es una sugerencia, no tienes porqué hacerlo en este mini proyecto.


Fuente:
http://www.neoteo.com/alarma-por-rot...dor-cooler.neo

¿Alguna sugerencia más?
08/03/2011 #9

Avatar de snakewather

Hola que tal mira eso de la señal del tacometro esta bien, no he visto que haya en proteus un motor asi para simular voy a checar, ademas tu tienes de esos ventiladores de 12v que traen tacometro y si el ventilador se traba manda 5v en el tercer hilo, Te pregunto por que yo tengo puros sencillos de fuentes de PC.

Tengo un ventilador chiquito de 5Vcd este parece que si tiene tacometro pero cuando mido el voltaje en la terminal se comporta asi:

El motor esta funcionando: el tercer hilo del motor (tacometro) muestra voltaje de 3 a 4.5mv

El motor lo paro con la mano: el tercer hilo del motor (tacometro) cambia el volatje a 9.5mv

Pero son milivolts chanse y con ese pruebo solo que voy a tener que agregar un Amplificador Operacional.

"Creo por el momento esta bien asi el proyecto habra que ir checando sobre la marcha ya fisicamente lo del tacometro ya con estas modificaciones ya agarro buena forma, Saludos META"
09/03/2011 #10

Avatar de Meta

Hola:

En tu caso no lo se sobre el ventilator, mejor buscar otro. En mi caso si es así, tengo un ventilador de 50 mm (pequeño) de 12V, y en su tercer patilla suelta 5V, lo que no se si lo hace por cada vuelta o cada dos vueltas.

Tengo otra más grande que es de un microprocesador de PC de AMD de la época del Pentium IV también con tacómetro, este si lo pruebo el cable de tacómetro a masa, GND o Ground me suelta 2V, si es del cable del tacómetro al positivo, me suelta 8 V siendo 12V el de aimentación. Está claro que hay que investigar.

Lo bueno del circuito es meter dos ventiladores con tacómetro, se puede meter un transistor o opto-acoplador al PIC.

Al encender el aparato, primero debe encenderse los ventiladores al menos 1 segundo o 2, si no los detecta el PIC, el aparato no se enciende controlado por dicho PIC, es un medio de protección.

Por ahora se puede dar sugerencias juntos antes de empezar.

Un cordial saludo.
09/03/2011 #11

Avatar de kiws

Hola que tal aqui les dejo este programa lo hice en el PIc Simulator IDE, como veran mas abajo en las etiquetas prende el ventilador y un led indicando su encendido al tiempo prende un dispositivo y el led indicando su encendido, al presionar el boton de apagado deshabilita el dispositivo dejando prendido el ventilador un tiempo y despues se apaga, esperando de nuevo el boton de inicio; no pude adjuntar el diagrama por que acabo de formatear mi maquina y no tengo el proteus. Espero que les sea de ayuda


************************************************** ********************
'PIC 16f84a
AllDigital
TRISA = 255
TRISB = 0
Dim tiempo_encendido As Word
Dim tiempo_apagado As Word
tiempo_encendido = 300
tiempo_apagado = 500
menu:
If PORTA.2 = 1 Then 'boton de encendido
Goto operacion
Else
Goto menu 'si no es presionado el boton vuelve para esperar
Endif
operacion:
PORTB.0 = 1 'salida al ventilador
PORTB.7 = 1 'led indicando el ventilador encendido
WaitUs tiempo_encendido 'tiempo de espera para encender el dispositivo
PORTB.6 = 1 'encendido del dispsitivo a refrigerar
PORTB.1 = 1 'led indicando que el dispositivo esta siendo refrigerado
espera:
If PORTA.2 = 1 Then 'boton para apagar el sistema
PORTB.6 = 0 'apaga el dispositivo refrigerado
PORTB.1 = 0 'apaga el led indicador de el dispositivo
WaitUs tiempo_apagado
PORTB.0 = 0 'apaga el ventilador
PORTB.7 = 0 'apaga el led del ventilador
Goto menu 'vuelve a esperar el boton de nuevo
Else 'al no ser presionado el boton vuelve a escanear
Goto espera 'vuelve a esperar que presiones el boton de apagado
Endif

End
************************************************** ********************
10/03/2011 #12

Avatar de Meta

Gracias por el código.

No se nada de ese lenguaje y me parece muy fácil de entender.

Sería bueno hacerlo en C también para ver como es. De paso lo entreguaré en ASM, ese lenguaje si que tardaré en hacerlo funcionar.

Buen trabajo.
10/03/2011 #13

Avatar de Chelouruguay

Hola, quieres una mano con el soft o con el hardware del proyecto?.
En ASM estoy bastante practico.

Saludos Meta!
10/03/2011 #14

Avatar de Meta

Buenas:

Gracias por la sugerencia. Primero antes que nada, voy a hacer el cicuito con el 16F84A en Proteus, si todo está bien, adelante. Si no es de agrado, entre todos nos ponemos de acuerdo. Estoy acostumbrado a usar e, 16F84A con el PORTA como entrada y PORTB como salida, en este caso se puede escoger el que quiera. Eso si, usaré 4 MHz en el oscilador de cristal de cuarzo.

Saludo.
10/03/2011 #15

Avatar de Chelouruguay

Por lo visto en tu primer post, el diagrama de flujo sería: (en la medida de explicacion por medio de texto aca en el foro, perdon pero no tengo Visio instalado),

0- Reset
Inicio
1- Lectura de pulsador en entrada de INT (RAX) ( Loop de espera a pulsador)
2- Si pulsador presionado: 3- Activar FAN durante 3 minutos (TMR0 a 3 minutos) (BSF PORTB,X y carga de TMR0 a 3 minutos)

4- Desborde de TMR0? : SI ? 5- Inicio de Equipo (BSF PORTB, X1) (activa rele, transistor, etc)
6- NO? Seguir cuenta
7- Lectura Pulsador (BTFSS PORTA, X) (loop2)
8- SI? Cargar TMR0 a 5 min, (BCF PORTB,X1)
9-No? Loop2
10- Desborde de TMR0? SI: BCF PORTA,X (apaga Fan)
No: loop de incremento de TMR0

Disculpa pero estoy con otros temas actualmente (proyecto para mis estudios ) y no tengo nada de tiempo como para entregarte medianamente prolijo y como corresponde.

Saludos
11/03/2011 #16

Avatar de Meta

Muy bueno. Tampoco tengo el Visio instalado. Hay que darse cuenta que las cosas en electrónica hay que hacerlas muy bien. Sólo te viene si es el PIC16F84A un sólo INT (interrupción en un pin). Ese pin precisamente RA4, tiene histéresis para evitar rebotes en los pulsadores, por eso habrá que examinar si hay que poner este integrado llamado 40106 para tener buenas señales, tal como pone en la página 516 del libro http://www.pic16f84a.org/



Parece que tienes las cosas claras.

Voy hacer el esquema y lo pongo aquí para que lo descarguen.
11/03/2011 #17


Viendo el tema ise un ejemplo para ver si le sirve.
PIC12F675 en C de CCS.
Para la simulacion lo reduje los valores asi lo cambian los valores de las definiciones.
T_INICIO_VENTILADOR 3 para tres minutos
T_ENFRIAMIENTO_FINAL 5 para 5 minutos
SEGUNDO 125 para ser mas cercano al segundo
Archivos Adjuntos
Tipo de Archivo: rar circuito con pic.rar (51,7 KB (Kilobytes), 133 visitas)
12/03/2011 #18

Avatar de Meta

Hola:

Lo he probado y funciona muy bien, lástima que donde vivo sólo me vendan el 12C509, 12F508, 16F627A, 16F84A, el 16F88 lo pedí bajo pedido. Pero el 12F675 no lo venden.


Nunca he programado C en PIC, aún así entiendo algunas cosas porque se parece al Java y a C#.

Código:
#include <main.h>
#byte timer0=0x01
#byte gpio=5
#define T_INICIO_VENTILADOR 1   
#define T_ENFRIAMIENTO_FINAL 1
#define SEGUNDO 20    //125 valor original
 unsigned char seg=0,min=0,cont=0,inicio=0,salida=1;

#int_RTCC
void  RTCC_isr(void) 
{
 if((gpio&2)==0)  // pin de STOP
   salida=0;      
 if(inicio){
   timer0=7;
   cont++;
   if(cont==SEGUNDO){
     seg++;
     cont=0;
     if(seg==60){
      min++;
      seg=0;
     }
   }
 }
 
}




void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   set_tris_a(10);
   
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);
   gpio=0;
   //TODO: User Code
   while(1){
    while((gpio&8)==8);
    inicio=1;
    salida=20;
    gpio|=salida;       // primer ventilador por 3 minuros y indicador
    while((min!=T_INICIO_VENTILADOR)&&salida);
    min=0;
    seg=0;
    if(salida)
      salida|=33;
    else
      gpio=salida;
    gpio|=salida; //la maquina mas el inidcadores
    while(((gpio&8)==8)&&salida);
    min=0;
    seg=0;
    if(salida){
      gpio=20;
      while((min!=T_ENFRIAMIENTO_FINAL)&&salida);
    }
    gpio=0;
    min=0;
    seg=0;
    inicio=0;
    salida=1;
    delay_ms(500);
   }
}
Muchísimas gracias por tu código. Ahora estamos con el PIC16F84A-04 que casi todo el mundo tiene acceso a él. Qué pena que el 12F675 no se pueda poner el tercer led como han indicado arriba.

Seguiré haciendo el esquema y lo publicaré por aquí.

Buen ejemplo haz hecho, lo guardaré porque puede servir para cualquier cosa. Por cierto, cuando los dos ventiladores se activan con el 12F675, al pulsar STOP, se paran de repente, en vez de quedarse encendido durante 54 minutos y luego el motor se para solo.

¿Vale la pena usar este Driver L293B? (Requiere 4 diodos de protección).



http://www.pic16f84a.org/index.php?o...us_Capitulo_29
12/03/2011 #19


El stop es para parar todo. La señal que prende el led azul tambien ativa el aparato al enfriar.
Para el PIC16F84 es algo parecido pero lo modifico el codigo para el PIC16F627 en un rato lo pongo.
13/03/2011 #20

Avatar de Meta

¿Por qué no usas el 16F84A?

Usaré el L293B o el L293D.



Ahora mismo estoy haciendo un diagrama. Al final usaré 4 ventiladores cooler.



Sigo con el esquema en el Proteus 7.7 SP2 y lo mostraré aquí al acabar.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.