Mi circuito no funciona, ¿Y ahora qué?
Aloha mundo! (Estoy de un programador últimamente…) Seguro que has montado alguna vez un circuito: ahí con tus largas horas de soldadura, tus pines perfectos y brillantes, tu cable que está impoluto (Ni largo ni corto). Vamos que ves la placa y te vienen a la mente pensamientos gua***s.
Enciendes el circuito con su alimentación, sus pines bien conectados y… No va. No va, nunca va a la primera (O eso dicen…). Y es el momento en el que te pones a llorar y a maldecir a la electrónica.
Después del berrinche totalmente justificado, es el momento de descubrir eso que falla. Aquí una lista de esas cosas que yo miraría…
¿Cortocircuitos? ¿Existen?
Lo primero de todo sería entender qué espero del circuito en sí, que respuesta debería estar viendo o qué debería hacer para recibir una respuesta que yo pueda ver (Luces, mensajes por el puerto serie, sonidos, movimiento de motores…).
Con eso claro, habría que mirar si tenemos algún cortocircuito. Un cortocircuito es la unión entre el positivo y el negativo de la alimentación en algún punto de todo el circuito.
Para ello, necesitarías hacerte con un multímetro, ponerlo en modo continuidad y desconectar el circuito de tu Arduino o de aquellos instrumentos que uses para comunicar o alimentar el circuito.
Con esto, mediremos la continuidad entre Vcc y GND, entre los bornes de alimentación. Si hace un sonido es que la resistencia entre ambos es muy baja y podemos decir que están unidos. Esto es, por definición un cortocircuito.
Esto se hubiese podido evitar revisando cada componente que hemos ido soldando. Ahora nuestra misión es conocer quién hace el cortocircuito. Y cómo encontrar un cortocircuito es algo que ya puedes leer en este blog.
Una vez encontrado, solamente es necesario repararlo separando Vcc y GND.
El arte de revisar el pinout
Si no tenemos un cortocircuito será interesante revisar el esquema y fijarnos que todos los componentes pasivos (resistencias, condensadores, bobinas,…) se encuentran en su sitio y son de los valores que deben de ser según nuestro esquema.
Si los componentes pasivos están bien, podemos mirar el cableado asociado a estos componentes: ¿Los cables siguen el camino que dice mi esquema? Hay que revisar a qué componentes va cada cable y comprobar que están conectados. Para esta comprobación será necesario el uso del multímetro en modo continuidad. Si hace ruido es bueno si no… Tenemos cables no conectados…
Con esto, el escollo que encontrarás son los integrados. Ahí llegan muchos cables y no sabemos bien si lo hacen de manera correcta. Así que es el momento de mirar el esquema. Pero si es un circuito casero no tendrás un súper esquema muy detallado por lo que la mejor opción es buscar el datasheet de cada uno de los componentes. Dentro del datasheet encontrarás su esquema de pines o pinout.
Hay que revisar que concuerdan cada uno de los pines y que lo que conectamos es lo lógico. Si en un pin de GND hemos conectado un pin digital de Arduino.. Hay algo que no concuerda. Y claro, estos errores suelen suceder porque no hemos mirado detenidamente el pinout o porque no sabemos dónde está el pin 1 y dónde el 16.
Para saberlo lo normal es fijarnos en la marca, suele ser un punto, que tienen los integrados. Esta marcará el pin 1 y será una marca que encontraremos también en el pinout.
Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
Para qué engañarnos, el multímetro ayuda…
Si aun así, te falla la vista o no encuentras esa marca, ya que tienes el multímetro a mano podrías mirar el pinout buscando dos pines conectados al mismo lugar. Es común que un integrado tenga dos GND.
Podrías poner otra vez el multímetro en continuidad y conectar cada uno de los bornes del multímetro a uno de esos GND. Si hay sonido es que realmente son GND y GND. Sino… tendrás que mirar el integrado desde otro ángulo porque no estas contando bien los pines.
Esto mismo que he dicho para los integrados, puedes utilizarlo para los conectores. Los hay incluso de 50 pines o más y muchas veces es un poco lioso. Así que lo suyo es tomar el datasheet y revisar cada cable.
Si no sabes cuál es el pin 1 puedes utilizar el mismo truco del multímetro para enccontrar dos pines con GND y encontrar cuál es la posición correcta a la hora de mirar el conector.
Un último apunte, estos conectores suelen numerarse por parejas. Al lado del 1 (derecha o izquierda) está el 2 y baja a la siguiente fila. No están numerados por columnas como los pines de la mayoría de integrados.
¿Es el software quién nos ataca?
Si todo el cableado está bien, tal vez sea hora de ir pensando que nos enfrentamos a un enemigo invisible: el software. Tal vez no estemos comunicando a la velocidad adecuada y por eso vemos cosas extrañas en el Serial. O tal vez no hayamos programado las funciones como creíamos.
Tal vez el software que utilizamos se queje porque hay algo que no hemos configurado… Las opciones son infinitas pero como ya hemos descartado el hardware (Almenos de momento, aunque a veces es bueno volver a empezar desde el principio…) el problema debe de ser de software.
La depuración puede ser tediosa así que si eres capaz de modificar el software, sería interesante poner mensajes con un println o como sea para ver por qué estados pasa el software y saber en qué punto empieza a fallar o no hace lo que debería: Un bucle del que no sale, un if al que no entra, una operación que no hace como debiera…
En este último caso, también podemos imprimir por pantalla los resultados de las operaciones que se hagan en el programa para conocer qué está calculando y qué esperábamos nosotros que calculase: Alguna variable que cuente el número de bucles que se hacen, un cálculo extraño, etc…
Calma, mi vida, con calma…
Y ya con todo esto, mucha paciencia y tiempo, poco a poco van saliendo cosas que nos indican que el problema está resuelto y ahora tenemos otro diferente.
No es un trabajo fácil pero con paciencia y descartando las cosas que no son, se puede llegar a hacer que ese maldito circuito funcione de una vez por todas y te deje dormir, hombre ya!
Espero que consigas hacerlo marchar 😉
Muy buen artículo, a mí una vez me pasó que quería controlar un servo con un arduino y monté todo pero me volví loco porque hacía el movimiento pero sin precisión y mal, hasta que descubrí que no había conectado la masa de arduino a la masa donde tenía el servo, tenían masas independientes.
Pues loco me volví hasta que dí con ello, ahora ya es lo primero que miro.
Un saludo a todos y gracias por estos artículos.
Zigor