tfv
09.03.2008, 08:31
Mein Standard-Servomotor (universelles Standardservo für 9,95 von Robotikhardware) verhält sich plötzlich etwas seltsam, was kann denn da kaputt gehen?
Ich hatte schon mal ein kleines Ansteuerprogramm für den Servo mithilfe des RP6-ADC-Ausgangs geschrieben, das funktioniert hat. Nun funktioniert weder dieses Programm, noch ein ähnliches Programm auf dem Rn128Megafunk.
Zum Test habe ich, inspiriert von einem anderen Boardeintrag, ein kleines AVR-Oszi gebaut, weil ich erst dachte, die Servosignale würden nicht richtig funktionieren. Hab dazu einfach Servosignale über einen anderen ADC-Eingang wieder eingelesen (man kommt so auf Abtastraten von 0,2 ms). Hier kann ich ganz klar sehne, dass sich die Pulsweite verändern lässt, die Signalgeneration scheint also zu funktionieren.
Programm habe ich mal beigefügt.
'################################################# ##
'Servoansteuerung von RN 128
'
'Autor: Wag
'################################################# ######
' ---------------Definitionen ---------------------------
$regfile = "m128def.dat" ' Bei Mega 128 "
$framesize = 40
$swstack = 40
$hwstack = 40
$crystal = 16000000 'Quarzfrequenz
$baud = 19200 'Baudrate für Funkmodul
$baud1 = 9600 'Baudrate für MAX
Open "com2:" For Binary As #2 'Ausgabe über zweite serielle Schnittstelle (MAX)
Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk
Sound Portg.2 , 400 , 250 'BEEP bei RN-Mega128Funk
Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk
Config Serialout1 = Buffered , Size = 100 'Ausgabebuffer für normalse RS232
' ---------------Definitionen fuer Subprogramme----------
'Ports
Config Portf.0 = Output 'Motor
Config Portf.1 = Input
Config Servos = 1 , Servo1 = Portf.0 , Reload = 10
Config Adc = Single , Prescaler = Auto , Reference = Internal
Enable Interrupts
' ---------------------------------------------------
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim V(500) As Word
Dim U As Word
Wait 2
Print #2 , ""
Print #2 , "**** ****"
Print #2 , "**** Kommunikationscenter auf RN-Mega128Funk ****"
Print #2 , "**** ****"
Print #2 , ""
Print #2 , "Motor wird durchgefahren."
Servo(1) = 100
Start Adc
For I = 1 To 200
U = Getadc(0)
V(i) = U
Next
Stop Adc
For I = 1 To 20
For J = 1 To 10
K = I * 10
K = K + J
Print #2 , V(k) ; " ";
Next
Print #2 , " "
Next
Print #2 , "Neuer Test"
Servo(1) = 80
Start Adc
For I = 1 To 200
U = Getadc(0)
V(i) = U
Next
Stop Adc
For I = 1 To 20
For J = 1 To 10
K = I * 10
K = K + J
Print #2 , V(k) ; " ";
Next
Print #2 , " "
Next
Print #2, "Neuer Test"
Servo(1) = 60
Start Adc
For I = 1 To 200
U = Getadc(0)
V(i) = U
Next
Stop Adc
For I = 1 To 20
For J = 1 To 10
K = I * 10
K = K + J
Print #2 , V(k) ; " ";
Next
Print #2 , " "
Next
End
Der Servo selbst zuckt aber überhaupt nicht, trotzdem bewegt er sich aber in anderen Fällen, beim Ein-oder Ausschalten, mal ruckartig, mal dreht er langsam.
Kann da im Servo irgendeine Eingangselektronik abgeraucht sein? Wenn ja, in welchen Fällen macht die sowas?
Danke für alle Tips!
Ich hatte schon mal ein kleines Ansteuerprogramm für den Servo mithilfe des RP6-ADC-Ausgangs geschrieben, das funktioniert hat. Nun funktioniert weder dieses Programm, noch ein ähnliches Programm auf dem Rn128Megafunk.
Zum Test habe ich, inspiriert von einem anderen Boardeintrag, ein kleines AVR-Oszi gebaut, weil ich erst dachte, die Servosignale würden nicht richtig funktionieren. Hab dazu einfach Servosignale über einen anderen ADC-Eingang wieder eingelesen (man kommt so auf Abtastraten von 0,2 ms). Hier kann ich ganz klar sehne, dass sich die Pulsweite verändern lässt, die Signalgeneration scheint also zu funktionieren.
Programm habe ich mal beigefügt.
'################################################# ##
'Servoansteuerung von RN 128
'
'Autor: Wag
'################################################# ######
' ---------------Definitionen ---------------------------
$regfile = "m128def.dat" ' Bei Mega 128 "
$framesize = 40
$swstack = 40
$hwstack = 40
$crystal = 16000000 'Quarzfrequenz
$baud = 19200 'Baudrate für Funkmodul
$baud1 = 9600 'Baudrate für MAX
Open "com2:" For Binary As #2 'Ausgabe über zweite serielle Schnittstelle (MAX)
Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk
Sound Portg.2 , 400 , 250 'BEEP bei RN-Mega128Funk
Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk
Config Serialout1 = Buffered , Size = 100 'Ausgabebuffer für normalse RS232
' ---------------Definitionen fuer Subprogramme----------
'Ports
Config Portf.0 = Output 'Motor
Config Portf.1 = Input
Config Servos = 1 , Servo1 = Portf.0 , Reload = 10
Config Adc = Single , Prescaler = Auto , Reference = Internal
Enable Interrupts
' ---------------------------------------------------
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim V(500) As Word
Dim U As Word
Wait 2
Print #2 , ""
Print #2 , "**** ****"
Print #2 , "**** Kommunikationscenter auf RN-Mega128Funk ****"
Print #2 , "**** ****"
Print #2 , ""
Print #2 , "Motor wird durchgefahren."
Servo(1) = 100
Start Adc
For I = 1 To 200
U = Getadc(0)
V(i) = U
Next
Stop Adc
For I = 1 To 20
For J = 1 To 10
K = I * 10
K = K + J
Print #2 , V(k) ; " ";
Next
Print #2 , " "
Next
Print #2 , "Neuer Test"
Servo(1) = 80
Start Adc
For I = 1 To 200
U = Getadc(0)
V(i) = U
Next
Stop Adc
For I = 1 To 20
For J = 1 To 10
K = I * 10
K = K + J
Print #2 , V(k) ; " ";
Next
Print #2 , " "
Next
Print #2, "Neuer Test"
Servo(1) = 60
Start Adc
For I = 1 To 200
U = Getadc(0)
V(i) = U
Next
Stop Adc
For I = 1 To 20
For J = 1 To 10
K = I * 10
K = K + J
Print #2 , V(k) ; " ";
Next
Print #2 , " "
Next
End
Der Servo selbst zuckt aber überhaupt nicht, trotzdem bewegt er sich aber in anderen Fällen, beim Ein-oder Ausschalten, mal ruckartig, mal dreht er langsam.
Kann da im Servo irgendeine Eingangselektronik abgeraucht sein? Wenn ja, in welchen Fällen macht die sowas?
Danke für alle Tips!