Elektronik_Header_3LŘftersteuerung mit ESP-01

 

FS20 S3 mit AtTiny85

Die FS20 S3 Sender unseres Garagentorantriebs geben nach und nach den Geist auf und der Markt ist inzwischen leer gefegt, man hat schon ausgesprochenes Gl├╝ck, sollte man noch den einen oder anderen gebrauchten FS20 S3 ergattern.

Ich habe mich also entschlossen, nach einer Ersatzl├Âsung f├╝r die Sender zu suchen.

Nach programmtechnischen Vorarbeiten in Form von Code f├╝r einen Arduino Nano hier jetzt also das Programm f├╝r den AtTiny85, inklusive ausgefuchster Ma├čnahmen zur Energieeinsparung... Moment, da war doch noch etwas...

Das Programm f├╝r sich genommen bringt noch keinen Lustgewinn, der im FS20 S3 original verbaute Samsung OTP Prozessor ist nicht programmierbar (bzw. nur einmal - OTP - One Time Programmable - und das hat er schon hinter sich).

Vorher muss die Hardware entsprechend umgebaut werden.

Ich habe mich dazu entschlossen, auf der vorhandenen Platine eines defekten FS20 S3 Senders den Prozessor zu entfernen, denn wie bereits beschrieben, hat dieses Vorgehen den einen oder anderen Vorteil gegen├╝ber einer Neuentflechtung einer passenden Platine. Rechts oben in der Ecke sitzt z.B. ein Reset-Controller, der den Prozessor zur├╝cksetzt, sollte die Versorgungsspannung unter 2,5 V absinken. Die im AtTiny f├╝r den gleichen Zweck vorgesehene Brownout Detection f├╝hrt im aktivierten Zustand zu erh├Âhtem Stromverbrauch im Sleep Mode und kann durch Verwendung des vorhandenen Reset Controllers au├čer Betrieb bleiben.

Der Prozessor sitzt unter einem harten Plastikklecks dem ich mit einem Skalpell zuleibe ger├╝ckt bin.

FS20 S3 Platine ohne CPU

Das Ergebnis kann nicht begeistern, erf├╝llt aber seinen Zweck, n├Ąmlich den Platz f├╝r den AtTiny zur Verf├╝gung zu stellen.

FS20 S3 mit AtTiny85

Die Beinchen des AtTiny habe ich mit einer Flachzange vorsichtig soweit nach oben gebogen, dass sie parallel zur Geh├Ąuseoberseite ausgerichtet sind.

Die Verdrahtung erfolgte mit Kupferlackdraht, die passenden Anschl├╝sse habe ich mir vorher auf dem Layout herausgesucht.

Zuordnung der Pins                   (Cllick f├╝r gr├Â├čere Darstellung)

Das Ergebnis der erfolgreichen Operation stellt sich so dar:

AtTiny85 verdrahtet

AtTiny85 verdrahtet

AtTiny85 verdrahtet

AtTiny85 verdrahtet

Jetzt k├Ânnte das Programm auf den AtTiny geflasht werden, w├╝rde da nicht noch der passende Programmieranschluss fehlen.

An die auf der Unterseite der Platine vorhandenen Programmier-Pads kommt man nicht mehr heran, sobald das HF-Teil wieder an Ort und Stelle sitzt. Aber der Quarz ist jetzt unn├╝tz und kann entfernt werden.

Aus den Tagen meiner Besch├Ąftigung mit Micro Multicoptern bzw. dem dabei benutzten Micro-Empf├Ąnger habe ich noch Stecker und Buchsen im 1 mm Raster in der Schublade, die hier ideal passen. Die erforderlichen 6 Anschl├╝sse f├╝r den ICSP-Anschluss finden ihren Platz gegen├╝ber dem Minus-Anschluss der Batterie. Nat├╝rlich habe ich ├╝berpr├╝ft, dass der Stecker an dieser Stelle auch ins Geh├Ąuse passt. Lediglich beim Einsetzen des Knackfrosch-Blechs f├╝r Taste TA1 muss darauf geachtet werden, dass die eine Lasche flach unterhalb der Platine abgeknickt wird, sonst ber├╝hrt das Blech einen Pin des Programmiersteckers.

Wo der Quarz sa├č, werden drei L├Âcher gebohrt, da die Anschl├╝sse der Programmierschnittstelle auf der Oberseite der Platine zu finden sind und die Unterseite ohnehin mehr oder weniger vollfl├Ąchig vom HF-Modul abgedeckt sein wird.

Programmierstecker

Nach erfolgreicher Verdrahtung auch dieses Teils des Umbaus mit Kupferlackdraht...

Programmierstecker verdrahtet

Programmierstecker verdrahtet

... und Herstellung eines passenden Adapters ...

Adapter Standard-ISP-Stecker auf 1,27 mm Inline

Programmer angeschlossen

... kann endlich mit der Programmierung begonnen werden.

Die Belegung des Programmiersteckers soll nat├╝rlich nicht vorenthalten werden:

Programmierstecker - Pinbelegung

Das andere Ende des Adapters hat die normale ISP-Belegung:

Programmierstecker - Signale

Der hier beschriebene Programmieranschluss wird inzwischen in mehreren Projekten - 3DTouch Sensor mit alternativer Firmware, elektronischer W├╝rfel - eingesetzt.


Das Grundger├╝st an Funktionalit├Ąt habe ich ja bereits f├╝r den Arduino Nano implementiert, jetzt kann ich mich voll auf die Stromsparm├Âglichkeiten des AtTiny85 konzentrieren.

Die Liste an Teilfunktionalit├Ąten die zur Reduzierung des Stromverbrauchs im Sleep-Zustand beitragen k├Ânnen:

  • Brownout detection (am besten gleich mit der passenden Fuse abschalten)
  • Analog comparator
  • AD Wandler
  • Interne Spannungsreferenz
  • Watchdog
  • Ausg├Ąnge auf Input schalten w├Ąhrend Sleep

Nicht alle der aufgez├Ąhlten Optionen haben - in meinem Fall - Einfluss auf den Strom im Sleep-Zustand genommen, die meisten davon sind bereits im Ursprungszustand ausgeschaltet. Wenn man sie nicht vorher explizit einschaltet, muss man sich eigentlich nicht darum k├╝mmern.

M├Âglicherweise geschuldet der Beschaltung der Ausg├Ąnge mit LED und HF-Teil, hat zum Beispiel die Umschaltung der Ausg├Ąnge auf Eing├Ąnge keinen Einspareffekt ergeben. Wurden die internen PullUps eingeschaltet - offene Eing├Ąnge sollen auf ein Potential ungleich Vcc/2 gebracht werden - ist der Stromverbrauch sogar angestiegen. Ok, das ist erkl├Ąrbar, die LED sitzt zwischen Prozessorausgang und Masse, der PullUp versorgt also die LED mit Spannung in der richtigen Polarit├Ąt.

Unbedingte Aufmerksamkeit erfordert aber der Analog-Teil. Im Datenblatt des AtTiny85 ist beschrieben, wie dieser Teil stillzulegen ist. Hierbei muss auf die Reihenfolge der Befehle geachtet werden:

 // Achtung Falle!
 // Um die Analogen Komponenten des Micro ausschalten zu koennen, muss das Power Reduction Bit
 // des ADC AUSgeschaltet sein
 // Erst nach dem Abschalten von ADC (und Komparator) darf das Power Reduction Bit gesetzt werden

 // Analog comparator module
 bitSet(ACSR, ACD);   // power off analog comparator
 bitClear(ADCSRA, ADEN);  // disable AD converter
 bitSet(PRR, PRADC);   // power reduction AD converter (hier Power Reduction einschalten)

 sleep_mode();     //gehe in sleep und warte auf einen Interrupt...
 

Hier das funktionierende Programm f├╝r den umgebauten FS20 S3 Sender mit AtTiny85.

    Hinweis
    Der AtTiny l├Ąuft in dieser Applikation mit 16 MHz. Obwohl der sichere Betrieb mit dieser Taktfrequenz bei nur 3 V Betriebsspannung nicht garantiert ist, l├Ąuft das Programm bisher fehlerfrei. Ich werde das beobachten und ggf. aktualisieren.

Nach Umsetzung aller Stromsparm├Âglichkeiten des AtTiny85 ergibt sich eine Stromaufnahme von lediglich 0,4 .. 0,7 ┬ÁA im Sleep Mode. Gemessen an der Stromaufnahme von 4 ┬ÁA des original Samsung Prozessors ein sch├Âner Erfolg.

Das Programm sendet mit Taste1 den Code f├╝r EIN, mit Taste2 den Code f├╝r AUS.
Taste4, die dritte Taste am FS20 S3, ist zur Zeit funktionslos.

Den urspr├╝nglich ins Auge gefassten Ersatz der Knackfrosch-Kontakte durch echte SMD Taster habe ich ├╝brigens ├╝ber Bord geworfen, nachdem ich mich f├╝r die Verwendung der Originalplatine entschieden hatte. F├╝r die SMD Taster h├Ątte ich intensive Umbauten an den vorhandenen Leiterbahnen und Kupferfl├Ąchen vornehmen m├╝ssen, was ich mir ersparen wollte. Erfahrungsgem├Ą├č rutscht man mit dem Skalpell gerne mal ├╝ber das Ziel hinaus und schon sind drei falsche Leitungen durchtrennt...
Somit werkeln auch in der AtTiny-Version des FS20 S3 die Knackfr├Âsche.

Viel Spa├č und Erfolg beim Nachbau!


Aktualisierung (wichtig!)
Taste4 ist in der vorliegenden Version des Programms nicht ausprogrammiert, kann aber den AtTiny aus dem Sleep aufwecken. Leider geht er dann nicht mehr in den Sleep Mode und verbr├Ąt somit bis zum n├Ąchsten Tastendruck auf eine der Tasten mit hinterlegter Funktionalit├Ąt einen Strom von ca. 6 mA.

Als Abhilfe stehen drei (vier) Optionen zur Verf├╝gung:

  • Die Generierung eines IRQ bei Druck auf Taste4 unterbinden
  • Bei Druck auf Taste4 den EIN-Code senden
  • Bei Druck auf Taste4 nichts tun und sofort wieder in Sleep Mode gehen
  • (Funktion der dritten Taste wie beim Original implementieren, also auf die zweite Kommandoebene umschalten. Das ist richtig kompliziert und ├╝bersteigt den Rahmen f├╝r den vorgesehenen Zweck um Gr├Â├čenordnungen)

Ich habe mich f├╝r Option 1 entschieden und die Ausl├Âsung eines Interrupt unterbunden. Das bewirkt, dass nur noch der Querstrom durch den PullUp flie├čt, solange die Taste gedr├╝ckt ist, immerhin 87 ┬ÁA, aber das ist technisch unvermeidbar.

Bitte unbedingt diese Version V1.6 des Programms verwenden.

 


Besucherzaehler

Besucher seit
25.11.2000

>