segunda-feira, 3 de abril de 2017

Mais um Dimmer digital com o MOC3023 e PIC12F675.

        Em um post anterior, mostrei um dimmer controlado por um PIC12F675. Este é o mesmo, mas com o TRIAC externo, assim posso usar o BCR50GM (50A/600V) ou o BTA80-800 (80A/800V).

Placa com TRIAC externo acima e com TRIAC BTA24 integrado abaixo.

TRIAC BTB24-600 (25A/600V) oriundo de um chuveiro elétrico e com o conector para ligar à placa.

TRIAC BCR50GM que ainda falta testar.

TRIAC BCR50GM visto por outro angulo.
Próxima aquisição no Aliexpress: BTA80-800, um TRIAC de 80A/800V.















Ventilador de teto usando o mesmo interruptor da lâmpada.

        Quem instala ventiladores de teto domésticos se depara com o problema de passagem de fios pelos eletrodutos. Normalmente passa-se no mínimo 3 fios. Mas se não for possível passar mais fios? Se houver tantos fios que não passa nem um alfinete? Ou a fiação é antiga que quando mexe estraga mais ainda? Tive que instalar um em uma sala de jantar num prédio antigo onde o eletroduto já estava saturado de fios antigos. Como o ventilador já estava comprado a tempos não dava para trocar por um de controle remoto. Poderia ligar com a lâmpada, mas iria ligar sempre os dois ao mesmo tempo e nem sempre a ventilação era desejada.
        Assim tive a ideia deste circuito que fica ligado junto à lâmpada mas só liga o ventilador se esta for desligada e religada rapidamente. Deste modo não há necessidade de passar nenhum fio, tendo o inconveniente de só poder usar o ventilador com a lâmpada ligada (o que não era um problema neste caso já que a sala fica longe da janela e precisa sempre de lâmpada).
        O circuito é muito simples, usa um PIC10F206, um optoacoplador MOC3043 (com zero crossing circuit) e um TRIAC BT136-600. Ao ligar a lâmpada, energiza-se o capacitor da fonte que alimenta o PIC que recebe os pulsos da rede elétrica da mesma forma do dimmer microcontrolado (ver postagem "Dimmer digital com o MOC3023 e PIC12F675"), ao desligar a lâmpada, ainda resta energia neste capacitor para alimentar o PIC por alguns segundos onde o firmware vai detectar a falta de energia elétrica pela ausência de pulsos e assim ligar o LED do optoacoplador. Se a lâmpada for ligada antes que a energia do capacitor seja insuficiente para alimentar o PIC e o LED do optoacoplador, o TRIAC será acionado no próximo ciclo da rede ligando o ventilador. Usando um PIC com mais I/Os, como o PIC12F510, pode-se usar mais dois TRIACs para fazer o controle de velocidade e/ou da lâmpada.
Esquemático suinamente desenhado. A entrada AC IN vem de um pequeno transformador com a saida de 6 a 9Vac. Note que o circuito de detecção dos pulsos da rede é o mesmo do dimmer microcontrolado.
        Os microcontroladores da família PIC10F2xx funcionam de forma peculiar: não possuem interrupções. Eles respondem a um evento externo através de uma técnica de polling ou, como prefiro usar, pondo o microcontrolador em sleep. Quando há um evento (mudança de estado do comparador ou watchdog timeout) ele acorda através de um reset onde a rotina de inicialização irá procurar a origem deste reset através dos bits apropriados (GPWUF, CWUF e TO) no registro STATUS. Assim, se todos estes bits estiverem inativos, executa-se a inicialização completa do microcontrolador, caso contrário, executa-se as rotinas de tratamento para mudança de estado das entradas e/ou do comparador ou watchdog timeout. No caso deste circuito, watchdog timer é resetado duas vezes por ciclo da rede (120Hz) através da mudança de estado do comparador de tensão. Na ausência destes pulsos, haverá um watchdog timeout reset que troca o estado da saída GPIO0, ligando ou desligando o LED do optoacoplador.

Sinal no pino GP1/CIN-.

Quadrantes de acionamento de TRIACs. O BT136-600 é um TRIAC que pode ser acionado nos 4 quadrantes mas o MOC3023 o aciona no Q1 e Q3.


Placa. O header de entrada de 4 pinos, 2 são para alimentação (pequeno transformador de 6 a 12V) e os outros 2 são ligados ao GPIO3 podendo ser usado com uma chave digital, ou usar o TTP223 para fazer um interruptor de toque. O borne verde é usada para ligar o ventilador.

Esquema típico para ventiladores de três velocidades.





Medidor de energia de baterias de Li-ION de uma célula com o IC bq27210.

         O IC bq27210 da Texas Instruments é um medidor de energia para ser usado em módulos de bateria de Li-ION de apenas uma célula. Ele já está obsoleto, porém serve para o estudo e aprendizado de como a medição de energia em uma bateria funciona.
         O bq27210 usa a interface I²C a no máximo 100kHz. Há a versão que usa a interface HDQ (bq27200) de apenas um fio (1-wire) exclusivo dos dispositivos da Texas Instruments.
        A medição de energia em uma bateria é uma tarefa complexa pois leva em conta a temperatura, tensão, corrente de carga/descarga, auto-descarga e mais outros fatores. O bq27210 mede a tensão diretamente na bateria e a corrente é medida por um shunt de 20 miliOhm e tem toda a lógica para determinar a energia disponível na bateria. Há vários registros internos (ver datasheet) e ainda não compreendi plenamente o seu funcionamento. Ele está disponível somente em encapsulamento SMD, assim tive que fazer um adaptador para DIP. A placa contém os headers da bateria, da saída da bateria e da comunicação I²C bem como os componentes passivos de filtragem dos sinais analógicos.

Placa com o bq27210 em seu adaptador DIP em cima de uma bateria de tablet xing-ling.

Vista inferior da placa. Note o shunt de 20mR e os resistores e capacitores de filtro.

Firmware que mostra os registros do bq27210:
Coluna esquerda:
- LMD: Last Measured Discharge;
- NAC: Nominal Available Capacity;
- CAC: Compensated Available Capacity;
- FCAC: Full Compensated Available Capacity;
- ARTE: At-Rate Time-to-Empty High;
- CYCT: Cycle Count Total;

Coluna direita:
- Tensão da célula;
- Corrente média;
- Temperatura;
- RSOC (Relative State-of-Charge), 92% no caso;
- CSOC (Compensated State-of-Charge), também 92%;

Nas duas últimas linhas são mostrados os flags de status. Não é mostrado todos os registro pois não cabem todos no display, assim mostro os mais relevantes. O mais relevante talvez seja o RSOC, que mostra a energia disponível em porcentagem com todas as compensações já feitas.


Com uma descarga de aproximadamente 100mA aplicada a bateria. Note que a tensão cai um pouco e o NAC vai sendo decrementado.


sexta-feira, 24 de março de 2017

Sensor de luz ambiente com o IC OPT3001.

        O IC OPT3001 da Texas Instruments é um sensor de luz ambiente com interface I²C. Ele mede a intensidade de luz visível cuja resposta espectral é idêntica à resposta do olho humano. Só esta disponível em encapsulamento SMD, assim adaptei-o em uma placa com um conector de 5 pinos em um capacitor de filtro na alimentação.
        Um exemplo de uso é o controle automático do brilho do display OLED com o SSD1306 em função da luz ambiente.

Placa com o OPT3001 colado no furo maior. Suas ligações estão no lado inferior.

        O resultado da medição da luz ambiente é dado por:
Luz ambiente (em LUX) = 2^EXP × RES/100
Onde EXP é o registro de exponente e RES o resultado fracional.

Firmware que mostra os registros EXP (Expoente) e RES (Resultado fracional).  Neste caso: 2^2 * 2156 / 100 = 86,24 Lux.







quinta-feira, 23 de março de 2017

PWM com o PIC10F322.

        Mais um uso para o PIC10F322: um PWM. Este microcontrolador possui dois módulos PWM, que por compartilharem o mesmo TIMER2, só funcionam na mesma frequência, porém com duty cycle diferentes, podendo serem ativos em nível alto ou baixo. A frequência é definida como:

PWMFREQ=FOSC/((PR2+1)*4*TMR2PRESCALE)

Onde TMR2PRESCALE pode ser 1, 4 ou 64. Usando o clock interno de 16MHz pode-se ter até 62,5kHz com resolução de 8bits.

O duty cycle é definido como:

PWMDUTYCYCLE=PWMxDCH&PWMxDCL[bits7&8]/((PR2+1)*4)


PMW a 6.2%.


PWM a 25%.


PWM a 50%.


        Adicionalmente, o CLOCK (FOSC/4) do PIC10F322 pode ser disponibilizado no pino RA2 com as frequências 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62,5kHz e 7,75kHz (esta última originada do LFINTOSC).

Clock interno (16MHz) no pino RA2 (FOSC/4=4MHz).









Teste do IC MPU6050.

        O IC MPU6050, da InvenSense, é um acelerômetro (g) e um medidor de razão de rotação (graus por segundo) em três eixos.

Placa do MPU6050 com um regulador de tensão e demais componentes.

       Assim como o magnetômetro do post anterior, o firmware apenas lê os valores do MPU6050 e mostra em um display OLED. Os valores variam muito e ainda estou estudando este IC. Há muitos parâmetros de configuração.

Valores dos registros do MPU6050: Eixo (X, Y e Z), Aceleração (16,384 LSB/g) e taxa de rotação (65,5 LSB/°/s). A última linha é a temperatura (340 LSB/ºC).

Teste do IC HMC5883.

        O IC HMC5883 é um magnetômetro de três eixos de baixo custo da Honeywell. Sua função é ser uma bússola eletrônica medindo a intensidade do campo magnético em três eixos (X, Y e Z), tem comunicação I²C e opera em 3,3V.

Placa do HMC5883 com um regulador de tensão e demais componentes.

        Por enquanto o firmware apenas lê os valores do HMC5883 e mostra em um display OLED. O HMC5883 foi ajustado para fazer uma média de 8 amostragens, modo de medição contínua a 75Hz, e 390LSB/Gauss de resolução.


Valores dos registros do HMC5883 e status dos bits LOCK e RDY.