Componentes electronicos y herramientas del taller
Componentes electronicos y herramientas del taller
En el capitulo 3 trabajamos con las leyes que gobiernan cualquier circuito: la ley de Ohm, las dos leyes de Kirchhoff, las combinaciones en serie y en paralelo, y la diferencia entre corriente continua y alterna. Ese capitulo te dio el lenguaje matematico. Este capitulo te da el vocabulario fisico: las piezas concretas que vas a sostener con la mano, el criterio para elegir cada una y las herramientas con las que se miden, se sueldan y se depuran.
La transicion es importante. Hasta ahora una resistencia era un simbolo con un valor R. A partir de aqui una resistencia es un cilindro con bandas de colores que ademas tiene tolerancia, potencia maxima, coeficiente termico y un valor comercial que probablemente no sea el que calculaste. Un LED deja de ser “una carga” y pasa a ser un dispositivo con caida de tension propia que se destruye si lo conectas directo. Un motor deja de ser una resistencia y se convierte en una bobina que devuelve picos de tension cuando lo apagas.
El objetivo del capitulo es que al terminarlo puedas mirar un componente desconocido, encontrar su hoja de datos, extraer los cuatro o cinco parametros que importan y decidir si sirve para tu proyecto. Y que, cuando algo no funcione, sepas que instrumento tomar primero.
Mapa del territorio
Antes de entrar en cada familia conviene tener el mapa completo. Los componentes se clasifican por lo que hacen con la energia y por si necesitan alimentacion propia para funcionar.
flowchart TD
C["Componentes electronicos"]
C --> P["Pasivos<br/>no amplifican, no necesitan alimentacion"]
C --> A["Activos<br/>controlan corriente, necesitan polarizacion"]
C --> E["Electromecanicos<br/>convierten energia electrica en movimiento"]
C --> S["Transductores<br/>traducen entre magnitud fisica y senal"]
P --> P1["Resistencias<br/>limitan corriente"]
P --> P2["Condensadores<br/>almacenan carga"]
P --> P3["Inductores<br/>almacenan campo magnetico"]
A --> A1["Diodos y LED<br/>conduccion en un sentido"]
A --> A2["Transistores BJT y MOSFET<br/>interruptor o amplificador"]
A --> A3["Circuitos integrados<br/>reguladores, drivers, MCU"]
E --> E1["Reles y solenoides"]
E --> E2["Motores DC, servos, paso a paso"]
S --> S1["Sensores<br/>fisico hacia electrico"]
S --> S2["Actuadores no motorizados<br/>electrico hacia fisico"]
style C fill:#1e3a5f,color:#fff
style P fill:#2d5016,color:#fff
style A fill:#5f1e1e,color:#fff
style E fill:#5f4a1e,color:#fff
style S fill:#3d1e5f,color:#fff
Una advertencia de vocabulario: “pasivo” no significa inofensivo. Un condensador electrolitico de 400 V cargado te puede lesionar horas despues de desconectar el equipo. Significa unicamente que el componente no entrega ganancia de potencia.
Como leer una hoja de datos
Casi todo lo que necesitas saber de un componente esta en su hoja de datos (datasheet), un PDF que el fabricante publica gratis. Buscar <codigo del componente> datasheet casi siempre lo encuentra. Son documentos largos, pero se leen por saltos, no de corrido.
El orden util de lectura es este:
- Primera pagina: descripcion, encapsulado y aplicaciones tipicas. Confirma que es el componente que crees.
- Absolute Maximum Ratings: los limites que destruyen la pieza. No son valores de operacion, son valores de muerte. Nunca disenes cerca de ellos.
- Recommended Operating Conditions: el rango real de trabajo.
- Electrical Characteristics: la tabla con las columnas Min, Typ y Max. Disena siempre con Min y Max, nunca con Typ. El valor tipico es un promedio estadistico que tu unidad concreta no tiene por que cumplir.
- Pinout: la asignacion de patas. Fijate en la marca de la pata 1 y en si el diagrama es vista superior o inferior.
- Application circuits: el fabricante ya diseño el circuito por ti. Copialo antes de inventar.
| Seccion del datasheet | Que buscas exactamente | Error tipico si la ignoras |
|---|---|---|
| Absolute Maximum Ratings | Tension maxima, corriente maxima, temperatura de union | El componente muere en el primer encendido |
| Electrical Characteristics | Caida de tension, corriente de reposo, umbrales logicos | El circuito funciona en el banco y falla en frio |
| Thermal Data | Resistencia termica union-ambiente | El regulador entra en proteccion termica a los 30 segundos |
| Timing Diagrams | Tiempos minimos de pulso y de espera | El sensor devuelve basura porque lo lees demasiado rapido |
| Package / Pinout | Orientacion de la pata 1, paso entre pines | Sueldas el integrado al reves y lo quemas |
Resistencias
La resistencia es el componente mas comun y el mas subestimado. Su trabajo es oponerse al paso de corriente, y de esa unica funcion salen muchos usos distintos.
Para que se usan realmente
- Limitar corriente: el caso del LED. Sin resistencia, la corriente solo esta limitada por la resistencia interna de la fuente y el LED se destruye.
- Dividir tension: dos resistencias en serie generan un punto intermedio con una fraccion de la tension de entrada. Es la base de los divisores para adaptar 5 V a una entrada de 3.3 V.
- Fijar un nivel logico: las resistencias de pull-up y pull-down evitan que una entrada digital quede flotando y lea ruido.
- Polarizar un transistor: la resistencia de base define cuanta corriente entra a la base y por lo tanto si el transistor conduce.
- Convertir corriente en tension: una resistencia shunt de valor muy bajo en serie con la carga permite medir corriente leyendo la tension sobre ella.
- Descargar condensadores: una resistencia de sangrado en paralelo con un electrolitico lo descarga cuando se apaga el equipo.
Codigo de colores
Las resistencias de agujero pasante traen bandas de colores. El esquema mas comun tiene cuatro bandas: dos digitos, un multiplicador y la tolerancia. Las de precision traen cinco bandas: tres digitos, multiplicador y tolerancia.
| Color | Digito | Multiplicador | Tolerancia |
|---|---|---|---|
| Negro | 0 | x1 | — |
| Cafe | 1 | x10 | ±1% |
| Rojo | 2 | x100 | ±2% |
| Naranjo | 3 | x1.000 | — |
| Amarillo | 4 | x10.000 | — |
| Verde | 5 | x100.000 | ±0.5% |
| Azul | 6 | x1.000.000 | ±0.25% |
| Violeta | 7 | x10.000.000 | ±0.1% |
| Gris | 8 | — | ±0.05% |
| Blanco | 9 | — | — |
| Dorado | — | x0.1 | ±5% |
| Plateado | — | x0.01 | ±10% |
Ejemplo con cuatro bandas rojo-rojo-cafe-dorado: 2, 2, x10, ±5%, es decir 220 Ω con tolerancia del 5%. Ejemplo cafe-negro-naranjo-dorado: 1, 0, x1.000, o sea 10 kΩ.
Truco practico: si las bandas se ven ambiguas por el color del cuerpo, mide con el multimetro. El codigo de colores es para identificar rapido, no para verificar.
Valores comerciales y la serie E12
No existen todos los valores. La industria fabrica series logaritmicas. La mas comun en el taller es la E12, con doce valores por decada y tolerancia del 5%:
10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82
Multiplicados por potencias de diez producen 1 Ω, 1.2 Ω, … 100 Ω, 120 Ω, … 10 kΩ, 12 kΩ, y asi. Cuando tu calculo da 263 Ω, eliges el valor comercial inmediatamente superior, 270 Ω o 330 Ω, porque subir la resistencia baja la corriente y eso es el lado seguro.
La serie E24 agrega doce valores intermedios y la E96 es para tolerancias del 1%.
Potencia disipada
Una resistencia convierte en calor la potencia que disipa. La formula es P = V·I, que combinada con la ley de Ohm da dos formas practicas:
- P = I²·R cuando conoces la corriente
- P = V²/R cuando conoces la caida de tension
Las resistencias comunes de agujero pasante son de 1/4 W. Existen de 1/8, 1/2, 1, 2, 5 W y mas. La regla de diseno es no superar la mitad de la potencia nominal: si tu calculo da 0.15 W, una de 1/4 W esta al 60% y va a calentar de forma perceptible; conviene subir a 1/2 W.
Ejemplo concreto: una resistencia de 10 Ω que lleva 200 mA disipa P = 0.2² × 10 = 0.4 W. Una de 1/4 W se quema. Necesitas al menos una de 1 W.
Valores que vas a usar todo el tiempo
| Valor | Uso tipico | Por que ese valor |
|---|---|---|
| 220 Ω | LED alimentado a 5 V | Da entre 10 y 15 mA segun el color |
| 330 Ω a 470 Ω | LED alimentado a 9 o 12 V | Absorbe la tension extra sin exceder 1/4 W |
| 1 kΩ | LED indicador de bajo consumo, base de transistor pequeno | Corriente de unos pocos mA |
| 4.7 kΩ | Pull-up de bus I2C a 3.3 V | Compromiso entre velocidad de flanco y consumo |
| 10 kΩ | Pull-up y pull-down de entradas digitales | Corriente de fuga despreciable, inmune a ruido |
| 100 kΩ | Divisor de alta impedancia, entrada de amplificador | Carga minima sobre la fuente |
| 0.1 Ω a 1 Ω | Shunt de medicion de corriente | Caida pequena, potencia manejable |
Potenciometros
Un potenciometro es una resistencia con un contacto movil. Tiene tres patas: los extremos de la pista resistiva y el cursor. Conectado entre alimentacion y tierra, el cursor entrega una tension proporcional a la posicion, y eso lo convierte en el sensor de posicion mas simple que existe.
Vienen en curva lineal (marcados con B en la nomenclatura asiatica) y logaritmica (A), esta ultima pensada para control de volumen porque el oido percibe la intensidad de forma logaritmica. Para lectura por ADC quieres siempre lineal.
Los trimmer son potenciometros pequenos de ajuste con destornillador, pensados para calibrar una vez y no tocar mas.
Condensadores
Un condensador almacena energia en un campo electrico entre dos placas separadas por un dielectrico. Su capacidad se mide en faradios, pero el faradio es una unidad enorme: en la practica trabajas con microfaradios (µF), nanofaradios (nF) y picofaradios (pF).
La propiedad clave es que un condensador se opone a los cambios bruscos de tension. Eso lo hace ideal para tres trabajos distintos.
Los tres trabajos del condensador
Desacoplo. Todo circuito integrado consume corriente a pulsos cuando conmuta. Los cables de alimentacion tienen inductancia y no pueden entregar esos pulsos instantaneamente, asi que la tension local cae. Un condensador de 100 nF colocado fisicamente pegado a los pines de alimentacion del integrado actua como una reserva local de carga. Esta es la razon por la que ves un condensador ceramico junto a cada chip en cualquier placa comercial.
Filtrado. Un condensador electrolitico grande, de 100 µF a 1000 µF, a la salida de un rectificador o de una fuente, alisa las variaciones lentas de tension. Cuanto mayor la corriente de la carga, mayor tiene que ser la capacidad.
Temporizacion. Un condensador cargandose a traves de una resistencia lo hace de forma exponencial con constante de tiempo tau = R × C. Despues de un tau alcanza el 63% de la tension final, y despues de cinco taus se considera cargado. Esa relacion es la base de los temporizadores, los filtros y los circuitos antirrebote.
Tipos y cuando usar cada uno
| Tipo | Rango tipico | Polarizado | Uso principal | Nota |
|---|---|---|---|---|
| Ceramico multicapa | 1 pF a 10 µF | No | Desacoplo, filtros de alta frecuencia | El clase X7R varia poco con temperatura; el Y5V varia mucho |
| Electrolitico de aluminio | 1 µF a 10.000 µF | Si | Filtrado de fuentes, reservas de energia | Se seca con los anos; la banda marca el negativo |
| Tantalio | 0.1 µF a 470 µF | Si | Desacoplo compacto en placas densas | Falla en cortocircuito y puede incendiarse si se invierte |
| Poliester y polipropileno | 1 nF a 10 µF | No | Audio, filtros analogicos, alterna | Estable y de baja perdida |
| Supercondensador | 0.1 F a cientos de F | Si | Respaldo de reloj, energia de apagado seguro | Tension de trabajo baja, tipico 2.7 V |
Codigo numerico
Los ceramicos pequenos traen un codigo de tres cifras que se lee en picofaradios: las dos primeras son el valor y la tercera el numero de ceros.
104= 10 seguido de 4 ceros = 100.000 pF = 100 nF = 0.1 µF103= 10.000 pF = 10 nF102= 1.000 pF = 1 nF22sin tercera cifra = 22 pF
La regla practica: 104 es el condensador de desacoplo universal y deberias tener cincuenta en el cajon.
Tension de trabajo
Todo condensador tiene una tension maxima. Elige siempre al menos el doble de la tension del circuito. Un electrolitico de 16 V en un riel de 12 V esta trabajando al 75% y envejece rapido; uno de 25 V o 35 V dura anos. En los ceramicos hay un efecto adicional: la capacidad real cae con la tension aplicada, a veces mas de la mitad, asi que sobredimensionar tension tambien preserva capacidad.
Inductores, brevemente
El inductor es el dual del condensador: almacena energia en un campo magnetico y se opone a los cambios bruscos de corriente. En robotica lo encuentras sobre todo dentro de las fuentes conmutadas y en los filtros de ruido. Rara vez lo vas a elegir tu por separado, salvo cuando montes un convertidor reductor con componentes discretos. Lo importante para el resto del capitulo es su consecuencia: cualquier bobina, incluidos motores, reles y solenoides, genera un pico de tension inverso cuando se interrumpe su corriente. Ese pico destruye transistores si no lo controlas.
Diodos
Un diodo conduce corriente en un sentido y la bloquea en el otro. Tiene dos terminales: anodo y catodo. El catodo se marca con una banda impresa en el cuerpo.
La conduccion no es gratis: hay una caida de tension directa, la Vf, que en un diodo de silicio comun ronda 0.7 V y en uno Schottky baja a 0.2 o 0.4 V.
Familias de diodos y su uso
| Familia | Ejemplo | Vf tipica | Para que sirve |
|---|---|---|---|
| Rectificador | 1N4007 | 1.0 V | Rectificar alterna, proteger contra inversion de polaridad |
| Senal rapida | 1N4148 | 0.7 V | Conmutacion rapida, supresion en reles pequenos |
| Schottky | 1N5819, SS34 | 0.3 V | Fuentes conmutadas, proteccion de bajo consumo, OR de alimentaciones |
| Zener | 1N4733 de 5.1 V | Regula en inverso | Referencia de tension, recorte de picos |
| TVS | SMAJ5.0A | Conduce sobre el umbral | Absorber transitorios en entradas expuestas |
Los tres usos que mas vas a repetir
Proteccion contra inversion de polaridad. Un diodo en serie con la alimentacion impide que la placa arranque si conectas la fuente al reves. El coste es la caida de tension. Si trabajas con 5 V justos, usa un Schottky para perder solo 0.3 V, o mejor un MOSFET de canal P que casi no cae.
Diodo de rueda libre o flyback. Este es el uso critico en robotica. Cuando cortas la corriente de una bobina, la energia almacenada en su campo magnetico busca camino y genera una tension inversa que puede llegar a cientos de voltios. Un diodo conectado en antiparalelo con la bobina, catodo al positivo, ofrece un camino a esa corriente y la disipa de forma segura. Sin ese diodo el transistor que conmuta el rele o el motor se destruye, a veces al primer ciclo, a veces despues de mil.
Referencia de tension con Zener. Un Zener polarizado en inverso mantiene una tension casi constante sobre el una vez superada su tension de ruptura. Con una resistencia en serie que limite la corriente sirve como referencia sencilla o como recorte de proteccion en una entrada analogica.
LED
Un LED es un diodo que emite luz al conducir. Todo lo dicho para los diodos aplica, con dos particularidades: su Vf depende del color y su brillo depende de la corriente, no de la tension.
Tension directa por color
| Color | Vf tipica | Corriente tipica |
|---|---|---|
| Infrarrojo | 1.2 a 1.5 V | 20 a 100 mA |
| Rojo | 1.8 a 2.2 V | 10 a 20 mA |
| Ambar y amarillo | 2.0 a 2.2 V | 10 a 20 mA |
| Verde tradicional | 2.0 a 2.4 V | 10 a 20 mA |
| Verde brillante, azul, blanco | 3.0 a 3.4 V | 10 a 20 mA |
| Ultravioleta | 3.2 a 3.8 V | 20 mA |
Calculo de la resistencia limitadora
La formula sale directamente de la segunda ley de Kirchhoff aplicada a la malla:
R = (V_fuente − V_f) / I_deseada
Ejemplos completos:
- LED rojo a 5 V, 15 mA: R = (5 − 2.0) / 0.015 = 200 Ω. Valor comercial: 220 Ω.
- LED azul a 3.3 V, 10 mA: R = (3.3 − 3.2) / 0.010 = 10 Ω. Aqui el margen es peligrosamente pequeno; una variacion de 0.2 V en la Vf duplica o anula la corriente. Con LED azules a 3.3 V conviene usar un driver de corriente constante o aceptar brillo variable.
- LED verde a 12 V, 20 mA: R = (12 − 2.1) / 0.020 = 495 Ω. Valor comercial: 470 Ω o 560 Ω. Potencia disipada: P = 0.020² × 470 = 0.19 W, asi que una de 1/4 W trabaja al 75%; mejor una de 1/2 W.
Reglas que evitan destrozos
- Nunca conectes LED en paralelo con una sola resistencia. Dos LED del mismo lote tienen Vf ligeramente distinta; el de menor Vf se lleva casi toda la corriente y se quema, y luego el segundo hereda toda la corriente y tambien muere. Si necesitas varios, cada uno con su propia resistencia, o conectalos en serie con una unica resistencia si la tension alcanza.
- Verifica la corriente maxima del pin del microcontrolador. Un pin de Raspberry Pi entrega 16 mA con seguridad y el total de todos los pines no debe superar 50 mA. Un ESP32 entrega hasta 40 mA por pin pero conviene quedarse en 20. Si necesitas mas brillo, usa un transistor.
- Los LED de alta potencia no se manejan con resistencia. Un LED de 1 W o 3 W necesita un driver de corriente constante, porque la resistencia disiparia mas potencia que el propio LED y la deriva termica haria que la corriente aumentara sola hasta destruirlo.
Encender un LED desde Elixir
Con Nerves y la biblioteca circuits_gpio el control de un LED es directo. La API de la version 2 identifica los pines por su nombre de cadena, lo que hace el codigo portable entre placas.
defmodule Taller.Led do
@moduledoc """
Control basico de un LED conectado a un pin GPIO a traves de
una resistencia limitadora. El pin se configura como salida.
"""
alias Circuits.GPIO
@doc "Abre el pin y lo deja apagado."
def abrir(nombre_pin) do
{:ok, gpio} = GPIO.open(nombre_pin, :output, initial_value: 0)
gpio
end
def encender(gpio), do: GPIO.write(gpio, 1)
def apagar(gpio), do: GPIO.write(gpio, 0)
@doc "Parpadea n veces con un periodo dado en milisegundos."
def parpadear(gpio, veces, periodo_ms) do
Enum.each(1..veces, fn _ ->
GPIO.write(gpio, 1)
Process.sleep(div(periodo_ms, 2))
GPIO.write(gpio, 0)
Process.sleep(div(periodo_ms, 2))
end)
end
def cerrar(gpio), do: GPIO.close(gpio)
end
Uso desde IEx sobre el dispositivo:
gpio = Taller.Led.abrir("GPIO18")
Taller.Led.parpadear(gpio, 10, 500)
Taller.Led.cerrar(gpio)
Transistores
El transistor es el componente que convirtio la electronica en informatica. Para nuestros fines cumple dos papeles: interruptor controlado por senal y amplificador de corriente. En robotica e IoT el 95% de los usos es el primero.
La necesidad es evidente: un pin GPIO entrega miliamperios y 3.3 V, mientras que un motor necesita amperios y 12 V. El transistor es el intermediario que permite que una senal pequena controle una potencia grande.
BJT: transistor bipolar
Tiene tres patas: base, colector y emisor. La corriente que entra por la base controla una corriente mucho mayor entre colector y emisor. El factor de amplificacion se llama hFE o beta y suele estar entre 50 y 300.
Existen dos polaridades. El NPN conduce cuando la base esta a mayor tension que el emisor y se usa para conmutar cargas conectadas al positivo, con el emisor a tierra. El PNP conduce cuando la base esta a menor tension que el emisor y se usa para conmutar del lado positivo.
Para usarlo como interruptor lo llevas a saturacion, no a su zona lineal. La regla practica es forzar una ganancia de 10 a 20, muy por debajo de la hFE real, para garantizar que sature incluso con el peor ejemplar.
Ejemplo de calculo completo. Quieres conmutar una carga de 200 mA con un 2N2222 desde un pin de 3.3 V:
- Corriente de colector deseada: Ic = 200 mA
- Ganancia forzada: 20, entonces Ib = 200 / 20 = 10 mA
- La union base-emisor cae unos 0.7 V, asi que sobre la resistencia quedan 3.3 − 0.7 = 2.6 V
- Rb = 2.6 V / 0.010 A = 260 Ω
- Valor comercial inferior para asegurar saturacion: 220 Ω
Verifica ademas que el pin puede entregar esos 10 mA. Si no, sube la ganancia forzada a 40 y usa 470 Ω, o cambia a un MOSFET.
Cuando saturado, un BJT no cae a cero: mantiene una Vce(sat) de 0.2 a 0.5 V. A 200 mA eso son hasta 100 mW de calor, tolerable. A 3 A serian 1.5 W y el encapsulado no lo aguanta.
MOSFET
El MOSFET se controla por tension en la puerta, no por corriente. Eso significa que en regimen estatico no consume nada del pin de control, y por eso es el interruptor preferido para cargas medianas y grandes.
Tiene tres patas: puerta, drenador y surtidor. El canal N conduce cuando la puerta esta por encima del surtidor en mas de la tension de umbral Vgs(th). El canal P funciona al reves.
El parametro que decide todo es la Rds(on): la resistencia del canal cuando esta completamente encendido. Un MOSFET con Rds(on) de 20 mΩ conduciendo 5 A disipa P = 5² × 0.020 = 0.5 W, cifra manejable con un pequeno disipador.
La trampa clasica: la Rds(on) que aparece en la portada del datasheet suele estar medida a Vgs de 10 V. Si alimentas la puerta con 3.3 V desde un GPIO y el MOSFET no es de nivel logico, el canal queda parcialmente abierto, la resistencia sube a ohmios y el componente se quema. Busca siempre MOSFET logic level, especificados a Vgs de 2.5 V o 4.5 V.
| Componente | Tipo | Corriente util | Control desde 3.3 V | Observacion |
|---|---|---|---|---|
| BC547 | BJT NPN | 100 mA | Si | Senales pequenas, LED, base de rele diminuto |
| 2N2222 / PN2222 | BJT NPN | 600 a 800 mA | Si | El caballo de batalla del taller |
| TIP120 | Darlington NPN | 5 A | Si | Cae 1.5 a 2 V, calienta mucho, evitalo si puedes |
| IRF540N | MOSFET canal N | 30 A | No | Necesita 10 V en puerta; error frecuente |
| IRLZ44N | MOSFET canal N logico | 47 A | Si | Rds(on) baja ya con 4 V; opcion segura |
| AO3400 | MOSFET SMD logico | 5 A | Si | Encapsulado SOT-23, ideal en placas pequenas |
Elegir el interruptor correcto
flowchart TD
Q1{"Que corriente<br/>necesita la carga?"}
Q1 -->|"menos de 20 mA"| D1["Conecta directo al GPIO<br/>con resistencia limitadora"]
Q1 -->|"20 mA a 500 mA"| Q2{"Es carga inductiva?"}
Q1 -->|"0.5 A a 10 A"| Q3{"El GPIO entrega<br/>3.3 V o 5 V?"}
Q1 -->|"mas de 10 A o red electrica"| D4["Rele o contactor<br/>con aislamiento galvanico"]
Q2 -->|No| D2["BJT NPN con Rb calculada"]
Q2 -->|Si| D3["BJT NPN + diodo flyback<br/>en antiparalelo"]
Q3 -->|"3.3 V"| D5["MOSFET logic level<br/>Vgs th menor a 2 V"]
Q3 -->|"5 V"| D6["MOSFET logic level<br/>o driver de puerta"]
D4 --> D7["El rele tambien necesita<br/>transistor y diodo flyback"]
style D1 fill:#2d5016,color:#fff
style D3 fill:#5f1e1e,color:#fff
style D5 fill:#1e3a5f,color:#fff
style D7 fill:#5f4a1e,color:#fff
Reguladores de tension
Casi ningun proyecto se alimenta con la tension que necesita. Tienes una bateria de 7.4 V, un adaptador de 12 V o un panel solar que entrega entre 5 y 21 V, y el microcontrolador quiere 3.3 V estables. El regulador resuelve eso.
Regulador lineal
Funciona como una resistencia variable controlada: absorbe la diferencia de tension convirtiendola en calor. Es simple, silencioso electricamente y barato, pero ineficiente.
La potencia disipada es P = (V_entrada − V_salida) × I_carga. Con 12 V de entrada, 5 V de salida y 500 mA de consumo: P = 7 × 0.5 = 3.5 W. Eso es un componente que quema al tacto y necesita disipador obligatorio.
Ejemplos comunes: la familia 78xx (7805 para 5 V, 7812 para 12 V) necesita al menos 2 V de margen sobre la salida. Los LDO (low dropout) como el AMS1117-3.3 o el HT7333 funcionan con margenes de 0.2 a 1.2 V, lo que permite sacar 3.3 V desde una bateria de litio casi descargada.
Todo regulador lineal necesita condensadores en entrada y salida segun indique su datasheet; sin ellos oscila y entrega ruido en lugar de continua.
Regulador conmutado
Trocea la energia con un transistor a decenas o cientos de kilohertz y la reconstruye con un inductor y un condensador. La eficiencia sube al 85 o 95%, y lo que no se convierte tampoco se disipa como calor.
- Buck o reductor: baja la tension. De 12 V a 5 V.
- Boost o elevador: sube la tension. De 3.7 V de bateria a 5 V.
- Buck-boost: mantiene la salida aunque la entrada cruce por encima y por debajo.
Modulos habituales: LM2596 (buck ajustable hasta 3 A, barato y ruidoso), MP1584 (buck compacto, 3 A), TPS5430 y familias modernas con mejor comportamiento en EMI.
El precio del conmutado es el ruido: introduce rizado a la frecuencia de conmutacion. Si vas a leer sensores analogicos de baja senal, una practica comun es usar un conmutado para la parte digital y anadir un LDO para la seccion analogica.
| Criterio | Lineal | Conmutado |
|---|---|---|
| Eficiencia | 30 a 60% tipico | 85 a 95% |
| Calor generado | Alto y proporcional a la diferencia | Bajo |
| Ruido en la salida | Muy bajo | Rizado a la frecuencia de conmutacion |
| Componentes externos | Dos condensadores | Inductor, diodo o sincronico, varios condensadores |
| Coste del modulo | Muy bajo | Bajo a medio |
| Puede elevar tension | No | Si, en topologia boost |
| Recomendado para | Caidas pequenas, secciones analogicas | Alimentacion general, baterias, potencia |
Proteccion de la alimentacion
Un diseno de alimentacion decente incluye, en orden desde la entrada: fusible o PTC rearmable, diodo o MOSFET contra inversion de polaridad, TVS contra transitorios, condensador de reserva y luego el regulador. Ese conjunto cuesta muy poco y evita la mayoria de las muertes subitas de una placa.
Los fusibles PTC, tambien llamados polyfuse, aumentan bruscamente su resistencia al calentarse y se recuperan al enfriar, asi que protegen sin necesidad de reemplazo.
Sensores
Un sensor traduce una magnitud fisica en una senal electrica. Lo importante para tu codigo es como entrega esa senal, porque eso determina que biblioteca vas a usar.
flowchart LR
F["Magnitud fisica<br/>temperatura, luz, distancia"] --> T["Elemento transductor"]
T --> AN["Salida analogica<br/>tension proporcional"]
T --> DI["Salida digital simple<br/>alto o bajo"]
T --> PU["Salida por ancho de pulso<br/>tiempo proporcional"]
T --> BU["Salida por bus<br/>I2C, SPI, 1-Wire, UART"]
AN --> ADC["ADC externo o interno<br/>ejemplo ADS1115"]
DI --> GP1["Circuits.GPIO.read"]
PU --> GP2["Circuits.GPIO con<br/>medicion de tiempo"]
BU --> LIB["Circuits.I2C<br/>Circuits.SPI<br/>Circuits.UART"]
ADC --> APP["Proceso GenServer<br/>en la aplicacion Elixir"]
GP1 --> APP
GP2 --> APP
LIB --> APP
APP --> DEC["Decision de control"]
style F fill:#2d5016,color:#fff
style APP fill:#1e3a5f,color:#fff
style DEC fill:#5f1e1e,color:#fff
Catalogo de sensores frecuentes
| Sensor | Mide | Interfaz | Alimentacion | Notas |
|---|---|---|---|---|
| LDR con divisor | Luz ambiente | Analogica | 3.3 o 5 V | Requiere ADC; muy barato y no lineal |
| NTC | Temperatura | Analogica | 3.3 o 5 V | Necesita linealizacion por ecuacion de Steinhart-Hart |
| DHT22 / AM2302 | Temperatura y humedad | Protocolo propio de un hilo | 3.3 a 5 V | Timing estricto; una lectura cada 2 s como maximo |
| DS18B20 | Temperatura | 1-Wire | 3 a 5 V | Varios en un mismo cable; cada uno con ID unico |
| BMP280 / BME280 | Presion, temperatura, humedad | I2C o SPI | 3.3 V | Direcciones I2C 0x76 o 0x77 |
| MPU6050 | Aceleracion y giro | I2C | 3.3 V | Direccion 0x68 o 0x69 |
| HC-SR04 | Distancia por ultrasonido | Pulso digital | 5 V | La salida de eco es de 5 V, requiere divisor para 3.3 V |
| VL53L0X | Distancia por laser | I2C | 3.3 V | Mucho mas preciso que el ultrasonido en distancias cortas |
| PIR HC-SR501 | Movimiento de cuerpos calidos | Digital | 5 V | Tiene trimmer de sensibilidad y de tiempo de retencion |
| Encoder de cuadratura | Posicion y velocidad de eje | Dos digitales | 3.3 o 5 V | Necesita interrupciones para no perder pasos |
| ACS712 / INA219 | Corriente | Analogica / I2C | 5 V / 3.3 V | El INA219 evita el ADC y ademas calcula potencia |
| Celda de carga con HX711 | Peso | Protocolo de dos hilos | 3.3 a 5 V | Requiere calibracion con masa conocida |
Leer un sensor I2C desde Elixir
El bus I2C usa dos hilos, SDA y SCL, ambos con resistencias de pull-up de 4.7 kΩ a la alimentacion. Cada dispositivo tiene una direccion de 7 bits. Antes de escribir codigo conviene comprobar que el dispositivo responde.
# En IEx sobre el dispositivo Nerves
iex> Circuits.I2C.bus_names()
["i2c-1"]
iex> Circuits.I2C.detect_devices("i2c-1")
[104, 118]
# 104 en decimal es 0x68 (MPU6050) y 118 es 0x76 (BMP280)
Este modulo identifica un BMP280 leyendo su registro de identificacion, que segun el datasheet esta en la direccion 0xD0 y devuelve el valor 0x58 para el BMP280 y 0x60 para el BME280.
defmodule Taller.Bmp280 do
@moduledoc """
Identificacion de un sensor BMP280 o BME280 en el bus I2C.
Demuestra el patron write_read: escribes el numero de registro
y lees inmediatamente la respuesta sin soltar el bus.
"""
alias Circuits.I2C
@registro_id 0xD0
@direcciones [0x76, 0x77]
@doc "Recorre las direcciones posibles y reporta que encuentra."
def identificar(bus_nombre \\ "i2c-1") do
{:ok, bus} = I2C.open(bus_nombre)
resultado =
Enum.map(@direcciones, fn direccion ->
{direccion, leer_id(bus, direccion)}
end)
I2C.close(bus)
resultado
end
defp leer_id(bus, direccion) do
case I2C.write_read(bus, direccion, <<@registro_id>>, 1) do
{:ok, <<0x58>>} -> :bmp280
{:ok, <<0x60>>} -> :bme280
{:ok, <<otro>>} -> {:desconocido, otro}
{:error, motivo} -> {:sin_respuesta, motivo}
end
end
end
Leer un sensor analogico con ADS1115
Muchas placas Linux, incluida la Raspberry Pi, no tienen convertidor analogico-digital. La solucion habitual es un ADS1115: cuatro canales, 16 bits, ganancia programable, conectado por I2C en la direccion 0x48.
El chip tiene dos registros relevantes: el 0x00 es el registro de conversion y el 0x01 el de configuracion. Escribiendo 16 bits de configuracion se dispara una conversion unica.
defmodule Taller.Ads1115 do
@moduledoc """
Lectura de un canal analogico con el conversor ADS1115.
Palabra de configuracion 0xC383 desglosada bit a bit:
bit 15 = 1 inicia una conversion unica
bits 14-12= 100 entrada AIN0 respecto a tierra
bits 11-9 = 001 rango de entrada mas menos 4.096 V
bit 8 = 1 modo de disparo unico
bits 7-5 = 100 128 muestras por segundo
bits 4-0 = 00011 comparador deshabilitado
"""
alias Circuits.I2C
@direccion 0x48
@reg_conversion 0x00
@reg_configuracion 0x01
@config_ain0 0xC383
# Con rango de mas menos 4.096 V y 15 bits utiles,
# cada cuenta vale 4.096 / 32768 = 125 microvoltios.
@voltios_por_cuenta 4.096 / 32768
def leer_ain0(bus_nombre \\ "i2c-1") do
{:ok, bus} = I2C.open(bus_nombre)
:ok = I2C.write(bus, @direccion, <<@reg_configuracion, @config_ain0::16>>)
# A 128 muestras por segundo la conversion tarda unos 8 ms.
Process.sleep(10)
{:ok, <<crudo::signed-16>>} =
I2C.write_read(bus, @direccion, <<@reg_conversion>>, 2)
I2C.close(bus)
%{cuentas: crudo, voltios: crudo * @voltios_por_cuenta}
end
end
Leer un DS18B20 por 1-Wire
En Linux el bus 1-Wire se expone como archivos del sistema, asi que en Nerves lo lees sin biblioteca adicional. Cada sensor aparece como un directorio bajo /sys/bus/w1/devices/ cuyo nombre empieza por 28-.
defmodule Taller.Ds18b20 do
@moduledoc """
Lectura de sensores DS18B20 a traves del sistema de archivos w1
que expone el kernel de Linux. Cada sensor tiene un identificador
unico grabado de fabrica, lo que permite varios en un mismo cable.
"""
@raiz "/sys/bus/w1/devices"
@doc "Devuelve los identificadores de los sensores presentes."
def listar do
case File.ls(@raiz) do
{:ok, entradas} -> Enum.filter(entradas, &String.starts_with?(&1, "28-"))
{:error, _} -> []
end
end
@doc "Lee la temperatura en grados Celsius de un sensor concreto."
def temperatura(id) do
ruta = Path.join([@raiz, id, "w1_slave"])
with {:ok, contenido} <- File.read(ruta),
true <- String.contains?(contenido, "YES"),
[_, milesimas] <- String.split(contenido, "t=") do
{:ok, String.trim(milesimas) |> String.to_integer() |> Kernel./(1000)}
else
false -> {:error, :crc_invalido}
{:error, motivo} -> {:error, motivo}
_ -> {:error, :formato_inesperado}
end
end
@doc "Lee todos los sensores conectados."
def leer_todos do
Enum.map(listar(), fn id -> {id, temperatura(id)} end)
end
end
Medir distancia con HC-SR04
Este sensor no usa bus: emite un pulso ultrasonico cuando le mandas un pulso de disparo de 10 microsegundos y responde con un pulso en la pata de eco cuya duracion es proporcional al tiempo de vuelta del sonido. La formula habitual divide los microsegundos entre 58 para obtener centimetros, porque el sonido recorre ida y vuelta a unos 343 metros por segundo.
sequenceDiagram
participant E as Aplicacion Elixir
participant G as Circuits.GPIO
participant S as HC-SR04
participant O as Objeto
E->>G: write pin_trigger, 1
G->>S: pulso de disparo
Note over E,G: esperar 10 microsegundos
E->>G: write pin_trigger, 0
S->>S: emite 8 ciclos a 40 kHz
S->>O: onda ultrasonica
O-->>S: eco reflejado
S->>G: pin_echo pasa a nivel alto
G-->>E: interrupcion de flanco de subida
Note over S,G: la duracion del alto<br/>es el tiempo de vuelo
S->>G: pin_echo vuelve a nivel bajo
G-->>E: interrupcion de flanco de bajada
E->>E: distancia_cm = microsegundos / 58
La medicion de tiempos en el rango de microsegundos desde el espacio de usuario de Linux no es determinista: el planificador puede interrumpirte y arruinar la lectura. Por eso, en la practica, para este sensor se toman varias muestras y se usa la mediana, o se delega la medicion a un microcontrolador auxiliar. Este es un ejemplo real de por que en el capitulo 5 distinguimos entre sistemas con Linux y microcontroladores sin sistema operativo.
defmodule Taller.Hcsr04 do
@moduledoc """
Medicion de distancia con un sensor ultrasonico HC-SR04.
Utiliza interrupciones de GPIO en ambos flancos y calcula
la diferencia de marcas de tiempo en nanosegundos.
"""
alias Circuits.GPIO
@tiempo_limite_ms 100
@microsegundos_por_cm 58
def medir(pin_trigger, pin_echo) do
{:ok, trig} = GPIO.open(pin_trigger, :output, initial_value: 0)
{:ok, echo} = GPIO.open(pin_echo, :input)
:ok = GPIO.set_interrupts(echo, :both)
disparar(trig)
resultado = esperar_eco()
GPIO.close(trig)
GPIO.close(echo)
resultado
end
defp disparar(trig) do
GPIO.write(trig, 1)
# 10 microsegundos: el minimo que exige la hoja de datos.
# Process.sleep no baja de 1 ms, asi que se usa una espera activa breve.
espera_activa(10_000)
GPIO.write(trig, 0)
end
defp espera_activa(nanosegundos) do
fin = System.monotonic_time(:nanosecond) + nanosegundos
do_espera(fin)
end
defp do_espera(fin) do
if System.monotonic_time(:nanosecond) < fin, do: do_espera(fin), else: :ok
end
defp esperar_eco do
receive do
{:circuits_gpio, _pin, inicio, 1} -> esperar_bajada(inicio)
after
@tiempo_limite_ms -> {:error, :sin_eco}
end
end
defp esperar_bajada(inicio) do
receive do
{:circuits_gpio, _pin, fin, 0} ->
microsegundos = (fin - inicio) / 1_000
{:ok, Float.round(microsegundos / @microsegundos_por_cm, 1)}
after
@tiempo_limite_ms -> {:error, :eco_no_termino}
end
end
end
Advertencia electrica sobre este sensor: se alimenta a 5 V y su pata de eco entrega 5 V, que dañan una entrada de 3.3 V. Un divisor con 1 kΩ y 2 kΩ resuelve el problema: 5 × 2/(1+2) = 3.33 V.
Actuadores
Un actuador convierte energia electrica en efecto fisico. Todos comparten dos caracteristicas que condicionan el diseno: consumen mucha mas corriente que un sensor y casi todos son inductivos.
Rele
Un rele es un interruptor mecanico accionado por un electroiman. Su ventaja decisiva es el aislamiento galvanico: el circuito de control y el circuito conmutado no comparten ninguna conexion electrica, lo que permite manejar la red domiciliaria desde 5 V con seguridad.
Sus terminales son la bobina (dos patas) y los contactos: comun, normalmente abierto y normalmente cerrado. La bobina tipica de un rele de 5 V consume entre 40 y 80 mA, mas de lo que entrega un GPIO, asi que siempre lleva transistor. Y como es una bobina, siempre lleva diodo flyback.
Los modulos comerciales de rele ya integran transistor, diodo y a menudo un optoacoplador. Vale la pena usarlos en lugar de montar el circuito discreto, sobre todo si hay red electrica de por medio.
Limitacion importante: el rele conmuta lento, entre 5 y 15 milisegundos, y sus contactos se desgastan tras unos cientos de miles de operaciones. No sirve para modulacion por ancho de pulso ni para conmutar a alta frecuencia.
Solenoide
Un solenoide es una bobina con un nucleo movil: al energizarla, el nucleo se desplaza. Se usa en cerraduras electricas, valvulas y mecanismos de golpeo. Electricamente se trata igual que un rele: transistor, diodo flyback y fuente propia, porque consume de cientos de miliamperios a varios amperios.
Muchos solenoides no toleran estar energizados de forma continua; el datasheet indica un ciclo de trabajo maximo.
Zumbador piezoelectrico
Los materiales piezoelectricos generan carga cuando se deforman, y se deforman cuando se les aplica tension. Esa reversibilidad los hace utiles como sensor de vibracion, como microfono de contacto y como emisor de sonido.
Hay dos variantes que se confunden:
- Zumbador activo: trae un oscilador dentro. Le aplicas continua y suena a su frecuencia fija. Control trivial: encender o apagar.
- Zumbador pasivo: es solo el elemento piezoelectrico. Necesitas alimentarlo con una senal alterna o cuadrada, y la frecuencia de esa senal determina el tono. Permite tocar melodias.
Motor de corriente continua
Gira mientras tenga tension y su velocidad depende aproximadamente de la tension media aplicada. Invertir la polaridad invierte el sentido de giro.
Tres realidades que hay que respetar:
- La corriente de arranque es varias veces la nominal. Un motor que consume 300 mA en marcha puede pedir 1.5 A durante el arranque, y mucho mas si esta bloqueado (stall current). Dimensiona la fuente y el driver por la corriente de bloqueo, no por la nominal.
- Genera ruido electrico. Las escobillas producen chispas que inyectan ruido en la alimentacion. Tres condensadores ceramicos de 100 nF soldados en el motor, uno entre bornes y uno de cada borne a la carcasa, reducen mucho el problema.
- Necesita alimentacion separada del microcontrolador, o al menos un filtrado serio. Compartir el regulador de 5 V entre la Raspberry Pi y un motor provoca reinicios.
Para controlar velocidad se usa modulacion por ancho de pulso: se conmuta la alimentacion muy rapido y se varia la proporcion de tiempo encendido. Con un ciclo de trabajo del 50% el motor recibe la mitad de la energia.
Puente H y drivers
Para invertir el sentido de giro necesitas un puente H: cuatro interruptores que permiten aplicar tension en ambas polaridades. No lo montes con transistores sueltos salvo como ejercicio; los integrados dedicados incluyen protecciones que tu montaje no tendra.
| Driver | Canales | Corriente por canal | Tecnologia | Comentario |
|---|---|---|---|---|
| L298N | 2 | 2 A | Bipolar | Muy difundido pero cae unos 2 V y calienta; ineficiente a bajas tensiones |
| L293D | 2 | 600 mA | Bipolar | Incluye diodos internos; para motores pequenos |
| DRV8833 | 2 | 1.5 A | MOSFET | Caida minima, funciona desde 2.7 V; mejor opcion moderna a esta escala |
| TB6612FNG | 2 | 1.2 A continuos | MOSFET | Eficiente, control por dos pines mas PWM |
| ULN2003 | 7 salidas | 500 mA | Darlington con diodos | Para motores paso a paso unipolares como el 28BYJ-48 |
| A4988 | 1 bipolar | 1 a 2 A | MOSFET con control de corriente | Paso a paso con microstepping hasta 1/16 |
| DRV8825 | 1 bipolar | 1.5 a 2.2 A | MOSFET | Paso a paso con microstepping hasta 1/32 |
Servomotor
Un servo integra motor, reductora, potenciometro de realimentacion y electronica de control. No le indicas velocidad sino posicion, mediante un pulso periodico.
El estandar clasico usa una senal de 50 Hz, es decir un pulso cada 20 ms, donde el ancho del pulso codifica el angulo. Un pulso de 1.0 ms lleva el eje a un extremo, 1.5 ms al centro y 2.0 ms al otro extremo. Muchos servos aceptan de 0.5 a 2.5 ms y cubren asi mas recorrido, pero forzarlos mas alla del limite mecanico los daña.
Un SG90, el servo pequeno mas comun, funciona a 5 V y puede pedir picos de 500 a 700 mA al moverse bajo carga. Alimentarlo desde el pin de 5 V de una placa provoca caidas de tension y reinicios; usa una fuente aparte y une las tierras.
Motor paso a paso
Gira en incrementos discretos, tipicamente 1.8 grados por paso, lo que da 200 pasos por vuelta. Como conoces exactamente cuantos pasos diste, obtienes control de posicion sin sensor de realimentacion, siempre que no pierdas pasos por exceso de carga o aceleracion.
Hay dos familias: unipolares, con cinco o seis hilos, mas faciles de controlar pero con menos par; y bipolares, de cuatro hilos, mas eficientes y las mas usadas en impresoras 3D y CNC.
Los drivers modernos como el A4988 simplifican el control a dos senales: un pin de direccion y un pin de paso. Cada flanco en el pin de paso avanza un paso.
defmodule Taller.PasoAPaso do
@moduledoc """
Control de un motor paso a paso bipolar mediante un driver A4988,
que expone dos senales: direccion y paso. Cada flanco de subida
en el pin de paso avanza el motor un microstep segun la
configuracion de los pines MS1, MS2 y MS3 del driver.
"""
alias Circuits.GPIO
defstruct [:dir, :step, :pasos_por_vuelta]
def abrir(pin_dir, pin_step, pasos_por_vuelta \\ 200) do
{:ok, dir} = GPIO.open(pin_dir, :output, initial_value: 0)
{:ok, step} = GPIO.open(pin_step, :output, initial_value: 0)
%__MODULE__{dir: dir, step: step, pasos_por_vuelta: pasos_por_vuelta}
end
@doc """
Avanza una cantidad de pasos. El sentido se indica con :horario
o :antihorario y la separacion entre pulsos en microsegundos
determina la velocidad.
"""
def mover(%__MODULE__{} = motor, pasos, sentido, pausa_us \\ 1_500) do
GPIO.write(motor.dir, if(sentido == :horario, do: 1, else: 0))
Enum.each(1..pasos, fn _ ->
GPIO.write(motor.step, 1)
espera(pausa_us)
GPIO.write(motor.step, 0)
espera(pausa_us)
end)
end
def girar_vueltas(%__MODULE__{} = motor, vueltas, sentido) do
mover(motor, round(vueltas * motor.pasos_por_vuelta), sentido)
end
defp espera(microsegundos) do
fin = System.monotonic_time(:microsecond) + microsegundos
ciclo(fin)
end
defp ciclo(fin) do
if System.monotonic_time(:microsecond) < fin, do: ciclo(fin), else: :ok
end
def cerrar(%__MODULE__{} = motor) do
GPIO.close(motor.dir)
GPIO.close(motor.step)
end
end
Nota sobre PWM en Elixir
Circuits.GPIO no genera modulacion por ancho de pulso por si mismo, porque conmutar desde el espacio de usuario produce temporizacion irregular. Para PWM real tienes tres caminos:
- PWM por hardware del SoC, expuesto en Linux a traves de sysfs bajo
/sys/class/pwm/. Se configura escribiendo periodo y ciclo de trabajo en archivos, y se puede manipular desde Elixir conFile.write/2. - Bibliotecas especificas de plataforma, como
pigpioxen Raspberry Pi, que hablan con el demoniopigpiody ofrecen funciones para PWM y para pulsos de servo. - Un controlador externo por I2C, como el PCA9685, que genera 16 canales de PWM de forma autonoma. Es la opcion mas robusta cuando manejas varios servos, porque la temporizacion deja de depender del sistema operativo.
La tercera opcion es la que recomendamos para robotica seria, y volveremos sobre ella cuando construyamos el brazo articulado mas adelante en el curso.
Las herramientas del taller
Los componentes no sirven de nada sin instrumentos que permitan montar, medir y corregir. Esta seccion cubre el equipamiento en orden de prioridad de compra.
Prototipado
Protoboard. La placa de contactos permite montar circuitos sin soldar. Sus filas de cinco contactos estan unidas internamente y los rieles laterales distribuyen alimentacion. Dos limitaciones a tener presentes: la resistencia de contacto es variable y los contactos se desgastan, por lo que fallos intermitentes en protoboard suelen ser del protoboard y no del circuito; y la capacidad parasita entre lineas la hace inutil por encima de unos pocos megahercios.
Placa perforada. Cuando el circuito ya funciona, se pasa a una placa perforada donde los componentes se sueldan y las conexiones se hacen con estano o cable. Es permanente pero no requiere fabricar una PCB.
PCB de baquelita o fibra de vidrio. El paso definitivo. Hoy es mas barato encargar la fabricacion a un servicio en linea que grabar en casa con cloruro ferrico, pero la fabricacion casera sigue siendo util para prototipos urgentes. Si grabas en casa necesitaras ademas brocas de PCB de 0.8 a 1 mm.
Soldadura
Cautin o soldador. La herramienta central. Los modelos utiles tienen control de temperatura entre 180 y 480 grados. Un soldador sin control, de los de 30 W a secas, funciona pero da resultados inconsistentes.
Temperaturas de trabajo: con estano con plomo (aleacion 63/37, que funde a 183 grados) se trabaja entre 300 y 340 grados. Con estano sin plomo (SAC305, que funde a 217 grados) hay que subir a 350 o 380 grados. Mas temperatura no suelda mejor: oxida la punta y levanta las pistas de la placa.
Estano. El de 0.6 a 0.8 mm de diametro con nucleo de resina es el adecuado para electronica. El estano de fontaneria no sirve porque su fundente es corrosivo.
Flux o pasta de soldar. Limpia el metal, disuelve los oxidos, mejora la adherencia del estano y evita que se oxide durante el calentamiento. Es la diferencia entre una soldadura brillante y una soldadura fria. Aunque el estano ya lleva nucleo de resina, aplicar flux adicional transforma el resultado, sobre todo en componentes de montaje superficial.
Limpiador de punta. Una esponja humeda o, mejor, un ovillo de viruta de laton. La viruta no enfria la punta por choque termico, cosa que la esponja si hace.
Tercera mano. Un soporte con pinzas y a menudo lupa que sujeta la placa y los cables mientras tienes una mano en el cautin y otra en el estano.
Malla desoldadora y bomba de estano. Para corregir errores. La malla de cobre trenzado absorbe el estano fundido por capilaridad y es ideal en pistas finas y montaje superficial. La bomba de succion retira volumenes mayores y sirve mejor para componentes de agujero pasante.
flowchart TD
A["Preparar: limpiar la punta<br/>y estanarla ligeramente"] --> B["Aplicar flux sobre<br/>la pista y el terminal"]
B --> C["Apoyar la punta tocando<br/>a la vez pista y terminal"]
C --> D["Esperar entre uno y dos segundos<br/>a que ambos se calienten"]
D --> E["Acercar el estano al punto<br/>caliente, nunca a la punta"]
E --> F["El estano fluye y forma<br/>un cono concavo brillante"]
F --> G["Retirar el estano<br/>y luego el cautin"]
G --> H{"Inspeccionar<br/>el resultado"}
H -->|"Brillante y con forma de cono"| OK["Soldadura correcta"]
H -->|"Opaca, granulosa, en bola"| F1["Soldadura fria:<br/>no se calento lo suficiente"]
H -->|"Puente entre dos pistas"| F2["Exceso de estano:<br/>retirar con malla"]
H -->|"Pista levantada o marron"| F3["Exceso de calor:<br/>bajar temperatura"]
F1 --> B
F2 --> B
F3 --> B
style OK fill:#2d5016,color:#fff
style F1 fill:#5f1e1e,color:#fff
style F2 fill:#5f1e1e,color:#fff
style F3 fill:#5f1e1e,color:#fff
El error de principiante mas comun es fundir estano en la punta del cautin y llevarlo al punto de union. Eso deposita estano sobre metal frio y produce una soldadura fria: parece unida pero la conexion es mecanica, no metalurgica, y falla con la vibracion o con el tiempo. La secuencia correcta es calentar primero la union y dejar que el estano fluya hacia ella.
Proteccion antiestatica
Tu cuerpo acumula facilmente varios miles de voltios de electricidad estatica caminando sobre una alfombra. Esa descarga no se siente por debajo de unos 3.000 V, pero destruye compuertas de MOSFET y entradas de microcontroladores con umbrales muy inferiores. Lo peor es que a veces no destruye del todo: degrada, y el componente falla semanas despues.
La proteccion basica son dos elementos: una alfombrilla de silicona disipativa sobre la mesa y una pulsera antiestatica conectada a tierra. La pulsera debe llevar una resistencia de 1 MΩ en serie; ese valor drena la estatica lentamente y a la vez te protege si tocas algo con tension.
Si no tienes pulsera, la medida minima es tocar una superficie metalica conectada a tierra antes de manipular componentes, y evitar los ambientes muy secos.
Herramientas de manipulacion
- Pinzas. De punta fina y curvas. Las antiestaticas de acero inoxidable son las adecuadas para montaje superficial.
- Pinza extractora de integrados. Levanta un chip de su zocalo sin doblar patas.
- Alicates de corte diagonal. Para recortar terminales tras soldar. Compra unos de calidad y no los uses jamas con alambre de acero: se mellan.
- Pelacables y crimpadora. Un pelacables automatico ahorra tiempo y evita cortar hilos. La crimpadora es imprescindible si vas a hacer conectores Dupont o JST propios.
Multimetro
Es el primer instrumento que debes comprar y el que mas vas a usar. Mide tension, corriente, resistencia y continuidad, y los modelos decentes anaden prueba de diodos, capacidad, frecuencia y temperatura.
| Funcion | Como se conecta | Que te dice |
|---|---|---|
| Tension continua | En paralelo con el punto a medir, negro a tierra | Si la alimentacion llega y con que valor |
| Tension alterna | En paralelo | Presencia de red o de senales alternas |
| Corriente | En serie, cortando el circuito, en la borna de amperios | Consumo real de la carga |
| Resistencia | Con el circuito sin alimentar, componente aislado | Valor real de una resistencia, continuidad de una bobina |
| Continuidad | Sin alimentar | Pitido si hay camino; localiza cortocircuitos y pistas rotas |
| Prueba de diodos | Sin alimentar | Muestra la Vf; identifica anodo y catodo, detecta uniones quemadas |
| Capacidad | Con el condensador descargado y fuera del circuito | Si un electrolitico perdio capacidad |
Cuatro reglas que evitan accidentes:
- Para medir corriente hay que abrir el circuito. El multimetro en modo amperios es casi un cortocircuito. Si lo pones en paralelo con la fuente, se funde el fusible interno en el mejor caso.
- Deja siempre las puntas en la borna de tension al terminar. La mayoria de los fusibles quemados provienen de olvidar el cable en la borna de amperios y luego medir tension.
- Mide resistencia solo con el circuito sin alimentar. Las tensiones presentes falsean la lectura y pueden dañar el instrumento.
- La escala de continuidad tambien detecta cortos entre alimentacion y tierra. Es la primera medida a tomar en una placa nueva antes de conectarla.
Para medir consumo de un proyecto completo, la conexion es en serie entre la fuente y la entrada de alimentacion de la placa. Recuerda que picos de arranque muy breves no los captura un multimetro; para eso se usa el osciloscopio con una resistencia shunt.
Osciloscopio
El multimetro te dice cuanto vale una senal en promedio. El osciloscopio te muestra como cambia en el tiempo. Es la unica manera de ver rebotes de un pulsador, rizado de una fuente, un flanco deformado de un bus I2C o un pulso de PWM.
Parametros al elegir uno:
- Ancho de banda. La regla de oro es al menos cinco veces la frecuencia mas alta que quieres observar bien. Para senales digitales, lo que importa no es la frecuencia del reloj sino la rapidez de los flancos, asi que un bus I2C a 400 kHz ya exige decenas de megahercios para verse fiel.
- Frecuencia de muestreo. Debe ser bastante mayor que el ancho de banda; una relacion de cinco a diez veces es lo comun.
- Numero de canales. Dos bastan para empezar. Cuatro son comodos para observar un bus SPI completo.
- Memoria. Determina cuanto tiempo puedes capturar sin perder resolucion.
Sobre las sondas: casi todas tienen un conmutador x1 y x10. En posicion x10 la sonda atenua la senal diez veces pero carga mucho menos el circuito y aumenta el ancho de banda util. Usa x10 por defecto y ajusta en el osciloscopio que la sonda esta en x10 para que las lecturas sean correctas. Ademas, cada sonda x10 tiene un tornillo de compensacion que se ajusta con la senal cuadrada de referencia del propio equipo hasta que la onda se vea plana y sin redondeo ni sobrepico.
El control de disparo (trigger) es lo que estabiliza la imagen: le dices al equipo que empiece a dibujar cuando la senal cruce cierto nivel en cierta direccion. Sin un disparo bien puesto solo veras una mancha en movimiento.
Los analizadores logicos por USB son una alternativa barata y complementaria: no miden tensiones analogicas, pero decodifican protocolos como I2C, SPI y UART y muestran los bytes que viajan por el bus. Para depurar comunicacion digital suelen ser mas utiles que el osciloscopio.
Fuente de poder regulable
Alimentar prototipos desde cargadores de telefono o desde el puerto USB del computador funciona hasta que algo falla. Una fuente de banco regulable resuelve tres problemas: entrega la tension exacta que necesitas, limita la corriente y muestra el consumo en tiempo real.
Las fuentes tipicas de laboratorio ofrecen dos canales ajustables de 0 a 30 V y un tercer canal con salidas fijas de 2.5 V, 3.3 V y 5 V, pensado justamente para logica digital.
La funcion mas valiosa es la limitacion de corriente. La fuente opera en dos modos:
- CV, tension constante: mantiene la tension fijada mientras la corriente demandada este por debajo del limite.
- CC, corriente constante: si la carga pide mas del limite, la fuente reduce la tension para no superarlo.
stateDiagram-v2
[*] --> Configuracion
Configuracion --> LimiteCorriente: fijar el limite antes de conectar nada
LimiteCorriente --> ModoCV: conectar la placa y encender
state "Modo CV<br/>tension constante" as ModoCV
state "Modo CC<br/>corriente constante" as ModoCC
ModoCV --> ModoCC: el consumo alcanza el limite
ModoCC --> ModoCV: el consumo baja del limite
ModoCC --> Diagnostico: la fuente entra en CC<br/>al encender la placa
Diagnostico --> Cortocircuito: la tension cae casi a cero
Diagnostico --> ConsumoAlto: la tension baja poco
Cortocircuito --> Reparar: apagar y buscar el corto<br/>con la prueba de continuidad
ConsumoAlto --> Revisar: revisar dimensionado<br/>de resistencias y cargas
Reparar --> Configuracion
Revisar --> Configuracion
El procedimiento seguro para energizar por primera vez una placa nueva es este: ajusta la tension deseada con la salida desconectada, cortocircuita brevemente las puntas para ajustar el limite de corriente al valor esperado mas un pequeno margen, retira el corto, conecta la placa y enciende. Si la fuente pasa a modo CC de inmediato, tienes un problema de montaje y acabas de evitar quemar la placa.
Prioridad de compra
| Prioridad | Herramienta | Justificacion |
|---|---|---|
| 1 | Multimetro | Sin el trabajas a ciegas; resuelve el 80% de los diagnosticos |
| 2 | Protoboard y cables Dupont | Permite montar y desmontar sin comprometerte |
| 3 | Cautin con control de temperatura | Necesario en cuanto un montaje deje de ser temporal |
| 4 | Fuente regulable con limite de corriente | Evita destruir placas durante el desarrollo |
| 5 | Pinzas, alicates y tercera mano | Multiplican la calidad del trabajo manual |
| 6 | Analizador logico USB | Depura buses digitales por un precio bajo |
| 7 | Osciloscopio | Imprescindible para senales analogicas y temporizacion fina |
| 8 | Estacion de aire caliente | Solo si vas a trabajar montaje superficial en serio |
El circuito de diagnostico
Cuando algo no funciona, seguir un orden ahorra horas. Este es el flujo que aplica a casi cualquier fallo de un prototipo.
flowchart TD
F["El circuito no funciona"] --> M1["Multimetro: medir tension<br/>en el punto de alimentacion"]
M1 -->|"0 V"| C1["Revisar fuente, cable,<br/>fusible y polaridad"]
M1 -->|"Tension baja"| C2["Consumo excesivo o<br/>regulador en proteccion"]
M1 -->|"Correcta"| M2["Multimetro: continuidad<br/>entre alimentacion y tierra"]
M2 -->|"Pita, hay corto"| C3["Buscar puente de estano,<br/>componente invertido<br/>o condensador en corto"]
M2 -->|"Sin corto"| M3["Multimetro: verificar<br/>tension en cada pin del chip"]
M3 -->|"Falta en algun pin"| C4["Pista rota o<br/>soldadura fria"]
M3 -->|"Todas correctas"| M4["Osciloscopio o analizador:<br/>observar la senal esperada"]
M4 -->|"No hay senal"| C5["Revisar firmware,<br/>configuracion de pines,<br/>reloj del sistema"]
M4 -->|"Senal deformada"| C6["Falta pull-up, cable largo,<br/>impedancia inadecuada"]
M4 -->|"Senal correcta"| C7["El problema esta<br/>en la logica del software"]
style F fill:#5f1e1e,color:#fff
style C7 fill:#1e3a5f,color:#fff
style C3 fill:#5f4a1e,color:#fff
Errores comunes
| Error | Que ocurre | Causa | Solucion |
|---|---|---|---|
| LED conectado sin resistencia | Brilla un instante y se apaga para siempre | La union pasa de conducir a fundirse porque nada limita la corriente | Calcular R = (Vfuente − Vf) / I y usar el valor comercial superior |
| Varios LED en paralelo con una sola resistencia | Uno brilla mas, se quema, luego se queman los demas | Las tolerancias de Vf hacen que la corriente se reparta de forma muy desigual | Una resistencia por LED, o LED en serie con una unica resistencia |
| Rele o motor sin diodo flyback | El transistor se destruye tras uno o varios ciclos | Al cortar la corriente, la bobina genera un pico de tension inverso muy alto | Diodo en antiparalelo con la bobina, catodo al positivo |
| MOSFET no logic level con GPIO de 3.3 V | Calienta mucho y la carga funciona a medias | Con 3.3 V el canal no llega a abrir del todo y la Rds(on) queda alta | Usar MOSFET logic level o un driver de puerta que entregue 10 V |
| Multimetro en modo amperios sobre una fuente | Se funde el fusible interno o salta la proteccion | En modo corriente el instrumento es casi un cortocircuito | Medir corriente siempre en serie; devolver la punta a la borna de tension al terminar |
| Condensador electrolitico invertido | Se hincha, revienta o explota | El dielectrico de oxido se destruye con polaridad inversa | Respetar la banda del terminal negativo antes de soldar |
| Faltan condensadores de desacoplo | Reinicios aleatorios, lecturas erraticas del ADC | Los pulsos de consumo del chip hunden la tension local | Un ceramico de 100 nF pegado a cada par de pines de alimentacion |
| Soldadura fria | Conexion intermitente que falla con la vibracion | Se llevo estano fundido a metal frio en lugar de calentar la union | Calentar pista y terminal, aplicar el estano al punto caliente, esperar el cono brillante |
| Regulador lineal sin disipador | Entra en proteccion termica a los pocos segundos | La potencia disipada es la diferencia de tension por la corriente | Calcular P y anadir disipador, o cambiar a un convertidor conmutado |
| Motor alimentado desde el regulador de la placa | La placa se reinicia al arrancar el motor | La corriente de arranque hunde el riel de alimentacion comun | Fuente separada para potencia, tierras unidas en un solo punto |
| Bus I2C sin resistencias de pull-up | Ningun dispositivo aparece en la deteccion | Las salidas I2C son de colector abierto y no pueden subir la linea solas | Anadir 4.7 kΩ desde SDA y SCL a la alimentacion del bus |
| Sensor de 5 V leido por entrada de 3.3 V | El pin se degrada o el sistema se comporta de forma erratica | La tension supera el maximo absoluto de la entrada | Divisor resistivo o conversor de nivel bidireccional |
| Componente manipulado sin proteccion ESD | Falla dias o semanas despues sin causa aparente | Una descarga estatica degrado la union sin destruirla | Pulsera con resistencia de 1 MΩ y alfombrilla disipativa |
| Se calculo con el valor Typ del datasheet | Funciona en el banco y falla en produccion o en frio | El valor tipico es un promedio; tu ejemplar puede estar en el extremo | Disenar siempre con las columnas Min y Max |
Ejercicios propuestos
-
Inventario y catalogo. Toma diez componentes de tu caja, identificalos por su marcado y busca sus hojas de datos. Para cada uno anota: tension maxima, corriente maxima, encapsulado y una aplicacion tipica. Elabora una tabla en Markdown con el resultado.
-
Verificacion del codigo de colores. Elige quince resistencias, lee su valor por bandas y luego midelo con el multimetro. Calcula la desviacion porcentual de cada una y comprueba si esta dentro de la tolerancia declarada.
-
Dimensionar tres LED. Calcula la resistencia limitadora para un LED rojo a 5 V con 15 mA, uno azul a 5 V con 12 mA y uno verde a 12 V con 20 mA. Para cada caso indica el valor comercial elegido, la potencia disipada y si basta una resistencia de 1/4 W.
-
Interruptor de potencia. Diseña en papel el circuito para conmutar un motor de 12 V y 1.2 A desde un GPIO de 3.3 V. Elige el transistor, calcula la resistencia de puerta o de base segun corresponda, indica el diodo flyback y estima la potencia disipada por el interruptor.
-
Presupuesto termico de un regulador. Un 7805 alimenta una carga de 400 mA desde una entrada de 12 V. Calcula la potencia disipada. Busca la resistencia termica union-ambiente de un encapsulado TO-220 sin disipador y estima la temperatura de union con 25 grados de ambiente. Concluye si el montaje es viable.
-
Deteccion de dispositivos I2C. Conecta al menos dos dispositivos I2C distintos a tu placa y escribe un modulo Elixir que liste las direcciones detectadas y, para cada una, intente identificar el dispositivo leyendo su registro de identificacion. Maneja el caso de dispositivos que no responden.
-
Termometro con registro. Usando el modulo
Taller.Ds18b20como base, escribe un GenServer que muestree la temperatura cada cinco segundos, mantenga las ultimas cien lecturas en su estado y exponga funciones para consultar el minimo, el maximo y el promedio. -
Medicion con multimetro. Mide el consumo de tu placa en tres condiciones: en reposo, con un LED encendido y ejecutando un ciclo de calculo intensivo. Anota los tres valores y calcula cuanto duraria una bateria de 2000 mAh en cada escenario.
-
Practica de soldadura. Suelda diez resistencias en una placa perforada formando una fila. Inspecciona cada soldadura con lupa y clasificala como correcta, fria o con exceso de estano. Corrige las defectuosas usando malla desoldadora.
-
Diagnostico dirigido. Monta un circuito sencillo en protoboard e introduce deliberadamente un fallo: un cable suelto, una resistencia de valor equivocado o un componente invertido. Pidele a otra persona que lo repare siguiendo el flujo de diagnostico del capitulo y cronometra cuanto tarda.
-
Comparativa de reguladores. Alimenta la misma carga de 500 mA a 5 V desde 12 V usando primero un 7805 y luego un modulo buck. Mide en ambos casos la corriente de entrada, calcula la eficiencia real y toca ambos componentes tras cinco minutos de funcionamiento.
-
Control de un servo. Investiga la interfaz PWM de sysfs de tu placa o el modulo PCA9685 y escribe un modulo Elixir que posicione un servo en tres angulos consecutivos con pausas entre ellos. Documenta en comentarios que ancho de pulso corresponde a cada angulo en tu servo concreto.
Lo que viene
Ya tienes el vocabulario fisico completo: sabes que hace cada componente, como dimensionarlo, como medirlo y como accionarlo desde Elixir. Con eso puedes montar un circuito que funcione sobre la mesa.
Falta la otra mitad de la ecuacion: donde corre el software. Hasta ahora hemos hablado de “la placa” sin precisar de que tipo de placa se trata, y esa distincion cambia todo. Un microcontrolador de ocho bits sin sistema operativo, un ESP32 con FreeRTOS, una Raspberry Pi con Linux completo y una placa con Nerves ejecutando la maquina virtual de Erlang son cuatro mundos con capacidades, garantias temporales y modelos de programacion radicalmente distintos. Ya viste una consecuencia concreta en este capitulo: medir microsegundos para un HC-SR04 es trivial en un microcontrolador y problematico bajo Linux.
En el capitulo 5 vamos a recorrer ese espectro de sistemas incrustados, comparar los lenguajes que se usan en cada nivel, entender que aporta exactamente la maquina virtual BEAM en un dispositivo con recursos limitados y decidir con criterio en que casos Elixir es la herramienta correcta y en cuales conviene delegar a un microcontrolador auxiliar. El indice completo del curso esta en /tecnologias/elixir-robotics/00-indice/.