Hallo!
Bastel grad an meinem ersten Roboter und bin ein totaler Bascomneuling. Möchte über einen PC + RN-Control 1.4 meinen Schrittmotor für die Lenkung steuern. Am PC läuft Labview. An der RN-Control hängt die standart L297/L298 Schaltung.
Portbeschaltung der RN-Control:
Portd.2 = CLOCK
Portd.3 = Direction
Portd.7 = Enable
Die Ports von Portc.0 bis einschließlich Portc.2 hab ich als Eingänge definiert. Sie sind mit meinem PC verbunden.
Das Board soll nun die oben genannten c-Ports in einer Endlosschleife abfragen, bis einer auf High gesetzt ist. Sollte das der Fall sein, muss das Unterprogramm Schrittmotor ausgeführt werden. Hier wird nun geprüft, wie die c-Ports geschaltet sind. Sie bleiben vom PC für eine Sekunde beschaltet, bevor alles wieder auf low gesetzt wird. Die Unterscheidung der Laufrichtung des Schrittmotors hängt von der Zusammensetzung der Low-High-Zustände der c-Ports ab. Je nachdem wie sie beschaltet sind wird im Schrittmotor-Unterprogramm ein entsprechendes weiteres Unterprogramm geöffnet.
Nun zu meinem Problem… es tut sich gar nichts am Motor. Meine Vermutung wäre, dass ich in einem Unterprogramm kein weiteres öffnen kann. Wäre echt dankbar, wenn mir hier jemand helfen würde.
So hier noch mein Quellcode:
Neben bei noch, die Schrittmotorschaltung funktioniert wunderbar. Hab sie schon mit der RN-Control zum laufen bekommen.Code:Declare Sub Schrittmotor() 'Subs Ports und Variablen declarieren Declare Sub Rechts0() Declare Sub Rechts() Declare Sub Links0() Declare Sub Links() Dim I As Integer $regfile = "m16def.dat" $crystal = 16000000 $baud = 9600 Config Pinc.0 = Input Config Pinc.1 = Input Config Pinc.2 = Input Portc.0 = 0 Portc.0 = 0 Portc.0 = 0 Config Pind.2 = Output Config Pind.3 = Output Config Pind.7 = Output Do 'Endlosschleife For I = 0 To 2 If Portc.i = 1 Then Call Schrittmotor Else Waitms 20 End If Next I Loop End Sub Schrittmotor() 'Unterprogramm Schrittmotor If Portc.0 = 1 And Portc.1 = 0 Then If Portc.2 = 0 Then Call Links0 Else Call Links End If Else If Portc.0 = 0 And Portc.1 = 1 Then If Portc.2 = 0 Then Call Rechts0 Else Call Rechts End If End If End If End Sub Sub Links0() 'Unterprogramme, die je nach beschaltung der C-Ports ausgeführt werden Portd.7 = 1 Portd.3 = 0 For I = 0 To 500 Portd.2 = 1 Waitms 5 Portd.2 = 0 Waitms 5 Next I Portd.7 = 0 Portd.3 = 0 End Sub Sub Links() Portd.7 = 1 Portd.3 = 0 For I = 0 To 1000 Portd.2 = 1 Waitms 5 Portd.2 = 0 Waitms 5 Next I Portd.7 = 0 Portd.3 = 0 End Sub Sub Rechts0() Portd.7 = 1 Portd.3 = 1 For I = 0 To 500 Portd.2 = 1 Waitms 5 Portd.2 = 0 Waitms 5 Next I Portd.7 = 0 Portd.3 = 0 End Sub Sub Rechts() Portd.7 = 1 Portd.3 = 1 For I = 0 To 1000 Portd.2 = 1 Waitms 5 Portd.2 = 0 Waitms 5 Next I Portd.7 = 0 Portd.3 = 0 End Sub
Gruß







Zitieren

Lesezeichen