Oh bem, uma recompensa! Finalmente fui com este circuito de aparência não hediondo que ainda oscila na tensão da bateria, mas estável na tensão acima da bateria! É provável que a tensão da bateria seja de 4,5 V no máximo com ácido de chumbo, que é o limite inferior da especificação USB.
O problema não é a tensão da rede, que pode não ser estável. Pode ser instável por apenas um instante e não é um problema. Se estiver realmente instável ou fora das especificações, substitua a verruga da parede. Pode haver muitas coisas erradas com uma verruga na parede que não consegue manter a tensão. Não gostaria de confiar nele para alimentar microcontroladores.
O verdadeiro problema é a tensão da bateria, que precisa ser cortada, uma vez que cai muito para evitar danos permanentes à bateria. Ajuste os resistores a gosto. O circuito é mais barato do que antes e mais confiável. Schottky é meu amigo, não me importo mais com ele! Ele me salvou muita dor de cabeça. De qualquer forma, o circuito que funciona com bateria precisa poder operar a uma temperatura muito inferior a 4,7V.
PS: Eu não gosto de soluções de chip único, elas jogam duro para ficar do meu lado do planeta. Além disso, eu não posso fumar eles quer ou não ...
ATUALIZAÇÃO :
Aqui está um esquema muito mais elegante (não hediondo). Como Dorian e outros salientaram, o TL431 requer uma corrente mínima para operar. Portanto, requer uma fonte de tensão confiável para operar. O que significa que ele tem que operar com a bateria. O TL431 realmente tem que atuar como um comparador, caso contrário, os mosfets estarão no modo linear e começarão a esquentar. A tensão do portão fica muito próxima da tensão da fonte U2 devido à entrada da tensão da rede. Essa é a causa real das oscilações acima, não a violação da folha de dados do tl431. As oscilações ocorrerão mesmo se o tl431 for removido completamente. Os mosfets no nível lógico também não ajudam. Para o circuito abaixo, os mosfets foram substituídos por mosfets de canal N. No entanto, isso causa uma queda de tensão na fonte quando totalmente ligado. A tensão para carregar varia de 2. 8V a 4.7V e o circuito funciona perfeitamente sem oscilações. Pode ser possível alternar a posição de R6 e tl431, mas o ânodo tl431 subirá apenas para 2,5V, e os mosfets (agora substituídos novamente pelos mosfets do canal P) sempre permanecerão ativados.
Mas, como o tl431 está sendo usado como um comparador de qualquer maneira e também requer uma corrente de suprimento para funcionar, por que não substituí-lo por um comparador de corrente mais baixa como um dispositivo ... Infelizmente, o lm358 não alcança o trilho + ve, e os mosfets são de nível lógico. Portanto, quando a tensão da rede elétrica é alta, uma corrente reversa flui para a bateria (0-60mA quando a bateria cai de 3,85 para 3,6V). Isso irá carregar a bateria lentamente quando a carga estiver baixa. Espero que isso seja uma coisa boa. O circuito funciona perfeitamente em todas as tensões de rede de 2V a 5V, sem oscilação. O circuito depende da queda de tensão no diodo. Substituí-lo por 1N4148 não garante que ele funcione sem oscilações se a tensão da bateria estiver alta. O circuito não foi simulado corretamente com o LM393, que é um comparador real. O teste adequado é sugerido antes do uso.
As oscilações são causadas por algum tipo de condição de corrida nas tensões da fonte e da porta do segundo mosfet. Ainda não sei exatamente o que está acontecendo. Mas os circuitos modificados funcionam e resolvem meus problemas. Esta não é a resposta perfeita. Mas é a melhor resposta. Estou aceitando minha própria resposta.
mais atualização!
Ajustado novamente, olhe atentamente, os mosfets são invertidos no eixo Y para que a fonte esteja dentro. O circuito agora está totalmente estável em todas as redes e tensões da bateria. Dependendo da diferença de voltagem da rede elétrica para a bateria, algumas correntes de fluxo podem fluir para a bateria (talvez 60mA) em alguns casos. O circuito funciona com um schottky ou um 1n4148 (embora, obviamente, com o 1n4148, ele consuma mais da bateria se a tensão da bateria estiver alta). Funciona com o comparador real LM393 e LM358, sem alterações. O Opamp / comparador aceita tensão de rede ou de saída no pino não inversor para comparação com a bateria. Eu acho que está quase perfeito. Obrigado pela recompensa!
PS: provavelmente deve substituir 1N4148 por 1N4007, mas 1N5819 é o melhor.