Deixo aqui um estudo que fiz há uns anos para um "Self DC-DC": ter um microcontrolador alimentado por uma tensão gerada por um regulador buck comutado controlado por ele próprio. O circuito funciona mas a eficiência não é nada de especial, em parte devido à utilização de transistores bipolares para o switch (quis usar transistores de fácil obtenção). Pode ser facilmente melhorado.
O micro corre a 4MHz e para controlo do regulador usa 1 saída de PWM, 1 entrada de ADC e 1 timer de 100us. Para resolver o problema do arranque usei um reguldor linear formado por Q1, R1 e D1. Quando o regulador comutado atinge e ultrapassa a tensão do regulador linear, o linear "desliga" automaticamente.
O código de controlo é muito simples e implementa um "arranque suave" senão há overshoot da tensão em situações de baixa carga. O código deixo apenas para "referência", pois usa uma lib que não me dá jeito publicar por vários motivos. De qualquer forma a lib apenas abstrai a configuração de alguns registos do AVR e é fácil substitui-la (posso ajudar se alguém tiver curiosidade em experimentar o código).
O código do conversor corre em background e o ciclo principal pode-se esvaziar e fazer-se lá o que se quiser (tendo em atenção os recursos utilizados pelo conversor).
Fiz alguma caracterização do regulador, que reuni numa folha excel e cá deixo também ali em anexo. Ficaram por fazer testes de transientes de carga (o que acontece à tensão de saída se a carga mudar bruscamente?). Deixo tb algumas imagens da tensão no arranque, e umas notas (*.txt) relativas às conclusões dos testes das imagens de osciloscópio.
Cá fica para quem quiser ver por curiosidade ou tirar ideias.
p.s.: Acabei por enfiar tudo num zip, era mta coisa para "atachar" individualmente