Conception sophistiquée d'appareils simples

Salutations au lecteur! Aujourd'hui, je vais vous raconter une histoire curieuse qui m'a fait réfléchir aux problèmes qui se posent lorsque le mauvais choix (non optimal) de composants pour la mise en œuvre de tout produit électronique. Et aussi sur la simplicité apparente en utilisant l'exemple d'un appareil «un jour».
Convenons que l'histoire est fictive, toutes les coïncidences sont aléatoires ... ou non aléatoires.
Une fois que Seryozha le programmeur s'est tourné vers moi avec une demande de fabrication d'un appareil dans sa voiture qui émule la pression séquentielle de 2 boutons virtuels lors de la pression d'une voiture physique dans le circuit de commande du régulateur de vitesse (Ford Focus 2). Le schéma de l'unité de contrôle standard est le suivant:



Côté commande, il s'agit d'une entrée à bouton-poussoir classique utilisant un ADC. et donc la tâche de l'appareil, lorsque vous appuyez sur le bouton matériel, appuyez successivement sur le bouton ON et SET + pendant un temps de ~ 0,2 s. Pour faciliter l'intégration de l'appareil, il a été décidé de l'alimenter à partir de la résistance supérieure du diviseur. La tension aux bornes de connexion est de 4,6 V sans circuit de bouton connecté. Comme l'appareil devait être fabriqué le soir, j'ai fait un diagramme sans calculs préliminaires à partir de ce qui était sur la table de montage. La solution "au front":



Serezha a écrit le firmware et l'appareil fonctionnait parfaitement pour les voitures. Au moment où ils voulaient ranger la carte dans le boîtier du commutateur de colonne de direction, quelqu'un de l'arrière du bureau a crié: «Est-ce si compliqué? La moitié des détails peuvent être jetés, et en effet STM8 est juste la chose pour une telle tâche. " Et ça a commencé ... L'auteur de l'idée s'est porté volontaire pour souder le tracé "en 3 parties" (anticipant apparemment une victoire facile). J'ai (guidé par mon propre article sur la jalousie professionnelle ) décidé de ne pas interférer avec le vol du jeune spécialiste, mais seulement connecté au stade où tout le monde s'est rendu compte qu'un miracle ne s'était pas produit.

Le schéma proposé par mon collègue était vraiment plus simple, mais ne fonctionnait que sur la table:



Des erreurs étaient visibles même à première vue, cependant, j'ai décidé de faire fonctionner le circuit spécifiquement sur le STM8S001J3 MK.

Afin de comprendre comment refaire le circuit, nous allons effectuer plusieurs mesures. La résistance de la résistance supérieure du diviseur ADC est de ~ 130 Ohms et la tension sans charge est de 4,6 V.

Ensuite, le diagramme de nœud de bouton a la forme:



  • lorsque les boutons sont relâchés, le courant dans le circuit est de 2 mA, la tension à l'entrée ADC est de 4,33 V;
  • lorsque le bouton ON est enfoncé, 3,7 mA, la tension à l'entrée de l'ADC est de 4,11 V;
  • avec le bouton SET enfoncé + 18,4 mA, la tension à l'entrée ADC est de 2,2 V.

Dans le même temps, la plage de tension de fonctionnement du STM8S001J3 MK est de 2,95-5,5 V. Il s'avère qu'une tentative d'appuyer sur le bouton SET + entraîne une chute de tension en dessous du minimum et le MK est réinitialisé.

À ce stade, je propose de distraire et de discuter quel est le MK idéal pour cette tâche et pourquoi ils ne l'ont pas choisi. Habituellement, pour de tels métiers, utilisez ce que le développeur sait comment travailler et ce qui est à portée de main. Par exemple, la puce possède des contrôleurs PIC10F200 ou ATtiny10 dans le boîtier SOT23-6 avec une plage de tension de 2 (1,8) à 5,5 V. Ces microcircuits ne nécessitent pas de régulateur de tension (comme STM32L031), mais ils ne redémarreront pas lorsque vous appuyez sur le bouton SET +. (comme STM8S001J3). Dans le faisceau, il n'y aura que 2 résistances et un condensateur. La beauté, mais pas la gamme de contrôleurs STMicro avec cette gamme de puissance. Un lecteur attentif notera à juste titre que dans le cadre d'une telle tâche, presque tous les contrôleurs peuvent être maîtrisés, mais l'absence d'un environnement de programmation familier et d'outils de débogage déterminent le choix.
Revenons au schéma. Pour résoudre le problème de réinitialisation du contrôleur, nous avons besoin d'énergie pour alimenter le contrôleur pendant que le bouton SET + est enfoncé. Pour estimer la quantité de cette énergie, il est nécessaire de mesurer la consommation actuelle (ou voir la documentation):



Près de 500 μA à son meilleur. C'est beaucoup, mais pour que ce soit clair, je vais faire un calcul. Pour stocker l'énergie, nous avons besoin d'une diode (VD1) et d'un condensateur (C1):



La baisse sur VD1 est de 0,2 V, respectivement, lorsque les boutons C1 sont relâchés, elle sera chargée à 4,33 - 0,2 = 4,13 V. Lorsque vous appuyez sur le bouton SET +, la tension à Vin chute à 2,2 V, VD1 se ferme et MK alimenté par décharge C1.



(Merci à VT100 et DenisHW d'avoir corrigé l'erreur )
Dans cette expression, l'énergie stockée dans le condensateur à gauche (lorsqu'elle est déchargée de 4,13 à 3,1 V), l'énergie dépensée à droite par le contrôleur pendant un temps t = 0,2 s. Ensuite, la capacité du condensateur:



100 microfarads pour cette tâche sont tolérables, mais essayez d'euthanasier le contrôleur tout en appuyant sur le bouton.

Pour ce faire, le STM8 dispose d'un mode d'arrêt actif:



En désactivant MVR et Flash, il a été possible d'obtenir un courant de consommation de ~ 40 μA (ce qui est nettement supérieur au courant déclaré, mais ce courant convient à cette tâche), et grâce à l'AWU (unité de réveil automatique), vous pouvez facilement régler le réveil après 256 ms après s'être mis en veille. Dans ce cas, pour assurer le fonctionnement du contrôleur, un condensateur d'une capacité de seulement 10 μF est nécessaire, mais puisqu'après le serrage des jambes, il faut un certain temps avant que le MK ne s'endorme, la capacité nécessaire et suffisante était de 47 μF.

Il semble que tous les problèmes ont été résolus, mais il y en a encore un MAIS. Le courant lorsque le bouton SET est enfoncé + 18,4 mA est inférieur au courant limite pour la sortie, mais la tension zéro logique sera de l'ordre de 0,7 V. Cela entraînera une chute de courant à travers la résistance et nécessitera soit un recalcul de la résistance, soit l'utilisation d'un transistor externe selon le schéma. avec drain ouvert. J'ai choisi la deuxième option comme étant plus prévisible dans le comportement. Le schéma final a pris la forme:



Sous cette forme, il a gagné avec succès et fonctionne encore à ce jour.

Au lieu d'une conclusion

Dans cet article, je veux attirer l'attention sur le problème de la façon dont un développeur est puni pour une approche excessivement superficielle ou frivole du développement d'un dispositif simple (à première vue). D'un autre côté, je voulais montrer comment le choix non optimal de la base de l'élément principal (dans ce cas, MK) complique le processus de développement et le produit lui-même compte tenu de deux raisons principales:

  1. La nécessité d'adapter le choix des solutions techniques aux compétences du programmeur.
  2. Incapacité à saisir la gamme complète des composants possibles adaptés à la tâche, à sélectionner "le plus" d'entre eux. Ces facteurs expliquent le plus souvent le fait que de nombreux appareils (ménagers, commerciaux, spéciaux) fonctionnent bien, mais ne sont pas conçus comme vous le feriez.

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


All Articles