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 

Exibições: 6155

Responder esta

Respostas a este tópico

  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, gravei seu codigo aqui num 628 q é a mesma coisa e deu o mesmo resultado que vc me disse que esta acontecendo ai com vc. Entao nao é o sensor.  Vou fazer algumas modificaçoes no seu codigo e te envio de volta.
JOSE PENSA NUM CARA QUE TA FELIZ RSRSRSRS
finalmente consegui visualizar cada tecla do controle remoto no portb do pic so que os codigos fico diferente do proto colo
abaixo esta as condições do portb de acordo com a tecla apertada
bits do portb
5 4 3 2 1 0
1 1 1 1 0 1 =tecla1
1 1 1 1 1 0 =tecla2
1 1 1 1 1 1 =tecla3
1 1 1 0 0 0 =tecla4
1 1 1 0 0 1 =tecla5
1 1 1 0 1 0 =tecla6
1 1 1 0 1 1 =tecla7
1 1 0 1 0 0 =tecla8
1 1 0 1 0 1 =tecla9
1 1 1 1 0 0 =tecla0
o codigo que eu fiz identifica o primeiro startbit e depois pula o segundo startbit+toogle+adress e começa a ler os 6 bits do comando referente as teclas apertadas
finalmente consegui agora vou criar uma rotina de comparação para poder tomar decisões dentro do codigo assim que tiver alguma coisa pronta coloco aqui belesa vallew

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 entam no caso da entrada eu ligo as ponteitas e onde e na saida eu logo na placa de som é isso mesmo ou estou enganado
Danilo é exatamente assim mesmo onde é a entrada vc liga as ponteiras negativa e positiva e onde é a saida vc liga na entrada de som da sua placa.

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.

Danilo de uma olhada nessa imagem da forma de onda, em vermelho é a entrada 110VAC e em verde é a saida 110VAC do triac que estou controlando com o pic.
jose agora eu estou conseguindo fazer os screnshots
tenta fazer o seguinte :
desinstalar
reinstalar novamente e durante a instalação na hora que pedir para definir o diretorio de instalação clica em browse ai vc vai em c: cria uma nova pasta e manda instalar nela eu fis isto e funciona direitinho eu acho que porque o windows bloqueia o salve do screnshot no diretorio original

ta pegando certinho os finais dos semiciclos certinho ( se eu estiver correto) esse programa parece ser bem poderoso)
nesta medição que vc postou vc esta usando o capacitor que vc me falou?
se for possivel me manda um desnho deste capacitor em serie que eu num entendi direito rsrsrsrs

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço