Tech-Ecke / Elektronik Inhalt / Mikrocontroller

 

     Mikrocontroller

   Grundlegendes

Mikrocontroller sind kleine Computersysteme, welche auf einem einzigen Halbleiterchip untergebracht sind. Sie beherbergen neben Prozessor und Speicher auch Ein- und Ausgänge. Schaltungen können durch den Einsatz von Mikrocontrollern erheblich verkleinert und somit letztlich auch vereinfacht werden. Insbesondere wenn es um Messen, Steuern und Regeln geht können Mikrocontroller ihre Stärken ausspielen. Nun ist es jedoch so, dass diese kleinen Dinger aber nur das tun was man ihnen auch vorher beigebracht hat, man muss sie also programmieren. Dies geschieht in aller Regel am PC, mit einer zum Controller kompatiblen Entwicklungssoftware. Anschließend muss das Programm dann mit einem Programmiergerät auf den Mikrocontroller übertragen werden.


   Die Tastenprogrammierbare Steuerung (TPS)

Aber es geht auch sehr viel einfacher... Vor einiger Zeit (ca. 2015) bin ich beim Bestellen von Elektronikteilen über das Lernpaket "Mikrocontroller programmieren" vom Franzis Verlag gestolpert (neue Bezeichnung: Maker Kit Controller Board). Das Paket wirbt damit, einen Mikrocontroller, ganz ohne PC, mit nur 3 Tastern programmieren zu können. Neugier und der günstige Preis hatten mich verleitet das Lernpaket kurzerhand mitzubestellen. Als ich dann, Wochen später endlich mal dazu kam die im Paket enthaltene Experimentierplatine zusammenzulöten, um damit etwas herumspielen war ich schnell von dem TPS-Gedanken begeistert. Die Möglichkeit einen Mikrocontroller so einfach zu programmieren ist wirklich eine faszinierende Sache.
Am Ende ist das Ganze aber nicht nur ein nette Spielerei, sondern es lassen sich damit auch durchaus platzsparende Steuer-/Reglungen realisieren. Hat man jedoch sein Projekt umgesetzt und den Controller vom Entwicklungsboard in die eigene Schaltung verpflanzt, so muss ein Ersatz fürs nächste Projekt her. Der im Lernpaket enthaltene und mit der TPS-Software bestückte Holtek-Controller HT46F47E ist z.B. hier zu bekommen: www.ak-modul-bus.de


   Portierung auf ATtiny44A

Auf www.elektronik-labor.de bin ich auf den Beitrag von Ralf Beesner gestoßen, der die TPS-Steuersoftware auf einen ATtiny44A portiert hat. Dieser Controller ist kleiner und wesentlich einfacher zu bekommen und letztlich auch noch günstiger. Um den ATtiny jedoch als TPS-Controller einsetzen zu können muss dieser zuvor noch die TPS-Steuersoftware erhalten. Zudem benötigt er auch ein eigenes Entwicklungsboard. Beides, also die Steuersoftware und ein Schaltplan des Entwicklungsboards findet man auf der Seite von Ralf Beesner. Die modifizierte Steuersoftware, welche in BASCOM-AVR geschrieben wurde kann mit der BASCOM IDE und einem geeigneten  Programmer auf den ATtiny geschrieben werden.

An dieser Stelle noch ein Hinweis: Dem ATtiny44A fehlen gegenüber dem Holtek zwei Pins, deswegen wurden hier zwei Eingänge doppelt belegt, Din.3 und ADC.0 sowie Din.4 und ADC.1 können wahlweise als Digital- oder als Analogeingänge abgefragt werden.

 

  • BASCOM-IDE

  • kompatibler Programmer

  • TPS-Steuersoftware - BASCOM Code

Ich verwende als Software die BASCOM IDE v1.11.9.0 zusammen mit dem Programmer myMultiProg V1.06 (LPT) auf einem Windows XP Rechner mit LPT-Port. Dieses Setup ist nur ein Beispiel und es kann prinzipielle jede Programmer/Software-Konfiguration verwendet werden welche mit dem ATtiny44 kompatibel ist.

Beschreiben des ATtiny44A mittels BASCOM und myMultiProg

Zum Beschreiben des ATtiny44 kann kann die BASCOM IDE-Entwicklungsumgebung in Verbindung mit einem kompatiblen Programmer verwendet werden. In meinem Fall ist das der myMultiProg V1.06 (MK1 - LPT - SP12 kompatibel). Nach dem Start von BASCOM stellt man zunächst den Programmer über "Options/Programmer" ein. Für meinen Programmer wähle ich hier oben "Universal MCS Interface" und weiter unten "WinARV and SP12" aus. Dann wechselt man zum Tab "Compiler" und wählt unter "Chip" die "attiny44.dat" für den ATtiny44 aus und bestätigt mit [OK].

    

Nun kann man über "File/Open" die "TPS-t44-1.bas" (Download) laden. Jetzt clickt man auf "Compile program" oder drückt [F7] und dann auf "Program chip" oder [F4].
In meinem Fall bekam ich die Fehlermeldung "Line: 59 - Unknown CONFIG parameter [AVCC]". Es geht hier um Referenzspannung des Controllers. Es können folgende Parameterwerte gesetzt werden: Aref, Avcc, Internal oder Off. Bei allen Möglichkeiten kommt es zu einem Fehler, darum habe ich kurzer Hand Reference = Avcc" über ein Hochkomme auskommentiert und dann läuft die Kompilierung durch. Wahrscheinlich hat dies Auswirkung auf die Analogen Eingänge, der Rest arbeitet jedoch einwandfrei.
Um letztlich den den Schreibvorgang zu starten klickt man auf "Auto program chip".

Nachtrag 21.12.2021: In der Zwischenzeit ist mein damaliger XP-32Bit-Rechner zu einem Win10-64Bit-Rechner mutiert und BASCOM (1.11.9.0) verweigert hier den Dienst, trotz Kompatibilitätseinstellung auf WinXP SP3, was unter Win7-32Bit noch prima funktioniert hatte. Aber da ich noch genügen alte Hartware in Form von betagten WinXp-32Bit-Notebooks habe bin ich darauf ausgewichen. Aber auch hier hatte ich Probleme. BASCOM startete zwar ordnungsgemäß, verweigerte aber letztlich den Zugriff auf den Controller mit der Meldung: "Could not identify chip with ID:000000 oder ID:FFFFFF". Diese Meldung deutet entweder auf eine falsche Hardwarekonfiguration hin oder der LPT-Port liefert nicht genügend Spannung und der Programmer muss zusätzlich mit einer externen 9V-Spannung versorgt werden. Aber auch das brachte keinen Erfolg. Da ich ja den Code nicht ändern musste habe ich mich kurzer Hand entschlossen auf die Programmersoftware AVRDude 5.3.1 auszuweichen und siehe da, es hat auf anhieb geklappt. Auch ohne Externe Spannungsversorgung wurde der ATtiny44 korrekt beschrieben. Und auf wundersame Weise läuft ab diesen Zeitpunkt auch BASCOM einwandfrei. Da ich ja an Zufälle glaube habe ich das ganze Spiel an drei weiteren Rechner vollzogen und bei allen lief BASCOM wunderbar, nachdem ich einmal mit AVRDude 5.3.1 einen Chip erfolgreich beschrieben hatte. Selbst auf einer virtuellen Win73-Bit-VMware-Maschine, mit weitergeleiteten, physikalischen LPT und Win10-64Bit als Host-System. Wieso, weshalb, warum? Scheinbar bewirkt der von AVRDude benötigte Treiber "giveio.sys" hier etwas, jedoch benötigt BASCOM diesen eigentlich nicht und läuft auch noch wenn der Treiber deinstalliert wurde. Egal, Hauptsache es läuft. Ich stelle hier mal ein AVRDude Komplettpaket zur Verfügung falls jemand das gleiche Problem ereilen sollte. Einfach das Zip-Archiv entpacken, zuerst "Inst-LPT.bat" und dann "StartMich.bat" und das war es dann schon. Voraussetzung ist jedoch, dass der Programmer ein myMultiProg v1.06 ist und am LPT1 hängt, ansonsten muss die "StartMich.bat" entsprechend abgeändert werden. Die TPS-Steuersoftware liegt übrigens im Paket schon mit dabei, AVRDude verlangt hier eine hex-Datei. 


   TPS Entwicklungsboard für ATtiny44A-TPS

Die Schaltung für das nun benötigte ATtiny44A-TPS-Entwicklungsboard gibt es, wie weiter oben erwähnt auf der Seite von Ralf Beesner. Diese habe ich hier mal auf eine Lochraster-Streifenplatine übertragen.

vergrößern vergrößern

Bestückung:

  • 1x Textolsockel 24-Pol
  • 4x LED rot
  • 1x LED grün
  • 4x Widerstand 150 Ohm
  • 1x Widerstand 120 Ohm
  • 1x Kondensator 220 nF
  • 3x Taster
  • optional: 2-Pol Anschlussklemme
  • optional: 10-Pol Wannenstecker
  • optional 8-Pol Stiftleiste


   TPS Programmer-Platine und Software

Was die Faszination des TPS zu Begin ausgemacht hat, wird dann im Alltag allerdings etwas lästig, wenn man seine Programme durch mehrere Iterationsschleifen prügelt und immer alles über die Taster, Bit für Bit eintippen muss. Genau hier setzt folgende Erweiterung ein.
Die TPS-Programmer-Platine und d
er TPS-Programmer erleichtern die Eingabe der Programme erheblich. Die Programmzeilen können im TPS-Programmer bequem per Auswahlmenü zusammengestellt und mittels Serieller Schnittstelle (COM) zum Controller übertragen werden.

vergrößern

Platine - Bestückung:

  • 3x Transistor BC 548C
  • 3x Widerstand 1 kOhm
  • 1x 9-Pol SUB-D Stecker (weiblich)
  • optional: 10-Pol Wannenstecker:

Software:

Bevor ich zu der Software komme
hier noch ein wichtiger Hinweis zu USB-COM-Adapter. Insbesondere die super-günstigen Adapter sind für diese Zwecke nur bedingt geeignet und man sollte stattdessen lieber ein paar Euronen mehr ausgeben, zumal selbst mittel- bis hochwertige Adapter immer noch recht erschwinglich sind. Bei Probleme mit Billigadaptern oder zur Kaufentscheidungsfindung unbedingt hier mal kurz drüberschauen.

Der TPS Programmer schaufelt nicht nur die einzelnen Bit's zum Mikrocontroller, sondern er unterstützt auch beim Erstellen des Programmcodes. Mit ihm lassen sich die einzelnen Befehlszeilen entweder per Dropdown-Menü oder per Selektion in der Command-Liste erstellen bzw. vorhandene ändern. Nachdem der korrekte COM-Port ausgewählt wurde kann das Programm per [Start Programming] Button übertragen werden.
Hinweis: Es erfolgt weder eine Überprüfung ob der Programmer am angegebenen COM-Port angeschlossen ist, noch ob dieser überhaupt zur Verfügung steht. Sollte hier etwas nicht passen, so wird es nicht zu einer Fehlermeldung kommen. Bitte den entsprechenden Port im Windows Gerätemanager ausfindig machen und korrekt angeben.

Und nochmal kurz zum USB-COM-Adapter. Hat man nun doch nur einen der billigen Varianten mit dem CH34x-Chipset zur Hand, so lässt sich dieser, wenn auch mit Einschränkungen doch nutzen. Wichtig ist dabei, dass die Pin-Belegung genau wie oben Abgebildet vorgenommen wurde, dass also die Beiden Taster S1 und S2 vom DTR und RTS des COM-Ports bedient werden. Der Resettaster wird in diesem Fall dann nicht angesteuert, da der TxD-Ausgang bei diesen Adaptern nicht funktioniert. Setzt man jedoch das Board von Hand in den Programiermodus und startet dann erst die Übertragung klappt es auch.


    

Beim Start zeigt der Programme ein Beispielcode welcher folgende Befehle ausführt:

Zeile 1)   Setzte Ausgang (LED) 1 und 2
Zeile 3)   Warte 500 ms
Zeile 4)   Setze Ausgang (LED) 3 und 4
Zeile 5)   Warte 500 ms
Zeile 6)   Springe zu Zeile 1

Im Ergebnis werden jeweils die beiden linken und rechten LED's abwechselnd

  Download TE TPS Programmer

Fertiger Aufbau Entwicklungsboard + TPS Programmer Erweiterung


   Schaltplan (ATtiny44A)

Die Integration in eigene Schaltungen gestaltet sich aufgrund der überschaubaren Anazahl an benötigten Peripheriebausteine als recht einfach. Die Eingänge können direkt mit der Versorgungsspannung (Positiv) angesteuert werden. Da die Ausgangsströme sehr gering sind und man damit bestenfalls eine LED zum Leuchten bringen kann müssen diese noch Verstärkt werden. Entweder wie im unten stehenden Plan über Transistoren oder über einen Treiber wie dem ULN2003. Ein Treiberbaustein vereinigt Vorwiderstände, Transistor und Freilaufdiode für alle 4 Ausgänge (ULN2003 -> bis zu 7) in einem Baustein.

Belastbarkeit der Ausgänge am ATTiny 44 A:

10mA bei 5V Versorgungs- und Eingangsspannung 
5mA bei 3V Versorgungs- und Eingangsspannung
2mA bei 1,8V Versorgungs- und Eingangsspannung
 


  
Tipps

Programmiermodus starten:

Dieser Punkt ist im Handbuch vom Franzis Verlag etwas unglücklich beschrieben und hat bei mir zu Begin zur Frustration geführt. Deshalb hier noch mal so erklärt, dass es definitiv immer klappt :-)
S2-Tatse drücken und gedrückt halten, während S2 noch gedrückt bleibt, die Resettaste drücken und wieder loslassen und erst jetzt S2 wieder loslassen. Der Programmiermodus ist gestartet wenn das erste Bit angezeigt wird, nun kann die S2 Taste losgelassen werden.


   Links

 

 

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 28.01.2015]