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
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
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.
Es wäre schön wenn auch ihr eure ersten interessanten Programme posten würdet.
Gruß Frank
Lesezeichen