Frank (Diskussion | Beiträge) |
Frank (Diskussion | Beiträge) |
||
Zeile 121: | Zeile 121: | ||
==Testprogramm== | ==Testprogramm== | ||
+ | <pre> | ||
'################################################### | '################################################### | ||
'rncontroltest.BAS | 'rncontroltest.BAS | ||
Zeile 383: | Zeile 384: | ||
Next I | Next I | ||
End Sub | End Sub | ||
+ | </pre> | ||
+ | |||
==Weblinks== | ==Weblinks== |
Version vom 16. November 2005, 13:57 Uhr
Ein bewährtes Microcontrollerboard das wie das RNBFRA-Board in der Roboternetz-Community infolge einer Diskussion entstand. Es sollte ein Board werden das ein gutes Preis- / Leistungsverhältnis bietet und für vielfältige Aufgaben geeignet ist. Das Vorhaben ist dank der zahlreichen Anregungen gut gelungen, das Board gibt es inwischen nicht nur als Bauanleitung mit Platine sondern auch als Bausatz und sogar Fertigmodul. Es hat sich als preiswertes Universalboard für Roboter, Steuerungsaufgaben etc. als auch als ideales Einsteigerboard einen guten Namen im Roboternetz gemacht, daher gibt es für dieses Board auch ein eigenes Unterforum im Roboternetz. Es gibt inzwischen unzählige Anwendungen die mit RN-Control umgesetzt wurden. Trotz günstigem Preis ist ein sehr flexibels Board für unzählige Anwendungsmöglichkeiten entstanden. Über den I2C-Bus stehen zahlreiche Erweiterungsboards zur Verfügung, so können beispielsweise die gleichen I2C-Erweiterungen wie beim großen RNBFRA-Board kombiniert werden (Relasikarte, Sprachausgabe usw.) Roboternetz
Error code: 134
Besonders viel Wert wurde auch auf den einfachen Aufbau und viele Experimentier- und Einsatzmöglichkeiten gelegt. Mit diesem Board läßt sich u.a. schon ein recht ausgereifter Roboter konstruieren. Ultraschallsensoren, Infrarot Entfernungssensoren, Motoren u.v.m. können direkt angeschlossen werden. Da das Board auch in der Community Roboternetz recht beliebt ist, findet man dort auch viele Tips und Programme.
Inhaltsverzeichnis
Hier die Leistungsmerkmale auf einen Blick:
- Wahlweise 8 oder 16 Mhz Taktfrequenz (beide Quarze werden mitgeliefert, 16 Mhz bereits eingesteckt)
- Schneller AVR Mega 32 Mikrocontroller,32K Speicher, 2K Ram und 1K EEPROM), 32 programmierbare I/O Pins,8 AD Ports u.v.m.
- 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 Steckernorm entspricht der Roboternetz-Definition als auch der des Atmel Entwicklungsboards STK500
- alle Ports sowie +5V und GND sind zusätzlich über Steckbuchsen 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 ca. 1 A 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)
- 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-Norm (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 Compiler, eingeschränkt bis 4K wird mitgeliefert), C (C-Compiler GCC wird mitgeliefert), Assembler, Pascal
- Deutsche Doku mit Basic Programmbeispiel
- Preiswerter Bausatz erhältlich - einfacher Aufbau
- Kein Starter- oder Applikationsboard notwendig - bereits alles integriert!
- alle wichtigen Bauteile gesockelt, somit auch bei falscher Beschaltung durch Einsteiger ,immer kostengünstig reparierbar (einfach neues IC einstecken)
http://www.robotikhardware.de/bilder/rncontro4.jpg
Stückliste
Bauteil Wert Beschreibung Reichelt Best.Nr. C1 100n Keramik Kondensator KERKO100N C2 100n Keramik Kondensator KERKO100N C3 22pf Keramik Kondensator KERKO-500 22p C4 22pf Keramik Kondensator KERKO-500 22p C5 4,7uF Elko SM 4,7/50RAD C6 4,7uF Elko SM 4,7/50RAD C7 4,7uF Elko SM 4,7/50RAD C8 4,7uF Elko SM 4,7/50RAD C9 1uF Elko SM 1,0/63RAD C10 100n Keramik Kondensator KERKO100N C11 100n Keramik Kondensator KERKO100N C12 100n Keramik Kondensator KERKO100N C13 1000uF Elko RAD 1000/35 C14 100n Keramik Kondensator KERKO100N C15 100n Keramik Kondensator KERKO100N C16 100n Keramik Kondensator KERKO100N C17 220uF Elko RAD 220/35 C18 100n Keramik Kondensator KERKO100N D1 1N4148 Diode 1n 4148 D2 BYV27 Diode BYV 27/200 I2C-BUS I2C Wannenbuchse WSL 10G IC1 MAX232 RS232 Treiber MAX 232 CPE IC2 7805 Spannungsregler 78S05 IC3 L293D Motortreiber L 293 D IC4 MEGA16-P Atmel Mega 16 oder 32 ATMEGA 16-16 ISP AVR-ISP Wannenbuchse WSL 10G JP1 Kontaktbuchse (manuell kürzen) SPL20 JP2 Kontaktbuchse (manuell kürzen) SPL 20 JP3 Kontaktbuchse (manuell kürzen) SPL 20 JP4 Kontaktbuchse (manuell kürzen) SPL 20 JP5 Kontaktbuchse (manuell kürzen) SPL 20 JP6 Stiftleiste Stiftl. 2x50g (teilen) JP7 Kontaktbuchse (manuell kürzen) SPL 20 JP8 Stiftleiste LU 2,5 MS2 LED1 Leuchdiode Low LED 3MM 2MA GN LED2 Leuchdiode Low LED 3MM 2MA GN LED3 Leuchdiode Low LED 3MM 2MA GN LED4 Leuchdiode Low LED 3MM 2MA GN LED5 Leuchdiode Low LED 3MM 2MA GN LED6 Leuchdiode Low LED 3MM 2MA GN LED7 Leuchdiode Low LED 3MM 2MA GN LED8 Leuchdiode Low LED 3MM 2MA GN MOTOREN Schraublemme 4 polig AKL 101-04 PORTA Steckklemme 8 polig WAGO 233-508 PORTB Wannenbuchse WSL 10G PORTC Wannenbuchse WSL 10G PORTD Wannenbuchse WSL 10G POWER Schraubklemme 2 polig AKL 101-02 Q1 Quarz 16 Mhz 16-HC18 R1 100k Widerstand 100k 1/4W 100k R2 1k Widerstand 1k 1/4W 1k R3 10k Widerstand 10k 1/4W 10k R4 1k Widerstand 1k 1/4W 1k R5 1k Widerstand 1k 1/4W 1k R6 1k Widerstand 1k 1/4W 1k R7 1k Widerstand 1k 1/4W 1k R8 1k Widerstand 1k 1/4W 1k R9 22k Widerstand 22k 1/4W 22k R10 5,1k Widerstand 5,1k 1/4W 5,1k R11 10k Widerstand 10k 1/4W 10k R12 10k Widerstand 10k 1/4W 10k R13 10k Widerstand 10k 1/4W 10k R14 10k Widerstand 10k 1/4W 10k RESET TASTER3301 Minitaster liegend TASTER 3301 RN1 Widerstandsnetzwerk SIL 9-8 1,0k RS232 Stiftleiste 3 polig LU 2,5 MS3 S1 DIP Schalter 8 polig NT08 SPEAKER F/CM12P Mini Piezo Lautsprecher SUMMER EPM 121 T1 TASTER3301 Minitaster liegend TASTER 3301 T2 TASTER3301 Minitaster liegend TASTER 3301 T3 TASTER3301 Minitaster liegend TASTER 3301 T4 TASTER3301 Minitaster liegend TASTER 3301 T5 TASTER3301 Minitaster liegend TASTER 3301 UMESS Stiftleiste LU 2,5 MS2 UMOT Stiftleiste LU 2,5 MS2 UREF Stiftleiste LU 2,5 MS2
Testprogramm
'################################################### '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 robotikhardware.de '####################################################### Declare Sub Batteriespannung() Declare Sub Motortest() Declare Sub Lauflicht() Declare Sub Showporta() Declare Sub Showdigitalporta() Declare Function Tastenabfrage() As Byte $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 Down , Compare B Pwm = Clear Down Pwm1a = 0 Pwm1b = 0 Tccr1b = Tccr1b Or &H02 'Prescaler = 8 I = 0 Sound Portd.7 , 400 , 450 'BEEP Sound Portd.7 , 400 , 250 'BEEP Sound Portd.7 , 400 , 450 'BEEP Print Print "**** RN-CONTROL 1.4 *****" Print "Das neue Experimentier- und Roboterboard" Print "Weitere passende Zusatzboards bei www.robotikhardware.de" Print 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 400 To 450 Tastenabfrage = 1 Ton = 550 Case 330 To 380 Tastenabfrage = 2 Ton = 500 Case 260 To 305 Tastenabfrage = 3 Ton = 450 Case 180 To 220 Tastenabfrage = 4 Ton = 400 Case 90 To 130 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() '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 I = 0 Do Pwm1a = I Pwm1b = I Waitms 40 I = I + 5 Loop Until I > 1023 Wait 1 Do Pwm1a = I Pwm1b = I Waitms 40 I = I - 5 Loop Until I < 1 Pwm1a = 0 'Linker Motor aus Pwm1b = 0 'rechter Motor aus End Sub 'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein Sub Lauflicht() 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