Para quem não se recorda, AQUI pode ver o desenrolar desta engenhoca.
Embora tenha ficado pouco "profissional" devido, na altura, à chegada de 2 pequenos, ainda hoje funciona.
Hoje alberga 5 crias, como se pode ver nas fotos.
Sim... eles parecem gostar bastante de estar lá dentro :D

Objectivo
Este circuito, desde que colocado da forma correcta, tem como função limitar a corrente máxima que poderá circular num dado circuito. Isto é, impedir que num circuito em teste circule mais corrente do que o previamente estabelecido, usando um potenciómetro.
Este circuito tem também como meta ser o mais barato possível e poder ser montado por qualquer um. O baixo custo também poderá permitir a construção de alguns KIT's que poderei colocar à venda.

O circuito
Composto pelas seguintes principais partes que passarei a explicar em maior detalhe.
Potenciómetro R1: Este potenciómetro multivolta de 10K (aconselhado um de 20 voltas) irá permitir fazer um ajuste rigoroso da corrente máxima que circulará pelo circuito.
U1 (LM358): um IC composto por 2 ampops cuja função de um deles é a de controlar a tensão na Gate do MOSFET. Ele irá comparar a queda de tensão em R5 com a tensão máxima que esta pode atingir, dada pelo divisor de tensão composto pelo potenciómetro. O outro ampop irá controlar 2 LED's que irão dar a indicação de se pelo circuito em teste está ou não a circular mais corrente do que deveria.
Resistência de potência R5: esta resistência, que pela 2ª lei de Ohm, vai provocar uma queda de tensão de acordo com a corrente que a atravessa. Pode-se chamar a esta resistência uma "espécie de conversor corrente - tensão".
MOSFET (Q1): o ampop vai actuar sobre a Gate deste de forma a mante-lo na região de triodo. A corrente que circula do Dreno para a Source é uma função do Vgate e o ampop tudo fará para que manter V+ >= V-.
Porquê usar um MOSFET? Bem, este poderia ser trocado por um transistor, mas o ganho de corrente dos transistores de potência é baixo e por isso, a saída do ampop poderia não ter corrente suficiente para que entrasse pelo colector a corrente desejada. Poderia-se usar também uma montagem de Darlington, mas o MOSFET lida melhor com este tipo de aplicações.
Atenção com as potências: a potência dissipada pela resistência de potencia é dada por R*I^2 e a potência dissipada pelo MOSFET (muito maior que a da resistência) é dada aproximadamente por (Vdreno-Vsource)*I. Só como exemplo, se o MOSFET provocar uma queda de tensão de 10V a uma corrente de 5A, a potência dissipada pelo MOSFET será de 50W!!!

Aplicações
Este circuito poderá ser usado como:
Limitador de corrente;
Fonte de corrente;
Carga de corrente constante;
Ideal para quem quiser alterar fontes ATX de computadores como fontes de bancada para testes.

Funcionamento
O circuito foi pensado para ser alimentado a partir de uma fonte de +12V, por J2.1.
Para fazer o set da corrente máxima, deve colocar-se um amperimetro ligado à alimentação desejada e a outra ponta a J2.2, depois disto irá ser mostrada uma corrente que nos máximo será de 5A. Através do potenciómetro irá fazer-se o ajuste da corrente máxima. Durante essa operação o LED_red irá ligar, mostrando que se está a atingir uma corrente máxima.
Após isso, o amperimetro deverá ser substituído pelo circuito em teste. O LED_green deve permanecer aceso a indicar que a corrente que circula por lá é inferior à corrente máxima permitida. Se algo correr mal, o circuito limitará a corrente e de imediato o LED_red ligará apagando o LED_green.
As outras aplicações serão descritas pormenorizadamente em futuros artigos.
Qualquer questão não hesitem em deixar um comentário ;).
D1 = BZX79C4V7

British researchers have transmitted wireless data at speeds of over 10 gigabits per second using LED lights. It is the latest breakthrough in the emerging field of Visible Light Communication (VLC).
VLC uses the visible light portion of the electromagnetic spectrum to transmit data. When the technology matures visible light could become an additional medium next to radio waves for wireless communication.
The researchers used arrays of micro-LEDs developed at the University of Strathclyde, Glasgow. The light emitted by micro-LEDs is modulated at high speeds to create a binary sequence. A receiver converts the light sequence into an electrical signal and feeds it to a computer or mobile device. Each of the elements in the array transmit a unique binary sequence at the same time. These parallel data streams are the reason the team can achieve such high speeds.
The Strathclyde University collaborates on the VLC technology with four other UK universities as part of the Ultra Parallel Visible Light Communications project. It runs from 2012 to 2016 and has received £4.6 million (€5.3, $7.4) in funding.
VLC would be a welcome addition to RF data transmission. It can ease the strain on the over-crowded radio frequencies. Visible light is also more energy efficient than radio signaling because it does not require energy-hungry base stations.
The light bulbs used for VLC double as normal illuminators. The infrastructure for VLC is already in place, with a few adjustments the lights installed in homes and offices can function as data transmitters.
In some instances VLC can also be more secure than radio technology like Wi-Fi. Wi-Fi needs to be encrypted because anyone in range can eavesdrop on the signal.
But light can’t travel through walls so what’s transmitted indoors, stays indoors.

Meio engasgado, mas já foi bastante tarde e o meu raciocínio já não estava pelo melhor...

Não vou colocar aqui a biblioteca porque não faria sentido, mas poderei facultar a quem pedir via e-mail, para um melhor controlo.
Fica só um exemplo do main() que corresponde ao que está a ser feito no video.
#include <xc.h>
#include "Daviduino.h"
#include "LCD.h"

void main()
{
    char texto[8]={'C','o','n','t','a','g','e','m'};
    char i;
    unsigned int teste;

    initOSCILLATOR();
    initPORT();

    delayms(1000);

    lcd_init();

    while(1)
    {

    lcd_pos(1,5);

    for(i=0;i<8;i++)
    {
        lcd_dat(texto[i]);
    }

    lcd_pos(2,1);
    lcd_dat(62);        //>

        for (teste=0 ; teste<=65534 ; teste++)
        {
            lcd_pos(2,5);
            lcd_write_num(teste);

            delayms(250);
        }

        lcd_cmd(0x01);       //clear LCD
        __delay_ms(2);
    }

}