Elektronik_Header_3

 

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


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.

 


Besucher seit
25.11.2000

>