TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: RamonGarcia en 17 de Octubre de 2021, 15:09:05

Título: Pic
Publicado por: RamonGarcia en 17 de Octubre de 2021, 15:09:05
Buenas, alguien puede apoyarme a programar con el pic16f877a en ccs compiler, necesito programar seis reles, alguien me ayuda de favor.
Título: Re:Pic
Publicado por: Picuino en 17 de Octubre de 2021, 15:55:18
Hola RamonGarcia, aquí solemos ayudar, pero no hacemos milagros. Tendrás que explicar cuál es tu problema con más detalle.
Título: Re:Pic
Publicado por: RamonGarcia en 17 de Octubre de 2021, 17:05:02
Hola Picuino, estoy dando de alta un rele mediante la pulsación de un botón, como podría habilitar más reles con ese boton, es decir, que se active por ejemplo el primero, si no que modifique el segundo o así susecivamente, no se si me explique bien.
Título: Re:Pic
Publicado por: DominusDRR en 17 de Octubre de 2021, 19:41:55
Hola Picuino, estoy dando de alta un rele mediante la pulsación de un botón, como podría habilitar más reles con ese boton, es decir, que se active por ejemplo el primero, si no que modifique el segundo o así susecivamente, no se si me explique bien.

¿O sea pulsas el botón y se activa el primer relé, luego vuelvo a pulsar y se activa el segundo, pulso nuevamente y se activa el tercer relé, y así sucesivamente?
Título: Re:Pic
Publicado por: Picuino en 18 de Octubre de 2021, 13:47:26
Si posteas el programa que tienes ya hecho y los errores que te encuentras, podremos ayudarte.
Un saludo.
Título: Re:Pic
Publicado por: RamonGarcia en 23 de Octubre de 2021, 21:13:14
Este es mi código y de esta manera activo un relé, pero lo que quiero es que ahora otro relé se desactive a la vez, por favor podrían ayudarme.

#include<18F4550.H>
#fuses HSPLL, PLL5, USBDIV, NOWDT, CPUDIV1, NOPROTECT, NODEBUG, NOPBADEN, NOLVP, NOVREGEN  //20MHz
#use delay(clock=40MHz)
#define LCD_DATA_PORT getenv("SFR:PORTD")
#BYTE PORTA = 0xf80
#BYTE PORTB = 0xf81
#DEFINE Rele PORTA,0
#DEFINE Push PORTB,0
VOID MAIN()
{
   BOOLEAN start=0;
   SET_TRIS_A(0);             //Configura el puerto A como Salida
   SET_TRIS_B(0b00000001);    //Configura el puerto RB0 Entrada
   PORTA=0;
   WHILE(TRUE)                // Haga por siempre
   {
      //Pregunta por el botón
      if(bit_test(Push))
      {
         delay_ms(200);       //Anti-Debounce
         //Instrucción para contabilizar una pulsación del botón
         while(bit_test(Push))
         {
            delay_ms(200);       //Anti-Debounce
         }
         start = !start;      //Cambia el estado lógico de start
      }
     
      //Activa o desactiva el relé
      if(start)
         bit_set(Rele);    //Activa Rele
      else
         bit_clear(Rele);  //Desactiva rele
           
 
   }
   }
Título: Re:Pic
Publicado por: Eduardo2 en 24 de Octubre de 2021, 03:45:31
Este es mi código y de esta manera activo un relé, pero lo que quiero es que ahora otro relé se desactive a la vez, ....
¿Y al otro relé quien lo activa?  Antes hablaste de que eran varios relés ¿Cómo se activan?

Citar
por favor podrían ayudarme.
Lo ponés muy difícil, todavía no se entiende como manejar los relés.
Título: Re:Pic
Publicado por: RamonGarcia en 24 de Octubre de 2021, 19:45:29
Mira así es como tengo mi circuito, tengo esos relés y quiero saber si puedo accionar esos mediante un botón, pero mientras un relé sea normalmente abierto el otro que sea normalmente cerrado o viceversa.
Título: Re:Pic
Publicado por: Eduardo2 en 24 de Octubre de 2021, 20:46:38
Mira así es como tengo mi circuito, tengo esos relés y quiero saber si puedo accionar esos mediante un botón, pero mientras un relé sea normalmente abierto el otro que sea normalmente cerrado o viceversa.

Hay 6 relays y un pulsador --> Existen infinitas maneras de activarlos/desactivarlos.

Ya que sos incapaz de describir la secuencia, probá explicando cual es la aplicación de esto.
Título: Re:Pic
Publicado por: RamonGarcia en 24 de Octubre de 2021, 21:20:42
La secuencia de los relés es: Mientras RL4 esta descativado, deben estar activados lo que son RL3 y RL2, luego RL3 activado y RL4 desactivado, RL3 activado mientras que RL5 y RL4 desactivados, RL6 activado y RL1 desactivado.
Título: Re:Pic
Publicado por: KILLERJC en 24 de Octubre de 2021, 21:26:58
No tiene ningún sentido tu secuencia. Si es así es mejor crear un array con cada secuencia y luego al detectar el botón, poner la secuencia que le corresponde.

Si ahora es una secuencia de 1 si y todos los demás no, entonces lo mejor es hacer una rotación de los bits, siempre y cuando estén en orden las salidas.

Mejor explicar correctamente lo siguiente:
- Indicar a que salidas pertenecen RL1,2,3,4,5,6 Es decir si todos al PORTB y cuales salidas.
- Indicar si esto de arriba puede ser cambiado, es decir poner RB1 como RL1, RB2 como RL2, etc..
- Luego explicar claramente toda la secuencia, ya que lo explicado no tiene mucho sentido.
Título: Re:Pic
Publicado por: Eduardo2 en 24 de Octubre de 2021, 22:56:31
La secuencia de los relés es: Mientras RL4 esta descativado, deben estar activados lo que son RL3 y RL2, luego RL3 activado y RL4 desactivado, RL3 activado mientras que RL5 y RL4 desactivados, RL6 activado y RL1 desactivado.

El estado:
RL1 = 0
RL2 = 1
RL3 = 1
RL4 = 0
RL5 = 0
RL6 = 1
Cumple todo lo que acabas de escribir, por lo tanto, esa descripción es incompleta.