terça-feira, 13 de novembro de 2018

Aproveitamento uma fonte de alimentação do PlayStation3 com medidor baseado no INA226.

       Ganhei um PS3 Fat estragado (RLOD) que não tem mais conserto. Nesta versão de hardware, a fonte vem em uma subcaixa de plástico. Ela tem entrada universal (100~240Vac) com PFC ativo e fornece até 23A @ 12Vdc. Tem ainda uma saída auxiliar de 5Vdc e um sinal de controle que habilita/desabilita a saída de 12 Vdc. Infelizmente não achei seu esquemático.

Placa da fonte vista de cima (ref. EADP-300AP).
Placa da fonte vista de baixo. Adicionei os postes metálicos de parafusos e os poste de plástico tive que furar a placa.

        Para aproveitar esta fonte, fiz uma placa que tem um PIC12F1840 para controlar a habilitação da saída de 12V bem como mostrar a medição de tensão e corrente realizada pelo INA226 em um display OLED de 128x64 pixels. O INA226 mede a corrente através de um shunt de 0,001Ω da própria fonte. Retirei os conectores das saídas de 12V e 5V. No lugar do conector de 12V foi soldado diretamente a fiação de saída e no lugar do conector de 5V, foi ligado um fio para alimentar esta placa de controle bem como o fio de controle da saída de 12V.

Detalhe mostrando a placa de controle fixada em um dos postes metálicos.
Placa de controle vista de lado.


Esquemático. Note que neste caso, o INA226 mede a corrente pelo lado baixo, razão pela qual não pode ser usado o INA219.


Detalhe mostrado os fios esmaltados atravessando a placa da fonte e que ligam os sinais IN+, IN-, GND e VBUS do INA226.
Detalhe mostrando onde foram ligados os sinais IN+, IN-, GND e VBUS do INA226.
Detalhe dos opto acopladores de controle, proteção e realimentação.
Foram usados vários fios para suportar 20A.
Fonte ligada mas com a saída desabilitada. Note que infelizmente o offset de corrente ficou bem alto devido a distância entre os terminais do INA226 e o shunt.

Saída habilitada e sem carga. A medição de tensão do INA226 é bem precisa mas o offset de corrente continua muito alto.
Com uma lâmpada dicróica ligada como carga. A diferença de tensão ocorre porque o múltimetro está medindo no conector de saída, depois do shunt.
Medindo a corrente com o múltimetro. Ao contrário da tensão, a corrente precisa ser calibrada através de uma constante em um dos registros do INA226.

Display Sharp LS013B4DN04 (Memory LCD) com o PIC16F1825.

        Em um post anterior, foi mostrado o Memory LCD LS013B4DN04 da Sharp. Notar que este display está obsoleto agora, tendo como alternativos LS010B7DH04 ou LS013B7DH03, ambos com 128x128 pixels, mas a lógica de acionamento e pinagem continuam as mesmas.
         Foi um grande desafio fazer este display funcionar com o PIC16F1825, pois este possui pouca memória RAM, insuficiente para criar um buffer de memória requerida para o uso deste display: 12 bytes para cada uma das 96 linhas totalizando 1.152 bytes. Para contornar esta falta de memória, em vez de armazenar no buffer o conteúdo do display, é armazenado somente os caracteres a serem mostrados. Usando uma fonte de 32x12 pixels para os caracteres, tem-se 3 linhas de 8 caracteres totalizando somente 24 bytes. A grande desvantagem deste método é a tremenda dificuldade para mostrar caracteres e gráficos ao mesmo tempo, mas para minhas aplicações já é aceitável mostrar somente caracteres. Tenho muitos projetos para este display devido ao seu consumo de energia ser absurdamente baixo.
        O display usado foi retirado da placa 430BOOST-SHARP96, que é usado nas placas de desenvolvimento dos microcontroladores MSP430 da Texas Instruments.

Placa 430BOOST-SHARP96 vista por cima sem display e com display.
Placa 430BOOST-SHARP96 vista por baixo sem display e com display.
       Para poder usar este display nos meus projetos, montei uma placa onde o mesmo é colado com fita dupla face no lado de cima e embaixo montei o conector ZIF de pitch 0,5mm e 10 pinos e um header de 7 pinos cuja pinagem é a mesma dos displays OLED com interface SPI.



Conector ZIP de pitch 0.5mm de 10 pinos, retirado de uma placa de notebook.
Placa montada com o display fixado por quatro quadradinhos de fita dupla face branca.
Placa vista por baixo. Note a resina epoxi cinza para fixar os fios esmaltados.
Pinagem de um display OLED SPI.

Esquemático. Notar que o sinal D/C não é usado e o RESET é ligado ao DISP, sendo que este sinal controla a habilitação do display (display on/off).



Display em ação com fonte 32x12. Note a orientação vertical dos caracteres.


sexta-feira, 5 de outubro de 2018

Display Siemens HDSP2114S com o MCP23017.

        O Siemens HDSP2114S é um display de matriz de LEDs 7x5 verdes de 8 caracteres que opera em 5V.
Display HDSP2114S visto de cima.
Display HDSP2114S visto de baixo.
Display HDSP2114S visto de lado.
       Assim como o display HPDL-1414 mostrado em um post anterior, este display também usa uma antiquada interface paralela. E novamente, para minhas aplicações, é bem mais útil usar uma interface I²C ou SPI. Para converter a interface paralela do HDSP2114S em I²C foi usado novamente o IC MCP23017 da Microchip. As saídas GPA7~GPA0 são ligadas às entradas D7~D0 do HDSP2114S e as saídas GPB7~GPB0 ligadas às A4~A0, CE, WR e RST.
Esquemático.
        O display HDSP2114S fica no lado superior. Ainda neste lado, está o IC MCP23017 e no lado inferior está um microcontrolador PIC de 8 pinos (como o PIC12F1822 ou PIC12F1840). Tem somente um header para interface I²C. Esta placa também pode ser usada sem o microcontrolador através do header I²C.

Lado inferior da placa, mostrando o microcontrolador e o header I²C.
Lado superior da placa, mostrando o IC MCP32017.
Placa com todos os componentes montados vista de lado. Ficou um sanduíche difícil de montar mas muito compacto.

Display HDSP2114S em ação com um acrílico fumê.
Mostrando a tensão do IC INA219.
Mostrando a corrente do IC INA219.
Sinal do pino CLK I/O do HDSP2114S, usado para sincronizar outras unidades.


terça-feira, 2 de outubro de 2018

Display HPDL-1414 com o MCP23017.

        Em um post anterior, foi mostrado o display HPDL-1414 ligado diretamente a um microcontrolador (PIC16F1933). Este tipo de display usa uma antiquada interface paralela já que na época em que foi lançado era uma interface muito comum. Para minhas aplicações, é bem mais útil usar uma interface I²C ou SPI. Para converter a interface paralela do HPDL-1414 em I²C foi usado o IC MCP23017 da Microchip. Ele possui duas portas de 8 vias: GPA7~GPA0 ligados a D6~D0 do HPDL-1414 e GPB7~GPB0 ligados a A1~A0 e WR de cada HPDL-1414.

Esquemático.
        A placa usa quatro displays HPDL-1414 no lado superior, totalizando 16 caracteres. No lado inferior, estão o IC MCP23017 e um microcontrolador PIC de 8 pinos (como o PIC12F1822 ou PIC12F1840). Tem dois headers: um para interface I²C e outra para programação/debug do microcontrolador. Esta placa pode ser usada também sem o microcontrolador através do header I²C.

Lado superior com os 4 displays HPDL-1414.
Lado inferior com o IC MCP23017 e PIC12F1822. O header branco é a interface I²C e o amarelo a interface de programação.
Placa vista de lado. É difícil montar assim mas fica bem compacto.
Display em ação. Foi fotografado com um acrílico fumê para melhorar a visualização.
Com mais iluminação mostrando o acrílico.
Mostrando tensão e corrente do IC INA219.







sexta-feira, 28 de setembro de 2018

Relógio/Voltímetro para carro.

        Fiz a heresia de não ter som no possante, assim a baia vaga do mesmo foi aproveitada para por dois conversores para 5V com dois conectores USB cada um e no meio, um voltímetro.


Modelo que comprei.

Foto do anúncio com o conversor e voltímetro ligados. Os LEDs dos conversores USB/5V foram trocados por brancos para não destoarem da iluminação original do carro. 
O kit vem parecido com este, mas com espelho de três lugares.

Vista superior da placa do voltímetro.

Vista inferior da placa do voltímetro.
        Preciso de pelo menos três tomadas USB no carro, uma para a câmera veicular, uma para meu celular quando uso GPS e outro para o celular do carona (quem tem mulher sabe como é). Montei tudo usando o conector do som incluso no carro, não precisando fazer nenhuma alteração na fiação original. Tudo funcionando, mas me incomodou o voltímetro: é muito brilhante à noite e faz poucas amostragens por segundo. Parti então para fazer o meu próprio voltímetro, mais preciso e realizando mais amostragens por segundo. O primeiro problema foi o tamanho do display:

Detalhe mostrando o tamanho do display no suporte do voltímetro.

        Precisava de um display de 4 ou 5 dígitos para mostrar a hora, mas o suporte do voltímetro só cabe um display de 3 dígitos. Procurando por displays que coubessem, só consegui um: um bubble display da HP modelo 5082-7405.
Comparação entre o display HP5082-7405 e o do voltímetro.

Cheguei a considerar este display, mas é caríssimo e ficaria muito ruim de mostrar as horas pois só tem 4 caracteres.
Lado inferior da placa.
Lado superior da placa.
Display com sua placa montado no suporte.

Placa conectada ao display.


Esquemático.
        Outro problema que tive foi o gerenciamento de energia, pois para manter a hora, o PIC16F1825 precisa estar ligado na bateria. Para manter o consumo de corrente abaixo de 1mA, ao perceber a ignição desligada, o microcontrolador põe o IC MAX7219 em shutdown e fica em SLEEP, somente acordando a cada meio segundo para contar a hora ou quando a ignição é ligada. Ao ligar a ignição, o firmware mostra a tensão da bateria, independente da última seleção pois é muito útil saber a tensão antes e depois de ligar o motor. Quando a ignição está ligada, o microcontrolador não entra em SLEEP e amostra a tensão 62,5 vezes por segundo, fazendo uma média de 16 amostragens e assim atualizando o display com o valor da tensão 4 vezes por segundo aproximadamente. Depois de 125 segundos, o firmware muda automaticamente para hora. Para alternar entre hora/tensão, pressiona-se o pequeno botão vermelho ao lado do display e para ajustar a hora, pressiona-se por mais de 2 segundos, entrando no modo de ajuste.

Mostrando a hora.
Mostrando a tensão da bateria.

Mostrando a tensão com as luzes noturnas ligadas.