Magic Button für LED auf ATtiny4

SESAM


Ich hatte vor langer Zeit einmal einen berührungsempfindlichen Wunderschalter SESAM . Ich mochte ihn wirklich. Aber die Zeiten ändern sich, es passt nicht mehr in den Innenraum, und dann wurde es überhaupt nicht für alle Arten von modischen Energiesparlampen entwickelt. Ich mochte das Prinzip des Managements darin. Durch kurzes Berühren des Sensors wurde das Licht ein- und ausgeschaltet, und durch langes Berühren wurde die Helligkeit eingestellt. Wen kümmert es - der Leistungsschalter war K145AP2 , ein Analogon von Siemens S576B (K145AP2 wird noch verkauft).


Unter dem Schnitt meine Version der Emulation des Betriebs dieses Chips.


Vor nicht allzu langer Zeit habe ich mir ein LED-Lichtband in einem Aluminiumprofil mit einem Diffusor über dem Tisch gebaut, und es stellte sich die Frage nach dem Schalter. Das Vorbereiten ist irgendwie umständlich. Damit es am Draht hängt - es ist nicht schön, einen gewöhnlichen Schalter zu betätigen -, verdirbt es die Aussicht und es gibt wirklich keinen Ort, an den man gehen kann.


Ich beschloss, am Ende der 16-mm-Spanplatte einen Schalter für einen und einen Dimmer zu bauen. Berühren Sie es, bedecken Sie es mit einem Aufkleber, mit dem die Möbelhersteller die Maske verschrauben.


Eisen


Begonnen mit einem Sensor. Ich habe das Prinzip der Ladungsübertragung auf den ATtiny13A ausprobiert . Die Option funktioniert, aber ich war zu faul, um mich mit Auto-Tuning-Parametern usw. zu beschäftigen. Er hat auch den fertigen nicht genommen.


Dann habe ich beschlossen, den Sensor in der QTouch- Bibliothek zu implementieren. Als ATtiny10- Sensor. Es gibt ein vorgefertigtes Dienstprogramm, das ATtiny10 in einen Touch-Button mit allen Extras verwandelt. Aber am Ausgang ist es schwierig, den Code der Binärdatei dort hinzuzufügen. Ich überlegte, was ich tun sollte, surfte im Internet und stieß dann auf eine Erwähnung des TTP223 - des Controllers mit einem Tastendruck. Diese Option passte perfekt zu mir.


Als MK fiel die Wahl auf ATtiny4 . So klein wie TTP223 , ein 16-Bit-Timer. Ja, und lange wollte ich etwas Nützliches an diesen Tinki machen.


Als Schlüssel - P3055LD vom alten Motherboard.


Leiterplatte


Bei der Entwicklung einer Leiterplatte ging ich davon aus, dass die Löcher am Ende der Spanplatte so wenig wie möglich benötigen, und entschied, dass ein Durchmesser von 7 mm völlig ausreichen würde. Das Board stellte sich als 7x28mm heraus, zwei Schichten.


Später, als die Platine gelötet wurde, wurde klar, dass die Platine nicht in das 7-mm-Loch passen würde, mindestens 9 mm - die Höhe der Elemente wurde nicht berücksichtigt. Die Idee mit einem Aufkleber hörte auch irgendwie auf zu mögen. Und dann fiel mir ein Möbelstummel auf! Entworfen für 10mm Loch und Innendurchmesser genau 7mm! Alles stimmte überein!


Das Sensor-Patch selbst befindet sich auf einem separaten Schal, der am Hauptende angelötet ist. Auf den Bildern sehen Sie.


Bilder

cooles Bild
cooles Bild
cooles Bild
cooles Bild


Das Programm


Das Steuerprogramm ist in Assembler geschrieben. Alle 32 ms (Watchdog Timer) wird der Sensor abgefragt. Abhängig vom aktuellen Status und der Dauer des Drückens werden bestimmte Aktionen ausgeführt. Die Arbeitslogik unterscheidet sich geringfügig vom Prototyp K145AP2


Wenn das Licht ausgeschaltet ist (Zustand nach dem Einschalten):


  • Durch kurzes Drücken wird die Beleuchtung auf derselben Stufe eingeschaltet, auf der sie ausgeschaltet wurde. Beim ersten Einschalten bei maximaler Helligkeit
  • Durch langes Drücken wird das Licht auf maximaler Stufe eingeschaltet.

Wenn das Licht an ist:


  • Ein kurzer Druck macht das Licht aus
  • Ein langes Drücken ändert die Helligkeit. Die Richtung der Helligkeitsänderung ändert sich durch wiederholtes langes Drücken

Zu kurze Druckvorgänge (Interferenzen) durch das Programm werden ignoriert. Die Helligkeit wird durch den PWM-Koeffizienten (16 Bit) eingestellt. PWM-Frequenz ca. 122 Hz (8.000.000 Hz / 2 16 ≈ 122 Hz)


Um die psychophysiologische Wahrnehmung der Helligkeit der Beleuchtung von der tatsächlichen Helligkeit zu kompensieren, tritt eine Änderung der letzteren entlang eines Teils der kubischen Parabel auf . Normalerweise werden hierfür Tabellen verwendet, aber in meiner Version wird der Koeffizient berechnet. Der Koeffizient variiert mit der PWM-Frequenz, dh wenn sich die Helligkeit ändert, wird jeder Impuls mit seiner eigenen Dauer erhalten. Der minimale PWM-Wert ist softwarebegrenzt.


Meistens schläft MK und verbraucht zusammen mit TTP223 etwa 16 Mikroampere. Das heißt, die Schaltung ist für Geräte mit autonomer Leistung gut geeignet.


ATtiny4 hat sechs Pins. Zwei für die Stromversorgung, eine Standardeinstellung für das Zurücksetzen. Ich habe bereits zwei beteiligt. Nur noch einer übrig. Ich dachte, wie man es benutzt. Und dann erinnerte ich mich an den Laptop eines neuen Freundes mit Force Touch-Trackpad. Als Experiment habe ich beschlossen, etwas Ähnliches zu tun. Ich brauche nicht viel Zuverlässigkeit der Antwort und es gibt viele Vibromotoren von alten Telefonen. Infolgedessen habe ich eine solche Funktion in das Programm implementiert, dass an einem freien Ausgang ein kurzer Impuls auftritt, wenn die Einstellgrenze erreicht ist. In K145AP2 ändert sich die Einstellrichtung , wenn die Einstellgrenze erreicht ist. Daher waren einige Fähigkeiten erforderlich, um die Hand maximal oder minimal vom Sensor zu entfernen. In meiner Implementierung stoppt die Anpassung, wenn die Grenze erreicht ist. Die gesamte Anpassungszeit von einer Grenze zur anderen beträgt ca. 4 Sekunden.


Code auf GitHub verfügbar


TPI über Arduino


Separat nehme ich die Programmierung von MK zur Kenntnis. Mein JTAGICE3 unterstützt keine TPI-Programmierschnittstelle. Aber zum Glück haben gute Leute eine Skizze über Arduin geschrieben , um dieses kleine Ding zu programmieren. Nicht sofort, aber alles hat für mich geklappt, die Firmware war überflutet und alles hat funktioniert. Zusätzlich zu Arduinen werden 4 Widerstände benötigt. Der gesamte Prozess wird in einer Skizze gemalt.


Zusammenfassung


Der magische Knopf ist installiert und funktioniert wie vorgesehen. Der Stromverbrauch und die Abmessungen ermöglichen die Einbettung in Geräte mit autonomer Stromversorgung.


Ich habe nicht den erwarteten Effekt von der Vibration bekommen. Hier sind offenbar Experimente mit dem Installationsort erforderlich.


Im Prototyp K145AP2 und im Siemens S576B- Analogon gibt es eine Schlussfolgerung "Schlaf". Dies ist ein solcher Modus, in dem die Helligkeit sehr langsam abfällt, bis sie vollständig ausgeschaltet ist. Wie vom Hersteller geplant, wird hierfür ein zusätzlicher Sensor in der Nähe des Kopfes des Bettes installiert. 16 Bit des PWM-Timers aktivieren diesen Modus.


Dies ist aus Ideen für die Zukunft.


Knopf an Ort und Stelle

cooles Bild


Wie alles.


Danke an alle!


UPD: Wie versprochen habe ich die PWM-Frequenz auf fast 1 kHz erhöht. Github- Code

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


All Articles