Hier poste ich ein paar kleine Testprogramme für das Roboternetz Board. Die Programme sind recht klein und Verständlich zumal sie mit dem Basic-Compiler Bascom (siehe unser Bascom Unterforum) geschrieben wurden.
Diese machen nichts weltbewegendes, sie dienen nur dazu die verschieden Funktion und Schaltkreise auf dem Board zu testen. Da ja inzwischen schon einige mit dem löten begonnen haben, möcht eman ja so schnell wie möglich testen ob man auch keinen Fehle rbei Aufbau gemacht hat. Für diesen fall sind diese Programme gedacht.
1.Testprogramm testet I2C-Bus und Powerport durch Lauflicht
Code:'################################################### 'Testprogramm 1 'für 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' 'Aufgabe: 'Ausgabe über PowerPort per I2C testen indem 'die vier Led´s im lauflichtartig leuchten ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Const Writepowerport_adr = &H72 'I2C Adr PCF 2 Const Readpowerport_adr = &H73 'I2C Adr PCF 2 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim I As Byte $crystal = 8000000 'Quarzfrequenz Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 I2cinit I = 0 I2cdaten = 1 Do I2cdaten = I2cdaten * 2 If I2cdaten > 16 Then I2cdaten = 1 I2cstart I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken I2cwbyte I2cdaten 'Datenbyte an PCF I2cstop Incr I Waitms 100 Print "hallo" Loop End
2.Testprogramm testet RS232 und Baustein MAX232 indem es Text zum PC schickt
Code:'################################################### 'Testprogramm 2 'für 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' 'Aufgabe: 'Testen vom MAX232 und RS232 Schnittstelle indem 'das Wort Hallo und eine Zahl an die RS232 sendet! 'Unter Windows kann man das mit dem Hyperterminal 'anzeigen lassen (9600 Baud einstellen) 'Noch einfacher kann man es anzeigen, wenn man 'in der Bascom Entwicklungsumgebung unter Tools 'TERMINAL EMULATOR aufruft (oder Modem Symbol klickt) ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Dim I As Byte $crystal = 8000000 'Quarzfrequenz Weiter: $baud = 9600 I = 0 Do Incr I Wait 2 Print "Hallo " ; I Loop End
3. Testprogramm testet Motortreiber indem es Motoren in beide Richtungen dreht
Code:'################################################### 'Testprogramm 3 'für 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' 'Aufgabe: 'Testen der Getriebemotorensteuerung '1. Linker Motor wird 5 Sekunden gedreht '2. 5 Sekunden Pause '3. Linker Motor wird 5 Sekunden in andere Richtung gedreht '4. 5 Sekunden Pause '5. Rechter Motor wird 5 Sekunden gedreht '6. 5 Sekunden Pause '7. Rechter Motor wird 5 Sekunden in andere Richtung gedreht '8. 5 Sekunden Pause '9. Das ganze wieder ab linken Motor wiederholen ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Dim I As Byte $crystal = 8000000 'Quarzfrequenz Nochmal: '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 'Linker Motor ein Portc.6 = 1 'bestimmt Richtung Portc.7 = 0 'bestimmt Richtung Portd.4 = 1 'Linker Motor EIN Wait 5 'Warte 5 Sekunden Portd.4 = 0 'Linker Motor AUS Wait 5 'Warte 5 Sekunden 'Linker Motor andere Richtung Portc.6 = 0 'bestimmt Richtung linker Motor Portc.7 = 1 'bestimmt Richtung linker Motor Portd.4 = 1 'linker Motor EIN Wait 5 'Warte 5 Sekunden Portd.4 = 0 'Motor AUS Wait 5 'Warte 5 Sekunden 'Ports für rechten Motor Config Pinb.0 = Output 'Linker Motor Kanal 1 Config Pinb.1 = Output 'Linker Motor Kanal 2 Config Pind.5 = Output 'Linker Motor PWM 'Rechter Motor ein Portb.0 = 1 'bestimmt Richtung rechter Motor Portb.1 = 0 'bestimmt Richtung rechter Motor Portd.5 = 1 'rechter Motor EIN Wait 5 'Warte 5 Sekunden Portd.5 = 0 'Rechter Motor AUS Wait 5 'Warte 5 Sekunden Portb.0 = 0 'bestimmt Richtung rechter Motor Portb.1 = 1 'bestimmt Richtung rechter Motor Portd.5 = 1 'rechter Motor EIN Wait 5 'Warte 5 Sekunden Portd.5 = 0 'Rechter Motor AUS Wait 5 'Warte 5 Sekunden Goto Nochmal End
4. Testprogramm testet die Geschwindigkeitsregelung per PWM indem es Motoren beschleunigt und wieder verlangsamt
Code:'################################################### 'Testprogramm 4 'für 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' 'Aufgabe: 'Testen der Geschwindigkeitsregelung der 'Getriebemotorensteuerung über PWM 'Regelt die Geschwindigkeit beider Motoren langsam 'hoch und wieder runter ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Dim I As Word $crystal = 8000000 'Quarzfrequenz Dim Geschwindigkeitlinks As Word Dim Geschwindigkeitrechts As Word '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 Geschwindigkeitlinks = 50 Geschwindigkeitrechts = 2900 Pwm1a = Geschwindigkeitrechts Pwm1b = Geschwindigkeitlinks Tccr1b = Tccr1b Or &H02 'Prescaler = 8 '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
5. Testprogramm testet Schrittmotorentreiber indem es Schrittmotoren eine bestimmte Anzahl von Schritten in beide Richtungen bewegt
Code:'################################################### 'Testprogramm 5 'für 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' 'Aufgabe: 'Testen der Schrittmotortreiber 'Dreht erst linken Schrittmotor in beide Richtungen 'und dann rechten Schrittmotor in beide richtungen ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Declare Sub Ledein Declare Sub Ledaus Const Writepowerport_adr = &H72 'I2C Adr PCF 2 Const Readpowerport_adr = &H73 'I2C Adr PCF 2 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim I As Word $crystal = 8000000 'Quarzfrequenz Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 I2cinit Config Pind.6 = Output 'Schrittmotoren Ein/Aus Config Pinc.5 = Output 'Schrittmotor Links Richtung Config Pinc.3 = Output 'Schrittmotor Links Step Config Pinc.4 = Output 'Schrittmotor Rechts Richtung Config Pinc.2 = Output 'Schrittmotor Rechts Step Ledaus Portd.6 = 0 'Schrittmotoren erst mal ausschalten Wait 2 Ledein Portd.6 = 1 'Beide Schrittmotoren einschalten 'Linker Schrittmotor Portc.5 = 0 'Richtung Portc.3 = 0 I = 400 'Anzahl der Schritte die Motor bewegt werden soll Do Ledaus Portc.3 = 0 Waitms 5 Portc.3 = 1 Ledein Waitms 5 I = I - 1 Loop Until I < 1 Portc.5 = 1 'Andere Richtung I = 400 'Anzahl der Schritte die Motor bewegt werden soll Do Ledaus Portc.3 = 0 Waitms 5 Portc.3 = 1 Ledein Waitms 5 I = I - 1 Loop Until I < 1 Wait 2 'Rechter Schrittmotor Portc.4 = 0 'Richtung I = 400 'Anzahl der Schritte die Motor bewegt werden soll Do Ledaus Portc.2 = 0 Waitms 5 Portc.2 = 1 Ledein Waitms 5 I = I - 1 Loop Until I < 1 Portc.4 = 1 'Andere Richtung I = 400 'Anzahl der Schritte die Motor bewegt werden soll Do Ledaus Portc.2 = 0 Waitms 5 Portc.2 = 1 Ledein Waitms 5 I = I - 1 Loop Until I < 1 Portd.6 = 0 ' Schrittmotoren erst mal ausschalten Ledaus End Sub Ledein() I2cstart I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken I2cwbyte 15 'Datenbyte an PCF I2cstop End Sub Sub Ledaus I2cstart I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken I2cwbyte 0 'Datenbyte an PCF I2cstop End Sub
6. Testprogramm testet den Eingangsport per I2C-Bus
Code:'################################################### 'Testprogramm 6 'für 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' 'Aufgabe: 'Testet Eingangsport indem Wert über RS232 'übermittelt wird (9600 Baud einstellen) ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Const Writeeingabeport_adr = &H7E 'I2C Adr PCF 2 Const Readeingabeport_adr = &H7F 'I2C Adr PCF 2 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim I As Byte $baud = 9600 $crystal = 8000000 'Quarzfrequenz Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 Portd.6 = 0 'Schrittmotoren erst mal ausschalten I2cinit I = 0 I2cdaten = 1 Do I2cstart I2cwbyte Readeingabeport_adr 'Lesebefehl an PCF schicken I2crbyte I2cdaten , Nack 'Datenbyte von PCF lesen I2cstop Waitms 50 Print I ; " Eingangsport Wert" ; I2cdaten Incr I Loop End
7. Testprogramm ermittelt die Batteriespannung und sendet diese an PC. Analoger Port wird getestet
Code:'################################################### 'Testprogramm 7 'für 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' ' Aufgabe: ' Dieses Testprogramm ermittelt die Batteriespannung ' und gibt diese über die RS232 aus (9600 Baud einstellen) ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Const Ref = 5 / 1023 Dim I As Byte Dim W As Word Dim Volt As Single Config Adc = Single , Prescaler = Auto $baud = 9600 $crystal = 8000000 'Quarzfrequenz Portd.6 = 0 'Schrittmotoren erst mal ausschalten Start Adc Do W = Getadc(4) Volt = W * Ref Volt = Volt * 5.2941 Print "Spannung: " ; Volt Waitms 200 Loop End
Das letzte Testprogramm testet den CoController indem er die Steuerung des Powerports übernimmt
Ich hab die Beispiele hier gepostet damit man bei Unklarheiten mal schnell rein schaun kann. Ich lege die aber auch noch als ZIP-Datei im Download-Bereich ab.Code:'################################################### 'CoController Testprogramm 1 'für 'RoboterNetz Standard-Roboter Board RBNFRA 1.1 ' 'Aufgabe: 'CoController übernimmt nun 'Ausgabe über PowerPort per I2C testen indem 'die vier Led´s im lauflichtartig 50 mal leuchten läßt 'Danch ist er deaktiv ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de '################################################### Const Writepowerport_adr = &H72 'I2C Adr PCF 2 Const Readpowerport_adr = &H73 'I2C Adr PCF 2 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim I As Byte $crystal = 4000000 'Quarzfrequenz Config Scl = Portd.3 'Ports fuer IIC-Bus Config Sda = Portd.2 I2cinit I = 0 I2cdaten = 1 For I = 1 To 200 I2cdaten = I2cdaten * 2 If I2cdaten > 16 Then I2cdaten = 1 I2cstart I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken I2cwbyte I2cdaten 'Datenbyte an PCF I2cstop Waitms 100 Next End
Es wäre schön wenn auch ihr eure ersten interessanten Programme posten würdet.
Gruß Frank







Zitieren

Lesezeichen