segunda-feira, 30 de março de 2015

Fazendo um Butter Bell



Outro dia atrás estava vendo um site com dicas de marcenaria e vi um post sobre a 'Butter Bell', ou Manteigueira Sino, que na realidade é uma invenção francesa para manter a manteiga fresca sem refrigeração. O dispositivo é muito simples, basicamente um selo hidráulico para evitar que a manteiga fique em contato com o ar quando não estiver sendo usada.


Daí resolvi fazer uma utilizando alguns materiais que tinha disponíveis aqui em casa. No caso foi um pote de cerâmica e um fundo de garrafa de cerveja (além de um pouco de cola de silicone).

O resultado final é este aí:




O único inconveniente é que a tampa do pode de cerâmica não permite que a tampa fique na horizontal na hora de consumir a manteiga, como é o caso das manteigueiras comerciais. Talvez para um próximo projeto, quem sabe ?...





domingo, 29 de março de 2015

Usando FatFs com Arduino

Introdução

O Arduino divide opiniões quando o assunto é desenvolvimento de pequenos sistemas embarcados. Alguns amam a plataforma e todo o 'ecossistema' criado a seu redor, enquanto outros odeiam, por considerar que as facilidades de uso acabam escravizando os usuários à plataforma, tornando-os incapazes de fazer qualquer coisa para a qual não haja uma biblioteca pronta, mas mesmo esses últimos reconhecem que como ferramenta de prototipação o Arduino é fantástico.

Entre as 'bibliotecas prontas' do Arduino existe uma para lidar com cartões SD que é bastante completa, porém é muito complicado utilizar as bibliotecas do Arduino fora do ambiente do Arduino, por causa da interdependência entre suas bibliotecas.

Por outro lado existe uma biblioteca de Fat de código aberto que é muito poderosa chamada FatFs e que pode ser facilmente portada para várias plataformas, inclusive para o Arduino.

O objetivo deste artigo é adaptar a FatFs para funcionar como uma biblioteca do Arduino de forma a permitir utiliza-lo (o Arduino) como plataforma de desenvolvimento ou de prototipagem para projetos envolvendo cartões SD e sistemas de arquivos FAT.

A FatFs 

FatFs é uma biblioteca genérica de FAT criada pelo ChaN com o objetivo de ser utilizada em em microcontroladores e outros sistemas embarcados de pequeno porte. Entre suas principais características cabe destacar:
  •   Portabilidade;
  •  Atualizações e otimizações constantes ;
  •  Licença de uso.
  A portabilidade é a primeira característica a chamar atenção. É extremamente fácil portar a FatFs para várias plataformas por causa de dois fatores considerados pelo autor durante o desenvolvimento da biblioteca:
  1. Código totalmente escrito em ANSI C: Praticamente qualquer compilador C é capaz de compilar a FatFS;
  2. Segregação: As funções que lidam com o sistema de arquivos e as que acessam o 'hardware' são completamente  segregadas. Isso faz com que o 'port' para outras plataformas se resuma a implementar algumas poucas chamadas de acesso ao hardware para acesso aos dados gravados na mídia;

As atualizações são outro ponto importante. Desde a primeira versão disponibilizada em fevereiro de 2006  até a versão mais atual (considerando momento em que escrevo este artigo), de fevereiro de 2015 a biblioteca já recebeu 26 atualizações, sendo a maioria delas com a agregação de novos recursos, inclusive um 'spinoff' de código chamado PetitFatFs que ocupa bem menos espaço de código e pode ser utilizado em dispositivos com pouquíssima memória RAM (que nem precisa ser capaz de conter 1 setor inteiro de disco). Além disso existe um fórum de discussões bem ativo onde se pode tirar dúvidas ou enviar sugestões.

A licença da FatFs é outra característica importante para quem precisa de uma biblioteca de FAT para uso profissional. A fim de permitir maior usabilidade em produtos comerciais, a licença desobriga a distribuição do código fonte junto com o binário, ao estilo da licença BSD de cláusula única. 

A FatFs é distribuída num pacote contendo o código fonte com implementação para diversas plataformas inclusive uma versão 'AVR_foolproof' já com as funções de baixo nível implementadas e compatíveis com vários microcontroladores da família AVR. É esta versão que vai ser adaptada para uso com o Arduino.

 Atividades


 A primeira tarefa criar uma pasta chamada 'FatFs' dentro do diretóro '/libraries' da instalação do Arduino e copiar para dentro desta pasta os arquivos do diretório '/avr_foolproof' do pacote da FatFs.

Copiar da pasta /avr_foolproof para o diretório /libraries da IDE do Arduino
Em seguida retire os arquivos 'main.c' e 'Makefile' pois eles atrapalham na hora de fazer a compilação. O  'Makefile' pode ser apagado. Já o  'main.c' ainda vai ser utilizado como base para o nosso 'sketch' de teste

Remova os arquivos 'main.c' e 'Makefile' da pasta '/libraries/FatFs'


A segunda tarefa necessária é descobrir a pinagem do 'shield' com o soquete para o cartão SD. No caso do 'shield' ethernet/SD da DF Robot a documentação é muito ruim, pois o esquema da placa não mostra as funções dos pinos do cartão SD nem identifica os pinos/'headers' do Arduino.


Diagrama parcial do 'shield' da DF-Robot

O jeito foi utilizar o multímetro para identificar a conexão entre os pinos do cartão SD e os pinos dos 'headers' do Arduino e então fazer a correspondência ao Pino e Porta do ATMega328. Os pinos marcados em AZUL são os pinos utilizados para a comunicação em modo SPI.

Correspondência entre pinos do soquete SD/MMC e o ATMega328
 Com os pinos identificados, o segundo passo é abrir o arquivo 'sdmm.c' e incluir as definições dos pinos de acordo com o 'shield'.

Incluir as definições dos pinos
 Em seguida substitua as macros existentes, responsáveis pela troca de estado e leitura dos pinos, pelas macros mais genéricas. Cabe notar que a ativação do 'pull-up' no pino de entrada de sinal é fundamental para que a comunicação com o cartão SD funcione caso, é claro, o 'shield' não possua este resistor.


Editar as macros que cuidam da mudança de estado e leitura dos pinos de I/O
A biblioteca original permite o uso com cristais até 14MHz. Como o Arduino roda a 16MHz é necessário incluir as linhas abaixo na função dly_us()

Modificação para suportar operação a 16Mz

Salve o arquivo e abra o 'ffconf.h' para fazer duas alterações. A primeira delas é mudar a configuração da definição responsável por remover algumas funções da biblioteca a fim de economizar espaço. Como a função  a função 'f_lseek()' é bem útil vamos mantê-la alterando a definição _FS_MINIMIZE para o valor '2'.

Modifique a opção _FS_MINIMIZE para manter a função f_lseek()

A próxima alteração é na definição _CODE_PAGE. Vamos alterar do original (japonês) para o latino (Code Page 850).

Modifique o 'Code Page' para Latino em vez de Japonês

Salve o arquivo e abra a IDE do Arduino para criar um novo projeto. Em seguida faça as modificações conforme a figura abaixo. A maioria das linhas pode ser copiada de dentro do arquivo 'main.c' que retiramaos da pasta '/libraries/fatfs'.


Modificações necessárias a partir de um 'sketch' básico

Em seguida compile (verifique) o 'sketch'.

Eis o 'sketch' de teste completo. Após compilado ele ocupa 11K

Agora insira um cartão SD no soquete e faça o 'upload' do sketch para o Arduino. Assim que terminar abra o terminal serial e após alguns instantes (o tempo que demora para o Arduino dar 'timeout' no 'bootloader') a palavra "Sucesso" deve aparecer no terminal indicando que tudo deu certo.


Conclusão:

 A biblioteca de FAT após compilada com as configurações que fizemos vai ocupar aproximadamente 11Kbytes de Flash. É meio grandinho, mas é uma biblioteca de FAT completa com várias funções integradas. Caso algumas destas funções não sejam desejadas, o tamanho do código gerado pode ser reduzido, ficando entre 4,6K e 13,3K de código, mas devemos adicionar nesta soma os recursos que as demais bibliotecas do Arduino consomem. Em nosso exemplo somente o uso da porta serial mais o print ocupam 1,8K de código.


Links:

Site do ChaN
Artigo sobre a FatFS e a PetitFatFs
Nota de Aplicação da FatFS
Download dos exemplos de aplicação, incluindo o utilizado aqui.
Download do Sketch que usei para testes (que é um pouco mais completo)
Donload dos arquivos sdmm.c e ffconf.h já modificados.

















domingo, 8 de março de 2015

Engenharia reversa numa interface MID 95 para o TK

Depois de algumas horas de trabalho, consegui levantar o esquema da interface MID 95 para os TKs.

O primeiro passo foi fazer uma limpeza da placa e remover os 'jumpers' de fio que estavam sobre as trilhas, a fim de facilitar a visualização. Em seguida, com a placa já limpa (que inclusive desbotou um pouco) eu tirei fotos da frente e do verso da placa, com boa iluminação e máquina ajustada para tirar foto macro.


 Com as fotos em mãos, o próximo passo é sobrepor duas fotos, uma de frente e outra de verso utilizando transparências. Para auxiliar mais ainda, é possível criar uma outra camada com a pinagem dos componentes. A ferramenta utilizada para fazer isso foi o Inkscape


Com esse arranjo em mãos o próximo foi criar o diagrama no Eagle com todos os componentes da placa, e ir seguindo as ligações, uma a uma, marcando as ligações no esquemático. Também é bom conferir com o multímetro diretamente nos pinos da placa, em caso de dúvida.

A fim de conferir se o diagrama bate com o levantado, eu reconstruí o layout da placa. Para isso precisei editar alguns componentes (Eprom, os 74LSs, os transistores e alguns diodos) a fim de casar o 'footprint' com os utilizados na placa real. Se todas as ligações estiverem em ordem, vai ser possível criar um 'layout' muito semelhante ao da placa real.





A partir do circuito (link) é possível saber alguns detalhes a respeito do funcionamento da interface:

- A Interface MID nada mais é do que uma porta serial 'bitbang'. Os bits são escritos/lidos na porta 191 (0xbf, linha A6 em zero). A porta IC4B funciona como inversor do sinal /M1. Os diodos D2/D4 e D3/D6 formam uma porta OR. Interessante é que dois diodos e um resistor poderiam ter sido substituídos pela porta IC1C, que fica ociosa


- A conversão de nível de sinal TTL para RS232 é feita com o auxílio de transistores bipolares comuns. Os dados saem a partir do bit D0 e entram pelo bit D7. O conector de saída vai a um jack P2 estéreo.




- A cada 64us a interface gera uma NMI (clock de 4MHz dividido por 256). Como a velocidade de operação é de 1200bps para recepção, isso significa 13 interrupções (ou 13 amostras) para cada tempo de bit. No caso da transmissão, a 75bps, o tempo entre o início de dois bits consecutivos equivale a 208 interrupções.  Detalhe interessante  é o oscilador que é baseado num buffer (LS125). Esse foi um hack bem bacana no projetista para economizar um CI (na época eles não eram muito baratos).

A cada interrupção o circuito faz uma amostragem (leitura na porta 191) o que também limpa o flip flop que gera a NMI.


 
- O pino /ROMCS está ligado ao VCC. Isso significa que a interface não usa nenhum recurso da ROM (BIOS) do TK.



Meu agradecimento ao Augusto e ao Marcelo que meio que interromperam a negociação que estavam fazendo da interface a fim de que eu a adquirisse para fazer a engenharia reversa.

Segue link para um arquivo .zip contendo:

- Diagrama e PCB no formato Eagle 5
- Diagrama e imagem da PCB em PDF
- ROM da interface (e listagem 'desassemblada' pelo DZ-80).



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




sexta-feira, 20 de fevereiro de 2015

Sinais de sincronismo da TV analógica e micros antigos.


Nas TVs de tubo, um feixe de elétrons é gerado a partir do aquecimento de um metal no catodo do tubo. Este feixe é acelerado por uma alta tensão nos anodos para adquirir energia cinética que depois é convertida em luz quando o feixe incide sobre uma superfície contendo sais de fósforo (tela).

Como o CRT (Cathode Ray Tube) só consegue iluminar um ponto por vez (tês pontos por vez nos CRTs coloridos), é necessário 'passear' o ponto pela tela numa velocidade tal que nossos olhos não consigam enxergar um ponto fixo, mas sim uma imagem contínua. Este processo é chamado de varredura.

Embora existam monitores CRT que desenhem diretamente a imagem na tela (os chamados  monitores vetoriais como os osciloscópios e antigos consoles de radar), a televisão utiliza um sistema baseado em linhas sequenciais, ou linhas de varredura, que são geradas a partir da ação do campo magnético gerado nas bobinas defletoras.

fonte: Techtudo
Estas bobinas são acionadas através do sinal gerado em dois osciladores, de forma a gerar um padrão de linhas que começa no canto superior esquerdo da tela e termina no canto inferior direito.

Ao final de cada linha o feixe de elétrons desce um pouco e retorna ao lado esquerdo da tela. Este é o chamado retraço horizontal. Ao final da última linha o feixe é deslocado novamente para o início. Assim é formado um campo de vídeo.

Fonte: what-when-how.com
 A TV analógica que conhecemos opera entretanto com 2 campos de vídeo entrelaçados conforme definido  pelo padrão RS-170  chamados de campo par e campo ímpar. Dois campos consecutivos constituem um quadro (frame).  Cada campo possui 262,5 linhas, totalizando 525 linhas de varredura por quadro. O entrelaçamento permite obter o dobro da resolução vertical porém a taxa de quadros cai pela metade. Assim, se a frequência vertical é de 60Hz, o vídeo é exibido a 30 quadros por segundo (valor nominal, pois a norma define 29,97 quadros por segundo).

Fonte: Radiologyclub.com
Fazendo a matemática, temos 29,97 quadros por segundo vezes 525 linhas por quadro que resulta em 15734,25 linhas por segundo o que significa que equivale a uma frequência horizontal de 15,734KHz, comumente arredondada para 15KHz nas discussões sobre monitores LG1x21 e afins.

A varredura da imagem na tela é comandada por dois osciladores - horizontal e vertical, que devem ser sincronizados com a imagem a ser exibida. Para isso o sinal de vídeo possui pulsos de sincronismo incorporados a cada linha.


Uma linha típica de vídeo é composta por um período de retraço horizontal (em que o feixe de elétrons é apagado, daí o nome 'blanking' seguido da imagem (linha) a ser exibida. Como o CRT não consegue apagar o feixe instantaneamente, o início do sinal de sincronismo ('frontporch') existe para garantir que a imagem esteja no nível de preto quando o pulso de sincronismo horizontal começar, evitando assim que se perceba o início do retraço horizontal.

Logo após pulso de sincronismo ocorre o período do  'backporch', que é quando os circuitos internos da TV fazem a amostragem do nível de referência (nível de preto) para poderem assim exibir a imagem com o contraste correto.

Fonte: Batsocks.com
O sincronismo vertical ocupa ao todo 9 linhas de vídeo, sendo 3 linhas de pulsos de pré equalização (front porch vertical) seguidas de 3 linhas do pulso de sincronismo vertical em si (vertical serration) e finalmente mais 3 linhas de pós equalização.

O que diferencia os campos pares e ímpares é a posição do início do pulso de sincronismo vertical em relação ao pulso de sincronismo horizontal. Se ambos coincidem temos um campo ímpar, mas se o pulso de sincronismo vertical inicia no meio de uma linha, ou seja, no meio tempo entre dois pulsos horizontais então temos um campo par.

Fonte: http://www.maximintegrated.com


As linhas de pré e pós equalização, bem como as linhas de sincronismo vertical possuem pulsos extras de sincronismo cujo objetivo é permitir que os circuitos separadores de sincronismo do monitor possam diferenciar entre os campos par e ímpar. Mais detalhes nesse (link)

Entre o final do pulso de sincronismo horizontal e o início da primeira linha de vídeo ativa, existem algumas linhas vazias (blank lines) que não são visíveis pois ocorrem durante o tempo de retorno do traço até o alto da tela. Por isso, das 525 linhas de vídeo que compõem um quadro, apenas 483 são visíveis. É daí que vem o nome 480i que significa 480 linhas de vídeo visíveis, num quadro entrelaçado.

Quando os primeiros computadores pessoais começaram a aparecer, eles não possuíam muita capacidade gráfica, e as resoluções verticais raramente excediam 192 linhas, tornando desnecessária a geração de quadros entrelaçados.

Assim, os fabricantes de microcomputadores criaram circuitos mais simples para gerar os sinais de vídeo desconsiderando então toda complexa a geração de pulsos durante o intervalo de sincronismo vertical. O resultado era uma imagem progressiva com 240 linhas úteis, composta de apenas do campo ímpar que se repetia a 60Hz (também chamado de 240p - de progressivo).

Abaixo seguem as formas de onda do intervalo de sincronismo vertical de alguns micros populares no Brasil na década de 80:
.
No TK90X as linhas de 'frontporch' e 'backporch' são brancas, em vez de serem linhas em nível de preto ('blank' lines), e o pulso de sincronismo vertical ocupa o tempo de 4 linhas de vídeo e não começa ao mesmo tempo que o pulso horizontal (começa um pouco antes do final da última linha e termina um pouco antes do próximo pulso de sincronismo.

Intervalo de sincronismo vertical no TK90X. Azul: Vídeo composto / Laranja: Sincronismo composto


No MSX1 (TM9128) o sinal de sincronismo é mais bem comportado, contendo linhas de 'frontporch' e 'backporch' em nível de preto.

Intervalo de sincronismo vertical no TMS9128. Laranja: Vídeo composto


A ausência do campo par nunca foi um problema para os televisores analógicos, pois havia uma margem grande em relação aos pulsos de sincronização vindos do sinal de vídeo. Eles simplesmente resetavam seus osciladores e exibiam novamente o quadro ímpar.  A falta das linhas pares somente evidenciava o efeito das 'scanlines' por causa do aumento do espaço vago entre duas linhas devido à falta das linhas pares.

Nos televisores modernos com circuitos totalmente digitais isso pode funcionar ou não, dependendo de como foi implementada a captura de vídeo, principalmente se a geração dos sinais de sincronismo for meio fora do convencional, como é o exemplo do TK90X. Tudo vai depender da implementação interna do firmware dos monitores.