Dieses Blog durchsuchen

Donnerstag, 14. Februar 2013

[Projekt] Raspberry Pi und der Atmel - Teil 1

Hi.

Heute möchte ich mit einem Projekt beginnen, welches sich an Anfänger im Bereich der Mikrocontroller und des Datentransfers vom Pi zum Controller richtet. Dabei soll es in diesem Teil erstmal um die Grundschaltung des Atmel gehen. Hier gilt es ein paar kleine Stolpersteine zu beachten. In den weiteren Teilen sind die serielle Anbindung zum Pi, die Ausgabe auf ein LCD-Display sowie einige Messaufgaben geplant.

Zuersteinmal möchte ich die Frage aufgreifen, welche sich einige stellen werden.

"Warum sollte ich einen Mikrocontroller mit dem Pi verbinden?"

 Die Antwort ist erstmal recht trivial.

Weil wir es können!

Wenn wir etwas weiter überlegen kommen uns dann doch Anwendungsgebiete in den Sinn, welche unsere kleine Himbeere nicht so ohne weiteres übernehmen kann und wo es Sinnvoll ist diese Aufgaben auf einen Controller zu übertragen. Diese Anwendungsgebiete umfassen zum Großteil Aufgaben welche recht Zeitkritisch sind. Das kann zum einen das sofortige Auslösen eines Events, als Reaktion auf ein anderes sein, oder zum anderen das Messen von Impulsen ........... Allein das Ansteuern und Auswerten eines Ultraschall-Sonars kann auf dem Pi eine echte Herausforderung werden. Dazu kommen wir aber in einem anderem Teil.
Heute soll es erstmal um den Grundaufbau gehen, welchen wir in den nächsten Wochen benötigen werden.

Grundaufbau 


Spannungsquelle

Die Grundschaltung eines Mikrocontrollers ist vom Prinzip her recht simpel. Als erstes benötigen wir eine Spannungsquelle, welchen unseren Controller mit Strom versorgt. Die Bauteile, welche wir benötigen sind im folgenden

  • Steckbrett
  • Kabel
  • Batteriehalter für min 5 AAA Batterien, einen 9V Block oder eine Buchse für ein Netzteil welches mindestens 7,5V liefert.
  • 1x  LM7805 Linearer  positiv Gleichspannungsregler.
  • 1x Gleichrichterdiode, z.B. 1N4001
  • 1x Elektrolytkondensator min. 10µF
  • 2x Keramikkondensator 100nF
  • 1x LED mit Vorwiderstand (Optional)

Ihr seht also das der Materialaufwand für die Spannungsversorgung recht gering ausfällt. Demnach ist der Aufbau auch sehr schnell erledigt. Bauen wir uns nun die Schaltung nach folgendem Schaltplan auf.

Spannungsregler

Zu beachten ist hierbei das die 2 Keramikkondensatoren ganz nah am 7805 positioniert werden, da diese ein mögliches Schwingen des IC unterdrücken sollen. Für unsere Anwendungen können wir auf eine Kühlung des Spannungsreglers verzichten. Solltet ihr jedoch größere Lasten anschließen wollen, so solltet ihr dem IC eine Kühlung spendieren. Bitte beachtet hierbei das die "kleine Fahne" an welcher ihr die Kühlung anbringt intern mit Masse verbunden ist. Euer Kühlkörper sollte also keine anderen Bauteile berühren. Aufgebaut sieht das ganze dann so aus.

Spannungsregler auf Lochstreifenplatine

Wie ihr seht ist die Schaltung recht einfach aufgebaut. Ich habe sie mir hier vor einiger Zeit auf eine alte Lochstreifenplatine gebaut und sie tut immernoch ihren Dienst. Das Kabel am Eingang habe ich, wie ihr sehen könnt, aus nem alten PC-Gehäuse ;)
Da der von mir verwendete 7805 1,5 Ampere bringt könnte man über diese Schaltung sogar unseren Raspberry Pi betreiben. Als Eingangsspannung könnt ihr zum Beispiel eine 9V Batterie verwenden. Jedoch soll gesagt sein das der 7805 einen recht schlechten Wirkungsgrad hat und die Batterie somit recht schnell aufgebraucht ist. Meine hielt ungefähr eine Woche lang. Inzwischen betreibe ich das Ganze an einem Trafo mit Gleichrichter. Die optional eingebaute LED gibt vom Prinzip nur aus ob die Schaltung gerade an der Versorgungsspannung angeschlossen ist. Sie wird einfach mit einem passenden Vorwiderstand zwischen +5V und Masse geschalten.
Zur Kennzeichnung von Pins auf einem Raster von 2,54cm eignet sich die Schriftgröße 6,1 hervorragend.

Mikrocontroller

Kommen wir nun zum eigentlichen Punkt auf der Tagesordnung. Dem Aufau des Mikrocontrollers. Dazu benötigen wir folgende Bautteile.


  • Steckbrett
  • Kabel
  • 1x Mikrocontroller Atmel Mega8 oder Pinkompatibel (wer schlau ist kauft mehrere)
  • Schwingquarz 16 MHZ
  • 2x Keramikkondensatoren 22pF
  • 3x Keramikkondensatoren 100nF oder größer.
  • 1x Keramikkondensator 47nF
  • 1x Widerstand 10 kOhm
  • Pinleiste (Optional)
  • IC Sockel 28Pin (Optional)
  • Stück Lochrasterplatine (Optional)

Der Aufbau ist vom Prinzip her recht einfach. schauen wir uns einfach folgende Schaltung an.

Grundaufbau

Sieht auf den ersten Blick erstmal komplizierter aus als es tatsächlich ist. Die 3 Keramikkondensator C1-C3 sind immer zwischen den 5V Versorgungspins des Controllers und Masse geschaltet um eventuelle Störungen in der Spannungsversorgung abzufangen. Sie sollten so nah wie möglich am Controller platziert werden um ihre Wirkung entfalten zu können. Der Widerstand R1 hält den Reseteingang standardmäßig auf High damit der Controller arbeiten kann. Wenn der Controller programmiert wird dann zieht das Programmiergerät den Reseteingang auf Masse. Das gleiche erledigt auch unser Taster T1. Er dient uns zum resetten des Mikrocontrollers, sollten wir in der Programmierung einen Fehler haben, der ihn zum Beispiel in einer Endlosschleife hält. Die Beiden Kondensatoren C4 und C5 dienen dem Betrieb mit dem Schwingquarz Q1. Solltet ihr andere Taktgeber verwenden, wie zum Beispiel einen Keramikresonator entfallen diese.
Stecken wir nun unsere Schaltung auf dem Steckbrett. Dies könnte folgendermaßen ausschauen.

Grundaufbau auf einem Steckbrett
Nahaufnahme

Der Pinheader für die den ISP-Programmer kann man einfach aus einem Stück Lochstreifenplatine sowie ein Paar Pins bauen. Dieser Passt wunderbar auf ein handelsübliches Steckbrett. Dazu kennzeichnet ihr euch mit einem Edding einfach die zu durchtrennenden Leiterbahnen und durchtrennt sie anschließen mit einem Cuttermesser.

Oberseite
Unterseite

Solltet ihr euren Aufbau des Öfteren ändern, abbauen und aufbauen wollen, so bietet es sich an den Mikrocontroller in einem IC-Sockel unterzubringen. Die kleinen Beinschen des Controllers sind sonst sehr schnell verbogen. Dazu verfahren wir auf die selbe Weise wie beim Pinheader für den ISP-Programmer.




Nun könnt ihr den Aufbau einfach besser ändern ohne das ihr den Mikrocontroller zerstört.

Programmierung

Hier möchte ich euch als erstes auf die Seite Mikrokontroller.net verweisen. Dort gibt es für den Anfang eine recht umfangreiche Sammlung von Tutorials. Wir werden hier in den nächsten Teilen hauptsächlich C nutzen. Ich möchte jetzt zu diesem Zeitpunkt auch kein neues Tutorial schreiben, da es davon auf der Seite wunderbare Tutorials gibt, welche gerade für Anfänger geeignet sind.
Hier möchte ich jetzt ersteinmal den Controller dazubringen das er auf die externe Taktquelle reagiert.

Als erstes benötigen wir allerdings ein Programm um dies zu tun. Da wir in nächster Zeit einiges für den Controller programmieren werden bietet es sich an das ganze nicht über einen gewöhnlichen Editor zu machen, sondern über eine IDE welche für unsere Aufgabe geeignet ist. Dazu gibt es schon eine fertige Lösung namens "AVR Studio." Dieses könnt ihr euch kostenfrei herunterladen. Lasst euch am Anfang nicht von der Funktionsvielfallt abschrecken. Wenn ihr erstmal damit arbeitet erklärt sich alles von selbst. Ihr müsst lediglich euren Programmer einstellen, sofern dieser vom AVR Studio unterstützt wird. Ich verwende den MySmart USB Light von MyAVR. Dieser ist recht günstig und für unsere Zwecke absolut ausreichend. Da er standardmäßig als STK500 Programmer erkannt wird ist die Einrichtung im Studio ganz einfach. Ihr findet die Einrichtung unter "Tools->Add STK500..." Dort wählt ihr einfach die Schnittstelle aus an der euer Programmer angeschlossen ist.


Damit der Controller nun auf die den externen Taktgeber hört müssen wir unter "Tools-Device Programming" die Fuses so einstellen das wir den externe Quarz verwenden. Dazu wählt ihr einfach euren Programmer, gebt den Controller an und bestätigt mit "Apply"


Nun könnt ihr unter "Fuses->SUT_CKSEL" den Externen Taktgeber einstellen. Verwendet ihr wie hier beschrieben einen Quarz, so wählt ihr "EXTHIFXTALRES_16KCK_64MS" und bestätigt das ganze mit "Program."


Solltet ihr eventuell die Fehlermeldung erhalten das die Lesespannung außerhalb der Reichweite ist, so könnt ihr dies einfach ignorieren und mit "yes" übergehen. Dies liegt daran das einige STK500 Clone die Übergabe der Lesespannung einfach nicht unterstützen. Das sollte aber kein Problem darstellen.

Nun sollte der Controller auf die externe Taktquelle reagieren. Ihr könnt nun gerne eure ersten versuche unternehmen und ein paar kleine Programme schreiben. Nutzt das Tutorial auf Mikrokontroller.net und nutzt das Ganze um euch für die nächsten Teile meines Projektes mit dem AVR Studio und dem Mikrocontroller vertraut zu machen.

Ich hoffe ihr konntet den Schritten hier erfolgreich folgen und habt nun den Grundaufbau für die kommenden Teile fertig.


Anmerkung: Ich wurde des Öfteren gefragt warum ich nicht einfach einen Arduino nutze. Dazu möchte ich sagen, dass ich es einfach nicht mag fertige Module zu nutzen. Bei einigen Dingen lässt es sich nicht vermeiden (LCD-Display, Ultraschallsonar). Ich möchte die Dinge, die ich nutze, verstehen. Der Arduino ist ein feines kleines Modul, jedoch ist es ein Fertigmodul an dem ich nichts ändern kann. Ich möchte die Dinge so weit wie es geht von Anfang an selbst bauen und verstehen. Hinzu kommt das wir, wenn wir statt dem Mega8 einen Mega328 nutzen, mittels des Arduino Bootloaders einen vollwertigen Arduinoersatz haben.

Keine Kommentare:

Kommentar veröffentlichen