TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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.
-
Hola RamonGarcia, aquí solemos ayudar, pero no hacemos milagros. Tendrás que explicar cuál es tu problema con más detalle.
-
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.
-
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?
-
Si posteas el programa que tienes ya hecho y los errores que te encuentras, podremos ayudarte.
Un saludo.
-
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
}
}
-
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?
por favor podrían ayudarme.
Lo ponés muy difícil, todavía no se entiende como manejar los relés.
-
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.
-
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.
-
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.
-
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.
-
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.