Lcd 16x2 se cuelga

Hola amigos arduineros, hace una semana hice mi primer programa en arduino pero me tope con un problema
El objetivo del programa es que si hay una señal, comienza a contar un minuto y hace una comparación de presión y de acuerdo a la presión que tenga activa un relé. Todo funciona bien pero no por mucho tiempo.
Cuando regreso a ver como está el funcionamiento, encuentro el lcd 16x2 mostrando todo tipo de letras y números (se cuelga), lo tengo que resetear manualmente, busqué una opción llamada watch dog pero el problema sigue.
Espero me puedan ayudar.
Usé un arduino Leonardo, un lcd 16x2, un shield Sim900, y un módulo de 4 relés.
Alimente el arduino con un cargador de celular por el puerto micro usb del arduino.

el Shield SIm900 requiere alimentación externa cada vez que funcione. No puedes suministrarle la energia que requiere con el Arduino.