Ir ao conteúdo
  • Cadastre-se

Felipe Electronic

Membro Pleno
  • Posts

    3.311
  • Cadastrado em

  • Última visita

Tudo que Felipe Electronic postou

  1. Vamos pensar, como ele faz esse um segundo? 1s = 1000ms -> 1 interrupção leva = 1000 % 125 = 8mS. ou seja cada vez que se passarem oito milissegundos 125 vezes, terao passados um segundo! segunda pergunta: bom pra ler 10 e so fazer o calculo, 1000 % 10 = 100mS, ou seja equivalente a voce usar o comando delay_ms(100) dez vezes. ou setar o timer para estourar a cada 100milissegundos! terceira, não ,pois beleza contador chegou a 125 ne? então ele vai e faz a rotina, mas uma coisa, então ele a pertir de então vai executar sempre a rotina (pois ele vai estar sempre em 125, ai ja viu a maracutaia ne? então dentro do IF ele zera o contador para poder gerar o 1 segundo!
  2. So não gostei muito do datasheet da zilog... são meio confusos! to louco pra bricar com eles =D abs.
  3. Ha!! meus Z80 encore chegaram, eles me mandaram os e - mails de confirmação e tudo mais, consegui 3 amostras, agora é so aprender a mexer nesses meninos! abs.
  4. Um projeto bem legal, eu chamo de dimmerPIC, controlado a distancia por infravermelho, creio que o pessoal vai se divertir montando: os fontes: transmissor: ;Gera um codigo de 4 bits ao pressionamento de uma botao ;E o envia ao HT12E ;Autor: Felipe Neves ;Data: 06/04/09 ;Testado e inserido na placa final em 18/04/2009 ;============================================================================================== LIST P = PIC16F819 #INCLUDE "P16F819.INC" RADIX DEC __CONFIG _CP_ALL & _WDT_OFF & _MCLR_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_IO & _LVP_OFF ERRORLEVEL -302 ERRORLEVEL -205 ;============================================================================================== #DEFINE DATABUS PORTA #DEFINE UPLAMP PORTB,0 #DEFINE DOWNLAMP PORTB,1 #DEFINE UPCOL PORTB,2 #DEFINE DOWNCOL PORTB,3 #DEFINE RELAY1 PORTB,4 #DEFINE RELAY2 PORTB,5 #DEFINE TE PORTB,6 #DEFINE Q1 D_REG,0 #DEFINE Q2 D_REG,1 #DEFINE SETF1 MOVLW 0Fh #DEFINE SETF MOVWF DATABUS ;============================================================================================== CBLOCK 0X20 CONT CONT2 VARTMP D_REG ENDC ;============================================================================================== ORG 0X00 GOTO OSC_CONFIG ORG 0X04 RETFIE ;============================================================================================== ;***PARAMETROS DE configuração*** ;-PORTA: SOMENTE SAIDAS ;-PORTB: PB0 ATE PB5 ENTRADAS, PB6:SAIDA ;-NAO USA TMR0 NEM INTERRUPÇOES ;-SEM CONVERSOR A/D OSC_CONFIG: BANKSEL OSCCON MOVLW 65h MOVWF OSCCON INIT_uC: BANKSEL PORTA CLRF PORTA CLRF PORTB BANKSEL ADCON1 MOVLW 06h MOVWF ADCON1 BANKSEL ADCON0 BCF ADCON0,ADON BANKSEL TRISA MOVLW 00h MOVWF TRISA BANKSEL TRISB MOVLW h'BF' MOVWF TRISB BANKSEL INTCON CLRF INTCON BANKSEL OPTION_REG MOVLW .128 MOVWF OPTION_REG BANKSEL CCP1CON CLRF CCP1CON BCF STATUS,RP0 BSF TE SETF1 SETF BCF Q1 BCF Q2 GOTO MAIN ;=============================================================================================== ;***ROTINA PRINCIPAL*** ;FUNCIONA ASSIM, O SOFTWARE LE O ESTADO DE TODOS OS botões(VARREDURA) E VERIFICA O PRESSIONAMENTO ;DEPENDENDO DO BOTAO, O SW IRA DIRECIONAR PARA A ROTINA DE CODIFICAÇAO CORRESPONDENTE ;SAO 4 ROTINAS IGUAIS(AUMENTA E DIMINUI LAMPADA, AUMENTA E DIMINUI VENTILADOR) ;E 2 PARA ATIVAÇAO E DESATIVAÇAO DAS CARGAS, ESSAS SAO UM POUCO DIFERENTES, JA QUE O MESMO BOTAO ;DE LIGA E O DE DESLIGA ;************************************************************************************************ MAIN: ;CLRF PORTB MAIN2: BSF TE BTFSC UPLAMP CALL SEND1 BSF TE BTFSC DOWNLAMP CALL SEND2 BSF TE BTFSC UPCOL CALL SEND3 BSF TE BTFSC DOWNCOL CALL SEND4 BSF TE BTFSC RELAY1 CALL SEND5 BSF TE BTFSC RELAY2 CALL SEND6 BSF TE GOTO MAIN2 ;************************************************************************************************* ;***ROTINAS DE CODIFICAÇAO*** ;EXPLICAREI APENAS UMA DAS QUATRO ;JA QUE SAO IGUAIS SEND1 CALL DELAY_BOUNCE MOVLW 00h ;ENVIA O CODIGO DO COMANDO MOVWF DATABUS ; E CARREGA NO BARRAMENTO DE DADOS BCF TE ;HABILITA A CODIFICAÇAOI CALL DELAY ;AGUARDA UM TEMPO BSF TE ;DESABILITA TE SETF1 SETF BCF TE CALL DELAY_BOUNCE BSF TE RETURN SEND2 CALL DELAY_BOUNCE MOVLW 01h MOVWF DATABUS BCF TE CALL DELAY BSF TE SETF1 SETF BCF TE CALL DELAY_BOUNCE BSF TE RETURN SEND3 CALL DELAY_BOUNCE MOVLW 02h MOVWF DATABUS BCF TE CALL DELAY BSF TE SETF1 SETF BCF TE CALL DELAY_BOUNCE BSF TE RETURN SEND4 CALL DELAY_BOUNCE MOVLW 03h MOVWF DATABUS BCF TE CALL DELAY BSF TE SETF1 SETF BCF TE CALL DELAY_BOUNCE BSF TE RETURN ;***ESSAS AQUI SAO UM POUCO DIFERENTE*** SEND5 CALL DELAY_BOUNCE BTFSC Q1 ;ESTADO DE Q1? (1 = LIGADO; 0 = DESLIGADO) GOTO SEND_A ;LIGADO, então VAI PRA CA GOTO SEND_B ;SENAO PRA CA EXT: SETF1 SETF BCF TE CALL DELAY_BOUNCE BSF TE RETURN SEND_A CALL DELAY_BOUNCE MOVLW 04h ;CARREGA O COMANDO MOVWF DATABUS ;EM DATABUS BCF TE ;HABILITA A CODIFICAÇAO CALL DELAY BSF TE BCF Q1 ;LIMPA Q1 GOTO EXT ;RETORNA SEND_B CALL DELAY_BOUNCE MOVLW 05h MOVWF DATABUS BCF TE CALL DELAY BSF TE BSF Q1 ;NESSE CASO, SETA Q1 GOTO EXT ; E DEPOIS RETORNA SEND6 CALL DELAY_BOUNCE BTFSC Q2 GOTO SEND_C GOTO SEND_D EXT2: SETF1 SETF BCF TE CALL DELAY_BOUNCE BSF TE RETURN SEND_C CALL DELAY_BOUNCE MOVLW 06h MOVWF DATABUS BCF TE CALL DELAY BSF TE BCF Q2 GOTO EXT2 SEND_D CALL DELAY_BOUNCE MOVLW 07h MOVWF DATABUS BCF TE CALL DELAY BSF TE BSF Q2 GOTO EXT2 ;******************************************************************************************************************************************************** ;***ROTINAS DE TEMPORIZAÇAO*** DELAY MOVLW .249 MOVWF CONT DL: NOP DECFSZ CONT,F GOTO DL RETURN DELAY_BOUNCE MOVLW .100 MOVWF CONT2 DL2:CALL DELAY1MS DECFSZ CONT2,F GOTO DL2 RETURN DELAY1MS MOVLW .249 MOVWF CONT NP: NOP DECFSZ CONT,F GOTO NP RETURN ;*********************************************************************************************************************************************************** ;***FIM DO CODIGO*** END ;codificador IR receptor: ;controla os pulsos ao fotoacoplador e interpreta os dados ;Data: 28/04/2209 ;Autor: Felipe Neves LIST P = PIC16F819 #INCLUDE "P16F819.INC" __CONFIG _CP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _MCLR_OFF & _INTRC_IO & _LVP_OFF ERRORLEVEL -302 ERRORLEVEL -205 ;DEFINIÇOES: #DEFINE T1 PORTB,1 #DEFINE T2 PORTB,2 #DEFINE REDE PORTB,0 #DEFINE DATABUS PORTA ;MINHAS VARIÁVEIS CBLOCK 0X20 DADOS C1 TIME1 TIME2 TIME3 C2 D_REG D_REG2 ENDC ;DIREÇOES DO PROGRAMA ORG 0X00 GOTO INIT ORG 0X04 ;INTERRUPÇOES BTFSS INTCON,TMR0IF GOTO $+2 GOTO T0_INT BTFSS PIR1,TMR2IF GOTO $+2 GOTO T2_INT BTFSS INTCON,INTF GOTO $+2 GOTO INT_REDE RETFIE T0_INT: BTFSS D_REG,0 GOTO FIM1 CLRF TMR0 BSF T1 ; CALL PULSE1 ; BCF T1 FIM1: BANKSEL INTCON BCF INTCON,TMR0IF BCF INTCON,TMR0IE BCF STATUS,RP0 RETFIE T2_INT: BTFSS D_REG2,0 GOTO FIM2 CLRF TMR2 BSF T2 ; CALL PULSE1 ; BCF T2 FIM2: BANKSEL PIR1 BCF PIR1,TMR2IF BANKSEL PIE1 BCF PIE1,TMR2IE BCF STATUS,RP0 RETFIE INT_REDE: CALL SHORT BCF T1 BCF T2 BANKSEL INTCON BCF INTCON,INTE BSF INTCON,TMR0IE BCF INTCON,TMR0IF BANKSEL PIR1 BCF PIR1,TMR2IF BANKSEL PIE1 BSF PIE1,TMR2IE BCF STATUS,RP0 MOVF C1,W MOVWF TMR0 MOVF C2,W MOVWF TMR2 BSF INTCON,INTE BCF INTCON,INTF RETFIE ;===================FIM DAS INTs=========================== INIT: BANKSEL OSCCON MOVLW 065H MOVWF OSCCON BANKSEL PORTA CLRF PORTA CLRF PORTB BANKSEL ADCON1 MOVLW 06H MOVWF ADCON1 BANKSEL ADCON0 CLRF ADCON0 BANKSEL TRISA MOVLW 0FFH MOVWF TRISA MOVLW 01H MOVWF TRISB BANKSEL OPTION_REG MOVLW 0C4H MOVWF OPTION_REG BANKSEL INTCON MOVLW 0F0H MOVWF INTCON BANKSEL PIE1 MOVLW 02H MOVWF PIE1 BANKSEL PIR1 CLRF PIR1 BANKSEL CCP1CON CLRF CCP1CON BANKSEL T2CON MOVLW 06H MOVWF T2CON BANKSEL PR2 MOVLW 0FFH MOVWF PR2 BCF STATUS,RP0 CLRF C1 CLRF C2 MOVLW 079H MOVWF C1 MOVLW 01H MOVWF C2 BCF T1 BCF T2 BSF D_REG,0 BSF D_REG2,0 BTFSS REDE GOTO $-1 GOTO LOOP LOOP: CALL DELAY3 MOVF DATABUS,W MOVWF DADOS CALL DECODIFICA GOTO LOOP DECODIFICA MOVF DADOS,W ADDWF PCL,F RETURN GOTO UP1 GOTO DOWN1 GOTO UP2 GOTO DOWN2 GOTO LIGA1 GOTO DESLIGA1 GOTO LIGA2 GOTO DESLIGA2 RETURN RETURN RETURN RETURN RETURN RETURN RETURN RET1: CLRF DADOS RETURN UP1: ; CALL DELAY CALL DELAY MOVF C1,W XORLW 0FDH BTFSC STATUS,Z GOTO RET1 INCF C1,1 GOTO RET1 DOWN1: ; CALL DELAY CALL DELAY MOVF C1,W XORLW 079H BTFSC STATUS,Z GOTO RET1 DECF C1,1 GOTO RET1 UP2: ; CALL DELAY CALL DELAY MOVF C2,W XORLW 0FBH BTFSC STATUS,Z GOTO RET1 INCF C2,1 GOTO RET1 DOWN2: ; CALL DELAY CALL DELAY MOVF C2,W XORLW 01H BTFSC STATUS,Z GOTO RET1 DECF C2,1 GOTO RET1 LIGA1: BSF D_REG,0 CALL DELAY2 GOTO RET1 DESLIGA1: BCF D_REG,0 CALL DELAY2 GOTO RET1 LIGA2: BSF D_REG2,0 CALL DELAY2 GOTO RET1 DESLIGA2: BCF D_REG2,0 CALL DELAY2 GOTO RET1 ;=========================================================================================================================================== PULSE1: MOVLW .200 MOVWF TIME1 REF1: NOP NOP DECFSZ TIME1,F GOTO REF1 RETURN DELAY DL2: MOVLW .10 MOVWF TIME1 DL1: NOP NOP DECFSZ TIME1,F GOTO DL1 DECFSZ TIME3,F GOTO DL2 RETURN DELAY2 DL4: MOVLW .200 MOVWF TIME1 DL3: NOP NOP DECFSZ TIME1,F GOTO DL3 DECFSZ TIME3,F GOTO DL4 RETURN SHORT MOVLW .125 MOVWF TIME1 DL5: NOP DECFSZ TIME1 GOTO DL5 RETURN DELAY3 DLB: MOVLW .5 MOVWF TIME1 DLA: NOP NOP DECFSZ TIME1,F GOTO DLA DECFSZ TIME3,F GOTO DLB RETURN ;========================================================================================================================================= END ;ATE QUE ENFIM ;D ;Software de controle da placa Dimmer esquemas abaixo, divirtam se! abs.
  5. fala amigo jorge, então aqui tenho um que nem de lente fresnel precisa! abs.
  6. Olha depois que conheci o sensor Piro, a tempos que não uso outro, para ajustar a sensibilidade basta mexer nos resistores do comparador de janela, dependendo do ajuste voce conseggue dispensar ate as lentes fresnel. ou então faça somente o amplificador e use o conversor A/D do pic comparando ele com dois valores (um alto e outro baixo) para identificar a presença, fiz um prototipo com pic12f675 e ganhei uma distancia legal e isenta de alarmes falsos! abs.
  7. Fala amigo, então porque voce não utiliza sensor PIRO? é muito mais simples, e basta regular o comparador de janela pra acertar a distancia! abs.
  8. Aqui, use o PIC16f877A se voce quiser testar isso na pratica um dia, esse ta compilado e testado e comentado Código: --------- #include <16f877A.h> #device adc=10; #fuses NOPUT,NOPROTECT,NOBROWNOUT,XT,NOWDT // fuses de configuração USE ESTES!! #use delay (clock = 4000000) int Ad_valor; void main(){ SET_TRIS_A(0b11111111); //configura IO do PORTA//RA0 a RA7 entradas SET_TRIS_C(0b00000000);// configura IO do PORTC//Rc0 a RC7 saidas SETUP_ADC_PORTS (AN0);//RA0 IO analógico SETUP_ADC(ADC_CLOCK_INTERNAL);//configura clock de conversão SET_ADC_CHANNEL(0);//Canal 0 para leitura do AD. while (1){ delay_us(100); Ad_valor=read_adc(); if (Ad_valor == 1023){ output_high(PIN_C1); output_low (PIN_C2); } if(Ad_valor < 1023) { output_low(PIN_C1); output_high(PIN_C2); } } } abs
  9. Ele compilando sem erros não significa que o código esta certo, modifique aquelas linhas que disse no post anterior! abs.
  10. Repito! Não é o código, é a configuração do processador, as vezes é muito melhor olhar o log de erro de compilação um pouco mais e entender qual foi seu erro! abs.
  11. lógico que está errado.... vamos por partes, voce esta usando a função use delay, sendo que voce ainda nem setou o oscilador do teu PIC...segundo se voce esta usando oscilador XT não precisa usar essa função... faça somente isso aqui: #include <16f676.h> [B]#FUSES NOPORTECT, NOPUT, NOMCLR, NOWDT, XT[/B] abs.
  12. Pera, pera, pera... você nem configorou o A/D, como espera que ele leia algo? primeiro configure o A/D com as funçoes, SETUP_ADC, SETUP_ADC_PORTS, SETUP_ADC_CHANNEL... depois voce usa o comando read_adc(), para ler o conteudo analógico do porta, ai DEPOIS voce faz o if com o valor da leiutura, exemplo if (read_adc() = 0b11111111)... entendeu? demais uma pesquisada! abs.
  13. a resposta : Não agora vamos ao porque, o conversor analogico / digital do PIC é de 8bits (modelos mais novos trabalham com 10 bits) ou seja, quando voce mandar ele ler a tensão ele vai te re tornar um valor de 0 a 255 ( 0 a 1023 para 10 bits) de acordo com a tensão lida, depois disso voce deve pegar esse valor e fazer uma regra de 3 para converter par um rage de 0 a 5 volts e depois fazer os if / else com os 5 volts. Caso contrario não vai rodar, um dos leds vai ficar sempre aceso e o outro nunca vai ligar! abs.
  14. Poxa realmente tem coisa errada.... vamos la, primeiro começemos pelos fuses: Se voce esta usando um 628A com o oscilador interno de 4MHz então deve colocar INTRC_IO, caso contrario não roda... ta errado, primeiro o 628A não possui conversor A/D ele so le niveis logicos, tipo '0' e '1' se voce colocar 5 ele simplesmente ira ignorar a instrução.... de uma lida no datasheet do PIC e veja o modulo comparador de tensão, e veja como ele pode ser configurado no CCS, abra o arquivo 16f628A.h para ver as opções de comparador! abs.
  15. Vou te mostrar o caminho para isso, o melhor metodo é o que faz o uso do comparador interno do PIC: supondo que voce esteja usando o 628A, ficaria assim: no pino não inversor voce liga seu potenciometro pra variar a tensão, na não inversora voce liga uma rede resistiva de modo que a tensão entre o segundo resistor e o terra seja de 5V ( se a alimentação do circuito for 5V então ligue esse pino direto na alimentação) no mesmo PIC ligue uma saida num LED e a outra em outro LED. e como ja disse o codigo do amigo angelox serve e muito bem, basta voce modificar ele! abs.
  16. Opto por ser um programador 'hibrido' , por isso uso as duas, o que varia de acordo com o projeto, para interfaces graficas com certeza C, mas para aplicações que envolvem velocidade de processamento e controle total do MCU uso assembly, como a maioria dos projetos que desenvolvo são com processamento de sinais, uso mais a segunda opção, o ASM. Quanto ao teu detector de nivel, voce viu o codigo do amigo angelox? se voce usar a criatividade e modifica lo poderá ter isso que queres! Qualquer duvidas perguntem, logo logo postarei novos codigos! abs.
  17. Mais uma contribuição, espero que ajude código exemplo de uso da interface SPI do PIC, muito util para interfacear com varios circuitos integrados suportados pelo protocolo, no exemplo abaixo temos um conversor D/A de 12bits, onde o AD do PIC converte um sinal pra digital e o MCP4921 faz o contrario transformando ele em analógico de novo, a linearidade foi testada e ficou muito boa aqui o codigo: ;etapa teste de conversor D/A ;Autor: Felipe Neves ;Captura uma amplitude do A/D e poe na saida LIST P = PIC16F877A #INCLUDE "P16F877A.INC" RADIX DEC __CONFIG _CP_OFF & _CPD_OFF & _DEBUG_ON & _LVP_OFF & _WRT_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC ;VARIAVEIS CBLOCK 0X20 C1 C2 C3 C4 ;CONTADORES DE DELAY ADRESUL ;ARMAZENA CONVERSÃO A/D BUFFER ;BUFFER DA SPI ENDC ;CONSTANTES: SPISETUP1 EQU 20H SPISTATUS EQU B'11000000' ADSET0 EQU 80H ADSET1 EQU B'00001110' BYTECTR EQU B'00110000' ; BYTE DE COMANDO DO MCP4921 ;DEFINIÇÃO DE I/O #DEFINE BANK1 BSF STATUS,RP0 #DEFINE CAD PORTA,0 #DEFINE SCK PORTC,3 #DEFINE SDO PORTC,5 #DEFINE CS PORTD,3 #DEFINE LDAC PORTD,1 ORG 0X0000 NOP GOTO SETUP SETUP: BCF STATUS,RP0 CLRF SSPBUF CLRF PORTA ; GARANTE TODAS AS SAÍDAS EM ZERO CLRF PORTB CLRF PORTC CLRF PORTD CLRF PORTE BANK1 ; SELECIONA BANCO 1 DA RAM MOVLW 0FFH MOVWF TRISA ; CONFIGURA I/O DO PORTA MOVLW 0FFH MOVWF TRISB ; CONFIGURA I/O DO PORTB MOVLW 10H MOVWF TRISC ; CONFIGURA I/O DO PORTC MOVLW 00H MOVWF TRISD ; CONFIGURA I/O DO PORTD MOVLW 00H MOVWF TRISE ; CONFIGURA I/O DO PORTE MOVLW B'11011111' MOVWF OPTION_REG ; CONFIGURA OPTIONS ; PULL-UPs DESABILITADOS ; INTER. NA BORDA DE SUBIDA DO RB0 ; TIMER0 INCREM. PELO CICLO DE MÁQUINA ; WDT - 1:128 ; TIMER - 1:1 MOVLW 00H MOVWF INTCON ; CONFIGURA INTERRUPÇÕES ; DESABILITADA TODAS AS INTERRUPÇÕES BANKSEL ADCON1 MOVLW ADSET1 MOVWF ADCON1 ;HABILITA IO ANALOGICO EM RA0 BANKSEL SSPCON MOVLW SPISETUP1 MOVWF SSPCON ;MODO SPI, COM CLOCK FOSC/4 HABILITADO COM CLOCK padrão EM NIVEL '1' BANKSEL SSPSTAT MOVLW SPISTATUS MOVWF SSPSTAT BANKSEL ADCON0 MOVLW ADSET0 MOVWF ADCON0 ;HABILITA CONVERSOR A/D COM CLOCK FOSC/32 + LEITUTA AN0 BCF STATUS,RP0 CLRF ADRESUL CLRF BUFFER GOTO LOOP LOOP: BSF CS ;INITIATES WITH MCP LOCKED BSF LDAC ;D/A CONVERSION LOCKED TOO BSF ADCON0,ADON ; TURN ON A/D CONVERTER LOOP2: BSF ADCON0,GO ;STARTS THE CONVERSION BTFSC ADCON0,GO ;A/D VALUE CONVERTED? GOTO $ - 1 ;NO? WAIT THE END OF CONVERSION MOVF ADRESH,W ; MOVWF PORTD MOVWF ADRESUL ;YEP, NOW PUT THE VALUE ON MY REGISTER CALL SPIWRITE GOTO LOOP2 ;ALWAYS REDO THIS LOOP SPIWRITE: BCF CS ;UNLOCK MCP NOP ;load and mask CONTROL BYTE ON SSPBUF SWAPF ADRESUL,W ANDLW B'00001111' IORLW BYTECTR MOVWF SSPBUF BANKSEL PIR1 BTFSS PIR1,SSPIF ;TRANSMISSION ENDED? GOTO $ - 1 ;NO, WAIT BCF PIR1,SSPIF BANKSEL SSPBUF MOVF ADRESUL,W ANDLW B'11110000' ;LOAD A/D CONVERSION TO SSPBUF MOVWF SSPBUF BANKSEL PIR1 BTFSS PIR1,SSPIF GOTO $ - 1 BCF PIR1,SSPIF BCF STATUS,RP0 ;RETURNS TO BANK0 BCF LDAC ;CONVERT THE SIGNAL TO ANALOG AGAIN BSF CS ;LOCK MCP BSF LDAC RETURN END datasheet do conversor D/A: http://www.alldatasheet.com/view.jsp?Searchword=MCP4921 EDIT: alguns comentarios eu acabei pondo em inglês, pois nem imaginava que iria postar esse codigo, duvidas perguntem! abs.
  18. funciona assim, ao ligar o circuito ele fecha o contato, alimentando sua rede e o circuito, e fica constante mente monitorando a corrente consumida, em caso de sobrecarga , ele desativa o circuito, e so pode ser religado interrompendo sua alimentação e religando o circuito! a vantagen, é que ele pode detectar e interromper curtos muito mais rápido que um disjuntor comum! é muito utili em bancadas, na verdade fiz ele, pra poder fazer experiencias que envolvam a rede eletrica com mais segurança! EDIT: esse circuito foi montado e testado em todas as condiçoes, incluindo quando as duas fases são postas em curto, e apresentou o funcionamento esperado! abs.
  19. Vou postar aqui um projetinho bem legal, uma especie de disjuntor eletrônico com transformador de corrente, aqui o codigo fonte: ;Firmware de controle da placa sensor de corrente ;detecta sobrecarga e desativa o rele em caso positivo. ;autor: Felipe Neves #INCLUDE <P12F675.INC> RADIX DEC __CONFIG _BODEN_ON & _CP_OFF & _WDT_OFF & _MCLRE_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT ;========================================================================== ;VARIAVEIS CBLOCK 0X20 C1 C2 ADCONV W_TEMP STAT_TEMP FLAG ENDC ;========================================================================== ;DEFINIÇOES DE I/O #DEFINE CAD GPIO,0 #DEFINE NORM GPIO,4 #DEFINE OVER GPIO,5 #DEFINE RELE GPIO,2 ;========================================================================== ;DEFINIÇOES DE REGISTRADORES #DEFINE FLAGOK FLAG,0 ;========================================================================== ORG 0X00 GOTO START ORG 0X04 BTFSC PIR1,ADIF GOTO AD_ISR GOTO END_ISR AD_ISR: MOVWF W_TEMP SWAPF W_TEMP,F ;SALVA CONTEXTO MOVF STATUS,W MOVWF STAT_TEMP SWAPF STAT_TEMP,F BCF PIR1,ADIF BCF STATUS,C ;limpa o carry MOVF ADRESH,W ;pega o resultado da conversao AD SUBLW .98 ;compara valor, é maior que 5A? BTFSC STATUS,C GOTO END_ISR ;nao, rede normal sai da int BCF RELE ;sim, sobrecarga! BSF OVER ;acende led de sobrecarga BCF NORM ;e desliga tudo! GOTO $ ;so retorna manualmente END_ISR: SWAPF STAT_TEMP,W ;recupera contextos MOVWF STATUS SWAPF W_TEMP,W BSF ADCON0,GO ;faz uma nova conversao BSF FLAGOK RETFIE ;retorna ;========================================================================= START: NOP BANKSEL GPIO CLRF GPIO BANKSEL CMCON MOVLW 07H MOVWF CMCON BANKSEL ANSEL MOVLW 021H MOVWF ANSEL BANKSEL TRISIO MOVLW 01H MOVWF TRISIO BANKSEL ADCON0 CLRF ADCON0 BSF ADCON0,ADON BANKSEL OPTION_REG CLRF OPTION_REG BANKSEL INTCON MOVLW 040H MOVWF INTCON BANKSEL PIE1 BSF PIE1,ADIE BANKSEL INTCON BSF INTCON,GIE BCF STATUS,RP0 LOOP: BSF ADCON0,GO ;Inicia a conversao ao ligar o equipamento BSF OVER ;liga led de sobrecarga ate o termino da conversao BCF RELE ;e mantem Rele desativado BTFSS FLAGOK ;rede ok? GOTO $-1 ;converte de novo BSF RELE ;sim, então liga rele BCF OVER BSF NORM ;liga led de rede normal GOTO $ ;AGUARDA A INTERRUPÇAO END ;========================================================================================================================================================================= esquema abaixo abs.
  20. Reles comuns com um contato reversivel serao suficientes! voce so vai precisar de um circuito para detectar a falta de energia, e uma fonte de 5V para energizar a bobina do rele! abs.
  21. Vamos com calma, algumas considerações, a primeira é crucial o que essa pilha vai alimentar? pra que o rele NF? para sensoriar falta de luminosidade pode ser feito com um LDR e um comparador de tensão e pronto voce tera algo que aciona quando faltar LUZ ou seja apagou a luz aciona o menino... Agora se o que voce deseja é um circuito pra sensoriar falta de energia elétrica ai o assunto é outro! qualquer duvida é so perguntar, ok!? abs.
  22. Vamos pensar, os 12V estão ok certo! você está querendo dizer que com 1A de carga ela desarma? se for pode ser o circuito de regulação da fonte (sabe acoplador opticos e diodo zener e uns resistores e capacitores proximos a essa etapa) que está com defeito ou o CI de PWM foi para o espaço. verifique melhor esse defeito! abs.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!