fala galera do ldg
ó eu aqui novamente procurando ajuda kkkk
é o seguinte estou precisando criar um sistema que receba um sinal de um controle remoto daqueles usados em televisores ou mesmo um controle universal
eu tava analisando e percebi que poderia receber estes sinais atraves do timer0,1 do pic mais anda não tenho ideia de como criar este artificio no codigo eu sei que posso habilitar a interrupção para receber este sinal mais o que acontece é que assim que o primeiro pulso bater no pino eu ja travo a execução do programa e consequentemente paro o restante do recebmento do trem de pulsos gerado pelo controle o que eu posso fazer sera que se eu usar o canal seial do pic eu consigo receber todos os sinais?
desde ja agradeço
Tags:
jose segue o codigo
LIST P=16F84a ;define processador
RADIX DEC ;define padrão decimal
INCLUDE <P16F84a.INC> ;inclue arquivo com características do 16f628
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
ERRORLEVEL -302
;______________________________________SEL. BANCO DE MEMORIA
#DEFINE BANK0 BCF STATUS,RP0
#DEFINE BANK1 BSF STATUS,RP0
;______________________________________VARIAVÉIS
CBLOCK 0X0C
W_TEMP
STATUS_TEMP
ADRESS ;AQUI FICA ARMAZENADO OS 8 BITS INICIAIS
COMAND ;AQUI FICA ARMAZENADO OS 6 BITS REFERENTE A TECLA DO CONTROLE
GETCH ;ULTILISADA PARA LIMITAR QUANTIDADE DE BITS
FLAGCIR ;VARIAVEL USADA COMO ESPELHO DA VARIAVEL COMAND
STARTBIT ;AQUI FICA ARMAZENADOS OS 2 START BITS E O BIT TOOGLE
FLAGTEC ;FLAG DE CONTROLE DE TECLAS APERTADA
FLAGTEC1 ;FLAG DE CONTROLE DE TECLAS APERTADA
TEMPO0 ;VARIAVEL USADA PARA TEMPORIZAÇÃO
TEMPO1 ;VARIAVEL USADA PARA TEMPORIZAÇÃO
TEMPO2 ;VARIAVEL USADA PARA TEMPORIZAÇÃO
TEMPO3 ;VARIAVEL USADA PARA TEMPORIZAÇÃO
ENDC
;_____________________________________FLAGS CONTROL;
;FLAGS DE RECEBIMENTO IR
#DEFINE CONTROLE STARTBIT,0
#DEFINE _1 STARTBIT,1
#DEFINE _2 STARTBIT,2
#DEFINE _3 STARTBIT,3
#DEFINE _4 STARTBIT,4
#DEFINE TOOGLE STARTBIT,5
#DEFINE START2 STARTBIT,6
#DEFINE START1 STARTBIT,7
#DEFINE CINCO FLAGCIR,5
#DEFINE QUATRO FLAGCIR,4
#DEFINE TRES FLAGCIR,3
#DEFINE DOIS FLAGCIR,2
#DEFINE UM FLAGCIR,1
#DEFINE ZERO FLAGCIR,0
#DEFINE TC1 FLAGTEC,0
#DEFINE TC2 FLAGTEC,1
#DEFINE TC3 FLAGTEC,2
#DEFINE TC4 FLAGTEC,3
#DEFINE TC5 FLAGTEC,4
#DEFINE TC6 FLAGTEC,5
#DEFINE TC7 FLAGTEC,6
#DEFINE TC8 FLAGTEC,7
#DEFINE TC9 FLAGTEC1,0
#DEFINE TC0 FLAGTEC1,1
;_____________________________________CONSTANTES;
;
;_____________________________________DEFINIÇÕES
#DEFINE IR PORTA,0 ;SENSOR TSOP
#DEFINE OUT0 PORTA,0 ;ACIONAMENTO DO RELE
#DEFINE OUT1 PORTA,1 ;ACIONAMENTO DO RELE
#DEFINE OUT2 PORTB,0 ;ACIONAMENTO DO RELE
#DEFINE OUT3 PORTB,1 ;ACIONAMENTO DO RELE
#DEFINE OUT4 PORTB,2 ;ACIONAMENTO DO RELE
#DEFINE OUT5 PORTB,3 ;ACIONAMENTO DO RELE
#DEFINE OUT6 PORTB,4 ;ACIONAMENTO DO RELE
#DEFINE OUT7 PORTB,5 ;ACIONAMENTO DO RELE
#DEFINE OUT8 PORTB,6 ;ACIONAMENTO DO RELE
#DEFINE OUT9 PORTB,7 ;ACIONAMENTO DO RELE
;_____________________________________MEMORIA DE PROGRAMA
ORG 0X00 ;define nicio do trecho a seguir em 000
GOTO INICIO ;desvia para o inicio
;_____________________________________ROTINA DE INTERRUPÇÃO
ORG 0X04
RETFIE ;volta da interupção
;_____________________________________SUB.ROTINAS
LEBIT
BTFSC IR
GOTO $+3
BSF CINCO
GOTO $+2
BCF CINCO
CALL _1.7MS
BTFSC IR
GOTO $+3
BSF QUATRO
GOTO $+2
BCF QUATRO
CALL _1.7MS
BTFSC IR
GOTO $+3
BSF TRES
GOTO $+2
BCF TRES
CALL _1.7MS
BTFSC IR
GOTO $+3
BSF DOIS
GOTO $+2
BCF DOIS
CALL _1.7MS
BTFSC IR
GOTO $+3
BSF UM
GOTO $+2
BCF UM
CALL _1.7MS
BTFSC IR
GOTO $+3
BSF ZERO
GOTO $+2
BCF ZERO
CALL _1.7MS
RETURN
_10MS
MOVLW .10
MOVWF TEMPO1
MOVLW .250
MOVWF TEMPO0
T_0
NOP
DECFSZ TEMPO0
GOTO T_0
NOP
DECFSZ TEMPO1
GOTO $-7
RETURN
_1.7MS ;ESPERA 1.729 MS PARA EXECUTAR A LEITURA NO SEGUNDO TEMPO DO BIT
MOVLW .2
MOVWF TEMPO1
MOVLW .213
MOVWF TEMPO0
T_1
NOP
DECFSZ TEMPO0
GOTO T_1
NOP
DECFSZ TEMPO1
GOTO $-7
RETURN
DELAY_MS ;ESPERA 10.361 MS REFERENTE AO SEGUNDO START BIT,TOOGLE,ADRES PARA NÃO SER LIDOS
MOVLW .13
MOVWF TEMPO2
RECARGA
MOVLW .198
MOVWF TEMPO3
T_2
NOP
DECFSZ TEMPO3
GOTO T_2
DECFSZ TEMPO2
GOTO RECARGA
RETURN
TIME
MOVLW .14
MOVWF TEMPO2
RELOAD
MOVLW .253
MOVWF TEMPO3
T_4
NOP
DECFSZ TEMPO3
GOTO T_4
DECFSZ TEMPO2
GOTO RELOAD
RETURN
TEMPO
MOVLW .255
MOVWF TEMPO2
TTT
MOVLW .255
MOVWF TEMPO3
T_5
NOP
DECFSZ TEMPO3
GOTO T_5
DECFSZ TEMPO2
GOTO TTT
RETURN
;_____________________________________INICIO DO PROGRAMA
INICIO: ; ESTE ENDERECO E' O IMEDIATAMENTE APOS O FIM DA INTERRUPCAO
BANK1
MOVLW B'00000001'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'10001000'
MOVWF OPTION_REG
MOVLW B'01010000'
MOVWF INTCON
BANK0
CLRF PORTA
CLRF PORTB
;____________________________________ROT. PRINCIPAL
MAIN
LOOP0
CLRF COMAND
CLRF PORTB
LE_0 ; 10ms sem nehum pulso para
CALL _10MS ; identificar START
BTFSS IR ;
GOTO LE_0 ;
;START
BTFSC IR ; //ESPERA NL=0 PARA IDENTIFICAR STARTBIT
GOTO $-1 ;ESPERA NL=0
CALL DELAY_MS
INICIO_COMANDO
CALL LEBIT
MOVLW COMAND
MOVWF PORTB
CALL TEMPO
GOTO MAIN
END
Danilo, parabens sabia que vc ia conseguir. Essa imagem é do esquema para usar a entrada da placa de som do computador como osciloscopio, a chave que esta ai é para atenuar o sinal se preciso, no esquema esta mono mas pode fazer dois circuitos iguais para ter 02 canais, consegui medir no maximo 5khz, velocidade baixa mas suficiente para diversos projetos.Lembrando que consegue medir apenas sinais DC pulsantes e tensões AC. Para consegui medir tensões DC tem que retirar os capacitores da entrada da placa de som clocar um amplificador operacional e modificar algumas coisas no esquema. O link do programa que eu uso esta ai Visual Analizer.
Abraço
o jose muito obrigado eu tive pensando aqui voce poderia colocar este esquema no wiki do lab pois deve ter muito garagista que naão tem osciloscopio
eu tenho um aqui que eu aganhei de um amigo mais veio sem as ponteiras e eu nunca usei nem sei se esta funcionando direito rsrsrs quando eu tiver um tempo (grana) sobrando eu vou comprar as ponteiras
jose so uma duvida qual é o limite de tensão para este circuito que vc postou?
e essa entrada do circuito eu posso colocar duas ponteira nelas e usar no circuito que eu quiser testar o sinal ou é pra ligar um sensor ir nele? valew
Eu testo ate 220v AC nele pois eu conserto placas de Portão Automatico com ele, com ele eu consigo ver como estão conduzindo os triacs das placas (para fazer estes testes com tensões elevadas eu coloco um capacitor ceramico em serie no positivo e um em serie no negativo pois pode danificar a placa de som). O resistor de 1M na entrada e a chave comutadora é para escolher por quanto ira dividir a tensão de entrada.
Eu montei numa caixa com duas entradas com conector BNC (o mesmo do osciloscopio industrial). Então eu uso ponteiras nele assim posso fazer diversos testes com ele inclusive o controlador de temperatura de ferro de solda estou desenvolvendo com a ajuda do mesmo.
Agora para postar no wiki acho que teria de ser uma coisa mais desenvolvida.
jose
e bem legal este osciloscopio eu baixei o visual analizer e fiz o circuito que vc postou aqui e ja estou fazendo alguns teste so nao estou conseguindo fazer o screenshot esta me dando um erro to mandado o fazer um upgrade do soft pra ver se resolve mas fora isso to parecendo uma criança que acabou de ganhar um presente montei o circuito num case velho que eu tinha aqui fico meio tosco mas ta funcionado assim que puder vo la na santa efigenia comprar um case mais bonitinho e uns conector bnc pra deichar bem legal valeu mesmo
agora voltando ao rc5 o meu problema era o seguinte:
eu lia o primeiro start bit depois pulava o segundo startbit,toogle, adress, e começava aler o segundo tempo de bit do sexto bit do camando e depois ia lendo o restante sempre no segundo tempo de bit
sinceramente falando acho que foi um erro de calculo e o sistema ainda não ta seguro pois estou recebendo qualquer controle no sistema e mandando dados para o port mais isso eu vou resolver depois de momento ja estou bem satisfeito
muito obrigado pela sua ajuda
eo seu projeto como esta indo?
Danilo, aqui tbm nao consigo fazer os screenshoots no programa, entao eu aperto a tecla print scren do teclado e colo a imagem no PAINT, depois recorto a parte da forma de onda e colo em um novo documento. Legal que vc gostou do osciloscopio. Se vc quizer pode postar no WIKI.
Agora ao RC5 Realmente pelo seu codigo eu verifiquei que vc levava em conta apenas os tempos assim vc nao consegue distinguir o protocolo e acaba recebendo qualquer sinal IR. Depois que vc testar o controle de som que vc tem ai no osciloscopio me diz se o trem de pulso é igual ao que eu te mandei pelos prints pois estou curioso para saber.
Enquanto ao projeto do ferro de solda, agora pouco acabei descobri que para disparar o moc para conduzir o triac preciso de um pulso de apenas 10us, Ja consegui controlar o brilho de uma lampada de 40W, eu pensava que o moc tinha que ficar em nivel logico alto para continuar conduzindo, mas so o pulso faz ele disparar e so desliga quando passa por zero. Ja estou quase conseguindo chegar lá. rsrsrs.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por