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 dann das Programm 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 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, wie in meinem Fall z.B. die BASCOM IDE-Entwicklungsumgebung in Verbindung mit einem kompatiblen Programmer verwendet werden. Nach dem Start von BASCOM stellt man zunächst den Programmer über "Options/Programmer" ein. Für den MyMultiProg V1.06 (LPT) wäre das die Einstellung "Universal MCS Interface" und "WinARV and SP12". 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) einlesen. Danach klickt man auf "Compile program" oder drückt [F7] und dann auf "Program chip" bzw. [F4].
In meinem Fall bekam ich die Fehlermeldung "Line: 59 - Unknown CONFIG parameter [AVCC]". Es dreht sich dabei um die Referenzspannung des Controllers. Folgende Parameter können hier gesetzt werden: Aref, Avcc, Internal oder Off. Leider bekam ich bei allen Möglichkeiten einem Fehler und habe darum kurzer Hand Reference = Avcc" mittels Hochkomme auskommentiert und dann lief die Kompilierung durch. Wahrscheinlich hat dies Auswirkung auf die Analogen Eingänge, der Rest arbeitet jedoch einwandfrei.
Um letztlich 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 die Hardwarekonfiguration passte und auch das anlegen einer externen Spannungsversorgung brachte keinen Erfolg. Da ich ja den Code nicht ändern musste bin ich 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 erst, nachdem ich einmal mit AVRDude 5.3.1 einen Chip erfolgreich beschrieben hatte. Wieso, weshalb, warum? Keine Ahnung, egal, Hauptsache es läuft. Ich stelle hier mal ein AVRDude Komplettpaket zur Verfügung, falls jemanden das gleiche Problem ereilen sollte. Dazu einfach das Zip-Archiv entpacken, dann "Inst-LPT.bat" und im Anschluss "StartMich.bat" ausführen und fertig. 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. 

  AVRmyMiltiprog1-6_AVRDUDE-ATtiny44-TPS.zip



   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 (IC-Stützkondensator)
  • 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.

Reset = COM TxD; S1 = COM DTR; S2 = COM RTS

vergrößern

Platine - Bestückung:

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

TE TPS-Programmer 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, 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. Ist das Programm erstellt und der korrekte COM-Port ausgewählt, kann Quellcode per [Start Programming] Button an den TPS-Controller übertragen werden.

Nachtrag 12.11.2023: Ich habe den TE TPS-Programmer überarbeitet und eine Simulation hinzugefügt. Somit hat man die Möglichkeit sein Programm zunächst virtuell zu Testen, bevor man es final an TPS-Controller überträgt. Die Simulation ist experimentell und bietet keine Fehlererkennung.    

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. Den von Windows zugewiesenen COM-Port findet man im Gerätemanager unter Anschlüsse.

Und noch mal kurz was 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. Der Reset-Taster wird über den TxD-Ausgang betätigt, welcher bei diesen Adaptern nicht funktioniert. Setzt man jedoch das Board von Hand in den Programmiermodus und startet dann erst die Übertragung, dann klappt es auch damit :-)


    

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 ist recht einfach. Da die Ausgangsströme jedoch sehr gering sind und man damit bestenfalls eine LED zum Leuchten bringt, 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, Transistoren und Freilaufdioden in einem Baustein. Der ULN2003 besitzt 7 solcher Ein- und Ausgänge.

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 (Druckversion) etwas unglücklich beschrieben und hat bei mir zu Begin zur Frustration geführt. Deshalb habe ich hier das Ganze noch mal mit meinen Worten zusammengefasst.
S2-Tatse drücken und gedrückt halten, jetzt die Resettaste einmal antippen und kurz warten. Der Programmiermodus ist gestartet wenn das erste Bit angezeigt wird (ca. 1/2 Sekunde), nun kann die S2 Taste wieder losgelassen werden.


LED-Ausgabemuster (Binärcode)

Jede LED stellt ein Bit da, mit den 4 LED's kann also eine 4-Bit-Zahl dargestellt werden. Das erste Bit hat den Wert "1", das zweite "2", das dritte "4" und das vierte "8". Die Quersumme der Werte (leuchtende LED's) ergibt die Dezimalzahl. Also das Muster (Binärcode), "1111" = 8+4+2+1 = "15", oder "0101" = 0+4+0+1 = "5". Mit etwas Übung kann man das Muster direkt als Zahlen lesen, frag mal Neo oder Trinity von Matrix ;-)   

"8" "4" "2" "1" Dezimal Hexadezimal
0 0 0 0 0 0
0 0 0 1 1 1
0 0 1 0 2 2
0 0 1 1 3 3
0 1 0 0 4 4
0 1 0 1 5 5
0 1 1 0 6 6
0 1 1 1 7 7
1 0 0 0 8 8
1 0 0 1 9 9
1 0 1 0 10 A
1 0 1 1 11 B
1 1 0 0 12 C
1 1 0 1 13 D
1 1 1 0 14 E
1 1 1 1 15 F




   Links

 

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

[Erstellt  28.01.2015 - letzte Änderung 12.11.2023]