⚡ Descuentos en cursos en video - Lleva tu aprendizaje técnico al siguiente nivel y aprovecha precios especiales antes de que termine la oferta. 🔥 Aprovechar oferta ahora 🔥
Microcontroladores y sistemas digitales

No sé cómo controlar un relé y encendido de foco(2da parte)

Carlos Andrade2016
hace 9 años
hace 9 años
Gracias mi amigo Ing. Santiago me ayudó mucho tu respuesta en la pregunta pasada, quería decirte más dudas pero no me dejaron preguntarte. Tengo un crystal de 4MHz y está bien usaré un RC. Sobre el Proteus ya lo tengo y sé un poco el uso del software. Tal vez compre un Relay que maneje 5V para no usar el 7805. El Diodo 1N4007 no es el que viene en el circuito que me mandaste no importa? El transistor del tipo BC 548 no viene en el circuito, viene el BC 547 no importa? Algo más tienes un ejemplo de programa en MPLab hecho? PD: Perdón pero me equivoqué y pensé que ya podía darle solucionado
magiel
magiel
20
hace 8 años
hace 8 años
Saludos estimado, con respecto al cristal a que te refieres con que usaras un RC? Lo del diodo no importa, es para protección, el transistor solo debes observar que el emisor quede conectado a masa. Lo del programa podrías decir bajo que condiciones quieres encender el relé, o mejor aun subir el diagrama que usas y el compilador que manejas. Sigo atento para seguir colaborando amigo, saludos.
Carlos Andrade2016
hace 8 años
hace 8 años
Hola amigo, gracias por su colaboración... Sobre el RC ya no importa... Ahora tengo un proyecto que es controlar luces inalámbricamente con modulos RF (Radio frecuencia) con cuatro botones (Push button) y cada vez que mande la señal quiero activar un foto pero ahora sin relé, sólo quiero usar un transistor. Crees que se pueda sin relé? La progamación ya la tengo en MPlab pero solo me falta hacerlo funcionar en Proteus y después en físico. Qué me recomiendas hacer?
magiel
magiel
20
hace 8 años
hace 8 años
Saludos amigo, si se puede. Puedes usas un triac, con eso controlas los focos e incluso puedes variar la intensidad con la que encienden. Seguimos atentos. Saludos!
Carlos Andrade2016
hace 8 años
hace 8 años
Saludos amigo, eso me ha interesado... El triac se dispara con los 5v quE salgan del pic? Busque y VI QUE se tiene que poner una resistencia de 10k entre el transistor y el pic verdad?
magiel
magiel
20
hace 8 años
hace 8 años
Saludos de nuevo amigo, hay dos maneras, una de ellas es usando un optotriac que es activado desde el pic con los 5v y una R de 330 - 470 ohm, y este opto acoplador es el que activa un triac común y corriente. La otra opción te ahorra espacio, y es la de usar un triac de compuerta sensible, el se activa con una resistencia de 470 ohm aproximadamente desde una salida del pic. Seguimos apoyando compañero.
Carlos Andrade2016
hace 8 años
hace 8 años
Ah okay ojalá encuentre de esos triac estaba viendo que me sirve el BT150 y BT151 entonces se dispara con una salida del pic y poniendo una resistencia de 470Ohms pues... Tengo una duda, hoy usé un modulo radiofrecuencia para hacerlo funcionar antes de implementarle el pic y no manda la señal me puedes decir por qué? El modulo transmisor y receptor es a 433Mhz. Gracias y buenas noches
magiel
magiel
20
hace 8 años
hace 8 años
Buen día amigo, que circuito utilizaste para enviar datos a través de los módulos, por si solo no envían ninguna señal, quiero recomendarte que los pruebes con algún par (codificador y decodificador), pero personalmente los probaría con el pic desde un principio. La desventaja de esto es que usarías un pic para el transmisor y otro para el receptor. Cualquiera que sea tu elección, estoy dispuesto a seguir ayudando. Suerte!
magiel
magiel
20
hace 8 años
hace 8 años
Buen día amigo, que circuito utilizaste para enviar datos a través de los módulos, por si solo no envían ninguna señal, quiero recomendarte que los pruebes con algún par (codificador y decodificador), pero personalmente los probaría con el pic desde un principio. La desventaja de esto es que usarías un pic para el transmisor y otro para el receptor. Cualquiera que sea tu elección, estoy dispuesto a seguir ayudando. Suerte!
Carlos Andrade2016
hace 8 años
hace 8 años
Buen día, te enviaré la imagen de los circuitos aunque respondiendo a tu pregunta quiero usar el codificador y decodificador junto con PIC... Quería que cuando mande la señal del Encoder y los reciba el Decoder, las cuatro salidas del Decoder leguen al PIC(16f84a) y los interprete como cuatro pulsadores entonces este haga la función de encender cada led depende del botón que pulse (Como tengo programado el PIC). Pero me dices que tengo que usar dos PIC es obligatorio usar dos?
magiel
magiel
20
hace 8 años
hace 8 años
Saludos amigo, el diagrama es el correcto, no es obligatorio 2 pic, si vas a usar los codificadores u decodificadores entonces solo el pic en el receptor es suficiente. Eso te simplifica la programación amigo. Cualquier cosa estamos atentos, aunque ya tienes todo casi listo. Suerte!!
Carlos Andrade2016
hace 8 años
hace 8 años
Saludos amigo, el diagrama es el correcto, no es obligatorio 2 pic, si vas a usar los codificadores u decodificadores entonces solo el pic en el receptor es suficiente. Eso te simplifica la programación amigo. Cualquier cosa estamos atentos, aunque ya tienes todo casi listo. Suerte!! Saludos amigo, eso me quita peso de encima porque solo tengo un Pic y entonces tengo que poner el micro en el receptor para que funcione o solo es una sugerencia? La programación que pienso utilizar es este: [code:1] list p=16F84 #INCLUDE P16F84.inc ;__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;__config 0x3D18 org 0x00 ; Vector de Reset goto INICIO org 0x04 ; Vector de Interrupcion goto ISR ;****************************** ;** Configuracion de Puertos ** ;****************************** INICIO bsf STATUS, RP0 ; Cambio al banco 1 movlw 0XF0 ; Parte baja (RB0-RB3) PB como salida movwf TRISB ; Parte alta (RB4-RB7) como entrada bcf STATUS, RP0 ; Cambio al banco 0 LIMPIA_PUERTOS clrf PORTB ; Limpiar Puerto B ;************************************* ;** Configuracion de Interrupciones ** ;************************************* CONF_INTERRUPCION bsf INTCON, RBIE ; Habilitar interrupción externa bcf INTCON, RBIF ; Limpiar bandera de interrupción bsf INTCON, GIE ; Habilitar interrupciones globales ;**************************************** ;** Rutina de Servicio de Interrupcion ** ;**************************************** ISR bcf INTCON, GIE ; Deshabilitar interrupciones CHECA_BOTON btfsc PORTB, 4 goto $+3 call ANTIRREBOTES call LED0 btfsc PORTB, 5 goto $+3 call ANTIRREBOTES call LED1 btfsc PORTB, 6 goto $+3 call ANTIRREBOTES call LED2 btfsc PORTB, 7 goto $+3 call ANTIRREBOTES call LED3 call ANTIRREBOTES goto SALIDA_ISR LED0 movlw 0x01 movwf PORTB return LED1 movlw 0x02 movwf PORTB return LED2 movlw 0x04 movwf PORTB return LED3 movlw 0x08 movwf PORTB return ANTIRREBOTES btfss PORTB, 4 goto ANTIRREBOTES btfss PORTB, 5 goto ANTIRREBOTES btfss PORTB, 6 goto ANTIRREBOTES btfss PORTB, 7 goto ANTIRREBOTES return SALIDA_ISR bcf INTCON, RBIF ; Limpiar bandera de interrupcion bsf INTCON, GIE ; Habilitar interrupciones ;retfie ; Regresar de la interrupcion ;******************** ; ** Fin de la ISR ** ;******************** ;************************************* ;** Rutina de retardo de 5 segundos ** ;************************************* RETARDO.5 movlw d'50' movwf CONT3 CICLO3 movlw d'97' movwf CONT2 CICLO2 movlw d'33' movwf CONT CICLO1 decfsz CONT, f goto CICLO1 decfsz CONT2, f goto CICLO2 decfsz CONT3, f goto CICLO3 return ;******************* ;** Fin de rutina ** ;******************* end [/code:1] Me podrias decir que tengo mal porque cuando lo simulo en Proteus después de cierto tiempo me sale esto: [PIC16 CORE] PC=0x0011. Stack overflow executing CALL instruction. [U1]
magiel
magiel
20
hace 8 años
hace 8 años
Saludos amigo en tu rutina de interrupción te recomiendo que cheques el pin de donde proviene la interrupcion y si no se cumple la condición entonces pases a la siguiente condición, es decir los call antirrebote y call LED los haces en rutinas aparte para que no se te quede el programa en la interrupción y por eso te suelta ese error en proteus, porque aunque no se cumpla la condición igual ejecuta el call antirrebote y call led. Si no me entiendes me avisas y te respondo desde la pc algo mas gráfico amigo. Saludos.
Carlos Andrade2016
hace 8 años
hace 8 años
Saludos, la verdad me vendría muy bien que explicaras gráficamente. Lo que entiendo es que las condiciones se están ejecutando cuando no se debe ejecutar, entonces estaría bien borrar las rutinas antirrebote?
magiel
magiel
20
hace 8 años
hace 8 años
Saludos amigo, básicamente lo que te digo es que cuando haces: btfsc portb, 4. Le dices al programa que si se cumple esa condición entones ejecuta la linea que le sigue, caso contrario se salta la instrucción que le sigue y pasa a la siguiente que en tu caso son dos, una de antirrebotes y otra llama al led. De allí en adelante pasa lo mismo. Espero me entiendas, saludos compañero.
Carlos Andrade2016
hace 8 años
hace 8 años
Saludos, si le entendí pero no se como modificarlo y cambie el código porque pensé que poniendo mejor el puerto a iba a funcionar pero sigue igual ahora lo tengo asi... [code:1:2e1699f637] list p=16F84 #INCLUDE P16F84.inc ;__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC cblock 0x20 CONT CONT2 CONT3 endc org 0x00 ; Vector de Reset goto INICIO org 0x04 ; Vector de Interrupcion goto ISR ;****************************** ;** Configuracion de Puertos ** ;****************************** INICIO bsf STATUS, RP0 ; Cambio al banco 1 MOVLW B'00000000' MOVWF TRISB MOVLW B'11111111' MOVWF TRISA bcf STATUS, RP0 ; Cambio al banco 0 ;LIMPIA_PUERTOS clrf PORTA ; Limpiar Puerto A clrf PORTB ; Limpiar Puerto B ;************************************* ;** Configuracion de Interrupciones ** ;************************************* CONF_INTERRUPCION bsf INTCON, RBIE ; Habilitar interrupción externa bcf INTCON, RBIF ; Limpiar bandera de interrupción bsf INTCON, GIE ; Habilitar interrupciones globales ;**************************************** ;** Rutina de Servicio de Interrupcion ** ;**************************************** ISR bcf INTCON, GIE ; Deshabilitar interrupciones CHECA_BOTON btfsc PORTA, 0 ;goto $+3 call ANTIRREBOTES CALL LED0 btfsc PORTA, 1 ;goto $+3 call ANTIRREBOTES CALL LED1 btfsc PORTA, 2 ;goto $+3 call ANTIRREBOTES CALL LED2 btfsc PORTA, 3 ;goto $+3 call ANTIRREBOTES CALL LED3 call ANTIRREBOTES goto SALIDA_ISR LED0 BSF PORTB, 0 return LED1 BSF PORTB, 1 return LED2 BSF PORTB, 2 return LED3 BSF PORTB, 3 return ANTIRREBOTES btfss PORTB, 0 goto ANTIRREBOTES btfss PORTB, 1 goto ANTIRREBOTES btfss PORTB, 2 goto ANTIRREBOTES btfss PORTB, 3 goto ANTIRREBOTES return SALIDA_ISR bcf INTCON, RBIF ; Limpiar bandera de interrupcion bsf INTCON, GIE ; Habilitar interrupciones retfie ; Regresar de la interrupcion ;******************** ; ** Fin de la ISR ** ;******************** ;************************************* ;** Rutina de retardo de 5 segundos ** ;************************************* ;RETARDO.5 ; movlw d'50' ; movwf CONT3 ;CICLO3 movlw d'97' ; movwf CONT2 ;CICLO2 movlw d'33' ; movwf CONT ;CICLO1 decfsz CONT, f ; goto CICLO1 ; decfsz CONT2, f ; goto CICLO2 ; decfsz CONT3, f ; goto CICLO3 ; goto CHECA_BOTON ;******************* ;** Fin de rutina ** ;******************* end[/code:1:2e1699f637]
magiel
magiel
20
hace 8 años
hace 8 años
Saludo amigo me parece en la parte que dice ";goto $+3" debe ser: goto $+2; No eh compilado tu código pero prueba y comentanos que tal te va. Saludos
Reparaciones similares solucionadas

¿Conoces una solución?

¡Aprende a reparar con estos cursos YoReparo!

4.25
(8)

Reparación de Placa Main TV LED con el Ing. Picerno

Ing. Alberto H. Picerno
$ 40 USD
$ 20 USD
4.73
(22)

Curso Reparación de Fuentes Conmutadas de PC y Equipos Electrónicos

Maximiliano Resch
$ 40 USD
$ 20 USD
4.6
(10)

Curso Localización de Fallas en Refrigeración en Heladeras/Neveras On/Off

Yamil Alarcón
$ 29 USD
$ 12 USD
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos?
Regístrate gratis