quinta-feira, 26 de fevereiro de 2015

Gerando sinais de vídeo num PIC com amplitude e impedância corretas (atualizado)

Os sinais de vídeo padrão possuem uma amplitude de 1Volt pico a pico, com o nível de vídeo situado 0,7Volts acima do nível de referência de preto e o sincronismo situado 0,3Volts abaixo.

Fonte: http://www.exampointers.com/teletext/teletext.phtml

Para gerar esses sinais com um microcontrolador podemos utilizar dois pinos e alguns resistores. No circuito abaixo a carga RL representa a impedância interna do monitor, que segundo a norma RS170 deve ser de 75 Ohms. Em alguns circuitos encontrados na internet [1] [2] a resistência R3 não é utilizada, mas isso aumenta muito a impedância de saída do circuito, o que pode ocasionar uma imagem sem contraste em alguns monitores.

Uma das maneiras de se gerar vídeo com um microcontrolador é chaveando-se dois pinos
Usando dois pinos temos quatro combinações possíveis, das quais devemos nos preocupar com as 3 mais importantes: O nível de preto, o pulso de sincronismo e o nível de branco. Dá para gerar um nível de cinza também mas vamos desconsiderá-lo por enquanto.
A linha de nome VBias serve para gerar basicamente o sinal de sincronismo, enquanto a linha VColor gera o conteúdo de vídeo.

Precisamos calcular então os resistores de forma que possamos obter os seguintes níveis quando devidamente terminado por uma carga de 75 Ohms:
 
Pedestal, ou nível de preto: 0,3Volts
Pulso de sincronismo: 0 Volts
Pico de vídeo: 1,0Volt.

A primeira consideração que devemos fazer é em relação aos níveis de saída do microcontrolador. Segundo o 'datasheet' do PIC16F688 (tomado como exemplo) temos que a tensão mínima de saída (VOL, porta em nível 0) pode chegar a 0,6Volts no pior caso. Já a tensão máxima (VOH) pode ser tão baixa quando VDD-0,7Volts

Fonte: Microchip.com

Assim, devemos considerar deslocar nosso nível de sincronismo em 0,3 Volts, pois esse valor corresponde à metade do VOL mínimo. A razão de ser a metade é que estamos considerando que a impedância de saída do nosso circuito vai ser igual à da carga, ou seja 75Ohms.



Com isso, o nível de preto sobe para 0,6 Volts, pois este é 0,3Volts mais alto do que o nível de sincronismo. Já o nível de Branco sobe para 1,3Volts pois esta tensão está 0,7Volts acima do nível de preto. Estes valores estão resumidos na tabela abaixo.
Nível
V Bias
V Color
V Out
Observação
Preto
VOH
VOL
0,6V
0,3V offset + 0,3V sync
Branco
VOH
VOH
1,3V
Vblack + 0,7V video
Sincronismo
VOL
VOL
0,3V
Vblack - 0,3V sync

Os valores acima são todos para o circuito carregado com uma impedância de 75Ohms. No caso do circuito estar sem carga, estas tensões devem dobrar. Assim temos:

CondiçãoV BiasV ColorV Out (RL=75)V Out (aberto)
Black4,7V0,6V0,6V1,2V
White4,7V4,7V1,3V2,6V
Sync0,6V0,6V0,3V0,6V



Agora podemos partir para o cálculo dos resistores de forma a atender à tabela acima. O primeiro passo é a análise do circuito. Partimos então da lei de corrente de Kirchhoff: "Em um nó, a soma das correntes elétricas que entram é igual à soma das correntes que saem"
Aplicando a lei de Kirchhoff para calcular as resistências

Assim temos que 
Considerando as tensões envolvidas, podemos montar a equação genérica do circuito:

Para facilitar as contas, vamos reescrever a equação considerando as condutâncias em vez das resistências.


Então, para RL=75Ohms, VOL=0,6Volts e VOH=4,7Volts (Vdd do PIC a 5,4Volts) temos podemos montar as equações para as três condições principais.


Para o circuito sem carga, ou seja RL=infinito, a condutância é igual a zero. Assim temos



Estas equações podem ser escritas na forma de um produto de matrizes:




Usando o Scilab como ferramenta de cálculo chegamos ao resultado (em Siemens, ou unidades de condutância)

>A=A={4.1 0 -0.6 ; 3.4 3.4 -1.3 ; 0.3 0.3 -0.3 ; 3.5 -0.6 -1.2 ; 2.1 2.1 -2.6 ; 0 0 -0.6}
>b=[ 0.6/75 ; 1.3/75 ; 0.3/75 ; 0 ; 0 ; 0 ]
>x=A\b


O que convertido para resistência resulta em:
 >x.^-1


Usando valores comerciais mais próximos temos:


Vamos agora verificar os valores das tensões considerando os valores comerciais. Para isso é necessário reescrever a equação básica em função de V Out:



Resolvendo as várias condições para Vout, temos que:

Condição V Bias V Color V Out (RL=75) V Out (aberto)
Black 4,7 0,6 0,64 1,29
White 4,7 4,7 1,35 2,71
Sync 0,6 0,6 0,17 0,35

Dividindo-se a tensão em aberto pela tensão com carga de 75 Ohms encontramos a relação igual a:

Vopen/Vload = 2,71/1,35 = 2,01

Essa relação nos permite calcular a resistência de saída do nosso circuito. Partimos da relação de Thèvenin

Em números, ri=75 * (1,01) = 75,75 Ohms.


Conclusão:

Exceto pelos valores de tensão do nível de sincronismo, todos os outros ficaram bem dentro do esperado. Para o circuito carregado temos uma amplitude de 0,47Volts (abaixo do nível de preto) para o pulso de sincronismo e uma amplitude de 0,7Volts (acima do nível de preto) para o sinal de vídeo. Em compensação, apesar dos resistores utilizados serem de valor comercial e estarem ligeiramente diferentes dos valores calculados, a impedância de saída do circuito ficou bem próxima de 75Ohms.



A figura abaixo traz o circuito com os valores finais.

PS:
De maneira genérica, o sistema de matrizes que descreve nosso circuito encontra-se abaixo. O valor das tensões de saída nas três linhas superiores (em verde) correspondem aos níveis de tensão com carga de 75Ohms e as linhas inferiores (em azul) correspondem aos níveis de tensão em aberto, ou seja, sem a carga.



Em Scilab, pode-se utilizar as seguintes linhas de comando

Voh = 4.7
Vol = 0.6
Voffset = 0.3
Vwhite = 1.0 + Voffset
Vblack = 0.3 + Voffset
Vsync  = 0.0 + Voffset
V = {     (Voh - Vwhite) (Voh - Vwhite) -Vwhite ; (Voh - Vblack) (Vol - Vblack) -Vblack ; (Vol - Vsync ) (Vol - Vsync ) -Vsync  ; (Voh - 2*Vwhite) (Voh - 2*Vwhite) -2*Vwhite ; (Voh - 2*Vblack) (Vol - 2*Vblack) -2*Vblack ; (Vol - 2*Vsync ) (Vol - 2*Vsync ) -2*Vsync  }
I = { Vwhite / 75 ; Vblack / 75 ; Vsync / 75 ; 0 ; 0 ; 0 }
s = V\I
r = s.^-1




Nenhum comentário: