Benutzer-Werkzeuge

Webseiten-Werkzeuge


projects:2013:avr_101

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

projects:2013:avr_101 [2013-01-04 17:49]
alex [Ressourcen] erg: Link zum Pad
projects:2013:avr_101 [2013-08-06 12:40] (aktuell)
alex
Zeile 1: Zeile 1:
-====== ​AVR Einführungsworkshop ======+====== ​uC Einführungsworkshop ====== 
 +Es soll ein Workshop bzw. eine kleine Workshopserie als Einführung in die Programmierung von AVR Mikrocontrollern ausgearbeitet werden. 
 + 
 +===== Projektkurzinfos ===== 
 +  ? contact 
 +  : [[user:​lespocky|alex]] 
 +  ? begin 
 +  : 2013-01-03 
 +  ? status 
 +  : planning/​preparing 
 +  ? skillz (source) 
 +  : Vorbereitung erfordert für den Lehrenden Ahnung von Schaltung aufbauen, AVR programmieren in C, Makefiles schreiben, Teileilisten machen, Bausätze vorbereiten,​ Folien ausarbeiten,​ … 
 +  : Workshop durchführen needs Erklärbärfähigkeit,​ Geduld, … 
 +  ? skillz (drain) 
 +  : Der Lernende muss als Voraussetzung mitbringen: sicherer Umgang mit Editor und Kommandozeile,​ Programme nachinstallieren (avrdude, avr-gcc), Basiswissen Stromkreise (Physik 9. Klasse), Grundkenntnisse Computerprogramme (Variablen, Schleifen, Funktionen)
  
-{{:​projects:​2013:​testplan.jpg?​200|}} 
 ===== Ideen ===== ===== Ideen =====
-  * [[http://​www.atmel.com/​devices/​ATTINY25.aspx|ATtiny 25/45/85]], Steckbrett, LED, Poti+Für die Einführung ist der [[http://​www.atmel.com/​devices/​ATTINY25.aspx|ATtiny 25/​45/​85]] ​ganz gut geeignetübersichtliche Anzahl an Funktionseinheiten,​ billig zu beschaffen und als DIP-8 oder SOIC-8 erhältlich. Eine einfache Beispielbeschaltung passt locker auf ein kleines Whiteboard:​ 
 +  * [tux, 2012-04-03] Wie wir heute festgestellt haben, ist der [[http://​www.reichelt.de/​index.html?​ARTICLE=119687|ATTINY 24A-PU]] eine durchaus brauchbare Alternative mit mehr Ports zu einem vernachlässigbar höheren Preis. Entsprechend der untenstehenden WS-Gliederung könnten wir überlegen, diesen µC zu verwenden und mit einer RGB-LED sowie anderer Zusatzbeschaltung (drei Potis, damit man mit RGB und Farbräumen herumspielen kann, …) zu versehen. 
 + 
 +{{:​projects:​2013:​testplan.jpg?​200|}} 
 + 
 +Im Laufe der Vorbereitungen stellte sich heraus, dass man die Thematik in mehrere Workshops gliedern sollte. Einführung in die Mikrocontrollerprogrammierung kann mit nahezu gleichem Quellcode auf Steckbrett, ​gelöteter Schaltung (Lochraster,​ SMD) oder Arduino geschehen. Ansteuern kann man diverse Dinge, der Einfachheit halber bieten sich LEDs als Ausgabe und Potis als Eingabe an. 
 + 
 +Den Aufbau einer der Schaltungsvarianten kann man in je einen Extra-Workshop packen. Der Umfang ist mit LED und Poti mehr als ausreichend für einen Einführungsworkshop. 
 + 
 +==== Alternative Beispielschaltung mit 7-Segment-Anzeige ==== 
 +{{:​projects:​2013:​tux_avr101_steckbrett.png?​200|Beispielschaltung mit 4bit-Hex-Eingabe und 7-Segment-Ausgabe}} 
 + 
 +Hinweis: Wegen $grund ist an PB4 (Pin 3) der Pull-Up-Widerstand nicht wirksam. Deshalb wurde ein externer Widerstand (10kOhm) von Pin 3 nach Masse gelegt. 
 + 
 +Der AT90S2343 wurde gewähltweil er im Bastelbestand noch vorhanden war. Letztendlich sollte auch hier ein ATtiny25 zum Einsatz kommen. Folgende Varianten sind dann möglich: 
 +  * Der 4bit-Hex-Codierer wird durch ein Poti ersetzt. Der Stellwert wird am ADC-Eingang ermittelt. 
 +  * Einer der frei werdenden Ports kann dann wieder für den Reset des Zählers verwendet werden (d.h., wieder zwei Leitungen zum Zähler, aber eine robustere Schaltung). Diese beiden Schaltungsvarianten mit Vor- und Nachteilen können durchaus auch im Rahmen eines Workshops behandelt werden. 
 +  * Das Poti lässt sich auch durch einen widerstandsbasierten Sensor ersetzen, z.B. einen Photowiderstand. Auf der Anzeige erscheint dann ein Lichtlevel. 
 +  * Mit einer höheren Taktung lässt sich das Flackern der 7-Segment-Anzeige wahrscheinlich völlig unterbinden. (Konsequenzen verschiedener Taktungen können ebenfalls Teil eines Workshops sein.) 
 + 
 +===== Bauteile ===== 
 +Im Prinzip sind die Teile sehr ähnlich, egal welche Schaltung man benutzt. Leichte Abweichungen vielleicht beim Arduino. Interessant für die gelöteten Schaltungen wäre vielleicht noch ein vorgeschalteter Spannungsregler. 
 + 
 +==== Schaltung auf Steckbrett ==== 
 +  * ATtiny25/​45/​85 in DIP-8 Gehäuse 
 +  * ein bis drei LED oder eine RGB-LED (bspw. [[https://​secure.reichelt.de/?​ARTICLE=10241|LED RGB-5 DIFFUS]]) 
 +  * ein paar Widerstände und Kondensatoren 
 +  * ein Poti 
 +  * ein Adapter zum Anstecken des Programmers 
 +  * kleine low-current LED als Betriebsspannungsanzeige 
 + 
 +==== Schaltung auf Lochraster ==== 
 +Kann man die selben Teile nehmen wie auf dem Steckbrett. 
 + 
 +==== SMD-Schaltung ==== 
 +Setzt das Projekt [[projects:​2013:​PCB-Herstellung]] voraus, kann von der Schaltung her aber ähnliches bis gleiches Design nutzen. Zur Demonstration nimmt man dann einfach den Mikrocontroller im SOIC-8 Gehäuse. 
 + 
 +===== Lerneinheiten ===== 
 +In zwei Stunden lässt sich das nicht abfeiern, daher Unterteilung in mehrere Blöcke. Möglich wären … 
 + 
 +  - alles bis »Hello World« wie bspw. Steckbrett aufbauen, Platine löten, Arduino auspacken als parallel mögliche Einheiten 
 +    - Steckbrett aufbauen 
 +    - Schaltung löten 
 +    - Grundlagen Stromkreise 
 +  - »Hello World« aka LED blinken lassen mit vorbereitetem Makefile und uC Flashen durch die Teilnehmer, der Teil wurde bereits für die [[https://​program.ohm2013.org/​event/​242.html|OHM2013]] vorbereitet und durchgeführt 
 +    * Struktur eines C-Programms 
 +    * Zugriff auf Ports des uC 
 +    * Datenblatt lesen in Kürze 
 +    * kompilieren und flashen 
 +    * ggf. Einbindung der ''​delay.h''​ 
 +  - LED dimmen mit PWM 
 +    * kurze Theorie zu LED dimmen, Strom, Spannung, PWM 
 +    * Vorstellung Timerbaustein des uC 
 +    * Interrupts und ISR 
 +    * einfache PWM mit Timer und ISR 
 +    * Lookuptable für schickes Dimmen 
 +  - Einlesen von Daten von außen 
 +    * Grundlagen AD-Wandler 
 +    * genauere Beschäftigung mit uC-Registern 
 +    * Poti anschließen,​ einlesen und dann die Helligkeit der LED steuern 
 +  - Combine all previous stuff with RGB! 
 +    * HSV 
 +    * was tun bei common anode? 
 +    * Optimierung der PWM 
  
-===== Ressourcen =====+===== Ressourcen/​Links ​=====
   * Datenblatt: http://​www.atmel.com/​Images/​doc2586.pdf   * Datenblatt: http://​www.atmel.com/​Images/​doc2586.pdf
-  * Application ​Note [[http://​www.atmel.com/​Images/​doc2542.pdf|AVR131:​ Using the 8-bit AVR High-speed PWM]] +  * Application ​Notes  
-  * [[http://​piratepad.net/​4B7J6VvKfq|Pad]]+    * [[http://​www.atmel.com/​Images/​doc8352.pdf|AVR125:​ ADC of tinyAVR in Single Ended Mode]] 
 +    * [[http://​www.atmel.com/​Images/​doc2505.pdf|AVR130:​ Using the timers on tinyAVR and megaAVR devices]] 
 +    * [[http://​www.atmel.com/​Images/​doc2542.pdf|AVR131:​ Using the 8-bit AVR High-speed PWM]] 
 +    * [[http://​www.atmel.com/​Images/​doc8020.pdf|AVR136:​ Low-jitter Multi-channel Software PWM]] 
 +  * [[https://​kant.netz39.from-md.com/​pad/​p/​avr_101|Pad]] 
 +  * [[http://​piratepad.net/​4B7J6VvKfq|altes Pad]] 
 +  * [[https://​github.com/​netz39/​avr_101|Repository]] 
 +  * Follow-Up: [[projects:​2013:​AVR 102]] 
 +  * {{:​projects:​2013:​notizen_avr101.pdf|}}
projects/2013/avr_101.txt · Zuletzt geändert: 2013-08-06 12:40 von alex