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.