Cambio frecuente de suministro para un microcontrolador

1

Quiero crear un LED chaser usando pic12f683. La operación utilizará un botón pulsador para encender la unidad de usuario.

Una vez que la unidad de control de energía obtiene la potencia, en primer lugar incrusta una variable y la escribe en la EEPROM. Esta variable define desde qué punto iniciar la secuencia del programa de parpadeo del LED para que cada encendido se inicie desde un punto diferente. Tengo 13 modos de flasheo en el programa.

El uC estará encendido y seguirá parpadeando los LED mientras se mantenga presionado el botón.

Me molesta que los frecuentes y quizás muy cortos empujones en el botón pulsador puedan dañar la unidad de control. Sobre todo porque lo primero que hace es leer y escribir en la EEPROM.

He implementado un retraso de 30 ms antes de la operación de lectura / escritura en el inicio, según lo recomendado. Esto es con el temporizador de encendido desactivado.

También pensé en poner un capacitor grande en paralelo al suministro de la batería para que el VDD caiga un poco lentamente.

¿Qué tan malo es este diseño para la unidad uC?

¿Sigue siendo realmente malo con mis soluciones?

¿Qué más debo hacer al respecto?

¿Cómo calcular un buen valor para el capacitor grande si es una solución decente?

    
pregunta Zimgir

4 respuestas

3

Sugeriría una pequeña resistencia en serie con el Vcc a la MCU (quizás 10-100 ohmios, elegida para dejar caer quizás 50-100 mV en operación normal) y un capacitor además del capacitor de bypass habitual de quizás 100uF. Es posible que deba agregar una resistencia de purga o un diodo a través de la resistencia para que la tensión de alimentación disminuya lo suficientemente rápido como para que se reconozca una breve liberación del botón, según el circuito. Esto ayudará a prevenir cualquier ESD de los dedos en el interruptor que destruye el micro. En realidad, no existe ningún otro riesgo para la vida del micro al encenderlo y apagarlo.

Sin embargo, funcionalmente, sugeriría encarecidamente que habilite BOR y considere usar un chip de supervisión de suministro externo (chip de reinicio). Esto ayudará a prevenir la corrupción de EEPROM. Si no está demasiado preocupado por la falla impar, el BOR interno probablemente esté bien.

    
respondido por el Spehro Pefhany
2

Este circuito debe proporcionar lo que quieres.

Nodijistesiteestásquedandosin3.3Vo5V.Asumí3.3Vperoloscambiosdecircuitosonmínimos(dosresistencias).

TambiénasumoqueestásusandodosbateríasAAparaconducirelcircuito.AunqueustedpodríaejecutarelmicrocontroladorylosLEDdirectamentedelabatería,elbrillodelosLEDseatenuaráamedidaqueseagotelabatería.Porlotanto,heincluidounreguladordeconmutaciónderefuerzoquemantienelatensióndealimentaciónenunaconstantede3,3V(o5V).Elusodeunreguladorderefuerzodebepermitirquelasbateríasindividualescaigana1.2Voinclusounpocomásbajo.

Elcircuitoincluyehardwarequetocaelinterruptor.Cuandoelinterruptorestácerrado,habilitóelMOSFETQ2delcanalP,queasuvezaccionaelreguladordeaumentodelabatería,queproporciona3.3Valrestodelcircuito.(Sinecesita5V,simplementeelimineR1yR2).

Cuandosepierdelaenergía,losLEDyanorecibiránenergía,yaqueestándetrásdeldiodoD2.Mientrastanto,elmicrocontroladorseguiráfuncionandoyaqueestásiendoalimentadoporelcondensadorC2poruntiempo;Estoyadivinando100msomenos.Calculéesoaltratarelmicrocontroladorcomounaresistenciade1100(basadaenunsuministrode3.3Vyunacorrientede3ma)juntoconelcapacitorde100µF.

Paraqueelcircuitofuncionecorrectamente,esnecesariodetectarcuándoseestácortandolaalimentación.DebetenerunpinGPIOdisponible,GP3,yaquesolosepuedeusarcomoentrada.Nonecesitael\$\small\overline{\text{MCLR}}\$Funcionalidad,yaqueestáactivandoydesactivandotodosucircuito.

Conestepinpuedecontrolarlasalidadebateríabaja(LBO)delregulador.Seapagarácuandosesuelteelinterruptor.DadoqueGP3puederealizarunainterrupciónenelcambio,puedeusarloparahacercualquierordenamiento,yluegohacerunciclocerradomientraslaenergíasereducecompletamente,mientrassecompruebaelestadodelabatería.Si,enelimprobablecasodequelaenergíavuelvaaaumentarmientrasestáhaciendounbucle,puedevolveralprincipiodesuprograma.

EntérminosdeescribirenlaEEPROM,esperarporuncortoperíododetiempomientrasseiniciaelmicrocontroladorsuenacomounabuenaideaencasodequeelcircuitoderebotesuavicetodoeltiempo.Enrealidadaumentaríaeltiempounpocoa50ms.DeberíaestardeacuerdoconescribirenlaEEPROMcuandoestáapagado,mientrasrecibelaalimentacióndelcondensadorC2.LaEEPROMenelPIC12F683puedeborrarseyreescribirse1,000,000vecesparaquenotengaquepreocuparseporlaresistencia.

Todaslaspartessonpasantes,loquefacilitalaconstrucción.

Nota:sinodeseaincluirloscircuitosdelreguladorderefuerzo,elcircuitoseveráasí:

La funcionalidad es la misma, excepto que no tendrá un voltaje de alimentación constante.

    
respondido por el tcrosley
0

De alguna manera tienes razón. No dañará su controlador per se. Pero ayudará tener una señal de rebote para filtrar cualquier falso positivo.

Al presionar el botón puede producirse un pequeño arco, lo que nunca es una buena idea. El pin al que está conectado su pulsador es, por supuesto, un pin de entrada. A menos que tenga un pull up o pull down (según sus requisitos de entrada), podría tener entradas falsas y dudosas que podrían interrumpir la ejecución del software. 3 cosas: proporcione una resistencia de extracción, una tapa de bajo valor para filtrar nise (un filtro de paso bajo) y finalmente implemente un rebote en el software.

Finalmente, cuántos LEDs están parpadeando. ¿Se realiza a través de un transistor o lo ha conectado directamente a los pines de uC? Si es último, entonces es una mala idea.

    
respondido por el Board-Man
0

El problema principal es salir del poder al escribir en el eeprom, creo que puedes resolverlo mediante:

1) Puede implementar 2 áreas de datos en el eeprom con suma de comprobación y número de serie para almacenar los datos, por ejemplo, el Área A y el Área B.

Lea de las áreas y obtenga los datos más recientes (utilizando el número de serie) con una suma de comprobación válida. Use y modifique los datos para sus necesidades, aumente el número de serie y almacene en el área más antigua (basada en el número de serie) o en el área dañada (según la suma de control), el área dañada tiene la prioridad.

Comience su rutina (los leds en este caso) con los datos.

Si la escritura se interrumpe debido a la pérdida de potencia, todavía tiene un área con buenos valores. El peor de los casos es que su valor no se incrementa, pero si lee / calcula / escribe antes de la rutina de leds, el usuario no verá la reproducción de leds, por lo que es como si no pasara nada.

2) El chip tiene 6 pines io, puede usar el pin de reinicio como entrada, puede poner el interruptor en ese pin para activar el chip (no sé si el pin puede generar una interrupción o despertarse el micro).

3) Puede encender el chip todo el tiempo y entrar en modo de reposo, su interruptor puede alimentar a cualquier pin con una resistencia para activar el chip y en su rutina de led, de vez en cuando cambia la dirección del pin para probar si el voltaje todavía está presente (lo que indica que el usuario todavía presiona el interruptor).

4) Usando el enfoque de capacitor, puedes usar un fet como el bs170 con un valor de capacitor más pequeño.

    
respondido por el Luis Backup

Lea otras preguntas en las etiquetas