terça-feira, 6 de agosto de 2013

Monitor de freqüência cardíaca com 8051

Este artigo é sobre um monitor de frequência cardíaca simples usando o microcontrolador 8051. Como os 8.051 projetos anteriores, AT89S51 é o microcontrolador usado aqui. O dispositivo detecta a freqüência cardíaca a partir da ponta do dedo utilizando o método de reflexão IR e as exibe em um display de segmento de três dígitos de sete em batimentos por minuto. O circuito tem uma precisão de 4 batidas por minuto e é muito fácil de usar. Em termos médicos, a técnica usada aqui para detectar a frequência cardíaca é chamado fotopletismografia.

Fotopletismografia.

Fotoplestimografia é o processo de opticamente estimar a medição volumétrica de um órgão. A oximetria de pulso, monitoramento cardiovascular, detecção de respiração, monitoramento da freqüência cardíaca etc são algumas aplicações comuns de fotopletismografia. Vamos dar uma olhada no aplicativo de fotopletismografia no monitoramento da freqüência cardíaca a partir da ponta Figer. Quando o coração se expande (diástole), o volume de sangue no interior dos dedos aumenta a ponta e quando os contrcats do coração (sístole), o volume de sangue no interior da ponta do dedo diminui. A pulsação resultante do volume de sangue no interior da ponta do dedo é diretamente proporcional à freqüência cardíaca e se você pudesse de alguma forma contar o número de pulsos em um minuto, essa é a frequência cardíaca em batimentos por minuto (bpm). Para isso um transmissor / receptor de IR par é colocado em contacto próximo com a ponta do dedo. Quando o coração bate, o volume das células do sangue sob os aumentos de sensores e isso reflete ondas mais IR do sensor e. Quando não há bater a intensidade das quedas feixe refletido. A reflexão pulsante é convertido para um impulso de corrente ou tensão apropriada pelo sensor. A saída do sensor é processado por circuitos electrónicos apropriados para obter uma indicação visível (mostrador digital ou gráfico).

Trabalho do monitor de freqüência cardíaca

LTH1550 interruptor foto-01 constitui o sensor fotoplestimográfico aqui. LTH1550-01 é simplesmente um diodo IR - foto transistor par em um único pacote. O lado frontal do diodo foto-transistor IR e são expostas e as partes restantes são bem isolado. Quando a ponta de um dedo é colocada sobre o sensor volumétrico o pulsar do volume de sangue no interior da ponta do dedo, devido ao batimento cardíaco varia a intensidade do feixe reflectido e esta variação de intensidade é de acordo com o batimento cardíaco.
Quando mais luz incide sobre o foto-transistor ele conduz mais, aumenta a sua corrente de coletor e assim a tensão coletor diminui. Ao menos a luz incide sobre o fototransistor que realiza menos, seu coletor corrente diminui e assim a tensão coletor diminui. Esta variação na tensão do colector será proporcional à frequência cardíaca. De qualquer forma essa variação de tensão é tão fraco e estágios de condicionamento de sinais adicionais são necessários para convertê-lo em uma forma reconhecível microcontrolador.
A próxima parte do circuito consiste de dois filtros passa-baixa ativos usando opampLM324. O LM324 é um quad opamp que pode ser operado a partir de uma única oferta de transporte ferroviário. Resistências R23, R17 e condensador C5 define o ganho e a frequência de corte do primeiro filtro. Com os valores dos componentes fornecidos, o ganho será 101 e cortou freqüência será 2,5 Hz. O ganho e corte de freqüência são determinados utilizando as seguintes equações.
Ganho de tensão Av = 1 + (R17 / R23)
Freqüência de corte Fc = 1 / (2π * R17 * C5)
O segundo filtro passa-baixa também têm os mesmos parâmetros. Os dois filtros passa-baixa formam uma parte muito importante do circuito como qualquer ruído ou falsos sinais que passam para a fase de microcontrolador irá produzir resultados desastrosos. A saída do andar de filtragem será um nível de tensão variou entre 0 e 0,35 volts e a flutuação é convertido em um 0 a 5V balanço utilizando o comparador com base no terceiro OP (IC1c). A tensão de referência do comparador está definido para 0.3V. Sempre que a tensão de saída do andar de filtro passa acima 0.3V, a saída do comparador vai para zero, e sempre que a tensão de saída do andar de filtro passa baixo 0.3V, a saída do comparador fica saturado positivo. O resultado será um impulso limpo oscilando entre 0 e 5 V, a uma taxa igual à taxa do coração. Este impulso é alimentado para o microcontrolador para contagem.

Programa.

ORG 000H / / origem
MOV DPTR, # LUT / / move endereço inicial LUT para DPTR
MOV P1, # 00000000B / / sets P1 como porta de saída
MOV P0, # 00000000B / / define P0 como porta de saída
PRINCIPAL: MOV R6, # 230D / / carrega registar R6 com 230D
      SETB P3.5 / / sets P3.5 como porta de entrada
      MOV TMOD, # 01100001B / / Define Timer1 como Modo2 balcão e Timer0 como Modo1 temporizador
      MOV TL1, # 00000000B / / carrega TL1 com valor inicial
      MOV TH1, # 00000000B / / carrega TH1 com o valor inicial
      SETB TR1 / / inicia timer (contador) 1
VOLTA: MOV TH0, # 00000000B / / carrega o valor inicial para TH0
      MOV TL0, # 00000000B / / cargas de valor inicial para TL0
      SETB TR0 / / Inicia o temporizador 0
AQUI: JNB TF0, AQUI / / verifica Temporizador 0 Roll Over
      CLR TR0 / / pára Timer0
      CLR TF0 / / limpa Temporizador Bandeira 0
      DJNZ R6, VOLTAR
      CLR TR1 / / pára timer (contador) 1
      CLR TF0 / / limpa Temporizador Bandeira 0
      CLR TF1 / / limpa Temporizador Bandeira 1
      ACall DLOOP / / chamadas sub-rotina DLOOP para exibir a contagem
      SJMP MAIN / / salta de volta para o loop principal
DLOOP: MOV R5, # 252D
Back1: MOV A, TL1 / / carrega a contagem atual para o acumulador
       MOV B, # 4D / / carrega registar B com 4D
       MUL AB / / Multiplica os TL1 contar com 4
       MOV B, # 100D / / carrega registar B com 100D
       DIV AB / / isola o primeiro dígito da contagem
       SETB P1.0 / / Display Driver transistor Q1 ON
       ACall DISPLAY / / converte 1 dígito para 7seg padrão
       MOV P0, A / / coloca o padrão para a porta 0
       ACall ATRASO
       ACall ATRASO
       MOV A, B
       MOV B, # 10D
       DIV AB / / isola o segundo dígito da contagem
       CLR P1.0 / / display motorista transistor Q1 OFF
       SETB P1.1 / / display motorista transistor Q2 ON
       ACall DISPLAY / / converte o segundo dígito a 7seg padrão
       MOV P0, A
       ACall ATRASO
       ACall ATRASO
       MOV A, B / / move o último dígito do número de acumulador
       CLR P1.1 / / display motorista transistor Q2 OFF
       SETB P1.2 / / display motorista transistor Q3 ON
       ACall DISPLAY / / converte terceiro dígito padrão 7seg
       MOV P0, A / / coloca o padrão para a porta 0
       ACall Delay / / chamadas de atraso de 1ms
       ACall ATRASO
       CLR P1.2
       DJNZ R5, back1 / / repete a rotina DLOOP 100 vezes
       MOV P0, # 11111111B
       RET

ATRASO: MOV R7, # 250D / / 1ms de atraso
 DEL1: DJNZ R7, DEL1
       RET

EXIBIÇÃO: MOVC A, @ A + DPTR / / obtém padrão rígido dígitos 7seg para o valor corrente em A
         A CPL
         RET
LUT: DB 3FH / / LUT começa aqui
     DB 06H
     DB 5BH
     DB 4FH
     DB 66H
     DB 6DH
     DB 7DH
     DB 07H
     DB 7FH
     DB 6FH
END

Sobre o programa.

Para efeitos de contagem são usados ​​ambos os temporizadores de 8051 (Timer0 e Timer1). Temporizador 1 é configurado como um contador de 8 bits de recarregamento automático para registar o número de impulsos que vão de entrada zero e Timer0 é configurado como um temporizador de 16 bits que geram o necessário um segundo intervalo de tempo para o Timer1 count.For para a contagem do número de batimentos Timer0 e Timer1 são utilizados. Timer1 é definido como um contador de 8 bits auto recarregamento para a contagem do número de pulsos (indicando o batimento cardíaco) e Timer0 é definido como um temporizador de 16 bits que gera um atraso 65536uS. Quando loop 230 vezes ele vai produzir um segundo período de 15 hora (230 x 65536uS = 15s) para o Timer 1 para contar. O número de contagens obtidas em 15 segundos é multiplicado por 4 para obter o ritmo cardíaco em batimentos por minuto.
 O temporizador 0, o que gera a um segundo período de tempo é configurado no Modo 1 (bit temporizador 16). Assim, o máximo que ele pode contar é 2 ^ 16 e é 65536. Em 8051, a frequência do cristal é dividida por 12, utilizando uma rede divisora ​​interior frequência antes de aplicá-lo como um relógio para o temporizador.Isso significa que o temporizador será incrementado em um para cada 1/12th da frequência do cristal. Para um sistema com base em 8051 cronometrado por um cristal de 12MHz, o tempo tomado para um incremento de temporizador será 1μS (ie; 1/12MHz). Assim, o atraso de tempo máximo que pode ser obtido usando uma sessão do temporizador será 65536μS. Passar por este artigo  Delay usando 8051 temporizador  para uma melhor compreensão.
Leia também este artigo Interface sete exibição segmento para 8051 antes de tentar este projeto.
Configurando o circuito.
Quando a alimentação é ligada, o indicador LED D4 vai brilhar uma continua nesse estado. Agora coloque a ponta do dedo sobre o sensor e ajuste predefinido R14 para que o D4 LED começa a piscar. Depois que você tem o LED piscando, repor o poder e aguarde 15 segundos. A tela irá mostrar a sua frequência cardíaca em batimentos por minuto.
segue video