https://rn-wissen.de/wiki/api.php?action=feedcontributions&user=MichaelFrey&feedformat=atomRN-Wissen.de - Benutzerbeiträge [de]2024-03-29T11:29:04ZBenutzerbeiträgeMediaWiki 1.25.1https://rn-wissen.de/wiki/index.php?title=C%27t-Bot&diff=14680C't-Bot2009-03-21T16:21:42Z<p>MichaelFrey: </p>
<hr />
<div>[[Bild:ctbot_6.jpg|thumb|c't-Bot]]<br />
<br />
== Einleitung ==<br />
<br />
Der c't-Bot ist ein Projekt der Computerzeitschrift c't aus dem Heise-Verlag. Neben dem realen Roboter gibt es zudem eine Simulation unter Java, den c't-Sim. Über seine UART kann auch der c't-Bot mit dem c't-Sim Daten austauschen.<br />
<br />
Der c't-Bot besteht aus einer kreisrunden Alu-Plattform in den Abmessungen einer CD (~12cm). Darauf sitzt die ebenfalls kreisrunde Grundplatine mit der Steuerung. Als Antrieb dienen 2 Faulhaber [[Getriebemotoren]], an denen jeweils ein Alu-Rad montiert ist. Als Stützrad besitzt der c't-Bot einen Teflon-Gleitpin. Das Gehirn des c't-Bots bildet ein [[AVR]] RISC [[ATmega32]] der Firma [[Atmel]].<br />
Dieser verfügt über 32KB [[Flash]], 2KB RAM und 1KB [[EEPROM]] und wird mit 16MHz getaktet. Programmiert wird der c't-Bot in C. Als Entwicklungsumgebung wurde Eclipse gewählt, weil damit sowohl der c't-Bot in C, als auch der c't-Sim in Java unter einer Entwicklungsumgebung programmiert werden kann.<br />
<br />
An Sensoren besitzt der c't-Bot neben 2 [[Sensorarten#Sharp GP2D12|Sharp GP2D12]] Distanzsensoren, 7 [[Sensorarten#CNY70|CNY70]] als Liniensensor, Abgrunddetektoren, Radencoder und Klappensensor, sowie einen optischen Maussensor zur Wegstreckenmessung. Zudem besitzt er noch zwei Lichtsensoren und eine Lichtschranke für die optionale Transportklappe. <br />
<br />
=== Technische Daten ===<br />
<br />
{|{{Blauetabelle}}<br />
|'''Mikrocontroller:'''<br />
|Atmel AVR RISC [[ATmega32]] mit 16MHz<br /><br />
32 kB [[Flash]]<br /><br />
2 kB RAM<br /><br />
1 kB [[EEPROM]]<br /><br />
'''Alternativ:'''<br /><br />
Atmel AVR RISC [[ATmega644]] mit 16MHz<br /><br />
64 kB [[Flash]]<br /><br />
4 kB RAM<br /><br />
2 kB [[EEPROM]]<br /><br />
|-<br />
|'''Sensoren:'''<br />
|2 Distanzsensoren ([[Sensorarten#Sharp_GP2D12|Sharp GP2D12]])<br /><br />
2 Abgrunddetektoren ([[Sensorarten#CNY70|CNY70]])<br /><br />
1 Liniensensor (2 &times; [[Sensorarten#CNY70|CNY70]])<br /><br />
2 Radencoder ([[Sensorarten#CNY70|CNY70]] mit Schmitt-Trigger), Auflösung 60 Impulse pro Rad-Umdrehung<br /><br />
1 optischer Maussensor (Agilent A2610), Auflösung 400dpi in X- und Y-Richtung<br /><br />
2 Lichtsensoren (LDR)<br /><br />
1 Lichtschranke ([[Sensorarten#Distanzsensor_IS471F|Sharp ISF471]]) (für das Transportfach)<br /><br />
1 Klappensensor ([[Sensorarten#CNY70|CNY70]]) (für die optionale Transportklappe) <br />
<br />
|-<br />
|'''Aktoren:'''<br />
|1 [[Getriebemotoren_Ansteuerung#Ansteuerung mit Treiber IC L293 D|LN293D]] Motortreiber<br /><br />
2 Faulhaber [[Getriebemotoren]] 2619 006 SR mit 33:1 Untersetzung<br /><br />
1 [[Servo]] (optional für die Transportklappe)<br /><br />
8 LEDs über Porterweiterung<br /><br />
8 Enable Leitungen über Porterweiterung, um einzelne Sensoren an-und abzuschalten<br /><br />
1 LCD-Modul (optional) über Porterweiterung<br />
|-<br />
|'''Kommunikation:'''<br />
|[[UART]] mit TTL Pegel (optional RS232-Modul, USB-Modul oder WLAN-Modul)<br /><br />
Infrarot Empfänger für Fernbedienung<br />
|-<br />
|'''Schnittstellen:'''<br />
|[[I2C|I<sup>2</sup>C]]<br /><br />
[[SPI]]<br />
|-<br />
|'''Programmer:'''<br />
|Standard [[ISP]] (6 oder 10 poliger Anschluß), oder seriell über [[Bootloader]] <br />
|-<br />
|'''Abmessungen:'''<br />
|(L &times; B &times; H) 120 &times; 120 &times; 120 mm<br />
|-<br />
|'''Stromversorgung:'''<br />
|6 Volt für Motoren und Servos (ungeregelt), 5 Volt für Elektronik (geregelt)<br /><br />
5 &times; AA Mignon-Batterien oder Akkus<br /><br />
6V Steckernetzteil (Umschalter zwischen Netz- und Batteriebetrieb)<br />
|-<br />
|'''Gewicht:'''<br />
|ca. 500 g (inkl. Akkus oder Batterien)<br /><br />
ca. 600 g (inkl. LCD-Modul)<br />
|-<br />
|'''Vertrieb:'''<br />
|Segor Electronics<br />
|}<br />
<br />
=== Der Bausatz ===<br />
<br />
[[Bild:ctbot_1.jpg||center|framed|Elektronik]]<br />
[[Bild:ctbot_2.jpg||center|framed|Platinen]]<br />
[[Bild:ctbot_3.jpg||center|framed|Mechanik]]<br />
<br />
=== Erweiterungen ===<br />
<br />
Folgende Erweiterungen für den c't-Bot wurden bereits realisiert:<br />
<br />
* LCD Modul mit 4 &times; 20 Zeichen<br />
* RS232-Modul, <br />
* USB-2-Bot Adapter,<br />
* [[Sensorarten#SRF10 Ultraschallsensor|Ultraschall Sensor SRF10]]<br />
* Transportklappe mit [[Servo]],<br />
* WLAN Modul,<br />
* SD/MMC-Card Erweiterung<br />
<br />
Folgende Erweiterung sind geplant:<br />
<br />
* Kamera-Modul mit [[Servo]]<br />
<br />
== Autor(en) ==<br />
[[Benutzer:M_a_r_v_i_n|M_a_r_v_i_n]]<br />
<br />
== Siehe auch ==<br />
* [[AVR]]<br />
* [[ATmega32]]<br />
* [[avr-gcc]]<br />
* [[Sensorarten]]<br />
* [[Asuro]]<br />
* [[Robotino]]<br />
<br />
== Weblinks ==<br />
* [http://www.heise.de/ct c't Heise Verlag]<br />
* [http://www.heise.de/ct/ftp/projekte/ct-bot/ c't-Bot und c't-Sim - Die Offizielle Projektseite]<br />
* [http://wiki.ctbot.de/index.php c't-Bot Wiki]<br />
* [http://www.ctbot.de c't-Bot Fan Forum]<br />
* [http://www.roboternetz.de/phpBB2/viewforum.php?f=46 Roboternetz Forum - c't Roboter Projekt]<br />
* [http://www.segor.de Segor Electronics - Bauteile zum c't Bot]<br />
<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]</div>MichaelFreyhttps://rn-wissen.de/wiki/index.php?title=Platinenherstellung_mit_der_%22Foto-Transfer-Technik%22&diff=12433Platinenherstellung mit der "Foto-Transfer-Technik"2007-07-14T06:56:47Z<p>MichaelFrey: </p>
<hr />
<div>'''Herstellen von Leiterplatten mit der Foto-Transfer-Technik'''<br />
<br />
== Foto-Transfer-Methode ==<br />
<br />
=== Benötigtes Material ===<br />
:* Eine Vorlage, nach welcher die Leiterplatte entstehen soll; auch "Film" genannt <br />
:: z.B. '''Transparentpapier''', Layoutfolie, OHP-Folie <br />
::Im Schulzeichenbedarf bekommt man etwas stärkeres Transparentpapier für technisches Zeichen (etwa wie Postkartenkaron) - das wellt sich mit Tinte nicht so sehr auf und bleibt schön glatt. Bei bedruckbaren Folien sollte darauf geachtet werden, dass die Deckkraft der Tinte bzw. des Toners ausreicht (Bei zu geringer Deckung ggf. mit den Druckereinstellungen experimentieren oder einfach auf die selbe Folie noch einmal exakt "drüber"-drucken)<br />
:Eine weitere Möglichkeit ist, normales Büropapier (Kopierpapier) zu bedrucken und mit Pausklar-Spray transparent zu machen (evtl. nicht für Tintenstrahlausdrucke geeignet)<br />
:: Wichtig ist, eine möglichst gute Vorlage zu erstellen, hierzu sollte man in den Optionen des Druckers die maximale Schwärzung einstellen. Im Durchlicht sollten die Flächen dunkelgrau bis schwarz sein, und auf gar keinen Fall Risse oder Unterbrechungen aufweisen (Ihr werdet euch wundern, wie hoch die Auflösung beim Ätzen sein kann). <br />
:* Fotopositiv beschichtete Leiterplatten<br />
:* Eine geeignete Lichtquelle (z.B. UV-Quelle oder Nitraphot-Leuchtmittel)<br />
::ich verwende mittlerweile einen UVA-Gesichtsbräuner, die funktionieren genauso gut wie "richtige" Belichtungsgeräte, sind aber um ein vielfaches günstiger zu beschaffen.<br />
:: Prinzipiell funktioniert fast jede Lichtquelle (Sonne, Schreibtischlampe) mehr oder weniger gut und zuverlässig. Wer nichts dem Zufall überlassen will, kann sich nach z.B. [http://www.blafusel.de/misc/uv.html dieser Anleitung] ein "Belichtungsgerät" aus einem alten Gesichtsbräuner und einem kaputten Scanner bauen - oder natürlich auf kommerzielle Geräte zurückgreifen.<br />
:* Glasplatte (etwas größer als die zu belichtende Platine) - 3mm bis 5mm Stärke<br />
:: z.B. aus einem einfachen, billigen Bilderrahmen - wobei verschiedene Glassorten zu starken Schwankungen führen können. Echtes, unbeschichtetes Glas filtert z.B. im Gegensatz zu Acryl- oder Plexiglas kaum UV-Licht aus und ist daher wesentlich besser geeignet.<br />
:* Entwickler<br />
:** z.B. Seno Entwickler 4007 oder<br />
:** Natriumhydroxid (NaOH)<br />
:* Entwicklerschale<br />
:* Ätzmittel<br />
:** Vorzugsweise Natriumpersulfat (NaPS), auch Feinätzkristall genannt<br />
:** Ammoniumchlorid (findet wegen des giftigen Ammoniaks seltener Verwendung)<br />
:** oder Eisen(III)-chlorid (FeCl<sub>3</sub>)<br />
:::dies ist jedoch wegen der Schaumbildung nicht für Ätz-Küvetten mit Luftverteiler geeignet.<br />
:* Ätzschale oder Ätzküvette (dann aber mit Heizung)<br />
:* Aufbewahrungsbehälter (Saugflaschen)<br />
:* Timer (Wecker) oder Stoppuhr<br />
:* Fließendes Wasser<br />
:* Spülmittel oder Klarspüler (Spülmaschine)<br />
:* Stahlwolle (Ako-Pads oder Abrazzo)<br />
:* Aceton<br />
:* Lötlack<br />
:* Kleinbohrmaschine (am besten mit Ständer) und entspr. Bohrer (z.B. 0,6mm/0,8mm/1,0mm/1,3mm)<br />
:* sicherheitshalber Schutzhandschuhe, Schutzbrille und eine Schürze, bzw. nicht gerade den Smoking, mit dem man mit dem/r Partner/in nächsten Abend chinesisch essen gehen wollte.<br />
<br />
[[Bild:LeiterplattenHerstellen-benötigetsMaterial.gif|640px|center]]<br />
<br />
Anfangs kann auch mit sog. Einsteigersets gearbeitet werden.<br />
<br />
=== Bestimmung der Belichtungszeit ===<br />
Die Belichtungszeit ist von vielen Faktoren abhängig:<br />
:* Stärke und Art der Lichtquelle<br />
:* Abstand der Lichtquelle zur Platine<br />
:* Material (unterschiedliches Basismaterial)<br />
<br />
Um die richtige Belichtungsdauer zu bestimmen, ist es sinnvoll einen sog. Belichtungstest durchzuführen:<br />
<br />
==== Belichtungsteststreifen ====<br />
<br />
'''Vorbereitung:''' Verwendet man eine Nitraphot-Lampe, wird noch ein Stativ benötigt, welches die Lampe etwa 25 cm über der Tisch-/Arbeitsfläche hält.<br />
<br />
Das '''Belichten''' kann '''bei normalem Tageslicht''' erfolgen; eine "Dunkelkammer" ist nicht nötig. Direktes Sonnenlicht sollte jedoch vermieden werden.<br />
<br />
[[Bild:LeiterplattenHerstellen-Belichtungsteststeifen.gif|400px]]<br />
<br />
Diesen Belichtungsteststeifen druckt man sich nun auf transparentes Material aus (bzw. verwendet '''Pausklar''' auf normalem Papier)<br />
<br />
[[Bild:Leiterplatten_Herstellen_01_Film-Layout.jpg|150px|right|Eine Vorlage für Platinen]]<br />
Dass der Ausdruck '''spiegelverkehrt''' ist, hat folgenden Grund: <br />
Wenn man den Ausdruck "seitenrichtig" auf die Fotoschicht legt, ist die Druckfarbe (Toner oder Tinte) direkt auf der Fotolack-Schicht und wird nicht durch die Filmschicht (Pergamentpapier) auf zwar kurzer aber mitunter signifikanter Distanz gehalten. Bei sehr feinen Leiterbahnen könnte sonst Streulicht die Leiterbahnränder auch belichten.<br />
<br />
Nun zieht man die Schutzschicht von der fotopositiv beschichteten Platine ab, legt darauf den Teststreifen und deckt mit etwas Lichtdichtem (zusätzliches, schwereres Papier) die Vorlage bis zur Markierung 3:50 ab.<br />
Obendrauf legt man nun noch eine unbeschichtete Glasplatte (Bilderrahmen-Glasscheibe), welche die "Filme" durch ihr Eigengewicht auf der Leiterplatte fixiert und andrückt. Den Timer stellt man auf 3:50 Minuten ein.<br />
Nun schaltet man gleichzeitig das Licht ein und startet den Timer.<br />
Alle 10 Sekunden zieht man das Abdeckpapier einen Schritt weiter vom Film, bis zur nächsten Markierung.<br />
<br />
Aufpassen dass der Film mit dem Teststreifenmuster und die Platine nicht verrutschen. Am Ende ('''Licht ausschalten''' nicht vergessen!) hat man dann eine mit verschiedenen Belichtungszeiten belichtete Platine. Diese wird im nächsten Schritt entwickelt.<br />
<br />
=== Entwickeln der belichteten Leiterplatte ===<br />
====Vorarbeiten====<br />
Hier kann man schnell und am meisten falsch machen: Eine zu stark angesetzte Entwicklerlösung und eine zu hohe Temperatur können einem alles schnell versauen. Mit der Zeit bekommt man allerdings ein Gefühl hierfür, so dass man ohne Thermometer auskommt. Es kann anfangs ruhig etwas mehr Wasser als empfohlen zum Verdünnen genommen werden, um die Entwicklung zu verlangsamen.<br />
<br />
Gängige Verdünnungen:<br />
<br />
:* NaOH: 10g auf 1 Liter Wasser (bei Bungard Platinen 20g/l).<br />
:* Seno Entwickler 4007 ist für 0,3 Liter Wasser fertig portioniert.<br />
<br />
Die Lösung wird nach Herstellerangaben angesetzt. Der Entwickler muss sich '''vollständig''' aufgelöst haben.<br />
<br />
Beim Ansetzen der Entwicklerlösung sollte man eine Schutzbrille tragen, da die Chemikalien insbesondere in fester Form, wenn sie ins Auge gelangen, zur Erblindung führen können.<br />
<br />
==== Entwickeln ====<br />
[[Bild:Leiterplatten_Herstellen_02_Entwickeln.jpg|150px|right|Entwickeln der Fotoschicht]]<br />
:* Zunächst legt man die belichtete Leiterplatte mit der beschichteten Seite nach oben in die Schale<br />
:* Den Entwickler bringt man auf angenehme Handwärme (etwa 25°C bis 30°C)<br />
::(ein paar (30-40) Sekunden in der Mikrowelle bei 600W)<br />
:* Dann wieder etwas abkühlen lassen und umrühren bzw. schütteln.<br />
:* Die Entwicklerlösung zu der Platine in die Schale gießen (möglichst in einem Schwung)<br />
:* nach kurzer Zeit (ein paar Sekunden) sollte der Fotolack an einigen Stellen "Wölkchen" bilden.<br />
:* Ein sehr weicher Pinsel und sehr vorsichtiges Abstreifen oder eine Bewegung des<br />
::Entwicklerbades lassen schnell die Konturen erkennen.<br />
:* Sobald man die Konturen klar erkennen kann (bei dem Testmuster natürlich nur ein Teil der gesamten Fläche) schnell die Platine aus dem Entwicklerbad nehmen und sofort mit klarem Leitungswasser abspülen. Ein paar Tropfen Spülmittel oder Klarspüler (Spülmaschine) lassen das Wasser ohne Fleckenbildung ablaufen.<br />
:* '''NICHT ABREIBEN!''' Feine Kratzer sind schneller drin als man meint.<br />
<br />
==== Gern gemachte Fehler ====<br />
{{FarbigerRahmen|<br />
Die gesamte Entwicklung sollte nach ca. 30 bis 45 Sek. abgeschlossen sein}}<br />
<br />
:* Dauert das Entwickeln wesentlich länger (>2:00 Min.) weil der Entwickler zu "schwach" oder zu kalt angesetzte wurde, kann es passieren, dass die Fotoschicht an ungewünschten Stellen wegen der längeren Tauchzeit "einweicht" und dann beim abspülen zu dünn wird oder sich ganz ablöst. Leiterbahnunterbrechungen sind die Folge.<br />
<br />
:* Geschieht die Entwicklung zu schnell und ist fast sofort nach dem Einfüllen des Entwicklers abgeschlossen, weil die Lösung zu "scharf" angesetzt wurde oder zu warm ist, hat man meist schon verloren, da auch die unbelichteten Leiterbahnen angegriffen worden sind. Bis man sein "gutes Stück" dann aus dem Bad genommen hat, ist meist schon alles weg.<br />
<br />
:* Wurde die Fotoschicht nicht ausreichend Belichtet, kann es passieren, dass der Fotolack nicht korrekt entwickelt werden kann. Dies würde zum einen eine längere Entwicklungszeit mit ihren Folgen (s. oben) nach sich ziehen oder zum anderen Kurzschlüsse durch Fotolackreste beim Ätzen verursachen.<br />
<br />
==== Die optimale Belichtungszeit ====<br />
[[Bild:Leiterplatten_Herstellen_03_Entwickelte-Fotoschicht.jpg|150px|right|Fertig entwickelte Leiterplatte]]Welche Belichtungszeit nun die Optimale ist, lässt sich nun aufgrund des entwickelten Belichtungstestmusters schnell erkennen. Saubere, scharfe Konturen und eine satte Lackschicht an den nicht belichteteten Stellen (Leiterbahnen) geben hierüber Aufschluss.<br />
<br />
Je öfter und länger man mit seinem Belichtungsgerät arbeitet, desto schwächer wird dessen UV-Ausbeute. Ist also die UV-Quelle schon länger in Betrieb, können die Belichtungszeiten etwas länger werden. Irgendwann werden die Ergebnisse immer schlechter, da dies jedoch ein schleichender Prozess ist und nicht plötzlich auftritt, bemerkt man die Qualitätsminderung meist nicht. Oft schiebt man dann die Schuld auf den Entwickler oder das Basismaterial, obwohl eigentlich die Lichtquelle die Ursache ist.<br />
<br />
=== Ätzen der entwickelten Leiterplatte ===<br />
[[Bild:Leiterplatten_Herstellen_04_Ätzen.jpg|150px|right|Ätzen in einer Ätzküvette]]Das Ätzen kann entweder in einer Schale erfolgen, ist jedoch wegen der schnellen Abkühlung des Ätzbades nicht besonders schnell, und nur für das Ätzen mit Fe(III)Cl empfehlenswert. Beim Ätzen mit NaPS muss der Ätzprozess in der Schale oft unterbrochen werden und das Ätzmittel wieder auf Temperatur gebracht werden. Eine Ätzküvette mit Heizung ist eine lohnenswerte Anschaffung. <br />
<br />
Wie man sich so eine '''Ätzküvette selbst bauen''' kann, ist in den Weblinks zu finden.<br />
Ansonsten kann man beim Ätzen eigentlich nicht viel falsch machen.<br />
:* Ätzbad sollte eine den Angaben gemäße Temperatur aufweisen und möglichst konstant gehalten werden. Das geht in einer Schale natürlich nur bedingt; Der Ätzvorgangang kann aber entgegen dem Entwicklungsvorgang durchaus mehrmals unterbrochen werden<br />
:* Dosierung des Ätzmittels gemäß Herstellerangaben. z.B. '''Natriumpersulfat''' ca. 200g bis '''250g für 1 Liter''' Wasser bzw. 100g bis '''125g für 0,5 Liter''' Wasser. Weniger Ätzlösung ist nicht empfehlenswert, da diese sonst zu schnell in die Sättigung kommt. Nachdem das Ätzmittel im vorgewärmten Wasser aufgelöst wurde, muss die Lösung wieder auf die '''Arbeitstemperatur von 45°C bis 50°C''' aufwärmt werden, bevor mit dem Ätzen begonnen wird.<br />
:* Bewegen des Ätzbades beschleunigt den Vorgang und begünstigt ein gleichmäßiges Abätzen der Kupferschicht<br />
:: Ätzküvetten sorgen durch einblasen von Luftperlen für eine ständige Umwälzung, ansonsten hat die Luftbeimengung keine Bedeutung (kein zusätzlicher Sauerstoff oder sonstige Gimmiks nötig)<br />
:* Sobald die Leiterplatte an den entsprechenden Stellen keine Kupferreste mehr aufweist, kann diese entnommen und sorgfältig gespült werden.<br />
:* Mit einer frisch angesetzten Ätzlösung sollte eine Platine (halbe Europaplatte 80mm x 100mm) unter optimalen Bediungungen etwa nach 5 Minuten, spätestens nach 10 Minuten, fertig geätzt sein.<br />
<br />
=== Nachbearbeiten der fast fertigen Leiterplatte ===<br />
[[Bild:Leiterplatten_Herstellen_05_Fertige-Platine.jpg|150px|right|Fertig geätzt, gebohrt und geschnitten]] Die nun fertig geätzte Platine muss noch etwas nachbearbeitet werden.<br />
:* Abschnitte durch Sägen und/oder Feilen geben der Platine ihre finale Form (Konturen!)<br />
:* Bohrungen durch die Lötaugen (Pads) damit die Bauteile hindurchgesteckt werden können<br />
:* Entschichten der Platte<br />
:: den verbliebenen Fotolack mit Stahlwolle unter fließendem Wasser entfernen <br />
:: Bohrgrate werden hiermit ebenfalls geglättet, außerdem werden die Leiterbahnen schön blank<br />
:* Besonders hartnäckige Lackreste oder Fett (Fingerabdrücke) lassen sich mit Aceton entfenen <br />
:: Vorsicht: Aceton greift die meisten Kunststoffe an<br />
:* Beschichten mit '''Lötlack''' erleichtert zum einen das saubere Einlöten der Bauelemente bzw. die Lotannahme und schützt zum anderen auch die Leiterbahnen vor Korrosion (Grünspan)<br />
<br />
----<br />
<br />
== Aufbewahrung der Chemikalien ==<br />
Die Ätzlösung und der Entwickler können in den Saugflaschen aufbewahrt werden, diese Saugflaschen eigen sich sehr gut, um die Lösungen aus flachen und tiefen Behältnissen (Schale) tropf- und verlustfrei abzusaugen. Natürlich kann auch ein Trichter mit einem anderen Behältnis dafür herhalten.<br />
Die Behälter sollten je nach Chemikalie wegen Gasentwicklung (Explosionsgefahr!) nicht unbedingt luftdicht verschlossen werden! Ansonsten können die Lösungen im berühmten dunklen und kühlen Ort gelagert werden.<br />
<br />
{{FarbigerRahmen|<br />
Die Ätzlösungen/Chemikalien dürfen nicht in Trinkflaschen, Nahrungsmittelbehältern oder Gefäßen, die letzteren ähneln, gefüllt werden!<br />
<br />
-> '''Vergiftungsgefahr durch Verwechslung!'''}}<br />
<br />
== Gutgemeinte Tipps ==<br />
<br />
Nur wenn die Vorgänge einigermaßen reproduzierbar sind, kann man mit annähernd gleichbleibenden Ergebnissen rechnen. Je genauer man sich an die Konzentrationen und Temperaturen der Lösungen hält und diese auch immer wieder erreichen kann, desto weniger Ausschuss produziert man. Es kann durchaus sein, dass Platinen unterschiedlicher Hersteller oder Platinen aus anderen Materialien (Pertinax oder Epoxid) sowie deren Alter (Lagerdauer) gravierend unterschiedliche Resultate liefern.<br />
<br />
'''Also:'''<br />
* Sämtliche Parameter, die zum Erfolg geführt haben, notieren. Beispielsweise beim Belichten: Abstand der Lichtquelle zur Platine, Belichtungsdauer, Typ der Folie, auf die gedruckt wurde.<br />
* Lösungen immer in möglichst gleicher Konzentration anmischen (Messbecher und genaue Waage verwenden)<br />
* Temperaturen in gewissen Grenzen einhalten (Thermometer verwenden)<br />
* Gleichartige Materialien/Platinen verwenden <br />
* Gleichartige Ätzmittel und Entwickler verwenden<br />
<br />
Nur so kann man gleichwertige Ergebnisse erwarten, und die Platinen gelingen jedes Mal auf Anhieb.<br />
<br />
== Entsorgen der Chemikalien ==<br />
[[Bild:Aetzend.gif|left|Ätzend]][[Bild:Geshschaedl.gif|left|Gesundheitsschädlich]]Die Chemikalien bitte '''auf gar keinen Fall''' in das Abwasser kippen! Die in den Klärwerken eingesetzten Bakterien können auch durch geringste Mengen der Chemikalien und des darin gelösten Kupfers absterben. Es könnte also mit nur einer Ätzküvette eine kleine Kläranlage komplett "kippen", und dann kann es richtig teuer werden. Anleitungen, wie sie immer noch im Internet zu finden sind und welche einem eine unproblematische Entsorgung über das Abwasser bei entsprechender Verdünnung suggerieren, sind nach aktueller Gesetzeslage nicht mehr erlaubt!<br />
<br />
* Bitte die Chemikalien zur Reststoffverwertung / '''Sondermüllentsorgung''' / "Recyclinghof" bringen. <br />
* Dies ist '''für Privatleute meist unentgeltlich''' und erspart einem viel Ärger.<br />
<br />
==Autor==<br />
--[[Benutzer:Darwin.nuernberg|Darwin.nuernberg]] 23:38, 20. Mai 2006 (CEST)--<br />
<br />
==Siehe auch==<br />
* [[Ätzgerät Bauanleitung]]<br />
* [[Platinenherstellung]] mit der "Bügelmethode"<br />
* [[Leiterbahnbreiten]]<br />
* [[Leiterplatten Entwicklung]]<br />
<br />
==Weblinks==<br />
* [http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=7415 Projekt im Roboternetz: Bauanleitung für eine Ätzküvette]<br />
* [http://www.blafusel.de/misc/uv.html Bauanleitung für eine Low-Cost-UV-Belichtungsanlage]<br />
<br />
[[Kategorie:Elektronik]]<br />
[[Kategorie:Grundlagen]]<br />
[[Kategorie:Praxis]]</div>MichaelFreyhttps://rn-wissen.de/wiki/index.php?title=Leiterplatten_Entwicklung_-_Programme&diff=12432Leiterplatten Entwicklung - Programme2007-07-14T06:48:54Z<p>MichaelFrey: </p>
<hr />
<div>== Vorwort ==<br />
Leiterplatten Entwicklung war früher ein, für den Hobbyanwender, recht mühsames unterfangen.<br />
Entweder wurden die Leiterbahnen und "Pad's" direkt auf die Kupferschicht, mit einem ätzfesten Stift gezeichnet oder zunächst auf Folie/Papier gezeichnet und dann mittels Fototransfer auf die Platine übertragen.<br />
<br />
Heute stehen hierfür sehr umfangreiche aber dennoch mehr oder weniger leicht bedienbare Programme zur Verfügung, welche einen Entwurf von Leiterplatten erleichtern.<br />
<br />
Oft stehen verschiedene Versionen z.T. auch kostenlose Testversionen oder Versionen für den Hobby-Anwender zur Verfügung.<br />
<br />
Hier eine Liste von freien und kommerziellen Programmen welche es erlauben Leiterplatten mit dem Computer zu designen.<br />
<br />
----<br />
<br />
: '''Hier soll nicht der Umgang (Bedienungsanleitung) mit den beschriebenen Programmen sondern die Verfügbarkeit von verschiedenen Programmen und deren Usability im Vordergrund stehen.'''<br />
<br />
----<br />
<br />
<br />
== Die wohl bekanntesten PCB Programme: ==<br />
:* EAGLE<br />
:* TARGET<br />
:* Sprint-Layout<br />
:* PCB-POOL®Edition<br />
:* ORCAD<br />
:* KiCAD<br />
=== Weitere Programme ===<br />
'''z.T. kommerzielle, limitierte, freie und z.T nicht mehr verfügbare Cad Programme'''<br />
:* Protel <br />
:: nicht mehr verfügbar (jetzt Altium)<br />
:* Altium Designer<br />
:* PROTEUS<br />
:* ULTIBOARD<br />
:* EASY PC<br />
:* EDWIN<br />
:* QUICK ROUTE<br />
:* ARIADNE<br />
:* AUTOENGINEER<br />
:* BPECS32<br />
:* CADSTAR<br />
:* CADint<br />
:* CIRCUIT LAYOUT<br />
:* CIRCUIT CREATOR<br />
:* CIRCAD<br />
<br />
Diese Liste kann noch weitergeführt werden, was allerdings leicht dazu führt den Überblick zu verlieren.<br />
Diese Liste wird/kann im Laufe der Zeit mit Kommentaren und Erfahrungswerten versehen bzw. aktualisiert werden.<br />
Auch Streichungen und Erweiterungen sind gestattet (bitte nicht übertreiben).<br />
<br />
<br />
== AddOns für diese Programme ==<br />
:* Eagle3D<br />
:: ein kostenloses 3D Zusatzprogramm für Eagle<br />
<br />
== Bewertungen und Infos zu den gelisteten Programmen ==<br />
''Info, Empfehlungen und Kritik zu den vorgestellten Programmen''<br />
<br />
::* EAGLE<br />
::** Dieses Programm kann man hier im Roboternetz wohl als 1. Wahl bezeichnen, da die meisten Anwender hier hiermit arbeiten. Die kostenlose Version erlaubt Platinen bis zu 80mm x 100mm mit Schaltplan und Autorouter auf zwei Signal-Ebenen (Dual-Layer) zu erstellen. Auch eine sog. Studenten-Version (aber nicht nur diese) ist zu sehr guten Konditionen zu erwerben.<br />
::** Nachdem die Einarbeitungsphase überwunden wurde, sehr gut zu bedienendes Tool.<br />
::** Der Autorouter liefert (wie viele andere Programme auch) nur teilweise brauchbare Ergebnisse.<br />
::** Gut ist die Verlinkung von Schaltplan und Board. Änderungen, die man im Schaltplan macht, werden automatisch auch in der Board-Ansicht vorgenommen. Dadurch bleiben Schaltplan und Board konsistent (funktioniert aber nur, wenn beide Ansichten geöffnet sind).<br />
::* Eagle3D<br />
::** bereits in der Entwurfsphase kann einem dieses Tool bei Design-Fehlern (LookOut) gute Dienste leisten<br />
::** leider ist das erstellen von eigenen Bauteilen (noch) etwas aufwendig.<br />
::** Auch eine Animation (Flug über die Platte) soll möglich sein ...<br />
::** Sieht einfach klasse aus und macht auch Spaß damit zu 'Spielen'<br />
::: '''INFO:''' Benötigt weitere Zusatzsoftware (auch als Freeware/GNU), mehr dazu auf der Homepage<br />
<br />
== Weblinks ==<br />
'''Programme'''<br />
* [http://www.cadsoft.de/ Eagle Homepage von CadSoft]<br />
* [http://www.ibfriedrich.com/home.htm Target 3001 Homepage von Ing.-Büro FRIEDRICH]<br />
* [http://www.abacom-online.de/html/demoversionen.html Sprint-Layout Homepage von ABACOM Ingenieurbüro GbR]<br />
* [http://www.pcb-pool.de/html_de/de_service_1.htm free PCB-POOL Homepage von Beta LAYOUT GmbH]<br />
* [http://www.altium.com/Products/AltiumDesigner/ AltiumDesigner Homepage von Altium Limited]<br />
* [http://www.lis.inpg.fr/realise_au_lis/kicad/ KiCAD-Homepage]<br />
'''AddOn's'''<br />
* [http://www.matwei.de/doku.php?id=de:eagle3d:eagle3d Eagle3D Homepage von Matthias Weißer]<br />
<br />
<br />
<!-- unsichtbarer Kommentar: http://www.pcb-pool.de/html_de/de_service_1.htm --><br />
--[[Benutzer:Darwin.nuernberg|Darwin.nuernberg]] 12:39, 3. Feb 2007 (CET)<br />
{{Ausbauwunsch|Was Euch noch dazu einfällt, Erfahrungen mit diesen Programmen usw., Kommentare}}<br />
<br />
<br />
==Siehe auch==<br />
* [[Leiterplatten herstellen]]<br />
* [[CAD]]<br />
* [[PCB]]<br />
<br />
[[Kategorie:Grundlagen]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Software]]</div>MichaelFreyhttps://rn-wissen.de/wiki/index.php?title=Benutzer:MichaelFrey&diff=12431Benutzer:MichaelFrey2007-07-14T05:23:26Z<p>MichaelFrey: </p>
<hr />
<div>[[commons:MichaelFrey]]</div>MichaelFreyhttps://rn-wissen.de/wiki/index.php?title=Bascom&diff=12430Bascom2007-07-14T05:22:55Z<p>MichaelFrey: war wohl so gemeint</p>
<hr />
<div>==AVR Bascom Basic==<br />
<br />
Bascom ist eine komplette Basic-Entwicklungsumgebung für die verschiedensten AVR Controller bzw. [[Controllerboard|Controllerboards]].Er bietet ein ungeheuer großes Leistungsvermögen und besonders anwenderfreundliche Entwicklungsumgebung. <br />
Eine kostenlose Version, die bis zu 4 KB (das ist schon einiges bei einem Controller) keinerlei Einschränkungen besitzt, findet man auf der Seite des Herstellers <br />
<br />
[http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=99&Itemid=54 Bascom-Download]<br />
<br />
Nach dem Download müssen alle Dateien entpackt und das SETUP-Programm aufgerufen werden. Danach steht ein Basic-Entwicklungssystem zur Verfügung das alles beinhaltet was für die AVR-Programmierung notwendig ist. Zum Beispiel: Editor mit Befehlsvorschlag, Simulator, Terminalprogramm, Avr-FuseBit Einstellung, integriertem Assembler, eingebauten Programmer zur Übertragung des Programmcode usw.<br />
<br />
Als erstes solltet ihr unter dem Menü Options / Compiler den Zielprozessor angeben. Fast alle gängigen AVR Controller können programmiert werden.<br />
In diesem Dialog können auch noch viele weitere Einstellungen vorgenommen werden. Eigentlich ist das alles selbsterklärend. <br />
<br />
<br />
<br />
http://www.shop.robotikhardware.de/shop/catalog/images/artikelbilder/bascom/bascom.gif<br />
<br />
==Befehlsübersicht von Bascom==<br />
<br />
<br />
===Verzeigungen und Strukturbefehle===<br />
<pre><br />
IF, THEN, ELSE, ELSEIF, END IF, DO, LOOP, WHILE, WEND, UNTIL,<br />
EXIT DO, EXIT WHILE, FOR, NEXT, TO, STEP, EXIT FOR,<br />
ON .. GOTO/GOSUB, SELECT, CASE.<br />
</pre><br />
<br />
===Ein- und Ausgabebefehle===<br />
<pre><br />
PRINT, INPUT, INKEY, PRINT, INPUTHEX, LCD, UPPERLINE, LOWERLINE,<br />
DISPLAY ON/OFF, CURSOR ON/OFF/BLINK/NOBLINK, HOME, LOCATE, <br />
SHIFTLCD LEFT/RIGHT, SHIFTCURSOR LEFT/RIGHT, CLS, DEFLCDCHAR, WAITKEY,<br />
INPUTBIN, PRINTBIN, OPEN, CLOSE, DEBOUNCE, SHIFTIN, SHIFTOUT,<br />
GETATKBD, SPC, SERIN, SEROUT<br />
</pre><br />
<br />
===Mathematische Funktionen===<br />
<pre><br />
AND, OR, XOR, INC, DEC, MOD, NOT, ABS, BCD, LOG, EXP, SQR, SIN,COS,<br />
TAN, ATN, ATN2, ASIN, ACOS, FIX, ROUND, MOD, SGN, POWER, RAD2DEG,<br />
DEG2RAD, LOG10, TANH, SINH, COSH.<br />
</pre><br />
<br />
===I2C-Bus===<br />
<pre><br />
I2CSTART, I2CSTOP, I2CWBYTE, I2CRBYTE, I2CSEND, I2CRECEIVE.<br />
</pre><br />
<br />
===1WIRE Bus===<br />
<pre><br />
1WWRITE, 1WREAD, 1WRESET, 1WIRECOUNT, 1WSEARCHFIRST, 1WSEARCHNEXT.<br />
</pre><br />
<br />
===SPI-Bus===<br />
<pre><br />
SPIINIT, SPIIN, SPIOUT, SPIMOVE.<br />
</pre><br />
<br />
===Datum und Zeitfunktionen===<br />
<pre><br />
DayOfWeek, DayOfYear, SecOfDay, SecElapsed, SysDay, SysSec, SysSecElapsed,<br />
Time, Date, Time$, Date$<br />
</pre><br />
<br />
===Disk/Drive===<br />
<pre><br />
DriveReadSector, DriveWriteSector, DriveInit, DriveGetIdentity, <br />
DriveReset, DriveCheck.<br />
</pre><br />
<br />
===Dateisystem Befehle===<br />
<pre><br />
InitFileSystem, DiskSize, DiskFree, Kill, Dir, Name, ChDir, MkDir, RmDir<br />
FileLen, FileDateTime, FileDate, FileTime, GetAttr<br />
FreeFile, Open, Close, Flush, Print, Write, Input, Line Input, Get, Put, Seek<br />
EOF, LOC, LOF, FileAttr<br />
BLoad, BSave<br />
</pre><br />
<br />
===Interrupt Programmierung===<br />
<pre><br />
ON INT0/INT1/TIMER0/TIMER1/SERIAL, RETURN, ENABLE, DISABLE, <br />
COUNTERx, CAPTUREx, INTERRUPTS, CONFIG, START, LOAD.<br />
</pre><br />
<br />
===Bit Manipulation===<br />
<pre><br />
SET, RESET, ROTATE, SHIFT, BITWAIT, TOGGLE.<br />
</pre><br />
<br />
===Variablen===<br />
<pre><br />
DIM, BIT , BYTE , INTEGER , WORD, LONG, SINGLE, DOUBLE, STRING , DEFBIT,<br />
DEFBYTE, DEFINT, DEFWORD.<br />
</pre><br />
<br />
===Sonstiges===<br />
<pre><br />
REM, ' , SWAP, END, STOP, CONST, DELAY, WAIT, WAITMS, GOTO, GOSUB, <br />
POWERDOWN, IDLE, DECLARE, CALL, SUB, END SUB, MAKEDEC, MAKEBCD, <br />
INP,OUT, ALIAS, DIM , ERASE, DATA, READ, RESTORE, INCR, DECR, PEEK,<br />
POKE, CPEEK, FUNCTION, READMAGCARD, BIN2GRAY, GRAY2BIN, CRC8, CRC16,<br />
CHECKSUM.<br />
</pre><br />
<br />
===Compiler Direktiven===<br />
<pre><br />
$INCLUDE, $BAUD and $CRYSTAL, $SERIALINPUT, $SERIALOUTPUT, $RAMSIZE,<br />
$RAMSTART, $DEFAULT XRAM, $ASM-$END ASM, $LCD, $EXTERNAL, $LIB.<br />
</pre><br />
<br />
===String Manipulationen===<br />
<pre><br />
STRING, SPACE, LEFT, RIGHT, MID, VAL, HEXVAL, LEN, STR, HEX, <br />
LTRIM, RTRIM, TRIM, LCASE, UCASE, FORMAT, FUSING, INSTR. <br />
</pre><br />
<br />
==Erläuterung grundlegender Bascom-Funktionen==<br />
Hier einige kleine Programme welche die grundlegende Funktionen und Syntax zeigen. Es wird immer ein komplettes Programm gezeigt, so das man dieses einfach kopieren und austesten kann. Bascom Programme bestehen in der Regel fast immer nur aus einer Sourcecode-Datei (obwohl es auch anders geht), also nicht wie bei der Programmiersprache C üblich aus mehreren Dateien (Header-Dateien etc.). Auch das macht Bascom besonders einsteigerfreundlich.<br />
<br />
<br />
===Das berühmte Hello World Programm in Bascom===<br />
Da bei einem Controllerboard gewöhnlich kein Bildschirm zur Verfügung steht, verbindet man das Board über einfaches RS232 Kabel (nur 3 Drähte sind notwendig) mit dem PC. Ein [[Terminalprogramm]] (Bascom hat bereits eines in der Entwicklungsumgebung integriert) zeigt nun auf dem Bildschirm alle Ausgaben des Boardes (z.B. des Print Befehles) an. Eine Methode die zum Debuggen von Programmen oft genutzt wird. <br />
<br />
<pre><br />
$regfile = "m32def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32<br />
$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen <br />
$swstack = 32 'wirklich nötig werden<br />
$hwstack = 32<br />
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes<br />
<br />
$baud = 9600 'Die Baudrate für RS232 Ausgabe. <br />
'Sie muss auch bei PC Terminalprogramm identisch sein<br />
do<br />
Print "**** RN-CONTROL sagt Hello World *****"<br />
wait 1<br />
loop<br />
</pre><br />
<br />
===Einen I/O Port umschalten===<br />
Die wohl wichtigste Aufgabe beim Controller ist die Programmierung der Ports. Also das Bestimmen des Ausgangspegels eines Controllerpins. <br />
Bascom verfügt über zwei Möglichkeiten die Ports zu beeinflussen, die sogenannten High-Level Befehle und die Registerzuweisungen wie sie in C üblich sind.<br />
Zuerst ein Programm mit High-Level Anweisung. Ein [[Pin]] wird als Ausgang definiert und dann fortlaufend ein- und ausgeschaltet. Ist über einen Widerstand eine LED an diesem Controllerpin angeschlossen (so im Falle von [[RN-Control]]), so ergibt sich ein Blinken<br />
<br />
<pre><br />
$regfile = "m32def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32<br />
$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen <br />
$swstack = 32 'wirklich nötig werden<br />
$hwstack = 32<br />
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes<br />
<br />
$baud = 9600 'Die Baudrate für RS232 Ausgabe. <br />
'Sie muss auch bei PC Terminalprogramm identisch sein<br />
<br />
Config Pinc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
<br />
do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
loop<br />
</pre><br />
<br />
Man kann das ganze noch etwas übersichtlicher gestalten, indem man dem Port-[[Pin]] im Programmcode eine andere Bezeichnung gibt, z.B. LED, wie in dem folgenden Beispiel. Durch den Alias-Befehl wird das ganze Programm wesentlich klarer, so daß einige Kommentarzeilen durchaus entfallen könnten. Man sollte sich daher angewöhnen, den Alias-Befehl auch zu nutzen<br />
<br />
<pre><br />
$regfile = "m32def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32<br />
$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen <br />
$swstack = 32 'wirklich nötig werden<br />
$hwstack = 32<br />
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes<br />
<br />
$baud = 9600 'Die Baudrate für RS232 Ausgabe. <br />
'Sie muss auch beim PC Terminalprogramm identisch sein<br />
<br />
Config Pinc.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
Led Alias Portc.0 <br />
<br />
do<br />
Led = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Led = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
loop<br />
</pre><br />
<br />
<br />
Das nachfolgende Beispiel kommt ohne den High-Level Befehl CONFIG aus, indem direkt in das Datenrichtungsregister des Controllers geschrieben wird. In diesem Register steht jedes Bit für den Betriebsmodus eines Pins. Die 1 bedeutet, der Pin ist auf Ausgang geschaltet, 0 bedeutet Eingang. Diese Schreibweise hat den Nachteil, das sie ein wenig unübersichtlicher ist, man kann sehr schnell [[Pin]]´s verwechseln. Vorteil ist allerdings, daß alle 8 [[Pin]]´s eines Portes gleichzeitig mit einer Zuweisung definiert werden können. Es gibt daher Programmierer, die diese Methode bevorzugen, insbesondere wenn Sie auch Controller in C programmieren. Das Ergebnis ist in jedem Fall gleich: ein Blinklicht<br />
<br />
<pre><br />
$regfile = "m32def.dat" 'Die Anweisung bestimmt Controllertyp, hier [[AVR]] Mega 32<br />
$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen <br />
$swstack = 32 'wirklich nötig werden<br />
$hwstack = 32<br />
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes<br />
<br />
$baud = 9600 'Die Baudrate für RS232 Ausgabe. <br />
'Sie muss auch bei PC Terminalprogramm identisch sein<br />
<br />
DDRC = &b00000001 'Port PC0 wird als Ausgang definiert, man hätte hier auch<br />
'DDRC =1 schreiben können. Man verwendet aber oft die Bitdarstellung<br />
'um alle 8 Bit besser überschauen zu können<br />
<br />
do<br />
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet<br />
Waitms 100<br />
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet<br />
Waitms 100<br />
loop<br />
</pre><br />
<br />
===I/O-Port als Eingang===<br />
Im nachfolgenden Beispiel möchten wir ein PIN als Eingang verwenden und den Zustand eines Tasters abfragen. Dazu werden die Pole eines Tasters einmal mit GND (Masse) und einmal mit einem Port PA0 verbunden. Wir hätten auch jeden anderen Port nehmen können, da beim [[Avr]] Controller nahezu alle Pins auch auf Eingang geschaltet werden können. Der Übersichtlichkeit halber verwenden wir wieder den Config und den Alias Befehl um den Port in Taster umzutaufen.<br />
Etwas gewöhnungsbedürftig ist in Bascom das man bei der Definition von Eingangsports nicht PORT sondern PIN beim Config-Befehl angibt. Eine weitere Besonderheit dieses Beispiels ist der Befehl ''Porta.0=1'' beim EIngabeport. Dieser Befehl sorgt dafür das im Controller der Eingangsport über einen hohen Widerstand (ca. 100k) mit High (5V) verbunden wird. Dadurch erreicht man, das bei unbelegtem Port, in unserem Fall ungedrückte Taste, immer ein High Signal gelesen wird. Erst wenn der Taster gedrückt wird, wird diese Spannung quasi kurzgeschlossen und so ein LOW angelegt. Das ganze Beispiel bewirkt nun das bei gedrückter Taste die LED leuchtet und beim loslassen wieder aus geht. <br />
<br />
<pre><br />
$regfile = "m32def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32<br />
$framesize = 32 'Stackanweisungen, die eigentlich nur bei größeren Programmen <br />
$swstack = 32 'wirklich nötig werden<br />
$hwstack = 32<br />
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes<br />
<br />
$baud = 9600 'Die Baudrate für RS232 Ausgabe. <br />
'Sie muss auch bei PC Terminalprogramm identisch sein<br />
<br />
<br />
Config Portc.0 = Output 'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)<br />
Led Alias Portc.0 <br />
Config Pina.0 = Input 'Ein Pin (PA0) wird als Eingang definiert<br />
Taster Alias Pina.0<br />
Porta.0=1 'Interner Pullup Widerstand ein<br />
<br />
do<br />
if taster=0 then<br />
Led=1 'Pin wird auf High, also 5V geschaltet<br />
else<br />
Led = 0 'Pin wird auf Low, also 0V geschaltet<br />
endif<br />
Waitms 100<br />
loop<br />
</pre><br />
<br />
<br />
==Tips und Tricks==<br />
<br />
===Wie man besonders kompakten Code erzeugt===<br />
* Beachte das 32Byte HW-Stack-Minimum für ISR. <br />
* Vermeide LOCAL Variable <br />
* Vermeide SUB / FUNCTION mit Parameterübergabe <br />
* Vermeide Bit-Variable <br />
* Vermeide a>b, verwende a>=c oder b<a (RISC-Prozessor kennt kein größer als) <br />
* Vermeide Double/Single/Long etc. und dazugehörige Matheoperationen (am besten nur Byte und Word)<br />
<br />
==Siehe auch==<br />
* [[Bascom - Erstes Programm in den AVR Controller übertragen]]<br />
* [[RN-Control]]<br />
* [[RNBFRA-Board]]<br />
* [[Avr]]<br />
* [[RN-Board FAQ-Seite]] mit wichtigen Einstiegstips<br />
* [[Sourcevergleich]] - GCC und Bascom<br />
* [[Bascom State Machine Menu]] Umfangreiche Menüs in Bascom mit einer State Machine programmieren<br />
* [[Bascom Inside]]<br />
* [[Bascom Libraries]]<br />
* [[Assembler Einführung für Bascom-User]]<br />
* [[:Kategorie:Quellcode Bascom]]<br />
<br />
==Literatur==<br />
* [[Buchvorstellungen|Programmieren der AVR RISC Mikrocontroller mit BASCOM-AVR; 2. Auflage]]<br />
* [[Buchvorstellungen|Bascom–AVR, Autor M.Meissner - Beschreibung der Bascom IDE]]<br />
* [[Buchvorstellungen|AVR-Microcontroller Lehrbuch – Ein tieferer Einstieg in Bascom und AT-MEGA8 und ähnliche AVR-Controller]]<br />
* [[Buchvorstellungen|BASCOM-AVR Sprachbefehle - Ein umfangreiches Werk welches alle Befehle beschreibt ]]<br />
* [[Buchvorstellungen|Mega16 Programmierung am Beispiel des RNBFRA-Boards]]<br />
<br />
<br />
<br />
==Weblinks==<br />
* [http://www.mcselec.com Niederländischer Hersteller MCSELEC]<br />
* [http://www.robotikhardware.de Bezugsquelle in Deutschland u.a. Robotikhardware.de] <br />
* [http://www.roboternetz.de/phpBB2/viewtopic.php?t=1511 Bauanleitungen zu Experimentier- und Roboterboards]<br />
* [http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=169 RN-Timer Windows Programm zur Timer-Berechnung]<br />
<br />
<br />
<br />
[[Kategorie:Microcontroller]]<br />
[[Kategorie:Software]]<br />
[[Kategorie:Grundlagen]]<br />
[[Kategorie:Robotikeinstieg]]<br />
[[Kategorie:Praxis]]<br />
[[Kategorie:Quellcode Bascom]]</div>MichaelFrey