Entrar    Registrar

Contando pulsol externo no pino T0

Software e Hardware para linha x51

Moderadores: guest2003, 51, Renie, gpenga

  • Autor
    Mensagem

Contando pulsol externo no pino T0

Mensagempor Renato ASM » 10 Fev 2019 19:51

Escrevi um programa experimental para contar 10 pulsos externos na T0. Depois fico lendo TF0 até acontecer o estouro.

No caso estou usando um motor com uma pequena haste para cortar o sinal de um fototransistor. Quando eu faço o teste bloqueando e liberando o sinal do fototransistor com um pedaco de plastico, funciona perfeitamente.
.
Mas quando ligo o motor ele não detecta nenhum pulso. O que pode ser?
Renato ASM
Bit
 
Mensagens: 13
Registrado em: 10 Fev 2019 19:34

Re: Contando pulsol externo no pino T0

Mensagempor Aquino » 10 Fev 2019 21:06

Mostra pra gente o teu circuito e a frequência de rotação do motor.
Porque pode ser tanta coisa...
"...People who are really serious about software should make their own hardware..." Alan Kay
Avatar do usuário
Aquino
Dword
 
Mensagens: 1845
Registrado em: 12 Out 2006 22:24

Re: Contando pulsol externo no pino T0

Mensagempor Renato ASM » 10 Fev 2019 23:38

Testei o código e funcionou, mas somente com baixo rpm. Saberia me dizer como contornar isso? Porque preciso ler o RPM de um motor trifásico diretamente na polia e ele tem uma boa rpm. Estou usando aquele conjunto de fototransistor e Led IR. Retirei de uma impressora laser.

Estou usando o Contador de forma correta?

Desde já muito obrigado!

Código:
asm code
; Renato
; 02/02/19
;----------------------------------------------------------- DIRETIVAS -----------------------------------------------------------
; ENTRADAS
B_Ligar EQU P2.0

; SAÍDAS
Motor EQU P2.5
LED_Verde EQU P2.6
;------------------------------------------------------------- SETUP ------------------------------------------------------------

ORG 00h

Setup: MOV TMOD, #00000101b ; Usaremos o Contador0 no modo 1(16bits) com sinal externo.

Contador: MOV TH0, #High (65535-200) ; 1.000 contagens
MOV TL0, #Low (65535-200) ; TH0 recebe a parte alta de 1000 e TL0 recebe a parte baixa.

;------------------------------------------------------------- LIGAR ------------------------------------------------------------

Inicio: JB B_Ligar, $

SETB TR0 ; Liga o Contador0, Motor e o Led
CLR Motor
CLR LED_Verde

Continua: JNB TF0, $

;------------------------------------------------------------ TERMINAR ----------------------------------------------------------

Terminar: CLR TR0 ; Desliga o Contador
CLR TF0 ; Reseta o Flag TF0
SETB Motor ; Desligo o Motor
MOV TH0, #High (65535-200) ; Recarrega o contador 0
MOV TL0, #Low (65535-200)

Pisca_Verde: MOV R0,#2
DELAY80: MOV R1,#255
DELAY70: MOV R2,#255
DELAY60: DJNZ R2, DELAY60 ; Pisca o LED Verde até que alguém pressione o Botão de Ligar para recomeçar.
DJNZ R1, DELAY70
DJNZ R0, DELAY80
CPL LED_Verde

JB B_Ligar, Pisca_Verde

JNB B_Ligar, $

SETB LED_Verde ; Desliga o Led

AJMP Inicio ; Reinicia tudo

END ; Fim do programa.
Renato ASM
Bit
 
Mensagens: 13
Registrado em: 10 Fev 2019 19:34

Re: Contando pulsol externo no pino T0

Mensagempor Aquino » 11 Fev 2019 07:48

Faz mais de 10 anos que não trabalho com 8051, então vamos supor que teu código está correto pois funciona em baixa rotação.
Eu suspeitaria do hardware, existe algum capacitor nele?
Coloca o esquema aí abaixo
"...People who are really serious about software should make their own hardware..." Alan Kay
Avatar do usuário
Aquino
Dword
 
Mensagens: 1845
Registrado em: 12 Out 2006 22:24

Re: Contando pulsol externo no pino T0

Mensagempor cfreund » 11 Fev 2019 08:23

Eu chutaria que o sinal do opto não está descendo abaixo de 0v7 em alta rotação, ou seja, curto período. Ou uc reiniciando.
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 502
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes