Diseño sofisticado de dispositivos simples.

Saludos al lector! Hoy les contaré una historia curiosa que me hizo pensar en los problemas que surgen cuando la elección incorrecta (no óptima) de componentes para la implementación de cualquier producto electrónico. Y también sobre la aparente simplicidad usando el ejemplo de un dispositivo de "un día".
Acordemos que la historia es ficticia, cualquier coincidencia es aleatoria ... o no aleatoria.
Una vez, Seryozha, el programador, se dirigió a mí con una solicitud para hacer un dispositivo en su automóvil que emula la presión sucesiva de 2 botones virtuales al presionar un automóvil físico en el circuito de control de control de crucero (Ford Focus 2). El esquema de la unidad de control estándar es el siguiente:



En el lado del control, esta es una entrada de botón clásico que usa un ADC. y entonces la tarea del dispositivo, cuando presiona el botón de hardware, presiona secuencialmente el botón ON y SET + durante un tiempo de ~ 0.2 s. Para facilitar la integración del dispositivo, se decidió alimentarlo desde la resistencia superior del divisor. El voltaje en los terminales de conexión es de 4.6 V sin un circuito de botón conectado. Como se planeó que el dispositivo se hiciera por la noche, hice un diagrama sin cálculos preliminares de lo que estaba en la mesa de montaje. La solución "en la frente":



Serezha escribió el firmware, y el dispositivo funcionó perfectamente para automóviles. En el momento en que querían empacar el tablero en la caja del interruptor de la columna de dirección, alguien del fondo de la oficina gritó: “¿Es tan complicado? La mitad de los detalles se pueden descartar, y de hecho STM8 es justo lo que se necesita para tal tarea ". Y comenzó ... El autor de la idea se ofreció a soldar el diseño "en 3 partes" (aparentemente anticipando una victoria fácil). Yo (guiado por mi propio artículo sobre celos profesionales ) decidí no interferir con la fuga del joven especialista, pero solo me conecté en el escenario cuando todos se dieron cuenta de que no había sucedido un milagro.

El esquema propuesto por mi colega era realmente más simple, pero solo funcionaba en la mesa:



Los errores eran visibles incluso a primera vista, sin embargo, decidí hacer que el circuito funcionara específicamente en el STM8S001J3 MK.

Para entender cómo rehacer el circuito, realizaremos varias mediciones. La resistencia de la resistencia superior en el divisor ADC es ~ 130 Ohms, y el voltaje sin carga es 4.6 V.

Entonces el diagrama del nodo del botón tiene la forma:



  • cuando se sueltan los botones, la corriente en el circuito es de 2 mA, el voltaje en la entrada del ADC es de 4.33 V;
  • cuando se presiona el botón ON, 3.7 mA, el voltaje en la entrada del ADC es 4.11 V;
  • con el botón SET presionado + 18.4 mA, el voltaje en la entrada ADC es 2.2 V.

Al mismo tiempo, el rango de voltaje de operación del STM8S001J3 MK es 2.95-5.5 V. Resulta que un intento de presionar el botón SET + conduce a una caída de voltaje por debajo del mínimo y el MK se reinicia.

En este punto, propongo distraer y discutir cuál es el MK ideal para esta tarea y por qué no lo eligieron. Por lo general, para tales manualidades use lo que el desarrollador sabe cómo trabajar y lo que tiene a mano. Por ejemplo, el microchip tiene controladores PIC10F200 o ATtiny10 en el paquete SOT23-6 con un rango de voltaje de 2 (1.8) - 5.5 V. Estos microcircuitos no requieren un regulador de voltaje (como STM32L031), pero no se reiniciarán cuando se presione el botón SET +. (como STM8S001J3). En el arnés solo habrá 2 resistencias y un condensador. Belleza, pero la gama de controladores STMicro con este rango de potencia no lo es. Un lector atento notará con razón que en el marco de dicha tarea, casi cualquier controlador puede ser dominado, pero la ausencia de un entorno de programación familiar y herramientas de depuración determinan la elección.
De vuelta al esquema. Para resolver el problema con el reinicio del controlador, necesitamos energía para alimentar el controlador mientras se presiona el botón SET +. Para estimar la cantidad de esta energía, es necesario medir el consumo actual (o ver la documentación):



Casi 500 μA en su mejor momento. Esto es mucho, pero para que quede claro, haré un cálculo. Para almacenar energía, necesitamos un diodo (VD1) y un condensador (C1):



La caída en VD1 es 0.2 V, respectivamente, cuando se sueltan los botones C1, se cargará a 4.33 - 0.2 = 4.13 V. Cuando presiona el botón SET +, el voltaje en Vin cae a 2.2 V, VD1 se cierra y MK accionado por descarga C1.



(Gracias a VT100 y DenisHW por corregir el error )
En esta expresión, la energía almacenada en el condensador a la izquierda (cuando se descarga de 4.13 a 3.1 V), la energía gastada a la derecha por el controlador durante un tiempo t = 0.2 s. Entonces la capacitancia del condensador:



Se admiten 100 microfaradios para esta tarea, pero intente sacrificar el controlador mientras se presiona el botón.

Para hacer esto, el STM8 tiene un modo de detención activa:



Al deshabilitar MVR y Flash, fue posible obtener una corriente de consumo de ~ 40 μA (esto es significativamente mayor que la corriente declarada, pero esta corriente es adecuada para esta tarea), y gracias a AWU (unidad de activación automática), puede configurar fácilmente la activación después de 256 ms después de ir a dormir. En este caso, para garantizar el funcionamiento del controlador, se necesita un condensador con una capacidad de solo 10 μF, pero dado que después de sujetar las patas, el MK tarda un tiempo en dormirse, la capacidad necesaria y suficiente fue de 47 μF.

Parece que todos los problemas se han resuelto, pero hay uno más PERO. La corriente cuando se presiona el botón SET + 18.4 mA es menor que la corriente límite para la salida, pero el voltaje cero lógico estará en la región de 0.7 V. Esto conducirá a una caída de corriente a través de la resistencia y requerirá un nuevo cálculo de la resistencia o el uso de un transistor externo de acuerdo con el esquema Con desagüe abierto. Elegí la segunda opción como más predecible en el comportamiento. El esquema final tomó la forma:



De esta forma, se ha ganado con éxito y está en funcionamiento hasta el día de hoy.

En lugar de una conclusión

En este artículo quiero llamar la atención sobre el problema de cómo se castiga a un desarrollador por un enfoque excesivamente superficial o frívolo para desarrollar un dispositivo simple (a primera vista). Por otro lado, quería mostrar cómo la elección no óptima de la base del elemento principal (en este caso, MK) complica el proceso de desarrollo y el producto en sí mismo en vista de dos razones principales:

  1. La necesidad de ajustar la elección de soluciones técnicas a las habilidades del programador.
  2. Incapacidad para comprender la gama completa de componentes posibles adecuados para la tarea, para seleccionar "la mayoría" de ellos. Estos factores, con mayor frecuencia, explican el hecho de que muchos dispositivos (domésticos, comerciales, especiales) funcionan bien, pero no están hechos de la manera en que lo haría.

Source: https://habr.com/ru/post/es432574/


All Articles