Bascom Basic Messen, Steuern, Regeln und Robotertechnik mit den AVR-Controllern
Mit 161 Abbildungen
7
Inhaltsverzeichnis 1
Die CD-ROM zum Buch 1.1 Inhalt der CD-ROM 1.2 GPL (General Public License) 1.3 Systemvoraussetzungen 1.4 Updates und Support
13 13 13 13 13
2
Mikrocontroller-Grundlagen 2.1 Aufbau und Funktionsweise 2.2 Die CPU 2.3 Arbeits- und Programmspeicher 2.4 Peripherie
15 16 16 17 17
3
Mikrocontroller-Programmierung im Allgemeinen 3.1 Was ist ein Programm? 3.2 Programmierung in Basic 3.3 Konzept von Basic 3.4 Vor- und Nachteile von Basic 3.5 Programmierung in Assembler
19 19 19 20 20 20
4
Übersicht über die Atmel-8-Bit-Mikrocontroller 4.1 AT90Sxxx 4.2 ATmega 4.3 ATTiny 4.4 XMega
23 23 23 24 24
5
Der ATmega88 für die Experimente und seine Grundbeschaltung für den Betrieb 5.1 Speicher 5.2 Die interessantesten Pins des ATmega88 auf einen Blick 5.3 Grundschaltung für den Betrieb 5.4 ADC (Analog Digital Converter) 5.5 PWM (Pulse Width Modulation) 5.6 UART (Universal Asynchronous Receiver Transmitter) 5.7 IRQ (Interrupt) 5.8 Stromversorgung des Controllers 5.9 Resetbeschaltung
25 25 26 27 28 28 28 28 29 29
8
Inhaltsverzeichnis
5.10
Oszillator
29
5.11
ISP-Anschluss zur Programmierung
30
6
Programmiergeräte
33
7
Interessante AVR-Boards für den Einstieg 7.1 RN-CONTROL 7.2 RN-Mega8PLUS 7.3 RN-MINICONTROL BASCOM installieren
37 37 38 40 Al
Der Basic-Compiler - BASCOM 9.1 Landessprache auswählen 9.2 Die BASCOM-IDE 9.3 BASCOM-Hilfe 9.4 BASCOM-Einstellungen
47 47 48 49 50
10 Der erste Hardware-Test »Es blinkt« 10.1 Was haben wir getan?
53 58
11 Grundlagen des Programmierens 11.1 Bits und Bytes
59 59
8 9
11.2 11.3 11.4
Grundsätzlicher Aufbau eines Programms Sequenzieller Programmablauf Interrupt-gesteuerter Programmablauf
12 BASCOM-AVR Basic - Programmierkurs 12.1 Der Aufbau eines BASCOM-Programms 12.2 Testaufbau mit MAX232 12.3 Testaufbau mit FTDI FT232RL 12.4 Test der seriellen Ausgabe 12.5 Der Simulator 12.6 Die Hardware-Simulation 12.7 Kommentare im Quelltext 12.8 Datentypen und Variablen 12.9 Lokale und globale Variablen 12.10 Variablen-Zuweisung 12.11 Arrays 12.12 Operatoren 12.13 Kontrollstrukturen 12.13.1 If Then - End if 12.13.2 If Then - Else - End if
Select Case .......................................................................... 78 Schleifen ............................................................................. 79 For Next ............................................................................... 79 Do Loop und Do Until ........................................................... 80 While Wend ......................................................................... 82 Funktionen, Prozeduren und Labels ..................................... 82 Subroutinen ......................................................................... 83 Funktionen .......................................................................... 84 Gosub .................................................................................. 85 Goto .................................................................................... 85 On ....................................................................................... 86 String und String-Bearbeitung .............................................. 87 Strings .................................................................................87 Ucase .................................................................................. 88 Lcase ...................................................................................88 Bin ....................................................................................... 88 Hex ...................................................................................... 89 Hexval ................................................................................. 89 Val ....................................................................................... 90 Str ....................................................................................... 90 String ................................................................................... 90 Space .................................................................................. 91 Fusing .................................................................................. 91 Format ................................................................................. 91 Len ...................................................................................... 92 Instr ..................................................................................... 93 Mid ...................................................................................... 93 Split ..................................................................................... 94 Left ...................................................................................... 94 Right .................................................................................... 95 Ltrim .................................................................................... 95 Rtrim .................................................................................... 96 Trim ..................................................................................... 96
13 Input/Output-Konfiguration und Port-Setzen ..................................... 97 14 Timer als Timer verwenden .............................................................. 105 15 Timer als Counter verwenden ........................................................... 111 16 Der Analog-Digital-Wandler (ADC) .................................................... 113 16.1 Verwendung des ADC. ........................................................ 116
10
Inhaltsverzeichnis
17
Externe Interrupts
119
18
Die UART-Schnittstelle 18.1 Ein- und Ausgeben von Daten (Input, Inkey, Print) 18.2 Software-UART
123 125 127
19 Steep Modes 20
129
Weitere Experimente und praktische Anwendungen
133
20.1
Taster entprellen
133
20.2 20.3 20.4 20.5 20.6 20.7 20.8
Einschaltverzögerung Ausschaltverzögerung LEDs an den Pins des Mikrocontrollers Größere Verbraucher mit Transistoren schalten Tonerzeugung mit dem Befehl Sound Töne über den 8-Bit-TimerO erzeugen Morsecode-Generator
136 138 139 142 144 146 148
20.9
Impulszähler mit dem 8-Bit-TimerO
151
20.10 20.11 20.12 20.13 20.14 20.15 20.16 20.17
Impulslängenmessung PWM (Pulse Width Modulation) DAC mit PWM-Ports Transistor-LED-Dimmer LED-Dimmer mit dem 8-Bit-TimerO Softer Blinker Zufallszahlen mit BASCOM Überwachung des Personalausgangs
Kapazitätsmesser mit Autorange Potenziometer professionell auslesen State Machine 6-Kanal-Vottmeter Spannungs-Plotter selbst programmiert StampPlot - der Profi-Daten logger zum Nulltarif Steuern über VB.NET Leuchtdiodentester GPS-Mäuse auslesen Temperaturschalter Temperaturmessung mit dem LM335 MIN/MAX-Thermometer Temperatur-Logger
LCDs und ihre Verwendung LC-Display - Grundlagen Polarisation von Displays Statische Ansteuerung, Multiplexbetrieb Blickwinkel 6 Uhr/12 Uhr Reflektiv, transflektiv, transmissiv Der Controller des LC-Displays Display vom Displaycontroller ansteuern Kontrasteinstellung des Displays Der Befehlssatz der HD44780- und KS0066Controllerund kompatibler Typen Der Zeichensatz Pin-Belegung der gängigen LCDs So wird das Display mit dem MikroController angesteuert Initialisierung der Displays Der Anschluss am MikroController Der erste Test mit BASCOM Die LCD-Routinen von BASCOM Eigene Zeichen mit BASCOM erstellen Der l2C-Bus LCDs überden PC-Bus verbinden l2C-TemperatursensorLM75 Temperatursensor DS1621 l2C-Portexpander mit PCF8574 Ultraschaltsensoren zur Entfernungsbestimmung DerSRF02-Ultraschallsensor Auslesen der Entfernungsdaten Die l2C-Adresse des SRF02 ändern Ultraschallsensor SRF08 Servos Schrittmotoransteuerung Impulsgeber mit der Lichtschranke CNY70 Impulsgeber mit Reflexlichtschranke SFH-9102 Ein GPS-Navigationssystem für Roboter ATmega32 als Navigator Motoransteuerung Track-Points programmieren Mikrocontrollergesteuerter Rasenmähroboter Das Chassis Das Mähwerk Sensoren Der elektronische Gartenzaun RC5-4-Kanal-Relaiskarte
20.49.1 Wie funktioniert die IR-Fernbedienung? 20.49.2 Der Aufbau des RC5-Codes 20.49.3 So werden die einzelnen Bits übertragen 20.49.4 RC5-Code mit BASCOM einlesen 20.49.5 Verwirklichung der IR-Relaisplatine 20.50 Telemetriesystem für eine Modellflugdrohne Schlusswort