Grüße an den Leser! Heute werde ich Ihnen eine merkwürdige Geschichte erzählen, die mich über die Probleme nachdenken ließ, die bei der falschen (nicht optimalen) Auswahl von Komponenten für die Implementierung eines elektronischen Produkts auftreten. Und auch über die scheinbare Einfachheit am Beispiel eines Eintagesgeräts.
Lassen Sie uns zustimmen, dass die Geschichte fiktiv ist, alle Zufälle zufällig sind ... oder nicht zufällig.
Einmal wandte sich Seryozha, der Programmierer, an mich mit der Bitte, ein Gerät in seinem Auto herzustellen, das das sequentielle Drücken von 2 virtuellen Tasten beim Drücken eines physischen Autos in der Geschwindigkeitsregelung (Ford Focus 2) nachahmt. Das Schema der Standardsteuereinheit ist wie folgt:

Auf der Steuerseite ist dies ein klassischer Druckknopf-Eingang mit einem ADC. Wenn Sie also die Hardwaretaste drücken, drücken Sie nacheinander die Tasten ON und SET + für eine Zeit von ~ 0,2 s. Um die Integration des Geräts zu vereinfachen, wurde beschlossen, es über den oberen Widerstand des Teilers mit Strom zu versorgen. Die Spannung an den Anschlussklemmen beträgt 4,6 V ohne angeschlossenen Tastenkreis. Da das Gerät abends hergestellt werden sollte, erstellte ich ein Diagramm ohne vorläufige Berechnungen von dem, was auf dem Montagetisch lag. Die Lösung "in der Stirn":

Serezha schrieb die Firmware und das Gerät funktionierte perfekt für Autos. In dem Moment, als sie das Board in das Gehäuse des Lenksäulenschalters packen wollten, rief jemand von der Rückseite des Büros: „Ist es so kompliziert? Die Hälfte der Details kann weggeworfen werden, und tatsächlich ist STM8 genau das Richtige für eine solche Aufgabe. “ Und es begann ... Der Autor der Idee meldete sich freiwillig, um das Layout "aus 3 Teilen" zu löten (anscheinend in Erwartung eines leichten Sieges). Ich (geleitet von meinem eigenen Artikel über
berufliche Eifersucht ) beschloss, den Flug des jungen Spezialisten nicht zu stören, sondern mich erst zu dem Zeitpunkt zu verbinden, als allen klar wurde, dass kein Wunder geschehen war.
Das von meinem Kollegen vorgeschlagene Schema war wirklich einfacher, funktionierte aber nur am Tisch:

Fehler waren bereits auf den ersten Blick sichtbar, ich entschied mich jedoch dafür, die Schaltung speziell für den STM8S001J3 MK zu verwenden.
Um zu verstehen, wie die Schaltung wiederhergestellt wird, werden wir mehrere Messungen durchführen. Der Widerstand des oberen Widerstands im ADC-Teiler beträgt ~ 130 Ohm und die Spannung ohne Last beträgt 4,6 V.
Dann hat das Schaltflächenknotendiagramm die Form:

- Wenn die Tasten losgelassen werden, beträgt der Strom in der Schaltung 2 mA, die Spannung am ADC-Eingang beträgt 4,33 V;
- Wenn die EIN-Taste 3,7 mA gedrückt wird, beträgt die Spannung am Eingang des ADC 4,11 V;
- Bei gedrückter SET-Taste + 18,4 mA beträgt die Spannung am ADC-Eingang 2,2 V.
Gleichzeitig beträgt der Betriebsspannungsbereich des STM8S001J3 MK 2,95-5,5 V. Es stellt sich heraus, dass ein Versuch, die SET + -Taste zu drücken, zu einem Spannungsabfall unter das Minimum führt und der MK zurückgesetzt wird.
An dieser Stelle schlage ich vor, abzulenken und zu diskutieren, was das ideale MK für diese Aufgabe ist und warum sie es nicht gewählt haben. Verwenden Sie für solche Handwerke normalerweise das, womit der Entwickler arbeiten kann und was zur Hand ist. Zum Beispiel verfügt der Mikrochip über PIC10F200- oder ATtiny10-Controller im SOT23-6-Gehäuse mit einem Spannungsbereich von 2 (1,8) - 5,5 V. Diese Mikroschaltungen benötigen keinen Spannungsregler (wie STM32L031), starten jedoch nicht neu, wenn die SET + -Taste gedrückt wird (wie STM8S001J3). Im Kabelbaum befinden sich nur 2 Widerstände und ein Kondensator. Schönheit, aber die STMicro-Reihe von Controllern mit diesem Leistungsbereich ist es nicht. Ein aufmerksamer Leser wird zu Recht feststellen, dass im Rahmen einer solchen Aufgabe fast jeder Controller beherrscht werden kann, aber das Fehlen einer vertrauten Programmierumgebung und von Debugging-Tools die Wahl bestimmt.
Zurück zum Schema. Um das Problem mit dem Zurücksetzen des Controllers zu lösen, benötigen wir Energie, um den Controller mit Strom zu versorgen, während die SET + -Taste gedrückt wird. Um die Menge dieser Energie abzuschätzen, muss der Stromverbrauch gemessen werden (oder siehe Dokumentation):

Fast 500 μA von seiner besten Seite. Das ist viel, aber um es klar zu machen, werde ich eine Berechnung geben. Um Energie zu speichern, benötigen wir eine Diode (VD1) und einen Kondensator (C1):

Der Abfall an VD1 beträgt 0,2 V, wenn die C1-Tasten losgelassen werden, wird er auf 4,33 - 0,2 = 4,13 V aufgeladen. Wenn Sie die SET + -Taste drücken, fällt die Spannung an Vin auf 2,2 V ab, VD1 schließt und MK angetrieben durch Entladung C1.

(Danke an
VT100 und
DenisHW für die Behebung des Fehlers )
In diesem Ausdruck ist die im Kondensator links gespeicherte Energie (wenn sie von 4,13 auf 3,1 V entladen wird) die Energie, die der Regler rechts für eine Zeit t = 0,2 s verbraucht. Dann ist die Kapazität des Kondensators:

100 Mikrofarad für diese Aufgabe sind tolerierbar, aber versuchen Sie, den Controller einzuschläfern, während die Taste gedrückt wird.
Dazu verfügt der STM8 über einen aktiven Halt-Modus:

Durch Deaktivieren von MVR und Flash konnte ein Verbrauchsstrom von ~ 40 μA erzielt werden (dieser ist deutlich höher als der deklarierte Strom, dieser Strom ist jedoch für diese Aufgabe geeignet). Dank AWU (Auto Wake Up Unit) können Sie das Aufwecken nach 256 ms nach dem Einschlafen problemlos einstellen. In diesem Fall wird zur Sicherstellung des Betriebs des Reglers ein Kondensator mit einer Kapazität von nur 10 μF benötigt. Da es jedoch nach dem Festklemmen der Beine einige Zeit dauert, bis der MK einschläft, betrug die erforderliche und ausreichende Kapazität 47 μF.
Es scheint, dass alle Probleme gelöst wurden, aber es gibt noch einen, ABER. Der Strom, wenn die SET-Taste + 18,4 mA gedrückt wird, ist kleiner als der Grenzstrom für den Ausgang, aber die logische Nullspannung liegt im Bereich von 0,7 V. Dies führt zu einem Stromabfall durch den Widerstand und erfordert entweder eine Neuberechnung des Widerstands oder die Verwendung eines externen Transistors gemäß dem Schema mit offenem Abfluss. Ich habe die zweite Option als vorhersehbarer im Verhalten gewählt. Das endgültige Schema hatte die Form:

In dieser Form hat es erfolgreich verdient und ist bis heute in Betrieb.
Anstelle einer SchlussfolgerungIn diesem Artikel möchte ich auf das Problem aufmerksam machen, wie ein Entwickler für einen übermäßig oberflächlichen oder leichtfertigen Ansatz bei der Entwicklung eines einfachen (auf den ersten Blick) Geräts bestraft wird. Andererseits wollte ich zeigen, wie die nicht optimale Wahl der Hauptelementbasis (in diesem Fall MK) den Entwicklungsprozess und das Produkt selbst aus zwei Hauptgründen kompliziert:
- Die Notwendigkeit, die Auswahl der technischen Lösungen an die Fähigkeiten des Programmierers anzupassen.
- Unfähigkeit, die gesamte Palette der für die Aufgabe geeigneten Komponenten zu erfassen und "die meisten" auszuwählen. Diese Faktoren erklären meistens die Tatsache, dass viele Geräte (Haushalt, Gewerbe, Spezial) gut funktionieren, aber nicht so hergestellt werden, wie Sie es tun würden.