01 · Punto de partida
Cada parte funcionaba
El Tema 30 empezó con una luz de noche que parpadeaba durante media hora cada tarde. Aquella vez el problema era un resistor mal elegido. Este tema termina ese proyecto, y lo hace entero.
Una escena típica. Esta vez hacés todo bien. Elegís el resistor del divisor con la media geométrica y lo probás: cientos de cuentas entre el día y la noche. Probás la llave con un LED: enciende y apaga. Probás la tira con su fuente: ilumina el pasillo. Tres partes, tres pruebas pasadas. Las juntás, cargás un programa de una línea, «si la lectura baja de 200, encender», y esperás al atardecer.
A las siete y diez la tira se enciende. Y se apaga. Y se enciende. Varias veces por segundo, toda la noche. Tapás el sensor con la mano: queda encendida, firme. La sacás: vuelve a parpadear. No hay ninguna pieza fallada ni ningún cable flojo.
La tira ilumina el pasillo, y el sensor está en el pasillo. Cuando la tira se enciende, el sensor ve luz, el programa concluye que es de día y la apaga. Con la tira apagada vuelve a estar oscuro, y la enciende. La falla no está en el sensor, ni en la llave, ni en la tira: está en un camino que no figura en el esquema, el que va de la salida a la entrada por el aire.
Un programador conoce esta situación con otro nombre. Las pruebas unitarias pasan todas y el sistema falla al integrarse, porque el error no vive en ningún módulo: vive en la interacción. Y conoce también la forma particular de este: un sistema que reacciona a su propia salida. Un proceso que vigila un registro y escribe en ese mismo registro cada vez que detecta un cambio.
- ¿Cómo se divide un proyecto en bloques que se puedan diseñar y probar por separado?
- ¿Qué se define en la frontera entre dos bloques?
- ¿Cómo se aplican juntos el método de selección, las predicciones y el montaje por etapas?
- ¿Qué pruebas son del sistema, y no de ninguna parte?
- ¿Qué tiene que quedar escrito para que el proyecto esté terminado?
02 · Identificar
Los requisitos
El primer paso del método del Tema 34: la idea, escrita con números y antes de pensar en ninguna pieza.
| Requisito | Valor | De dónde sale |
|---|---|---|
| Qué hace | Enciende una tira de LED cuando oscurece, y la apaga cuando hay luz | La idea |
| Cuándo enciende | En penumbra: alrededor de 1 lux | La tabla del Tema 30 |
| Cómo se comporta en la transición | Un solo encendido por atardecer, sin parpadeo | La falla del Tema 30, y la de la escena |
| Indicación | Un LED que muestre lo que el programa decidió, aunque la tira esté desconectada | Para poder diagnosticar |
| Carga | Tira de LED de 12 V, 1 m: 0,4 A medidos | Medida, como en el Tema 31 |
| Placa | Salidas de 5 V, tope de 10 mA; entrada analógica de 10 bits con referencia en la alimentación | La hoja de la placa |
| Fuente de potencia | 12 V y 2 A, separada de la placa; se limita sola por encima de 2 A | Su etiqueta |
| Sin programa | La tira queda apagada | Tema 33 |
| Montaje | Protoboard | Decisión propia |
- Un requisito es algo que se puede comprobar
- «Que no parpadee» no se puede medir. «Un solo encendido por atardecer» se cuenta. Cada fila de la tabla va a tener una prueba en la sección 8.
- Lo que queda afuera, a propósito
- No regula el brillo, no tiene reloj ni detecta personas. Decirlo es parte de los requisitos: evita que el proyecto crezca a mitad de camino.
03 · Diseño
Cuatro bloques y dos fuentes
El título del proyecto ya es su arquitectura: sensa, decide, indica y conmuta. Cada verbo es un bloque, con un tema del curso detrás.
Lo que hace que los bloques se puedan diseñar y probar por separado es que lo que cruza de uno a otro está definido. Es la interfaz, y se escribe antes que el interior.
| De | A | Qué cruza | Lo que se acuerda |
|---|---|---|---|
| Sensor | Entrada analógica | Una tensión | Entre 0 y 5 V; más luz, más tensión; con capacidad para que el conversor la lea bien |
| Programa | Indicador | Un nivel lógico | Alto es «oscuro»; menos de 10 mA |
| Programa | Llave | Un nivel lógico | Alto es «encender»; menos de 10 mA; sin mando, apagado |
| Llave | Tira | El camino al negativo | 12 V, 0,4 A; milivolts de pérdida |
| Fuente de 12 V | Placa | Solo el negativo | Unidos en un punto; la corriente de la tira no pasa por el negativo del sensor |
| Tira | Sensor | Luz | Nada, todavía |
La última fila es la de la escena. No es una conexión eléctrica y no aparece en ningún esquema, pero es una frontera como las otras: algo sale de un bloque y entra en otro. Escribir la tabla completa, incluyendo lo que cruza por el aire, por el calor o por la alimentación, es la manera de encontrar estos caminos antes de montar.
04 · Selección
El diseño, bloque por bloque
El sensor
- La zona de interés
- Del anochecer, 1 lux y unos 75 kΩ, a una habitación iluminada, 100 lux y unos 3 kΩ. El resto del rango no importa.
- El resistor fijo
- Media geométrica: raíz de 75 000 × 3000 = 15 kΩ. Con la fotorresistencia arriba, para que más luz dé más tensión.
- Su tolerancia
- 5 %. El sensor varía un factor de dos entre unidades, y los umbrales se van a calibrar: un resistor al 1 % no agregaría nada.
- El capacitor
- 100 nF entre la entrada y el negativo. Al anochecer el divisor presenta más de 10 kΩ, y el conversor necesita esa reserva para leer bien, como en el Tema 30. De paso filtra ruido.
La decisión
Con un solo umbral, cualquier ruido alrededor de ese valor produce encendidos y apagados. La solución es la del Tema 28, aplicada en el programa: dos umbrales. Uno para encender y otro, más alto, para apagar. Entre los dos, el estado no cambia.
| Umbral | Cuentas | Tensión | Fotorresistencia | Luz aproximada |
|---|---|---|---|---|
| Encender por debajo de | 200 | 0,98 V | 62 kΩ | 1,3 lux |
| Apagar por encima de | 300 | 1,46 V | 36 kΩ | 2,8 lux |
Cien cuentas de separación, contra un ruido que en el Tema 30 era de unas pocas. Parece de sobra. La sección 9 va a mostrar que alcanza para el ruido y no para otra cosa.
El indicador
Un LED rojo desde una salida de 5 V. Buscando 7 mA: (5 − 1,8) ÷ 0,007 = 457 Ω, que hacia arriba es 470 Ω. Con ese valor circulan 6,8 mA, dentro del tope de 10 mA, y el resistor disipa 22 mW.
La llave
| Paso | Decisión | Por qué |
|---|---|---|
| Función | Conectar al negativo una carga de 12 V y 0,4 A, con 5 V de mando | Los requisitos |
| Familia | MOSFET de canal N | Más de 200 mA: un bipolar pediría 20 mA de base |
| Límites | 24 V o más; 0,6 A o más; garantizado a 5 V | Tema 4 |
| Cápsula | TO-220 | Protoboard |
| Modelo | IRLZ44N: 55 V, 25 mΩ a 5 V | Pasa el filtro, y es el que ya usaste en el Tema 32 |
| Arrastra | 220 Ω en serie con la compuerta; 10 kΩ de compuerta a fuente | Tema 23. El de 10 kΩ cumple el requisito «sin programa, apagado» |
El calor: 0,4² × 0,025 × 1,5 = 6 mW. Y dos cosas que la tabla de «lo que arrastra» pediría para un actuador y que acá no van: el diodo en paralelo, porque una tira de LED no es una bobina, y el capacitor de reserva, porque no tiene pico de arranque. La tabla se aplica entendiendo por qué pide cada cosa.
La protección
Las tres condiciones del Tema 33. Uso normal: 0,4 ÷ 0,75 = 0,53 A como mínimo. Falla: la fuente se limita en 2 A, así que 2 ÷ 2 = 1 A como máximo. Conductor: los contactos de la protoboard, 1 A. Entre 0,53 y 1 A: 630 mA, y rápido, porque no hay arranque que tolerar. Va en el positivo de los 12 V, antes de todo.
05 · Aplicación
La lista de materiales
| Ref. | Cant. | Descripción | Modelo | Sustituto | Función |
|---|---|---|---|---|---|
| R1 | 1 | Fotorresistencia de 5 mm, de 10 a 20 kΩ a 10 lux | — | Otra, recalculando R2 | Sensor |
| R2 | 1 | 15 kΩ, 5 %, 1/4 W | Cualquiera | 10 o 22 kΩ | Divisor |
| C1 | 1 | 100 nF, 50 V, cerámico | Cualquiera | — | Reserva para el conversor |
| D1 | 1 | LED rojo, 5 mm | Cualquiera | Otro color, recalculando R3 | Indicador |
| R3 | 1 | 470 Ω, 5 %, 1/4 W | Cualquiera | 560 Ω | Limita D1 a 6,8 mA |
| Q1 | 1 + 1 | MOSFET canal N, 55 V, garantizado a 5 V, TO-220 | IRLZ44N | Otro de 24 V o más garantizado a 4,5 o 5 V | Llave de la tira |
| R4 | 1 | 220 Ω, 5 %, 1/4 W | Cualquiera | 100 a 470 Ω | Compuerta de Q1 |
| R5 | 1 | 10 kΩ, 5 %, 1/4 W | Cualquiera | 4,7 a 100 kΩ | Apagado de Q1 |
| F1 | 1 + 2 | Fusible rápido, 630 mA, 5 × 20 mm | — | 500 mA | Protege cables y contactos |
| — | 1 | Portafusibles para 5 × 20 mm | — | — | Montar F1 |
| J1, J2 | 2 | Bornera de dos contactos | — | — | Fuente y tira |
| — | 1 | Tira de LED de 12 V, 1 m, 0,4 A | — | — | Carga |
| — | 1 | Fuente de 12 V, 2 A, con límite de corriente | — | — | Potencia |
| — | 1 | Tubo opaco de 2 cm, o termocontraíble negro | — | — | Ver la sección 9 |
Para las pruebas hacen falta además dos piezas que no quedan en el proyecto: un LED y un resistor de 1 kΩ, como carga inofensiva de la etapa 4. Y el último renglón de la tabla no salió del diseño: se agregó después de la prueba del sistema. Una lista de materiales cambia mientras el proyecto vive.
06 · Diseño
Las predicciones
Antes de conectar, qué tiene que dar cada medición, con su rango. Es la tabla contra la que se va a dictaminar.
| Condición | Fotorresistencia | Tensión de salida | Cuentas |
|---|---|---|---|
| Tapada con la mano | 100 a 500 kΩ | 0,15 a 0,65 V | 30 a 134 |
| Penumbra, 1 lux | 40 a 150 kΩ | 0,45 a 1,36 V | 93 a 279 |
| Luz de la habitación | 2 a 8 kΩ | 3,3 a 4,4 V | 668 a 904 |
| Medición | En oscuridad | Con luz | Cuenta |
|---|---|---|---|
| Salida del indicador | 4,8 a 5,0 V | 0 V | — |
| Tensión sobre R3 | 3,0 a 3,4 V | 0 V | 6,8 mA × 470 Ω |
| Compuerta de Q1 | 4,7 a 4,9 V | 0 V | 5 V × 10 kΩ ÷ 10,22 kΩ |
| Drenaje de Q1 | Menos de 0,02 V | 11,5 a 12,5 V | 0,4 A × 25 mΩ = 10 mV |
| Corriente de la tira | 0,34 a 0,46 A | 0 | La medida, ±15 % |
| Tensión sobre F1 | 0,08 a 0,2 V | 0 V | 0,4 A × unas décimas de ohm |
| Fuente de 12 V | 11,5 a 12,5 V | 11,5 a 12,5 V | Trabaja al 20 % |
La segunda fila de la primera tabla dice algo incómodo: en penumbra, la lectura puede dar entre 93 y 279 cuentas según la unidad. El umbral de 200 está en el medio, pero con tu fotorresistencia puede corresponder a medio lux o a tres. Los umbrales de diseño son un punto de partida: los definitivos salen de una calibración, en la sección 8.
07 · Taller
El montaje en cinco etapas
El método del Tema 32: cada etapa agrega pocas piezas y termina con una prueba que no depende de las siguientes. Antes de la primera, la lista de control del Tema 33; la fuente de 12 V se desconecta para agregar piezas.
- 1Las dos fuentes y el negativo común.
La placa por USB; la fuente de 12 V a su bornera, pasando por el fusible. Un cable entre los dos negativos, en la bornera. Prueba: 4,75 a 5,25 V en una línea, 11,5 a 12,5 V en la otra, continuidad entre los negativos.
- 2El sensor, solo.
La fotorresistencia entre los 5 V y la entrada; R2 y C1 entre la entrada y el negativo. Un programa que solo imprima la lectura. Prueba: tapada y con la luz de la habitación, la tensión y las cuentas caen en los rangos de la tabla. Anotá los dos valores.
- 3La decisión y el indicador.
D1 y R3 en una salida. El programa con los dos umbrales, mandando solo al indicador. Prueba: al tapar el sensor, el LED enciende; al destaparlo, se apaga. Acercando la mano despacio, cambia una sola vez.
- 4La llave, con una carga inofensiva.
Q1, R4 y R5. Como carga, un LED con 1 kΩ entre los 12 V y el drenaje. Prueba: sigue al indicador. Con el cable de mando suelto, queda apagado. Reiniciando la placa con el sensor tapado, no destella. Compuerta: 4,7 a 4,9 V.
- 5La tira.
En lugar de la carga de prueba, por su bornera. Prueba: enciende al tapar el sensor. Y ahora, las mediciones.
| Etapa | Síntoma | Lo más probable |
|---|---|---|
| 2 | La lectura no cambia al tapar | El sensor no está en la fila que se cree; la entrada leída no es la conectada |
| 2 | Cambia al revés: baja con más luz | Sensor y resistor fijo intercambiados |
| 2 | Cambia muy poco | R2 no es de 15 kΩ: medirlo |
| 3 | El LED cambia varias veces al acercar la mano | Un solo umbral, o los dos demasiado juntos |
| 4 | La carga de prueba queda encendida con el mando suelto | Falta R5, o no hace contacto |
| 4 | El indicador enciende y la carga no | Falta el negativo común; patas de Q1 en otro orden |
| 5 | La tira no enciende y la carga de prueba sí encendía | La tira al revés: tiene polaridad. O el fusible |
| 5 | La tira parpadea al encender | No es una falla de montaje: la sección 9 |
08 · Verificar
Las mediciones y el dictamen
Las pruebas de las partes
Con el sensor tapado y la tira encendida, se mide cada fila de la segunda tabla de predicciones. Son las mediciones del Tema 32, y se leen igual.
| Medición | Bien | Si no |
|---|---|---|
| Drenaje de Q1 | Milivolts | Décimas de volt: la compuerta no recibe su tensión |
| Compuerta de Q1 | 4,7 a 4,9 V | La mitad: R4 es mucho mayor que 220 Ω. Cero: no llega el mando |
| Corriente de la tira | La medida, ±15 % | Mucho menos: la fuente no llega a 12 V, o hay un contacto con resistencia |
| Tensión sobre F1 | Menos de 0,2 V | Más: portafusibles flojo. Es la medición que encuentra un mal contacto antes de que caliente |
| Lectura del sensor, al encender la tira | No cambia | Sube: la tira ilumina al sensor. Baja: la corriente de la tira pasa por el negativo del sensor |
La última fila no mide una parte: mide una frontera. Y tiene dos respuestas malas con dos causas distintas, que son los dos caminos ocultos de este proyecto.
La calibración de los umbrales
- 1Registrar un atardecer.
Con el programa imprimiendo la lectura cada minuto y la tira desconectada. Anotá la lectura en el momento en que vos encenderías la luz.
- 2Ese valor es el umbral de encendido.
Reemplaza al 200 del diseño. Con otra fotorresistencia puede ser 120 o 260.
- 3Medir el ruido.
Con luz constante, la diferencia entre la lectura mayor y la menor durante un minuto.
- 4Medir el aporte de la tira.
De noche, la lectura con la tira apagada y con la tira encendida. La diferencia es lo que la salida le devuelve a la entrada.
Las pruebas del sistema
| Requisito | Prueba | Pasa si |
|---|---|---|
| Enciende cuando oscurece | Un atardecer real, o una lámpara regulable bajando despacio | Enciende con la luz que elegiste al calibrar |
| Un solo encendido por atardecer | El programa cuenta los cambios de estado durante la transición | Cuenta 1 |
| Se apaga cuando hay luz | Un amanecer, o encender la luz de la habitación | Se apaga, una sola vez |
| El indicador muestra la decisión | Desconectar la tira y tapar el sensor | El LED enciende igual |
| Sin programa, apagada | Mantener la placa en reinicio; desconectar el cable de mando | La tira no enciende ni destella |
| Protegida | Auditoría de márgenes del Tema 33, pieza por pieza | Ninguna excedida |
Montado como se diseñó, el proyecto pasa cinco de las seis. Falla la segunda: al anochecer cuenta decenas de cambios. Es la falla de la escena, en una versión más corta, y es el resultado más útil del tema.
09 · Aplicación
La luz que se ve a sí misma
La medición del paso 4 de la calibración le pone número. En un pasillo, con el sensor a medio metro de la tira, un resultado típico: 60 cuentas con la tira apagada, 250 con la tira encendida. La tira le suma al sensor el equivalente a unos 2 lux.
- 1Oscurece, y la lectura baja de 200.
El programa enciende la tira. Hasta acá, lo diseñado.
- 2La tira ilumina al sensor.
A la poca luz que quedaba se suman los 2 lux de la tira. La lectura salta a unas 320 cuentas.
- 3320 es más que 300.
El programa apaga la tira. La lectura vuelve a 200, y el ciclo empieza de nuevo.
- 4Unos minutos después, deja de oscilar.
Cuando la luz del ambiente bajó lo suficiente, ambiente más tira ya no llega a 300. La tira queda encendida.
Los dos umbrales estaban pensados para el ruido, que es de pocas cuentas. El aporte de la tira es de casi doscientas. La regla que faltaba es esta: la separación entre los umbrales tiene que ser mayor que el efecto de la salida sobre la entrada, con margen. Y ese efecto no se puede calcular en el diseño: depende del pasillo, de la distancia y de hacia dónde mira el sensor. Se mide.
| Solución | Cómo | A favor | En contra |
|---|---|---|---|
| Que la luz no llegue | Un tubo opaco de 2 cm sobre el sensor, apuntando a la ventana y no al pasillo | Elimina la causa. No depende del programa | Hay que poder orientarlo |
| Separar más los umbrales | Apagar por encima de 450 en lugar de 300 | Un número en el programa | Si el aporte de la tira es grande, no alcanza. Y apaga más tarde a la mañana |
| Un tiempo mínimo | Después de cambiar de estado, no volver a cambiar durante diez minutos | Limita el daño de cualquier oscilación, también de las que no previste | No corrige nada: la tira puede quedar en el estado equivocado diez minutos |
El proyecto usa las dos primeras: el tubo, que baja el aporte de 190 cuentas a menos de 20, y el umbral de apagado en 450. Con eso la segunda prueba cuenta 1. El tubo es el último renglón de la lista de materiales.
Un programador reconoce las tres soluciones. La primera es quitar la dependencia circular. La segunda, ensanchar una banda de tolerancia. La tercera es un límite de frecuencia, que no arregla el error y evita que se convierta en una tormenta. Y reconoce el orden: primero se quita la causa, después se agrega margen, y el límite queda como red.
10 · Cierre
El documento
El circuito funciona. El proyecto no está terminado hasta que queda escrito, y casi todo ya lo escribiste en el camino: cada sección de este tema es una parte del documento.
| Parte | Qué dice | Para qué sirve después |
|---|---|---|
| Requisitos | Qué hace, con números, y qué no hace | Saber si un pedido de cambio es un arreglo o un proyecto nuevo |
| Esquema | Qué está conectado con qué, con las referencias | Todo lo demás lo cita |
| Lista de materiales | Cada pieza, completa, con su sustituto | Armar otro; reponer una pieza |
| Predicciones y mediciones | Qué tenía que dar cada punto, y qué dio | Diagnosticar: un circuito que falla se compara contra sus propias mediciones de cuando andaba |
| Ajustes | Los umbrales calibrados, el ruido, el aporte de la tira, y cómo se midieron | Recalibrar si se cambia el sensor o el lugar |
| Programa | El código, con los umbrales como constantes con nombre | — |
| Decisiones | Por qué un MOSFET, por qué sin diodo, por qué el tubo | No deshacerlas por error |
| Límites conocidos | Hasta 0,47 A; sensor a la vista de una ventana; solo protoboard | Que nadie le pida lo que no hace |
- Las mediciones son la parte que más vale
- Dentro de un año, cuando la tira no encienda, la pregunta va a ser «¿cuánto tiene que haber en la compuerta?». Si está anotado, el diagnóstico dura cinco minutos.
- Las decisiones evitan retrocesos
- Alguien va a mirar el circuito y pensar «acá falta el diodo». Una línea que diga por qué no va ahorra la discusión, y evita que se agregue una pieza que no hace nada.
- La falla encontrada también se documenta
- La oscilación de la sección 9, con sus números, es lo más valioso que este proyecto produjo. Es lo que vas a recordar en el próximo que tenga un sensor y una salida en el mismo ambiente.
Hacia dónde crece
| Cambio | Qué se rehace | Tema |
|---|---|---|
| Dos metros de tira | El fusible, y la potencia sale de la protoboard | 33 |
| Encendido gradual, con PWM | El calor de la llave al conmutar; el ruido sobre la lectura del sensor | 23 |
| Una lámpara de la red eléctrica | La llave pasa a ser un relé con su transistor y su diodo, o un módulo con aislamiento. Con todas las advertencias sobre la tensión de red | 25, 26 |
| Placa de 3,3 V | El MOSFET, que pasa a montaje superficial; los umbrales; el resistor del LED | 34 |
Y una variante que conviene descartar con argumentos: hacerlo sin placa, conectando el divisor directamente a la compuerta del MOSFET. Funciona a medias. El punto de encendido pasa a depender del umbral del transistor, que varía entre unidades de 1 a 2 V y con la temperatura. No hay dos umbrales, así que no hay defensa contra el ruido ni contra el lazo. Y durante todo el atardecer el MOSFET queda a medio encender, en la zona que el Tema 22 enseñó a evitar. Para decidir con una tensión y sin programa existe un componente específico, el comparador, y es del curso siguiente.
11 · Simulador
Un atardecer
Una hora en la que la luz del ambiente baja de 100 lux a una décima. El gráfico muestra lo que lee el programa y lo que hace con la tira. El umbral de encendido corresponde siempre a 1,3 lux.
- La curva es la lectura del conversor, de 0 a 1023 cuentas.
- La línea naranja es el umbral de encendido; la blanca, el de apagado.
- La banda inferior muestra cuándo la tira está encendida.
- Debajo del tiempo, la luz del ambiente en cada momento.
Una hora, un encendido
Recorrido guiado (10 minutos)
- 1Mirá el estado inicial.
Es la escena: un solo umbral y la tira iluminando al sensor. Desde que oscurece, cambia de estado en cada lectura, hasta el final.
- 2Poné el sensor en su tubo, sin tocar el umbral.
La oscilación permanente desaparece. Queda un parpadeo breve justo en el cruce, cinco cambios en medio minuto: es el ruido, con un solo umbral.
- 3Subí el umbral de apagado a 1,7 lux.
Treinta cuentas de separación alcanzan: un solo cambio. Para el ruido, una histéresis chica es suficiente.
- 4Volvé a «poca luz» de la tira, con ese umbral.
Oscila otra vez, toda la noche. Treinta cuentas contra un aporte de más de cien.
- 5Elegí el umbral del diseño, 2,8 lux.
Es el proyecto tal como se diseñó en la sección 4. Oscila unos minutos y después queda encendida: la prueba del sistema que no pasaba.
- 6Separá el umbral a 7 lux.
Un solo cambio. La separación ya supera el aporte de la tira.
- 7Con 7 lux, elegí «mucha luz» de la tira.
Vuelve a oscilar, y para siempre: la tira sola supera el umbral de apagado. Ninguna histéresis razonable lo arregla. Hace falta el tubo.
- 8Con el tubo y un solo umbral, promediá dieciséis lecturas. Después sacá el tubo.
Con el tubo, el parpadeo del paso 2 desaparece, y el encendido se demora un minuto. Sin el tubo vuelve a oscilar toda la noche, apenas más lento. Promediar actúa sobre el ruido; sobre el lazo no hace nada.
- 9Cambiá el resistor fijo a 220 Ω, con el tubo y el umbral de 2,8 lux.
La curva queda pegada al piso, y los umbrales son 4 y 6 cuentas. Es el divisor de la escena del Tema 30. Los umbrales de 1,3 y de 1,7 lux caen en la misma cuenta, y con uno solo parpadea durante cinco minutos. Dejá pasar poca luz de la tira: oscila toda la noche, donde con 15 kΩ lo hacía unos minutos. Sin excursión no hay dónde poner una histéresis.
Preguntas para pensar
- En los pasos 3 y 4, la misma histéresis alcanza en un caso y no en el otro. ¿Qué regla lo resume?
- En el paso 5, ¿por qué la oscilación termina sola al cabo de unos minutos?
- En el paso 7, ¿por qué no se puede resolver desde el programa subiendo más el umbral de apagado?
Ver respuestas sugeridas
- La separación entre los umbrales tiene que superar a todo lo que mueve la lectura sin que haya cambiado lo que se quiere medir. En el paso 3 eso es solo el ruido, de una decena de cuentas. En el 4 se suma el aporte de la tira, de más de cien. La histéresis no se elige por costumbre: se elige midiendo esas dos cantidades y dejando margen sobre la mayor.
- Porque lo que el sensor ve es la suma de la luz del ambiente y la de la tira. Al principio esa suma supera el umbral de apagado. A medida que el ambiente oscurece, la suma baja, y llega un momento en que ni con la tira encendida se alcanzan los 2,8 lux. Es una oscilación que depende de la hora: por eso puede pasar inadvertida en una prueba hecha de noche, con la habitación a oscuras, y aparecer todos los días al atardecer.
- Porque el umbral de apagado tendría que quedar por encima de los 20 lux que aporta la tira, y eso es más que la luz de una habitación con una lámpara tenue: la tira no se apagaría hasta bien entrada la mañana, o nunca en un pasillo interior. El programa puede esconder el problema, a costa de dejar de cumplir otro requisito. Cuando la causa es física, la solución de fondo también lo es.
12 · El proyecto en código
Predecir, decidir y dictaminar
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python».
Las predicciones, a partir de los requisitos
V_PLACA, V_POTENCIA = 5.0, 12.0
R_FIJA, R_LED, V_LED = 15_000, 470, 1.8
A_TIRA, OHM_LLAVE = 0.4, 0.025
def cuentas(ohm_sensor, r_fija=R_FIJA):
return round(1024 * r_fija / (ohm_sensor + r_fija))
def ohm_para(cuenta, r_fija=R_FIJA):
return r_fija * 1024 / cuenta - r_fija
print("Sensor:")
for condicion, ohm_min, ohm_max in (("tapada", 100e3, 500e3), ("penumbra", 40e3, 150e3), ("habitación", 2e3, 8e3)):
print(f" {condicion:12} de {cuentas(ohm_max):4} a {cuentas(ohm_min):4} cuentas "
f"({V_PLACA * cuentas(ohm_max) / 1024:.2f} a {V_PLACA * cuentas(ohm_min) / 1024:.2f} V)")
print("Umbrales:")
for nombre, cuenta in (("encender bajo", 200), ("apagar sobre", 300), ("apagar sobre, corregido", 450)):
print(f" {nombre:24} {cuenta:4} cuentas = {V_PLACA * cuenta / 1024:.2f} V = {ohm_para(cuenta) / 1000:.0f} kohm")
a_led = (V_PLACA - V_LED) / R_LED
v_compuerta = V_PLACA * 10_000 / 10_220
print(f"Indicador: {a_led * 1000:.1f} mA, {a_led * R_LED:.1f} V sobre su resistor, {a_led ** 2 * R_LED * 1000:.0f} mW")
print(f"Compuerta: {v_compuerta:.2f} V")
print(f"Drenaje, encendida: {A_TIRA * OHM_LLAVE * 1000:.0f} mV; calor en la llave: {A_TIRA ** 2 * OHM_LLAVE * 1.5 * 1000:.0f} mW")
print(f"Fusible: entre {A_TIRA / 0.75:.2f} y {min(2.0 / 2, 1.0):.2f} A -> 630 mA, que admite hasta {0.63 * 0.75:.2f} A de tira")
Cambiá R_FIJA a 10 000. ¿Qué cuentas corresponden ahora a los mismos 62 kΩ del umbral de encendido?
La decisión: el programa de la placa
La lógica que corre en el microcontrolador, probada con un atardecer simulado. En la placa, leer() es la entrada analógica y tira es una salida; lo demás es igual.
import random
ENCENDER_BAJO = 200 # cuentas: se calibra con un atardecer real
APAGAR_SOBRE = 300 # cuentas: tiene que superar el aporte de la tira, con margen
LUX_DE_LA_TIRA = 2.0 # lo que la tira le suma al sensor; 0 con el tubo puesto
def leer(lux):
"""La cadena del sensor: de la luz a las cuentas, con su ruido."""
ohm = 75_000 * max(lux, 0.01) ** -0.7
return max(0, min(1023, round(1024 * 15_000 / (ohm + 15_000) + random.uniform(-2, 2))))
def atardecer(encender_bajo, apagar_sobre, lux_tira, minutos=60):
random.seed(35)
tira, cambios, ultimo = False, 0, None
for paso in range(minutos * 10): # una lectura cada 6 segundos
ambiente = 10 ** (2 - 3 * paso / (minutos * 10)) * random.uniform(0.92, 1.08)
lectura = leer(ambiente + (lux_tira if tira else 0))
if not tira and lectura < encender_bajo:
tira, cambios, ultimo = True, cambios + 1, paso
elif tira and lectura > apagar_sobre:
tira, cambios, ultimo = False, cambios + 1, paso
return cambios, ultimo / 10, tira
for nombre, apagar, lux_tira in (("un solo umbral, sin tubo", 200, 2.0),
("diseño inicial, sin tubo", 300, 2.0),
("umbral separado, sin tubo", 450, 2.0),
("diseño inicial, con tubo", 300, 0.0),
("proyecto final: tubo y 450", 450, 0.2)):
cambios, minuto, tira = atardecer(ENCENDER_BAJO, apagar, lux_tira)
veredicto = "PASA" if cambios == 1 and tira else "no pasa"
print(f"{nombre:28} {cambios:4} cambios, el último al minuto {minuto:4.1f} -> {veredicto}")
Agregá un tiempo mínimo: que no pueda cambiar de estado si pasaron menos de 100 lecturas desde el cambio anterior. ¿Cuántos cambios quedan en el primer caso, y en qué estado termina?
El dictamen
La tabla de predicciones contra las mediciones. Los valores de ejemplo son los de un montaje con una falla: buscala antes de ejecutar.
PREDICHO = { # medición: (mínimo, máximo, unidad)
"sensor tapado": (30, 134, "cuentas"),
"sensor con luz": (668, 904, "cuentas"),
"tensión sobre R3": (3.0, 3.4, "V"),
"compuerta": (4.7, 4.9, "V"),
"drenaje, encendida": (0.0, 0.02, "V"),
"corriente de la tira": (0.34, 0.46, "A"),
"tensión sobre F1": (0.0, 0.2, "V"),
"cambios en un atardecer": (1, 1, ""),
"lectura: con tira menos sin tira": (-5, 20, "cuentas"),
}
PISTA = {
"compuerta": "medir R4: si no es de 220 ohm, forma un divisor con R5",
"drenaje, encendida": "mirar primero la compuerta: la llave está a medio encender",
"corriente de la tira": "medir la fuente de 12 V con la tira encendida, y la tensión sobre F1",
"tensión sobre F1": "portafusibles flojo o sucio",
"cambios en un atardecer": "medir el aporte de la tira y compararlo con la separación de los umbrales",
"lectura: con tira menos sin tira": "positivo: la tira ilumina al sensor. Negativo: negativo compartido",
}
def dictaminar(medido):
fuera = 0
for medicion, (minimo, maximo, unidad) in PREDICHO.items():
if medicion not in medido:
print(f" {medicion:34} SIN MEDIR")
fuera += 1
continue
valor = medido[medicion]
bien = minimo <= valor <= maximo
fuera += 0 if bien else 1
print(f" {medicion:34} {valor:>7} {unidad:8} {'bien' if bien else 'FUERA de ' + str(minimo) + ' a ' + str(maximo)}")
if not bien and medicion in PISTA:
print(f" -> {PISTA[medicion]}")
print(f" {'APROBADO' if fuera == 0 else str(fuera) + ' observaciones'}\n")
dictaminar({
"sensor tapado": 61, "sensor con luz": 790, "tensión sobre R3": 3.21,
"compuerta": 2.5, "drenaje, encendida": 0.31, "corriente de la tira": 0.39,
"tensión sobre F1": 0.12, "cambios en un atardecer": 1, "lectura: con tira menos sin tira": 12,
})
Dos mediciones están fuera, y tienen una sola causa. Cargá después las de tu propio montaje.
13 · Comprensión
Confusiones frecuentes
«Si cada parte funciona, el conjunto funciona»
Las fallas de integración están en las fronteras y en los caminos que el esquema no dibuja. Hay pruebas que son del sistema y de ninguna parte.
«Parpadea: hay un cable flojo»
Si parpadea al encenderse y se estabiliza al tapar el sensor, es un lazo: la salida está modificando la entrada. Se confirma midiendo la lectura con la tira encendida y apagada.
«Dos umbrales resuelven cualquier parpadeo»
Si su separación supera lo que mueve la lectura. Para el ruido alcanzan pocas cuentas; para el aporte de la salida, hay que medirlo. Y si es muy grande, primero hay que cortar el camino.
«Promediar lecturas es lo mismo que la histéresis»
Promediar reduce el ruido y demora la respuesta. No impide cruzar el umbral ida y vuelta. Se complementan.
«Los umbrales salen de la cuenta»
De la cuenta sale un punto de partida. Con una fotorresistencia, que varía un factor de dos entre unidades, los definitivos salen de un registro real.
«A todo actuador le pongo diodo y capacitor»
El diodo es para bobinas; el capacitor de reserva, para picos de arranque. Una tira de LED no tiene ninguna de las dos cosas.
«El LED indicador es opcional»
Es el punto de observación que separa una falla de decisión de una falla de potencia. Cuesta dos piezas y ahorra la mitad de cada diagnóstico.
«Cuando anda, está terminado»
Está terminado cuando otra persona puede repetirlo y diagnosticarlo con lo escrito: requisitos, lista, mediciones, ajustes y decisiones.
14 · Práctica guiada
Ejercicios
Ejercicio 1: otra fotorresistencia
Tu fotorresistencia mide 150 kΩ en la penumbra en la que querés encender, y 6 kΩ con la luz de la habitación. Elegí el resistor fijo, calculá el umbral de encendido en cuentas y la lectura con la luz de la habitación.
Ver solución razonada
Media geométrica: raíz de 150 000 × 6000 = 30 kΩ; el valor de serie más cercano es 33 kΩ. Umbral: 1024 × 33 ÷ (150 + 33) = 185 cuentas. Con luz: 1024 × 33 ÷ (6 + 33) = 866 cuentas. La excursión es casi la misma que en el proyecto, con un resistor del doble: el circuito se adaptó al sensor. Con 33 kΩ el divisor presenta todavía más resistencia al conversor, y el capacitor de 100 nF pasa de recomendable a necesario.
Ejercicio 2: elegir la histéresis
Medís: ruido de 12 cuentas entre máximo y mínimo; lectura de noche de 45 con la tira apagada y de 140 con la tira encendida. El umbral de encendido calibrado es 180. ¿Dónde ponés el de apagado?
Ver solución razonada
El aporte de la tira es de 95 cuentas de noche. Pero al momento de encender el ambiente todavía aporta: la lectura con la tira encendida, justo después del cruce, va a ser bastante mayor que 180 + 95, porque la respuesta no es una recta. La manera segura es medirlo en ese momento, o razonar en luz: 180 cuentas son unos 1,1 lux, y la tira suma alrededor de 0,5; juntos, 1,6 lux, que son unas 225 cuentas. Con margen para el ruido y para la dispersión: apagar por encima de 300. Y conviene igual poner el tubo, que reduce el aporte y deja ese margen de sobra.
Ejercicio 3: la tabla de fronteras
Un ventilador controlado por un termistor, los dos dentro del mismo gabinete. Escribí las fronteras, incluyendo las que no son eléctricas. ¿Hay un lazo? ¿Es un problema?
Ver solución razonada
Las eléctricas son las del proyecto: sensor a entrada, programa a llave, llave a motor, y el negativo. Las otras: el aire, del ventilador al termistor, y el ruido eléctrico del motor hacia la lectura. Hay un lazo, y esta vez es el que se busca: el ventilador enfría, la temperatura baja y el ventilador se apaga. Es un lazo que corrige, a diferencia del de la luz, que confirma el error. Igual necesita dos umbrales, o el ventilador arranca y para cada pocos segundos alrededor de la temperatura elegida: encender a 40 °C y apagar a 35. Y como un motor sí es una bobina, vuelven el diodo, el capacitor y la corriente de arranque.
Ejercicio 4: diagnóstico con el indicador
Para cada caso, decí de qué lado está la falla: a) sensor tapado, indicador apagado, tira apagada; b) sensor tapado, indicador encendido, tira apagada; c) sensor con luz, indicador apagado, tira encendida; d) placa en reinicio, tira encendida.
Ver solución razonada
a) Sensor o programa: la decisión no se tomó. Imprimir la lectura. b) Potencia: la decisión es correcta y no llega. Medir la compuerta; si tiene 4,8 V, medir los 12 V después del fusible y la polaridad de la tira. c) La llave conduce sin mando: drenaje y fuente intercambiados, o el MOSFET dañado en cortocircuito. d) Falta el resistor de 10 kΩ, o no hace contacto: la compuerta quedó en el aire.
Ejercicio 5: en el simulador
Encontrá la configuración con menos protección que todavía da un solo cambio de estado, para «poca luz» de la tira. Después, la que lo logra para «mucha luz».
Ver solución razonada
Con poca luz, hace falta el umbral de apagado en 7 lux; con 2,8 lux oscila durante unos minutos, y con menos, toda la noche. Promediar no cambia ese resultado. Con mucha luz, ninguna de las opciones de umbral alcanza: la única configuración que da un solo cambio es la del tubo. Y con el tubo puesto, cualquiera de los tres umbrales separados funciona. La conclusión práctica: el tubo resuelve el caso difícil y vuelve fácil el otro.
Ejercicio 6: una extensión
Te piden que la tira sea de dos metros. Recorré el proyecto y listá todo lo que cambia.
Ver solución razonada
La corriente pasa a 0,8 A. Fusible: mínimo 0,8 ÷ 0,75 = 1,07 A; máximo por la fuente, 1 A. No hay fusible que cumpla: la fuente de 2 A se parece demasiado a la carga. Con una fuente de 12 V y 5 A el máximo sube a 2,5 A, y se elige 1,25 A. Conductores: 1,25 A supera el contacto de la protoboard, así que la potencia sale de ella: MOSFET, fusible y tira sobre borneras y cable de 0,5 mm². Llave: el IRLZ44N sigue sobrado, con 24 mW. El lazo: el doble de tira aporta más luz al sensor, y hay que volver a medirlo. Documento: requisitos, lista, predicciones y límites conocidos. Un cambio de una línea en los requisitos tocó cinco secciones.
Ejercicio 7: el proyecto completo
Con las piezas reales. Hacé el proyecto de punta a punta: requisitos con la corriente medida de tu tira, lista de materiales, predicciones, las cinco etapas, las mediciones, la calibración y las seis pruebas del sistema. Armá la carpeta.
Qué mirar en el resultado
Tres números propios valen más que todo el resto: tu umbral de encendido calibrado, tu ruido y el aporte de tu tira. Compará el aporte con y sin el tubo. Si alguna etapa no pasó a la primera, anotá cuál y por qué. Y hacé la prueba final del documento: dáselo a alguien que no vio el montaje y preguntale qué tensión tiene que haber en la compuerta con el sensor tapado. Si lo encuentra en menos de un minuto, el proyecto está terminado.
15 · Síntesis
Ideas para recordar
- Un proyecto se divide en bloques, y lo que cruza entre ellos se define antes que su interior.
- La tabla de fronteras incluye lo que no es eléctrico: luz, calor, aire, ruido.
- Cada requisito se escribe de manera que tenga una prueba.
- El orden: requisitos, bloques, diseño, lista de materiales, predicciones, montaje por etapas, mediciones, dictamen.
- Un indicador antes de la llave separa las fallas de decisión de las de potencia.
- Un umbral con ruido necesita dos umbrales, y su separación tiene que superar todo lo que mueve la lectura, incluido el efecto de la propia salida.
- Los umbrales de diseño son un punto de partida: los definitivos se calibran.
- Cuando la causa de una falla es física, se corta la causa primero, y el programa agrega margen.
- Las tablas de reglas se aplican entendiendo por qué piden cada cosa: una tira de LED no lleva diodo.
- El proyecto termina con un documento: requisitos, esquema, lista, mediciones, ajustes, decisiones y límites.
¿Listo para el Tema 36?
Podés avanzar si sos capaz de responder esto sin mirar:
- Nombrar los cuatro bloques del proyecto y lo que cruza entre ellos.
- Explicar por qué la tira parpadea con un solo umbral, y por qué sigue parpadeando con dos poco separados.
- Decir cómo se mide el aporte de la salida sobre la entrada.
- Enumerar las cinco etapas del montaje y la prueba de cada una.
- Decir qué falla indica el indicador encendido con la tira apagada.
- Justificar por qué la llave de la tira no lleva diodo.
- Enumerar las partes del documento de un proyecto.
Treinta y cinco temas después, un cajón de piezas se convirtió en un método: leer una hoja, dejar margen, elegir, proteger, predecir, medir y escribir. Queda mirar el recorrido completo, armar la caja de componentes que conviene conservar y ver qué hay más allá de encender y apagar. En el próximo y último tema, el cierre del curso y el puente a la electrónica analógica.