Universal AVR-Controllerboard RN-Control

RN-Control in der Hand

Dieses Board wurde speziell zum Experimentieren mit dem Mikrocontroller entworfen. Es eignet sich auch vorzüglich für den Einstieg in die Bereich Robotik und Mikrocontroller. Aber auch zahlreiche andere Verwendungen sind denkbar, das kostengünstig aufzubauende Board kann auch sehr gut zum realisieren von ersten Projekten eingesetzt werden..

Hunderte von Bastlern haben dieses Board schon aufgebaut und damit den Einstieg in die Mikroelektronik erlernt. Dadurch ist auch schnelle Hilfe bei Soft- und Hardwarefragen in gängigen Foren wie dem Roboternetz.de möglich. Viele Beispielprogramme findet man ebenfalls im Roboternetz, RN-Wissen.de und natürlich hier auf Mikrocontroller-Elektronik.de. Das Board wurde unter der CC-Lizenz mit Eagle-Dateien veröffentlicht.

 

Die Features des Controllerboard RN-Control

  • Wahlweise 7,37 oder 16 Mhz Taktfrequenz (auch beliebiger anderer Quarz denkbar), empfohlen wird 16 Mhz!
  • Schneller AVR Mega 16 oder Mega 32 Mikrocontroller (bis zu 32K Speicher, 2K Ram und 1K EEPROM), 32 programmierbare I/O Pins,8 AD Ports u.v.m.
    Alternativ auch ATMega 644 verwendbar
  • 8 Leuchtdioden per DIP-Schalter deaktivierbar und anderen Ports per Steckbrücke beliebig zuzuordnen
  • alle Portleitungen sind über Stecker nach außen geführt. Die Steckerbelegung entspricht der Roboternetz-Definition als auch der des Atmel Entwicklungsboards STK500
  • alle Ports sind zusätzlich über Steckbuchse erreichbar. Ideal zum experimentieren da einfach Drähte (ca. 0,5mm²) eingesteckt werden (kein Löten oder schrauben). So können einfach andere LED´s zugeordnet werden oder ein Steckbrett verbunden werden
  • Der wichtige Port A (wahlweise 8 digitale oder analoge Ein- o. Ausgänge) ist zusätzlich noch über eine Qualitätssteckklemme mit Hebel herausgeführt
  • Motortreiber mit ca. 1A (2x 0,5A) belastbar – für zwei Getriebemotoren oder 1 Schrittmotor. Dieser kann auch für andere Zwecke (Relaisansteuerung, Lämpchen etc.) genutzt oder einfach entfernt werden
  • Integrierter programmierbarer Mini-Lautsprecher um Töne auszugeben
  • 1 Reset Taster
  • 5 Taster für beliebige Verwendung. Sie belegen nur einen analogen Port!
  • 5 V Spannungsstabilisierung mit 2 A Belastbarkeit, auch herausgeführt für Erweiterungen
  • Eingangsspannung gegen Verpolung geschützt
  • RS232 mit normgerechtem Pegelwandler (MAX232) – PC direkt anschließbar
  • Batteriespannung kann im Programm abgefragt werden
  • ISP – Programmierschnittstelle für übliche AVR-Programmieradapter (10polig)
  • auch per RS232 Programmierbar wenn man Bootloader installiert (siehe in Doku hinten unter BOOTLOADER)
  • Betriebsspannung wahlweise zwischen 7 und 18V (empfohlen 7 bis 14 V) – wahlweise auch höhere Motorspannung bis 24V möglich)
  • Sehr kompakt, nur halbes Europaformat nach Roboternetz-Definition (ca. 100x75mm)
  • I2C-Bus über die zahlreiche Erweiterungsplatinen anschließbar sind (z.B. Sprachausgabe RN-Speak, Relaisboard RN-Relais, Servoboards, LCD´s uvm.)
  • Programmierbar in zahlreichen Sprachen, z.B. Basic (BASCOM ), C (GCC), AVR-Studio, Assembler, Pascal (viele Entwicklungsumgebungen sind frei im Internet erhältlich)
  • Deutsche Doku mit Basic Programmbeispiel auf dieser Seite www.mikrocontroller-elektronik.de
  • Kein Starter- oder Applikationsboard notwendig – bereits alles integriert!

 

Bestandteile des Controllerboard

AVR-Controllerboard RN-Control

Komponenten des Boards (zum vergrößern anklicken)

Tipps zum Aufbau und Inbetriebnahme

Aufbau

Der Aufbau der Schaltung ist durch eine vorgefertigte Platine eigentlich völlig problemlos auch von Elektronik-Einsteigern mit einigen Grundkenntnissen zu bewerkstelligen.

Die Eagle-Dateien zum Projekt findet ihr am Ende dieses Beitrages. Diese können genutzt werden um sich bei einem Platinenhersteller eine Platine anfertigen zu lassen. Auf unserer Seite nennen wir gerne einige Hersteller die sowas machen.

Durch den Bestückungsdruck und die Bestückungsliste, etwas weiter hinten in dieser Dokumentation, ist der Aufbau unkritisch. Aufgrund moderner Bauteile hält sich die Anzahl der Kleinteile in Grenzen, weshalb die Schaltung meist in ca. 30 bis 60 Minuten aufgebaut ist.

Dennoch einige Anmerkungen zu kleinen Hürden:

  1. Das Board verwendet zwei Widerstandsnetzwerke . Auf der Platine ist die mit RN1 und RN2 gekennzeichnet. Da diese Teile Einsteigern noch nicht so bekannt sind, möchte ich darauf hinweisen das diese richtig herum eingelötet werden müssen. Auf den schwarzen Teilen ist auf einer Seite ein Punkt. Dieser Punkt muss auf die Seite wo auf der Platine eine kleine 1 aufgedruckt ist.
  2. Sie können frei wählen welchen Quarz Sie einlöten. In der Regel reichen 7,3728 Mhz voll aus, damit ist das Board noch immer schneller als viele vergleichbare Boards dieser Preisklasse, zudem braucht es dann weniger Strom als mit 16 Mhz. Brauchen Sie jedoch die volle Rechenpower, dann ist 16 Mhz sinnvoll. Bei 16 Mhz brauchen Sie jedoch auch einen guten Programmieradapter, billige Lösungen machen hier manchmal Probleme mit der Übertragung. Einige werden wir demnächst auf unserer Seite vorstellen!
    Dir krumme Zahl 7,3728 Mhz hat noch einen zweiten Vorteil. Mit dieser Frequenz ist die Baudrate der RS232 ganz exakt, weshalb sich damit höhere Übertragunsgeschwindigkeiten erreichen lassen.
  3. Achten Sie darauf das die Taster richtig herum eingelötet ist. Richten Sie sich am besten nach dem Foto. Wenn die Platine so vor ihnen liegt das die Beschriftungen T1, T2, T3 usw. auf dem Kopf stehen, dann dürfen die Beine der Tastern nur links und rechts von dem Tastergehäuse zu sehen sein.
  4. Erfahrenere Anwender die die Referenzspannung von 2,5V zusammen mit der Batterieüberwachung nutzen wollen und zugleich mehr als 13,4V Eingangsspannung anlegen möchten, wird empfohlen bei R9 einen größeren Widerstand als 22K zu verwenden (z.B. 33k). Einsteiger sollten den Jumper (Kurzschlusstecker) auf UREF immer erst gesteckt lassen (UREF ist dann 5V).
  5. Bezüglich der Polung LED´s auf den Bestückungsdruck in der Anleitung achten. Da wo die flache Seite der LED ist, muss das kurze Bein (Kathode) eingelötet werden
  6. Nicht vergessen das zu den meisten IC´s Fassungen mitgeliefert werden, also immer Fassung und nicht IC direkt einlöten
  7. Die Polung des Piezo Lautsprechers ist nicht zu beachten, er kann beliebig eingelötet werden

Das waren eigentlich schon die besonderen Punkte die zu beachten sind. Ansonsten natürlich sauber mit einem 15 – 30 W Lötkolben (gibt es z.B. bei Conrad*) alles auf der Unterseite verlöten. Grundkenntnisse beim Löten werden empfohlen.

Nach dem Aufbau sollten Sie nochmals alle Lötpunkte kontrollieren. Wenn Sie dann Spannung anlegen, dann sollten deutlich weniger als 100mA Strom fließen. Ist der Strom höher, dann deutet das auf ein Lötfehler hin.

Das Testprogramm kann dann recht einfach mit Bascom oder Pony übertragen werden. Per Tastendruck können anschließend verschiedene Boardeigenschaften überprüft werden.

Der Spannungsregler wird beim Betrieb von RN-Control sehr warm, insbesondere wenn alle LED´s leuchten und eventuell noch Verbraucher angeschlossen sind. Dies ist jedoch völlig normal und kein Grund zur Besorgnis, der Spannungsregler ist dafür ausgelegt. Er ist im übrigen intern mit einem Hitzeschutz als auch Kurzschlussschutz ausgestattet, er ist also nahezu unzerstörbar.

Lediglich wenn sie Verbraucher anschließen welche sehr viel Strom der 5V Leitung entnehmen, so kann es erforderlich werden ein Kühlkörper anzuschrauben. RN-Control ist so konstruiert das wahlweise ein Kühlkörper montiert werden kann oder aber das der Spannungsregler einfach an eine Gehäusewand geschraubt wird. Alternativ wäre auch ein Metallwinkel denkbar welcher die Wärme auf ein Bodenblech weiterleitet. Diese Kühlmaßnahmen sind wie gesagt nur bei höherer Stromentnahme notwendig, zum Beispiel wenn Sie ein LCD mit Beleuchtung anschließen. Die Beleuchtung kann bei vielen LCD´s schon recht viel Strom verbrauchen.

 

Pinbelegung der Anschlüsse, Regler und Kurzschluss-Brücken

Die genaue Beschreibung wird durch anklicken aufgeklappt!

Port A

Digitaler I/O und analoger Port (PA 0 bis PA7 und ADC0 bis ADC7)

Über eine Steckklemme werden hier die 8 Portleitungen PA0 bis PA 7 zur Verfügung gestellt. PA7 befindet sich dabei ganz links und PA0 ganz rechts. Anschlußdrähte können einfach eingesteckt werden, indem man mit einem Kugelschreiber oder Schraubenziehen den oberen weißen Hebel etwas nach unten drückt.

Die Ports PA7 bis PA0 können sowohl als normaler I/O-Port (Ein- und Ausgabeport) oder als AD-Port´s programmiert werden. Somit könnten also auch bis zu 8 Spannungen quasi gleichzeitig gemessen werden.

Ist der Kurzschlusstecker UREF eingesteckt, dann können Spannungen bis zu 5V gemessen werden. Ist UREF offen, dann können Spannungen nur bis 2,5V gemessen werden. Durch geeignete Spannungsteiler kann der Meßbereich natürlich beliebig erhöht werden.

Achtung: Die zulässige Höchstspannung 2,5V oder 5V darf am Port nicht überschritten werden, dieses würde den Port zerstören!

Vorbelegung:

Port PA7 wird auch für die Tastenabfrage genutzt. indem über einen Spannungsteiler verschiedene Spannungen per Tastendruck angelegt werden (siehe Schaltplan).
Solange keine Taste gedrückt ist, ist dieser jedoch frei Verfügbar.

Port PA6 wird über einen Spannungsteiler (22k und 5,1K) zur Batteriespannungsmessung benutzt (siehe Schaltplan und Demoprogramm) wenn der Kurzschlusstecker UMESS eingesteckt ist. Durch entfernen dieses Steckers steht der Port zur freien Verfügung.

Der komplette Port steht auch nochmals über die Buchsenleiste JP2 zur Verfügung. Auch dort können Drähte zum experimentieren eingesteckt werden (möglichst 0,6mm²).

Port B

Wannenbuchse 10 polig

Digitale I/O Port B (PB0 bis PB 7)

Über einen Wannenstecker werden gemäß der Roboternetz-Definition 8 I/O Portleitungen mit Sonderfunktionen als auch GND und +5V bereitgestellt.

Die genaue Belegung sieht wie folgt aus:

Pin 1 PB0 / T0 / XCL / wird vom Motortreiber für Motor 2 Kanal 1 genutzt
Pin 2 PB1 / T1 / wird vom Motortreiber für Motor 2 Kanal 2 genutzt
Pin 3 PB2 / AIN0 / INT2 / wird auch vom I2C-Bus genutzt
Pin 4 PB3 / AIN1 / OC0
Pin 5 PB4 / SS
Pin 6 PB5 / MOSI / wird auch vom ISP Anschluss genutzt
Pin 7 PB6 / MISO / wird auch vom ISP Anschluss genutzt
Pin 8 PB7 / SCK / wird auch vom ISP Anschluss genutzt
Pin 9 GND
Pin 10 +5V

Durch entfernen des Motortreiber IC´s aus der Fassung, steht PB0 und PB1 zur freien Verfügung.

Der komplette Port steht auch nochmals über die Buchsenleiste JP3 zur Verfügung. Auch dort können Drähte zum experimentieren eingesteckt werden (möglichst 0,6mm²).

Port C

Wannenbuchse 10 polig

Digitale I/O Port C (PC0 bis PC 7)

Über einen Wannenstecker werden gemäß der Roboternetz-Definition 8 I/O Portleitungen mit Sonderfunktionen als auch GND und +5V bereitgestellt.

Die genaue Belegung sieht wie folgt aus:

Pin 1 PC0 / SCL wird vom I2C-Bus genutzt
Pin 2 PC1 / SDA wird vom I2C-Bus genutzt
Pin 3 PC2 / TCK
Pin 4 PC3 / TMS
Pin 5 PC4 / TDO
Pin 6 PC5 / TDI
Pin 7 PC6 / TOSC1 / wird vom Motortreiber für Motor 1 Kanal 1 genutzt
Pin 8 PC7 / TOSC2 / wird vom Motortreiber für Motor 1 Kanal 2 genutzt
Pin 9 GND
Pin 10 +5V

Über den 8 fachen DIP Schalter können den Ports auch LED´s zugeschaltet werden! Die LED´s leuchten wenn Port LOW-Zustand annimmt!

Durch entfernen des Motortreiber IC´s aus der Fassung, steht PC6 und PC7 zur freien Verfügung. Der komplette Port steht auch nochmals über die Buchsenleiste JP4 zur Verfügung. Auch dort können Drähte zum experimentieren eingesteckt werden (möglichst 0,6mm²).

Port D

Digitale I/O Port D (PD0 bis PD 7)

Wannenbuchse 10 polig

Über einen Wannenstecker werden gemäß der Roboternetz-Definition 8 I/O Portleitungen mit Sonderfunktionen als auch GND und +5V bereitgestellt.

Die genaue Belegung sieht wie folgt aus:

Pin 1 PD0 / RXD / wird für RS232 Schnittstelle genutzt
Pin 2 PD1 / TXD / wird für RS232 Schnittstelle genutzt
Pin 3 PD2 / INT0
Pin 4 PD3 / INT1
Pin 5 PD4 / OC1B / wird für PWM Motor 1 benutzt (Geschwindigkeitsregelung)
Pin 6 PD5 / OC1A / wird für PWM Motor 2 benutzt (Geschwindigkeitsregelung)
Pin 7 PD6 / ICP
Pin 8 PD7 / OC2
Pin 9 GND
Pin 10 +5V

Durch entfernen des Motortreiber IC´s aus der Fassung, steht PD4 und PD5 zur freien Verfügung.

Der komplette Port steht auch nochmal über die Buchsenleiste JP5 zur Verfügung. Auch dort können Drähte zum experimentieren eingesteckt werden (möglichst 0,6mm²).

I2C-Bus

Wannenbuchse 10 polig

I2C-Bus

Über diesen Bus lassen sich zahlreiche Erweiterungen an dieses Board anschließen. Zum Beispiel werden auf der Seite roboternetz.de passende Boards mit Sprachausgabe, Relais, Schrittmotorsteuerung etc. vorgestellt.
Aber auch dieses Board kann selbst als Slave-Board, also als Erweiterung an ein anderes Hauptboard angeschlossen werden.

Der I2C-Bus benötigt nur 2 Leitungen für alle Funktionen. Entsprechend der Roboternetz-Definition wird hier ein 2×5 poliger Stecker angeschlossen. Die Belegung entspricht exakt der anderer Roboternetz Boards.

Pin 1 SCL (Taktleitung) Port PC0
Pin 3 SDA (Datenleitung) Port PC1
Pin 5 +5V
Pin 7 +5V
Pin 9 Batteriespannung
Pin 2,4,6,8 GND
Pin 10 INT

Hinweis zu Pin 10 (INT):  Diese Leitung kann von allen I2C-Bus Erweiterungen genutzt (Port PB2)werden um den Hauptcontroller darüber zu informieren das sich Daten (z.B. von Sensoren) verändert haben. In diesem Fall wird die Leitung solange auf Masse gelegt bis der entsprechende I2C-Baustein ausgelesen wird.
Die Controller muss also immer alle I2C-Bausteine auslesen solange diese Leitung auf Masse liegt. Diese Leitung ist mit Port PD2 verbunden

Die PIN´s 5,7,9 und 10 können über herausnehmbare Kurzschlussbrücken (Jumper JP6) vom Board getrennt werden. Dies ist zum Beispiel dann notwendig, wenn bereits ein anderes Masterboard die Spannungen auf den Bus legt. Es darf immer nur ein Board die Spannungen bereitstellen.

ISP

Wannenbuchse 10 polig

ISP – IN SYSTEM PROGRAMMING

Über diesen Anschluss kann der Controller auf dem Sprachboard mit einem Standard ISP-Kabel direkt an einen Parallelport des PC´s angeschlossen und programmiert werden.

Die Belegung des ISP-Anschlusses ist zu dem weit verbreitetet STK200 Programmier Dongle kompatibel. Ein entsprechender Dongle kann man sich entweder selber basteln (siehe Artikel „AVR Einstieg leicht gemacht“ unter www.rn-wissen.de) oder im Handel kaufen.

Pin 1 MOSI
Pin 2 VCC
Pin 3 Nicht belegt
Pin 4 GND
Pin 5 RESET
Pin 6 GND
Pin 7 SCK
Pin 8 GND
Pin 9 MISO
Pin 10 GND
Power

Spannungsversorgung

Über diese Schraubklemme wird das Board mit Spannung versorgt. Es reicht eine unstabilisierte Gleichspannung von 7 bis 14V aus (max. 18V wenn Kühlkörper verwendet wird).
+ und – sind auf der Platine markiert. Das Board ist jedoch auch gegen ein verpolen geschützt, so das bei einem Fehler nichts kaputt geht!

Motoren

Über diese 4 polige Schraubklemme können zwei Getriebemotoren (jeweils die beiden linken oder rechten Kontakte) oder ein Schrittmotor angeschlossen werden.

Der Motortreiber kann jedoch auch für andere Dinge genutzt werden, z.B zum Ansteuern von Relais, Lämpchen etc. verwendet werden. Die Belastbarkeit liegt bei maximal 1A. Sollen größere Motoren angeschlossen werden, so kann z.B. über den I2C-Port eine anderer Motortreiber angeschlossen werden.

JP6

I2C-Bus Belegung

Über drei Jumper (Kurzschluss-Brücken) können wahlweise die Batteriespannung (UB), +5V sowie INT mit dem I2C-Bus verbunden werden. Wenn INT nicht benötigt wird, kann man diesen Jumper offen lassen. Somit hat man einen Port zusätzlich frei zur Verfügung

Möchte man das Board über den I2C-Bus mit Spannung versorgen, dann kann man UB oder +5V Jumper einstecken. In diesem Fall braucht/darf keine Spannung an dem Power Schraubklemen angelegt werden. Möchte man umgekehrt andere Boards über den I2C-Bus mit Spannung versorgen, dann müssen die Jumper UB und/oder +5V eingesteckt werden.

Durch diesen Jumper ist man für alle Fälle gerüstet. Bei älteren RN-Control Versionen musste man dazu noch das Kabel ändern.

JP8

Über diesen Stecker kann die stabilisierte 5V Logikspannung für Erweiterungen oder Experimente entnommen werden. Wird mehr als 200mA entnommen, so sollte der Spannungsregler mit einem kleinen Kühlkörper versehen werden.

UREF

Referenzspannung

Über einen Jumper (Kurzschluss-Brücke) kann hier die Referenzspannung von 5V eingestellt werden. Wird der Stecker entfernt, so kann an den analogen Ports nur bis 2,5V gemessen werden (jedoch mit höherer Genauigkeit).

Sicherheitshalber sollten Sie den Stecker anfangs eingesteckt lassen! Wird er entfernt, so sollte man daran denken das auch die Batteriespannung über einen analogen Port gemessen wird. Diese darf dann nicht viel höher als 13V sein!

UMOT

Motorspannung

Wenn dieser Jumper (Kurzschluss-Brücke) eingesteckt wird, dann wird die volle Batteriespannung auch für die Motoren benutzt. Ansonsten könnte man über einen PIN dieses Jumpers auch eine höhere Versorgungsspannung für die Motoren nutzen. Dazu sollte sie aber nochmals in den Schaltplan schauen.

In der Regel sollte hier ein Jumper eingesteckt sein!

UMESS1

Batteriespannungsmessung

Wenn diese Kurzschlussbrücke gesteckt ist, dann wird über Port PA6 die Batteriespannung überwacht. Ansonsten ist der Port frei!

S1

DIP Schalter

Mit einem kleinen Schraubenzieher kann über diesen 8 poligen Schalter den Portleitungen PC0 bis PC7 eine LED zugeschaltet werden. Die LED´s leuchten immer dann wenn der Port LOW (0 Pegel) führt.

Wenn die LED auf Off geschaltet wird, so kann die LED über eine Drahtbrücke von JP7 mit einem anderen Port verbunden werden.

RS232

PC kompatible RS232 Schnittstelle

Über ein Adapterkabel kann die serielle Schnittstelle des PC direkt mit dem Board verbunden werden. Dies ist dann sinnvoll, wenn Fehler in Programmen gesucht . Einfache PRINT Anweisungen werden von einem Terminalprogramm angezeigt.

Hier kann Hyperterminal von Windows oder das eingebaute terminalprogramm von Bascom empfohlen werden.

Die Belegung:

Pin 1 RX
Pin 2 GND
Pin 3 TX

Ein geeignetes Anschlußkabel kann schnell selbst angefertigt werden.

JP7

Über diese Buchse sind alle LED´s ganz einfach durch Einstecken eines Drahtes beschaltbar.
Bedenken muß man dabei das die Anode über einen Vorwiderstand immer mit 5V verbunden ist. Die LED leuchtet also nur wenn sie mit der Drahtbrücke auf GND bzw. einen Port mit 0 Pegel gelegt wird.

JP1

Buchsenleiste die dreimal +5V und drei mal GND für Experimente bereitstellt

JP2

Buchsenleiste die den gesamten Port A für steckbare Drähte bereitstellt

JP3

Buchsenleiste die den gesamten Port B für steckbare Drähte bereitstellt

JP4

Buchsenleiste die den gesamten Port C für steckbare Drähte bereitstellt

JP5

Buchsenleiste die den gesamten Port D für steckbare Drähte bereitstellt

TASTER T1 bis T5

Stehen zur freien Verfügung
Die Abfrage ist im Demoprogramm beschrieben

 

Steckbuchsen

Um auch schnell und praktisch mit RN-Control experimentieren zu können, verfügt dieses Board über Steckklemmen die alle Ports herausführen. 0,5mm Drähte lassen sich dort direkt einstecken, so das Sensoren und dergleichen schnell und einfach verdrahtet werden können. Die genaue Belegung lässt sich in nachfolgendem Ausschnitt aus dem Bestückungsplan gut entnehmen.

RN-Control Belegung der Steckbuchsen

Quellcode Beispiel- und Testprogramm

Beispielprogramm Quellcode (zum aufklappen)
'###################################################
'
'rncontroltest.BAS
'für
'RoboterNetz Board RN-CONTROL ab Version 1.1
'Das neue preiswerte Controllerboard zum experimentieren

' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.7.7 getestet

'
'Aufgabe:
' Dieses testprogramm testet gleich mehrere Eigenschaften auf dem Board
' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
' Taste 1: Zeigt Batteriespannung über RS232 an
' Taste 2: Angeschlossene Motoren beschleunigen und abbremsen
' Taste 3: Einige male Lauflicht über LED´s anzeigen. Am I2C-Bus
' darf in diesem Moment nichts angeschlossen sein
' Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s über RS232 an
''Taste 5: Zeigt digitalen I/O Zustand von PA0 bis PA5 an


' Sehr gut kann man aus dem Demo auch entnehmen wie Sound ausgegeben wird,
' wie Tasten abgefragt werden und wie Subroutinen und Funktionen angelegt werden

'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder http://www.mikrocontroller-elektronik.de/
'#######################################################

$programmer = 12 '1=LPT stk200 13=MCS Bootloader 12=USBISP 7=allavr/mk2
$PROG &HFF,&HFF,&HDB,&HFF' generated. Take care that the chip supports all fuse bytes.

Declare Sub Batteriespannung()
Declare Sub Motortest()
Declare Sub Lauflicht()
Declare Sub Showporta()
Declare Sub Showdigitalporta()
Declare Function Tastenabfrage() As Byte



'$PROG &HFF,&HFF,&HDB,&H00' Ohne bootloader

$regfile = "m32def.dat"
' bei Mega 16 $regfile = "m16def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32


Dim I As Integer
Dim N As Integer
Dim Ton As Integer

$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung

Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein


Const Ref = 5 / 1023 'Für Batteriespannungsberechnung

Dim Taste As Byte
Dim Volt As Single

' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
'Config Timer1 = Pwm , Pwm = 10 , Compare_A_Pwm = Clear_up , Compare B Pwm = Clear Down
Config Timer1 = Pwm , Pwm = 10 , Compare_A_Pwm = Clear_up , Compare_B_Pwm = Clear_up
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8


I = 0
For I = 650 To 300 Step -2
 Sound Portd.7 , 5 , I
Next I

For I = 301 To 900
 Sound Portd.7 , 5 , I
Next I

Waitms 200

Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP

Print
Print "**** RN-CONTROL 1.41 *****"
Print "Demoprogramm von http://www.mikrocontroller-elektronik.de/
Print "Das beliebte Experimentier- und Roboterboard"
Print "Weitere passende Zusatzboards bei http://www.mikrocontroller-elektronik.de/"
Print "lassen sich sehr bequem mit Bascom-Basic programmieren."
Print "Viele Tipps und Foren zu den RN-Boards gibt es unter"
Print "www.roboternetz.de und www.rn-wissen.de"


Do
 Taste = Tastenabfrage()
 If Taste <> 0 Then

 Select Case Taste
 Case 1
 Call Batteriespannung 'Taste 1 Zeigt Bateriespannung über RS232 an
 Case 2
 Call Motortest 'Taste 2 Motoren beschleunigen und abbremsen
 Case 3
 Call Lauflicht 'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
 Case 4
 Call Showporta 'Zeigt Messwerte an allen Port A PIN´s
 Case 5
 Call Showdigitalporta 'Zeigt digitalen I/O Zustand von PA0 bis PA5 an

 End Select
 Sound Portd.7 , 400 , 500 'BEEP
 End If

 Waitms 100
Loop

End


'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word

 Tastenabfrage = 0
 Ton = 600
 Start Adc
 Ws = Getadc(7)
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
 If Ws < 500 Then
 Select Case Ws
 Case 370 To 450 'oder 400 x 450
 Tastenabfrage = 1
 Ton = 550
 Case 300 To 369
 Tastenabfrage = 2
 Ton = 500
 Case 230 To 299
 Tastenabfrage = 3
 Ton = 450
 Case 150 To 229
 Tastenabfrage = 4
 Ton = 400
 Case 80 To 149
 Tastenabfrage = 5
 Ton = 350
 Case Else
 Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
 End Select
 Sound Portd.7 , 400 , Ton 'BEEP

 End If


End Function



'Diese Unterfunktion zeigt Batteriespannung an
Sub Batteriespannung()
Local W As Word
 Start Adc
 W = Getadc(6)
 Volt = W * Ref
 Volt = Volt * 5.2941
 Print "Die aktuelle Spannung beträgt: " ; Volt ; " Volt"

End Sub


'Testet Motoren und Geschwindigkeitsreglung
Sub Motortest()

 Print "Motoren werden getestet ... ";

 Pwm1a=0
 Pwm1b =0
 print "Motoren ein"
 'Linker Motor ein
 Portc.6 = 1 'bestimmt Richtung
 Portc.7 = 0 'bestimmt Richtung
 Portd.4 = 1 'Linker Motor EIN

 'Rechter Motor ein
 Portb.0 = 1 'bestimmt Richtung rechter Motor
 Portb.1 = 0 'bestimmt Richtung rechter Motor
 Portd.5 = 1 'rechter Motor EIN
 wait 1

 print "Langsam beide hochfahren ..."
 I = 0
 Do
 Pwm1a = I
 Pwm1b = I
 Waitms 40
 I = I + 5
 Loop Until I > 1023

 print "Beide Vollgas erreicht"

 Wait 1
 print "beide langsam herunterfahren ..."
 i=1023
 Do
 Pwm1a = I
 Pwm1b = I
 Waitms 40
 I = I - 5
 Loop Until I < 1
 Pwm1a = 0 'Linker Motor aus
 Pwm1b = 0 'rechter Motor aus

 print "Beide gestoppt ..."
 wait 1
 print "nun gleiche in andere richtung ..."
 'andere Richtung

 'Linker Motor ein
 Portc.6 = 0 'bestimmt Richtung
 Portc.7 = 1 'bestimmt Richtung
 Portd.4 = 1 'Linker Motor EIN

 'Rechter Motor ein
 Portb.0 = 0 'bestimmt Richtung rechter Motor
 Portb.1 = 1 'bestimmt Richtung rechter Motor
 Portd.5 = 1 'rechter Motor EIN


 I = 0
 Do
 Pwm1a = I
 Pwm1b = I
 Waitms 40
 I = I + 5
 Loop Until I > 1023

 Wait 1
 i=1023
 Do
 Pwm1a = I
 Pwm1b = I
 Waitms 40
 I = I - 5
 Loop Until I < 1
 Pwm1a = 0 'Linker Motor aus
 Pwm1b = 0 'rechter Motor aus

 Print "Habe fertig ;-)"
End Sub


'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
Sub Lauflicht()

 Print "Lauflicht - schau auf das Board. Achte darauf das DIP Schalter on sind"
 Config Portc = Output
 Portd = 0
 For N = 1 To 10
 For I = 0 To 7
 Portc.i = 0
 Waitms 100
 Portc.i = 1
 Next I
 Next N
 Config Portc = Input
End Sub


'Zeigt Die Analogen Messwerte An Port A An
Sub Showporta()
Local Ws As Word

 Config Porta = Input
 For I = 0 To 5 ' Alle internen Pullup Widerständ ein,bis auf Batteriespannungsmessungsport
 Porta.i = 1
 Next I

 Print
 Print "Ermittelte Messwerte an Port A:"
 For I = 0 To 7 ' Alle Eingäne inkl.messen
 Start Adc
 Ws = Getadc(i)
 Volt = Ws * Ref
 Print "Pin " ; I ; " ADC-Wert= " ; Ws ; " bei 5V REF waeren das " ; Volt ; " Volt"
 Next I
End Sub


'Zeigt den Zustand einiger freier I/O von Die Analogen Messwerte An Port A An
Sub Showdigitalporta()
Local Zustand As String * 6
 Config Porta = Input
 For I = 0 To 5 ' Alle internen Pullup Widerständ ein,bis auf Batteriespannungsmessungsport
 Porta.i = 1
 Next I

 Print
 Print "Ermittelter I/O Zustand Port A:"
 For I = 0 To 5 ' Alle Eingäne inkl.messen
 If Pina.i = 1 Then
 Zustand = "High"
 Else
 Zustand = "Low"
 End If
 Print "Pin " ; I ; " I/O Zustand= " ; Pina.i ; " " ; Zustand
 Next I
End Sub

Schaltplan

RN-Control Schaltplan

RN-Control Schaltplan

Bestückungsplan

RN-Control Bestückungsplan

RN-Control Bestückungsplan

Bauteileliste mit Bezugsquellen

Bauteil Beschreibung                 Link zu einer Bezugsquelle Bestellseite

C1      100n Keramik Kondensator           Bezugsquelle*
C2      100n Keramik Kondensator           Bezugsquelle* 
C3      22pf Keramik Kondensator           Bezugsquelle* 
C4      22pf Keramik Kondensator           Bezugsquelle* 
C5      4,7uF Elko                         Bezugsquelle* 
C6      4,7uF Elko                         Bezugsquelle* 
C7      4,7uF Elko                         Bezugsquelle* 
C8      4,7uF Elko                         Bezugsquelle* 
C9      1uF Elko                           Bezugsquelle* 
C10     100n Keramik Kondensator           Bezugsquelle*
C11     100n Keramik Kondensator           Bezugsquelle* 
C12     100n Keramik Kondensator           Bezugsquelle* 
C13     1000uF Elko                        Bezugsquelle* 
C14     100n Keramik Kondensator           Bezugsquelle* 
C15     100n Keramik Kondensator           Bezugsquelle* 
C16     100n Keramik Kondensator           Bezugsquelle* 
C17     220uF Elko                         Bezugsquelle* 
C18     100n Keramik Kondensator           Bezugsquelle* 
D1      1N4148 Diode                       Bezugsquelle*
D2      BYV27 Diode                        Bezugsquelle* 
I2C-BUS I2C Wannenbuchse                   Bezugsquelle* 
IC1     MAX232 RS232 Treiber               Bezugsquelle* 
IC2     7805 Spannungsregler               Bezugsquelle* 
IC3     L293D Motortreiber                 Bezugsquelle* 
IC4     Atmel Mega16,32 oder 644           Bezugsquelle* 
ISP     AVR-ISP Wannenbuchse               Bezugsquelle* 
JP1     Kontaktbuchse(manuell kürzen)      Bezugsquelle* 
JP2     Kontaktbuchse(manuell kürzen)      Bezugsquelle* 
JP3     Kontaktbuchse(manuell kürzen)      Bezugsquelle* 
JP4     Kontaktbuchse (manuell kürzen)     Bezugsquelle* 
JP5     Kontaktbuchse (manuell kürzen)     Bezugsquelle* 
JP6     Stiftleiste Stiftl. 2x50g (teilen) Bezugsquelle*
JP7     Kontaktbuchse (manuell kürzen)     Bezugsquelle* 
JP8     Stiftleiste                        Bezugsquelle* 
LED1    Leuchdiode Low LED                 Bezugsquelle* 
LED2    Leuchdiode Low LED                 Bezugsquelle* 
LED3    Leuchdiode Low LED                 Bezugsquelle* 
LED4    Leuchdiode Low LED                 Bezugsquelle* 
LED5    Leuchdiode Low LED                 Bezugsquelle* 
LED6    Leuchdiode Low LED                 Bezugsquelle* 
LED7    Leuchdiode Low LED                 Bezugsquelle* 
LED8    Leuchdiode Low LED                 Bezugsquelle* 
MOTOREN Schraublemme 4 polig               Bezugsquelle* 
PORTA   Steckklemme 8 polig                Bezugsquelle*
PORTB   Wannenbuchse                       Bezugsquelle*
PORTC   Wannenbuchse                       Bezugsquelle* 
PORTD   Wannenbuchse                       Bezugsquelle* 
POWER   Schraubklemme 2 polig              Bezugsquelle* 
Q1      Quarz 16 Mhz                       Bezugsquelle* 
R1      Widerstand 100k                    Bezugsquelle* Reichelt 
R2      Widerstand 1k                      Bezugsquelle* Reichelt 
R3      Widerstand 10k                     Bezugsquelle* Reichelt
R4      Widerstand 1k                      Bezugsquelle* Reichelt 
R5      Widerstand 1k                      Bezugsquelle* Reichelt 
R6      Widerstand 1k                      Bezugsquelle* Reichelt 
R7      Widerstand 1k                      Bezugsquelle* Reichelt 
R8      Widerstand 1k                      Bezugsquelle* Reichelt 
R9      Widerstand 22k                     Bezugsquelle* Reichelt 
R10     Widerstand 5,1k                    Bezugsquelle* Reichelt 
R11     Widerstand 10k                     Bezugsquelle* Reichelt
R12     Widerstand 10k                     Bezugsquelle* Reichelt 
R13     Widerstand 10k                     Bezugsquelle* Reichelt 
R14     Widerstand 10k                     Bezugsquelle* Reichelt 
RESET   TASTER3301 Minitaster liegend      Bezugsquelle* 
RN1     Widerstandsnetzwerk                Bezugsquelle* 
RS232   Stiftleiste 3 polig                Bezugsquelle* oder Conrad*
S1      DIP Schalter 8 polig               Bezugsquelle* 
SPEAKER Mini Piezo Lautsprecher SUMMER     Bezugsquelle* 
T1      Minitaster liegend                 Bezugsquelle* 
T2      Minitaster liegend                 Bezugsquelle* 
T3      Minitaster liegend                 Bezugsquelle* 
T4      Minitaster liegend                 Bezugsquelle* 
T5      Minitaster liegend                 Bezugsquelle* 
UMESS   Stiftleiste 2pol (4er teilen)      Bezugsquelle* oder Conrad*
UMOT    Stiftleiste 2pol (4er teilen)      Bezugsquelle* oder Conrad*
UREF    Stiftleiste 2pol (4er teilen)      Bezugsquelle* oder Conrad*

Alle Angaben ohne Gewähr  *Bezugsquellenlink (Affilinet)

 

Projekt-Downloads

Datei (oder Zip Archiv)Version 
Eagle Platinenlayout & Schaltplan (zip)1.41Download
Ausführliche Projekt-Dokumentation (.pdf)1.41Download
Bascom-Testprogramm (.zip)Download
Empfohlene Leiterplatten Hersteller

 

Links zum Thema

Geeignete Programmer für die Programmierung

Diamex All-AVR AVR-Programmer
EUR 20,00
USB-Programmieradapter, zur Programmierung von allen Atmel AVR-Controllern. Neben dem, bei den meisten Controllern der AT90, ATMega und ATTiny-Reihe vorhandenen ISP-Protokoll über die SPI-Pins, kann DIAMEX ALL-AVR auch die mit nur wenigen Pins ausgestatteten ATTiny4,5...
Versandfertig in 4 - 5 Werktagen
Mehr Infos* >>  |  zum Shop* >>
USB ISP-Programmer für ATMEL AVR, STK500, ATmega, ATtiny, AT90
EUR 20,90 EUR 20,90
ISP-Programmer für ATMEL-Prozessoren, die über die einfache SPI-Schnittstelle programmierbar sind. Eigener onboard-Prozessor mit speziell entwickelter Firmware, der sehr schnelle Programmierzyklen erlaubt. Das Geheimnis ist die dynamische Nutzung des auf dem Programme...
Gewöhnlich versandfertig in 24 Stunden
Mehr Infos* >>  |  zum Shop* >>
Programmer ATMEL AVR-ISP-MKII
Siehe Preisliste
Portabler Incircuit-Programmer für alle 8 bit AVR-ISP-Flash Microcontroller. Die Spannungsversorgung erfolgt über den USB-Port, somit ist kein zusätzliches Netzteil nötig. Features:USB 2.0geeignet zur Flash- und EEPROM-Programmierungunterstützt Ziel-CPU-Spannungen ...
Mehr Infos* >>  |  zum Shop* >>

* = Fotos stammen von der Amazon-API (Amazon-Partnerprogramm )/Link ist ein Affiliate-Link zu Amazon

oder der MCS-Programmer aus England

 

Weitere Hinweise

Vor dem Aufbau bitte nachfolgende Hinweise lesen:

Das Projekt unterliegt einer CC-Lizenz - Lizenzhinweis (zum Aufklappen anklicken)

Um ihnen weitgehende Möglichkeiten zum Nutzen der Schaltung einzuräumen, wurde dieses Projekt jetzt unter die CC-Lizenz gestellt. Sie haben So die Möglichkeit die Schaltung beliebig zu verändern oder weiterzugeben. Lediglich die kommerzielle Weitergaben ist nur mit Genehmigung möglich! Genauere Hinweise finden Sie im Lizenztext.

Bei einer Veröffentlichung oder Weitergabe ist nachfolgender Text sichtbar zu übernehmen:


cc_logo310

Projekt (Schaltung & Projektdateien) von Frank ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.
Über diese Lizenz hinausgehende Erlaubnisse können Sie unter http://www.mikrocontroller-elektronik.de/ erhalten.

Lizenziert wurde das Projekt von: 
www.Roboternetz.de & www.Mikrocontroller-Elektronik.de  -  Autor/User Frank

Dieser Name und diese Webseiten sind bei der Weitergabe stets deutlich sichtbar zu nennen!



Achtung: Es kann keinerlei Garantie für die Fehlerfreiheit der Schaltung oder anderer Projektdateien übernommen werden! Der Nachbau und Betrieb geschieht auf eigene Gefahr! Jegliche Haftung für Schäden oder Verletzungen wird ausgeschlossen! Schadensersatzansprüche, gleich aus welchem Rechtsgrund, sind ausgeschlossen.

Sicherheitshinweise und Haftungsausschluss (zum Aufklappen anklicken)

Dieses Projekt dient vornehmlich für Lehrzwecke und zum Experimentieren. Für den Aufbau sollten ausreichend Elektronik Grundkenntnisse und Kenntnisse bezüglich der Sicherheit (Experimentieren mit Strom und Handhabung gängiger Werkzeuge wie Lötkolben etc.) vorhanden sein. Unter dem Menüpunkt Buchvorstellungen als auch auf der Seite RN-Wissen.de empfehle ich diesbezüglich noch interessante Literatur mit der man sich dies erarbeiten kann. Für Fragen bezüglich Elektronik und Mikrocontroller empfehle ich das Forum: Roboternetz.de

Sicherheitshinweise und Haftungsausschluss
×

4 Gedanken zu “Universal AVR-Controllerboard RN-Control

  1. Daniel

    Ein wirklich tolles Board. Ich habe mit diesem den Einstieg in die Elektronik geschafft, es war mein erstes Elektronik-Projekt das ich nachgebaut habe. Ich nutze es immer wieder gerne zum Experimentieren wenn ich ein neues Projekt realisieren muss.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Top