01 · Punto de partida
De mirar a actuar
Un sistema IoT cierra el ciclo cuando, además de medir, puede cambiar algo en el mundo: encender el riego cuando el suelo está seco, abrir una cerradura, apagar un equipo que se sobrecalienta. Con esa capacidad llegan dos problemas nuevos. El primero es eléctrico: un pin de microcontrolador entrega unos pocos miliamperes, y una bomba, una electroválvula o una lámpara necesitan cientos de veces más. El segundo es lógico: un comando que viaja por una red que pierde, duplica y retrasa mensajes puede ejecutarse mal, tarde, dos veces o nunca.
Los dos se resuelven con ideas concretas: circuitos de potencia que aíslen y protejan al microcontrolador, y una disciplina de diseño en la que el dispositivo se protege a sí mismo, sin depender de que la nube haga todo bien.
02 · Catálogo
Los actuadores más usados
| Actuador | Qué hace | Cómo se maneja | A tener en cuenta |
|---|---|---|---|
| LED y buzzer | Indica o avisa | Un pin con resistencia limitadora; PWM para el brillo | Pocos miliamperes; es el actuador más simple |
| Relé electromecánico | Conecta o corta una carga con un contacto mecánico | Transistor o módulo con transistor; la bobina consume decenas de mA | Aísla la carga del microcontrolador; se desgasta y es lento (milisegundos) |
| Relé de estado sólido (SSR) | Igual que el relé, sin partes móviles | Una entrada de pocos mA | Silencioso y de muchas conmutaciones; se calienta y puede fallar «cerrado» |
| Transistor o MOSFET | Conmuta cargas de corriente continua | Un pin a la base o compuerta | Ideal para LED de potencia, bombas pequeñas, ventiladores; admite PWM |
| Motor de corriente continua | Gira | Puente H para elegir el sentido, PWM para la velocidad | Picos de corriente al arrancar; ruido eléctrico |
| Servomotor y motor paso a paso | Posiciona con precisión | Señal PWM (servo) o secuencia de pasos con un controlador | Alimentación propia; consumo alto cuando sostiene la posición |
| Electroválvula (solenoide) | Abre o cierra el paso de un fluido | Relé o MOSFET; bobina de 12 o 24 V | Carga inductiva; elegir si es «normalmente cerrada» o «abierta» según el estado seguro |
| Resistencia calefactora | Genera calor | Relé de estado sólido con control por ciclos | Potencia alta; exige protección térmica independiente |
Una distinción que importa para el diseño: algunas salidas son de estado (la luz queda encendida hasta nueva orden) y otras de acción (abrir una puerta, dar una dosis). Las de acción tienen efectos que no se pueden deshacer enviando la orden contraria, y requieren más cuidado.
03 · Electrónica de potencia
Cómo manejar una carga desde un pin
Un pin de un microcontrolador está pensado para señales, no para potencia. Entrega una corriente máxima del orden de 10 a 40 mA según el modelo, y la suma de todos los pines también tiene un tope. Una bobina de relé de 70 mA o un motor de 500 mA no pueden conectarse directamente: el pin se sobrecalentaría o se destruiría.
La solución es una etapa intermedia que amplifica la corriente: un transistor o un MOSFET que el pin controla y que maneja la carga con una fuente aparte.
Cuatro detalles de ese circuito concentran la mayoría de los errores:
- La resistencia de base (Rb). Limita la corriente que el pin da al transistor. Para conmutar a fondo se necesita una corriente de base mayor que la de colector dividida por la ganancia mínima del transistor, con un margen (de tres a cinco veces). Con una bobina de 70 mA y una ganancia mínima de 100, la base necesita al menos 0,7 mA; con margen de cinco, 3,5 mA, lo que con 3,3 V del pin y 0,7 V de la unión da una resistencia de unos 740 Ω (se elige 680 Ω).
- El diodo de rueda libre. Una bobina (relé, electroválvula, motor) se opone a que su corriente cambie: al cortar el transistor genera un pico de tensión de decenas de voltios que lo destruye. Un diodo en paralelo con la bobina, con el cátodo hacia el positivo, da un camino a esa corriente y absorbe el pico. Sin él, el circuito puede funcionar semanas y fallar de golpe.
- La masa común. El transistor, la fuente de la bobina y el microcontrolador comparten la referencia de 0 V. Sin ella el transistor no recibe la señal.
- Fuente separada y desacoplo. Las cargas inductivas generan ruido y bajan la tensión al arrancar. Conviene alimentarlas con una fuente adecuada y poner un condensador cerca; de lo contrario el microcontrolador se reinicia cada vez que arranca el motor.
Los módulos de relé comerciales ya traen el transistor, el diodo y, a veces, un optoacoplador que aísla eléctricamente el circuito de control. Son la forma práctica de empezar. Con ellos conviene verificar si se activan con nivel alto o bajo, y si su entrada tolera los 3,3 V del microcontrolador.
04 · Seguridad del dispositivo
Estado seguro y límites duros
Todo actuador debe tener un estado seguro: la posición en la que no causa daño cuando algo falla. Se define al diseñar y se refleja en el hardware y en el firmware.
- Qué es seguro depende de la aplicación. Una válvula de gas debe cerrarse si falla la energía (normalmente cerrada). Un ventilador de refrigeración de un equipo, en cambio, debe quedar encendido. Un calefactor, apagado. La elección «normalmente abierta o cerrada» de una electroválvula es una decisión de seguridad.
- El arranque. Al encender o reiniciar, los pines de un microcontrolador quedan unos instantes sin configurar, a veces flotantes, y una carga conectada puede activarse sola. Una resistencia de pull-down en la entrada del driver fuerza el estado apagado hasta que el firmware tome el control, y el programa debe fijar la salida en el estado seguro antes de hacer cualquier otra cosa.
- La pérdida de red. El dispositivo no puede quedar esperando órdenes indefinidamente. Según el caso, tras un tiempo sin contacto vuelve al estado seguro, mantiene el último valor o pasa a un modo local autónomo. Tiene que estar decidido y probado.
- Límites duros en el firmware. Tiempo máximo de encendido continuo, tiempo mínimo entre conmutaciones, corriente máxima, temperatura máxima. Se aplican en el dispositivo y ninguna orden remota puede saltearlos. Si la nube pide encender una bomba 5 horas y el límite es 30 minutos, la bomba se apaga a los 30.
05 · Órdenes
Comandos remotos que no se equivocan
Las redes pierden mensajes, los repiten y los entregan tarde. Un comando bien diseñado resiste esos tres problemas. Hay tres decisiones de diseño que lo logran.
| Forma | Ejemplo | Si el mensaje se duplica | Si el mensaje se pierde |
|---|---|---|---|
| Conmutar | «Invertir el estado de la bomba» | Se ejecuta dos veces: el estado queda al revés | El estado queda desfasado respecto de lo que cree el servidor |
| Fijar el estado | «Bomba = encendida» | Sin efecto: ya estaba encendida (es idempotente) | La bomba no se enciende; con reintento, se recupera |
| Fijar el estado con duración o vencimiento | «Bomba encendida durante 10 minutos» | Sin efecto adicional | Si se pierde el apagado, el dispositivo se apaga solo |
La propiedad clave se llama idempotencia: ejecutar la misma orden una o varias veces produce el mismo resultado. «Fijar el estado» la tiene; «conmutar» no. En un sistema con reintentos automáticos (como MQTT con calidad de servicio mayor que cero), los duplicados son normales, no excepcionales, y las órdenes tienen que tolerarlos.
Otras tres prácticas completan el diseño:
- Temporizador de seguridad. Las órdenes de encendido llevan una duración o un vencimiento. Si la orden de apagado nunca llega, el dispositivo apaga por sí mismo. Es el seguro contra el peor fallo: la salida atascada en «encendido».
- Vencimiento del comando. Cada orden lleva su hora de emisión y una validez corta (por ejemplo, 60 segundos). Si un dispositivo estuvo sin red y recibe «abrir válvula» media hora después, debe descartarla: la situación que la motivó ya cambió.
- Autenticación. El dispositivo solo acepta órdenes firmadas o enviadas por un canal autenticado. Un actuador accesible sin autenticación es una puerta abierta; lo estudiamos en el bloque de seguridad.
Y un principio de convivencia: el control local manda. Si una persona está presente y presiona el botón de apagado, ninguna orden remota debe contradecirla de inmediato.
06 · Verificación
Confirmar lo que realmente pasó
Ordenar «encender» no significa que se haya encendido. El relé puede estar pegado, el fusible quemado, la bomba sin agua. Hay que distinguir dos estados:
- Estado deseado: lo que el sistema pidió.
- Estado real: lo que está ocurriendo en el mundo físico.
El dispositivo informa el estado real y la plataforma compara. Hay tres niveles de confirmación, de menor a mayor confianza: (1) el firmware informa que escribió el pin; (2) un contacto auxiliar del relé o una lectura del pin de realimentación confirma que cambió; (3) un sensor mide el efecto (una corriente en la bomba, un caudal en la tubería, un fin de carrera en la puerta). Para acciones críticas se debe llegar al nivel 3.
Si el estado real no coincide con el deseado después de un tiempo razonable, el sistema lo trata como una falla: reintenta, corta y avisa. Un panel que muestra «bomba encendida» porque se envió la orden, y no porque se midió corriente, miente.
07 · Vida útil
Desgaste y frecuencia de conmutación
Los actuadores mecánicos se desgastan por cada conmutación. Un relé electromecánico típico soporta del orden de cientos de miles a unos pocos millones de operaciones mecánicas, y bastante menos con carga (el arco eléctrico erosiona los contactos). Un firmware que conmuta de más acorta la vida del producto sin que nadie lo note hasta que se rompe.
Con un relé de 100.000 operaciones: si conmuta una vez por minuto dura unos 69 días; si conmuta cada 15 minutos, unos 1042 días (2,9 años). Por eso los termostatos usan una banda de histéresis (tema 1 del curso anterior), y los compresores un tiempo mínimo entre arranques, que además protege el motor. El firmware debe aplicar un intervalo mínimo entre conmutaciones aunque la lógica o la nube pidan otra cosa.
const int PIN_BOMBA = 26;
const uint32_t DURACION_MAX_MS = 30UL * 60UL * 1000UL; // límite duro: 30 minutos
const uint32_t PAUSA_MIN_MS = 60UL * 1000UL; // al menos 1 minuto entre encendidos
bool encendida = false;
uint32_t instanteEncendido = 0, instanteApagado = 0;
uint32_t vencimiento = 0; // cuándo se apaga sola por orden con duración
void apagar() {
digitalWrite(PIN_BOMBA, LOW);
if (encendida) instanteApagado = millis();
encendida = false;
}
bool encender(uint32_t duracionMs) {
if (millis() - instanteApagado < PAUSA_MIN_MS) return false; // protege el equipo
if (duracionMs == 0 || duracionMs > DURACION_MAX_MS) duracionMs = DURACION_MAX_MS;
digitalWrite(PIN_BOMBA, HIGH);
encendida = true;
instanteEncendido = millis();
vencimiento = instanteEncendido + duracionMs;
return true;
}
void setup() {
pinMode(PIN_BOMBA, OUTPUT);
apagar(); // estado seguro antes que cualquier otra cosa
instanteApagado = millis() - PAUSA_MIN_MS;
}
void loop() {
if (encendida && (int32_t)(millis() - vencimiento) >= 0) apagar(); // temporizador de seguridad
// acá: recibir órdenes de la red y llamar a encender(...) o apagar()
}
El esqueleto reúne las defensas del tema: la salida arranca apagada, toda orden de encendido tiene un vencimiento, hay un límite duro de 30 minutos que ninguna orden puede superar, y hay una pausa mínima entre encendidos. La comparación (int32_t)(millis() − vencimiento) ≥ 0 es la forma segura de comparar instantes sin errores cuando el contador de milisegundos da la vuelta.
08 · Analogía con programación
Probar comandos sobre una red mala en Python
El programa simula miles de veces el mismo pedido: encender una bomba durante 10 minutos, con una orden de ENCENDER a los 0 s y una de APAGAR a los 600 s. Cada mensaje puede perderse con una probabilidad dada; si el servidor no recibe la confirmación, reintenta cada 30 segundos (hasta tres veces), lo que genera duplicados cuando la que se perdió fue la confirmación. El dispositivo implementa tres semánticas: conmutar, estado (fijar el estado) y temporizador (fijar el estado y apagarse solo 600 s después de recibir ENCENDER). Se evalúa el resultado a los 30 minutos y se cuenta cuántos ensayos salieron bien (bomba apagada al final y entre 9 y 11 minutos encendida), el promedio de minutos encendida y cuántas veces quedó encendida.
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.
ENSAYOS = 2000
DURACION_S = 600 # se quiere la bomba encendida 10 minutos
FIN_S = 1800 # se evalúa el estado a los 30 minutos
REINTENTO_S = 30 # el servidor reenvía si no recibe confirmación
MAX_ENVIOS = 4 # el primer envío y hasta tres reintentos
class Aleatorio:
def __init__(self, semilla=2024):
self.estado = semilla
def uniforme(self):
self.estado = (self.estado * 1664525 + 1013904223) & 0xFFFFFFFF
return self.estado / 4294967296
def llegadas(azar, perdida, reintentos):
"""Instantes en que el dispositivo recibe una copia de cada orden (ENCENDER a los 0 s, APAGAR a los 600 s)."""
recibidas = []
for orden, t0 in (("ON", 0), ("OFF", DURACION_S)):
for k in range(MAX_ENVIOS if reintentos else 1):
if azar.uniforme() >= perdida: # la orden llegó
recibidas.append((t0 + REINTENTO_S * k + 1, orden))
if azar.uniforme() >= perdida: # y la confirmación también llegó
break
return sorted(recibidas)
def ejecutar(recibidas, semantica):
encendida, desde, total, limite = False, 0, 0, None
def cerrar(t):
nonlocal encendida, total
if encendida:
total += t - desde
encendida = False
for t, orden in recibidas:
if semantica == "temporizador" and encendida and limite is not None and limite <= t:
cerrar(limite)
if semantica == "conmutar":
if encendida:
cerrar(t)
else:
encendida, desde = True, t
elif orden == "ON":
if not encendida:
encendida, desde = True, t
if semantica == "temporizador":
limite = t + DURACION_S
else:
cerrar(t)
if semantica == "temporizador" and encendida and limite is not None and limite <= FIN_S:
cerrar(limite)
final_encendida = encendida
cerrar(FIN_S)
return total, final_encendida
def evaluar(semantica, perdida, reintentos):
azar = Aleatorio()
bien = encendidas = suma = 0
for _ in range(ENSAYOS):
total, quedo_on = ejecutar(llegadas(azar, perdida, reintentos), semantica)
suma += total
encendidas += quedo_on
if not quedo_on and abs(total - DURACION_S) <= 60:
bien += 1
return 100 * bien / ENSAYOS, suma / ENSAYOS / 60, 100 * encendidas / ENSAYOS
print("semántica pérdida reintentos correcto minutos encendida queda encendida")
for perdida in (0.1, 0.3):
for reint in (False, True):
for sem in ("conmutar", "estado", "temporizador"):
ok, minutos, queda = evaluar(sem, perdida, reint)
print(f"{sem:<13} {perdida:>6.0%} {'sí' if reint else 'no':<9} {ok:>8.1f} % {minutos:>14.1f} {queda:>14.1f} %")
Resultado con los valores iniciales. Con 10 % de pérdida y sin reintentos, «conmutar» sale bien en 82 % de los ensayos y deja la bomba encendida al final en 16,8 %; «fijar el estado» también 82 %, pero la deja encendida en 8,6 %; con temporizador, 0 %, aunque a costa de no encender nunca si se pierde ENCENDER. Con reintentos, «conmutar» empeora (80,7 % correctos, 18 % encendida) porque los duplicados invierten el estado, mientras que «fijar el estado» sube a casi 100 % y con temporizador a 100 %. Con 30 % de pérdida y reintentos, «conmutar» solo acierta en 56 % de los casos y deja la bomba encendida en 36 %; «fijar el estado», en 96 % con 0,7 % encendida; y con temporizador, 98 % y 0 %.
El modelo ilustra tres lecciones: los reintentos sin idempotencia empeoran las cosas; la semántica de estado más reintentos lo arregla casi todo; y el temporizador elimina el peor resultado, el actuador atascado en encendido, incluso cuando la red es muy mala.
09 · Exploración interactiva
¿Qué tan confiable es mi comando?, de extremo a extremo
Este laboratorio ejecuta el mismo modelo del código anterior, con los mismos 2000 ensayos. Elegí la semántica de la orden, la pérdida de mensajes de la red y si el servidor reintenta. Las barras celestes comparan las tres semánticas en el porcentaje de ensayos correctos; las rojas, en el porcentaje de veces que el actuador quedó encendido al final, el resultado peligroso. La semántica elegida va resaltada.
Orden remota sobre una red que pierde mensajes
Elegí los parámetros y presioná «Enviar los comandos».
Recorrido guiado
- Con los valores iniciales (temporizador, 30 % de pérdida, con reintentos), enviá. 98,4 % de ensayos correctos, 9,8 minutos de promedio y 0 % de veces encendida al final: «Confiable».
- Cambiá a Conmutar con la misma red. Los ensayos correctos caen a 56,4 % y la bomba queda encendida en 36,4 % de los casos: «Peligroso». Los reintentos generan duplicados y cada duplicado invierte el estado.
- Con Conmutar, elegí «No» reintentar: 48,3 % correctos. Con una red mala, «conmutar» no tiene salida: ni con reintentos ni sin ellos.
- Pasá a Fijar el estado con reintentos: 96,2 % correctos. El duplicado no molesta. Pero queda encendida en 0,7 % de los casos: se perdieron los cuatro APAGAR.
- Con Fijar el estado sin reintentos y 30 % de pérdida: 48,3 % correctos y la bomba queda encendida en 20,9 % de los casos. Es la peor falla posible: una bomba encendida sin que nadie la apague.
- Con el temporizador y sin reintentos, la bomba nunca queda encendida (0 %), pero solo hay 69,2 % de éxito: si se pierde ENCENDER, simplemente no se enciende. «Falla en silencio», pero de forma segura.
Desafío: la orden que llega tarde
Un dispositivo estuvo sin red 25 minutos. Al reconectarse recibe un comando «abrir la válvula 10 minutos» que se emitió hace 25 minutos. ¿Debe ejecutarlo? Probablemente no: la situación que motivó la orden (el suelo seco a las 14:00) puede haber cambiado, quizás llovió o alguien riega a mano. Si la orden lleva una hora de emisión y una validez (por ejemplo, 60 segundos), el dispositivo la compara con su reloj y descarta la que venció, informando «orden vencida». Si la acción es importante, la plataforma decide de nuevo con datos actuales. Una orden vieja ejecutada fuera de contexto puede ser tan dañina como una orden equivocada.
10 · Método de trabajo
Cómo diseñar una salida remota
- Definí el estado seguro del actuador y qué elemento del hardware lo garantiza si se corta la energía o el programa se cuelga.
- Elegí el actuador y su circuito de excitación: transistor, MOSFET, relé o módulo; dimensioná las resistencias y agregá el diodo de rueda libre y el desacoplo.
- Aislá lo que haga falta. Las cargas de red eléctrica, con módulos certificados y cajas aisladas.
- Escribí los límites duros en el firmware: duración máxima, pausa mínima, protección térmica y de corriente.
- Diseñá los comandos como fijación de estado, con duración o vencimiento, hora de emisión y autenticación.
- Resolvé el arranque y la pérdida de red: pull-down, estado inicial seguro y qué hace el equipo sin contacto.
- Informá el estado real y compará con el deseado; trata la discrepancia como falla.
- Probá la falla: desconectá la red a mitad de una orden, cortá la energía, enviá comandos duplicados y vencidos. Una salida solo es confiable si resistió esas pruebas.
Una regla de oro final: pensá siempre qué pasa si la peor orden posible llega en el peor momento, y asegurate de que el dispositivo no pueda causar daño aunque la reciba.
11 · Comprensión
Confusiones frecuentes
«Puedo conectar la bomba directo a un pin del microcontrolador»
Un pin entrega decenas de miliamperes como máximo; una bomba o la bobina de un relé necesitan mucho más. Se necesita un transistor, un MOSFET o un módulo que maneje la corriente, y un diodo si la carga es inductiva.
«El diodo del relé es opcional»
Sin él, el pico de tensión de la bobina al apagarse puede destruir el transistor o resetear el microcontrolador. Puede funcionar un tiempo y fallar después; es el tipo de falla más difícil de diagnosticar.
«Si reintento los comandos, el sistema es más confiable»
Solo si los comandos son idempotentes. Con comandos de tipo «conmutar», cada reintento duplicado invierte el estado y empeora el resultado, como mostró el laboratorio.
«Si mandé encender, está encendido»
La orden pudo perderse, el pin pudo cambiar y el relé no, o la bomba pudo no arrancar. El estado real se confirma con una lectura (corriente, caudal, fin de carrera), y el panel debe mostrarlo, no suponerlo.
«La nube controla los límites de seguridad»
Los límites de seguridad viven en el dispositivo y en el hardware. Si dependen de que llegue un mensaje, fallan justo cuando se corta la red. La nube puede ajustar parámetros dentro de límites que el equipo impone por sí mismo.
«Un relé de estado sólido no se desgasta ni falla»
No tiene desgaste mecánico, pero puede fallar con el calor o por sobretensión, y su falla típica es quedar conduciendo («cerrado»), que es la peor posible para un calefactor. Necesita disipación y, en cargas peligrosas, una protección independiente.
12 · Práctica guiada
Predecí antes de comprobar
1. Resistencia de un LED
Un LED rojo (2,0 V de caída) se maneja desde un pin de 3,3 V con una corriente de 10 mA. ¿Qué resistencia corresponde y cuál elegirías entre los valores comunes 100, 150 y 220 Ω?
Ver solución
R = (3,3 − 2,0) / 0,010 = 130 Ω. De los valores comunes conviene 150 Ω, que da (3,3 − 2,0) / 150 ≈ 8,7 mA: algo menos de lo previsto, pero seguro y suficientemente brillante. Con 100 Ω serían 13 mA, más de lo planeado.
2. Excitar un relé
La bobina de un relé de 5 V consume 70 mA. Un transistor con ganancia mínima 100 la maneja desde un pin de 3,3 V (caída de la unión base-emisor: 0,7 V). Calculá la corriente de base mínima, una con margen de cinco veces y la resistencia de base.
Ver solución
Corriente de base mínima: 70 mA / 100 = 0,7 mA. Con margen de 5: 3,5 mA. La resistencia: (3,3 − 0,7) / 0,0035 ≈ 743 Ω; se elige el valor comercial más cercano, 680 Ω, que da unos 3,8 mA. El pin entrega apenas esos 3,8 mA en lugar de los 70 mA de la bobina.
3. Vida de un relé
Un relé soporta 100.000 operaciones. ¿Cuánto dura si el firmware lo conmuta una vez por minuto, y si lo conmuta cada 15 minutos?
Ver solución
Una vez por minuto: 100.000 min / 1440 ≈ 69 días. Cada 15 minutos: 100.000 × 15 / 1440 ≈ 1042 días, unos 2,9 años. Un control mal ajustado puede acortar la vida de un relé de años a semanas; de ahí la histéresis y la pausa mínima.
4. Conmutar contra fijar el estado
El servidor envía «conmutar» y la confirmación se pierde, por lo que reenvía. ¿Qué pasa con la bomba? ¿Y si la orden fuera «bomba = encendida»?
Ver solución
Con «conmutar», el dispositivo recibe dos copias y la ejecuta dos veces: la bomba se enciende y se apaga de inmediato, quedando al revés de lo pedido. Con «bomba = encendida», la segunda copia no cambia nada: el resultado es el correcto por idempotencia.
5. Estado seguro
Indicá si una electroválvula «normalmente cerrada» o «normalmente abierta» conviene en: (a) un suministro de gas a un horno; (b) el agua de refrigeración de un equipo que se sobrecalienta sin ella.
Ver solución
(a) Normalmente cerrada: sin energía o ante una falla, el gas se corta, que es el estado seguro. (b) Normalmente abierta: sin energía, el agua sigue circulando, porque cortarla causaría el daño. El mismo tipo de componente, con un estado seguro opuesto según la aplicación.
6. Una orden con retraso
El dispositivo recibe «abrir la válvula 10 minutos» emitida 25 minutos antes, con una validez de 60 segundos. ¿Qué hace y qué informa?
Ver solución
Compara la hora actual con la de emisión: pasaron 25 minutos, muy por encima de los 60 segundos de validez. Descarta la orden y la informa como «vencida». No abre la válvula: la plataforma deberá decidir de nuevo con datos actuales, si la acción sigue siendo necesaria.
13 · Síntesis
Ideas para recordar
- Actuar es más delicado que medir: un error de medida da un dato malo; un error al actuar puede causar un daño físico.
- Un pin entrega solo unos mA; las cargas se manejan con un transistor, un MOSFET, un relé o un módulo, con una fuente adecuada y masa común.
- Las cargas inductivas (relés, válvulas, motores) exigen un diodo de rueda libre, que protege al transistor del pico de tensión.
- Las cargas de red eléctrica se manejan con módulos certificados, aislamiento y personal calificado; se practica con bajas tensiones.
- Todo actuador tiene un estado seguro, el pin arranca apagado (pull-down) y el firmware impone límites duros que ninguna orden remota puede superar.
- Los comandos deben ser idempotentes: «fijar el estado» tolera duplicados y reintentos; «conmutar» no.
- Las órdenes de encendido llevan duración o vencimiento, de modo que el dispositivo se apague solo si la orden de apagado se pierde.
- Las órdenes llevan hora de emisión y validez corta; las vencidas se descartan.
- Hay que distinguir estado deseado y estado real, y confirmar el efecto con una medición (corriente, caudal, fin de carrera).
- Los relés se desgastan: se limita la frecuencia de conmutación con histéresis y pausas mínimas.
¿Listo para el tema 12?
Antes de avanzar, elegí un actuador de tu casa que podría conectarse a la red (un calefactor, una bomba, una cerradura) y respondé: ¿cuál es su estado seguro?, ¿qué límite duro impondrías?, ¿cómo expresarías la orden para que tolere duplicados y pérdidas?, ¿cómo confirmarías que realmente actuó? Si tenés las cuatro respuestas, estás pensando como diseñador de sistemas conectados.
En el próximo tema cerramos el bloque con del sensor al mensaje: cómo se estructura una lectura (valor, unidad, marca de tiempo e identificador del dispositivo) para que viaje por la red sin perder su significado.