ScummVM
06.05.2012, 17:17
Hallo Zusammen,
Hab mir 2 Baby Orangutan gekauft um mit meinem Robotik Projekt zumindest mal etwas voranzukommen und zumindest mal ein "Rollin' Chassis" zu haben.
Also, Baby Orangutan (http://www.pololu.com/catalog/product/1220) auf ein Steckbrett geschnallt, 2 Motore von Conrad angeschlossen (ja ja Conrad ich weiß :D - http://www.conrad.de/ce/de/product/233131/HOCHLEISTUNGSGETRIEBEMOTOR-12VDC-118/1210060&ref=list) , Labornetzteil angeschlossen, Demoprogramm von robotikhardware.de eingespielt - läuft :cool:
Danach hab ich das Demoprogramm etwas umgeschrieben um mit beiden Motoren gleichzeitig zu "fahren" (Motor 1+2 vorwärts, Motor 1+2 rückwärts, Motor 1 vorwärts - Motor 2 rückwärts, Motor 1 rückwärts - Motor 2 vorwärts).
Die erste Stufe lief noch alles, bis die Drehrichtung beider Motore umgedreht worden ist - plötzlich hing das Netzteil in der Stromgrenze und die Motoren kamen nicht mehr auf Drehzahl.
Wenn ich das originale Demoprogramm wieder einspiele, welches vorher gelaufen ist, passiert das selbe - Motor kommt nicht auf Drehzahl, auch wenn ich die Stromgrenze etwas aufdrehe. Der Treiber IC wird relativ schnell sehr warm - zwar noch nicht so das man sich die Finger verbrennt, aber vorher ist mir keine Erwärmung aufgefallen.
Hab mir daraufhin mein Programm nochmal angesehen und hab festgestellt das ich wohl bei voller Drehzahl umgepolt hab ohne zu bremsen - hab das so aus dem Demoprogramm übernommen :(.
Ich nehm mal an das hat mir der Motortreiber übel genommen - der Treiber IC ist dieser hier: http://www.pololu.com/file/0J86/TB6612FNG.pdf , so wie ich das auffasse hat der IC schon Freilaufdioden drinnen - richtig?
Oder könnten die Motoren zu stark für den Treiber sein ? Jeder Motor zieht im Leerlauf ca. 0,25A und unter Last ca. 0,7A - sollte eigentlich gehen? (Ich bin hier auch nur im Leerlauf gefahren).
Liegt das jetzt wirklich an meinem Programm oder hatte der schon nen defekt? Trau mich jetzt gar nicht mehr den zweiten anzuhängen :(
Hier noch mein Testprogramm:
'################################################# ##
'Dieses Programm demonstriert die Programmierung
'des Mini Robot Boards Baby Orangutan B-328
'Verwendeter Compiler Bascom
'
'Aufgabe:
' Motor 1 + 2 wird langsam beschleunigt
' Motor 1 + 2 wird langsam in andere Richtung beschleunigt
' Motor 1 wird langsam vorwärts - Motor 2 wird langsam rückwärts beschleunigt
' Motor 1 wird langsam rückwärts - Motor 2 wird langsam vorwärts beschleunigt
'
'################################################# ##
$prog &HFF , &HF6 , &HD9 , &HFC 'Standard Fusebits für Orangutan B-328
'Die üblichen Definitionen bei Standardprogrammen für Orangutan SV-328
$regfile = "m328pdef.dat"
$crystal = 20000000 'Quarzfrequenz
$hwstack = 32
$framesize = 64
$swstack = 32
' ------ Anwendungsspezifische Configurationen ---------
'Ports benennen
Red_led Alias Portd.1
Motor1a Alias Portd.6
Motor1b Alias Portd.5
Motor2a Alias Portd.3
Motor2b Alias Portb.3
Declare Sub Motortest()
'Variablen
Dim I As Integer
Config Pind.1 = Output
Config Pinb.3 = Output
Config Pind.3 = Output
Config Pind.5 = Output
Config Pind.6 = Output
' PWM Register setzen
' see the ATmega48/168/328P datasheet for detailed register info
' configure for inverted PWM output on motor control pins
Tccr0a = &HF3
Tccr2a = &HF3
' use the system clock / 8 (2.5 MHz) as the timer clock
Tccr0b = &H02
Tccr2b = &H02
Do
Call Motortest()
Loop
End
Sub Motortest()
' Motor 1+2 beschleunigen
I = 0
Do
Ocr0a = 0
Ocr0b = I
Ocr2a = 0
Ocr2b = I
Waitms 500
I = I + 5
Loop Until I > 1025
Wait 2
' Motor 1+2 in andere Richtung beschleunigen
I = 0
Do
Ocr0a = I
Ocr0b = 0
Ocr2a = I
Ocr2b = 0
Waitms 500
I = I + 5
Loop Until I > 1025
Ocr0a = 0
Ocr0b = 0
Ocr2a = 0
Ocr2b = 0
' Motor 1 vorwärts, Motor 2 rückwärts beschleunigen
I = 0
Do
Ocr0a = 0
Ocr0b = I
Ocr2a = I
Ocr2b = 0
Waitms 500
I = I + 5
Loop Until I > 1025
Wait 2
' Motor 1 rückwärts, Motor 2 vorwärts beschleunigen
I = 0
Do
Ocr0a = I
Ocr0b = 0
Ocr2a = 0
Ocr2b = I
Waitms 500
I = I + 5
Loop Until I > 1025
Ocr0a = 0
Ocr0b = 0
Ocr2a = 0
Ocr2b = 0
End Sub
Hab mir 2 Baby Orangutan gekauft um mit meinem Robotik Projekt zumindest mal etwas voranzukommen und zumindest mal ein "Rollin' Chassis" zu haben.
Also, Baby Orangutan (http://www.pololu.com/catalog/product/1220) auf ein Steckbrett geschnallt, 2 Motore von Conrad angeschlossen (ja ja Conrad ich weiß :D - http://www.conrad.de/ce/de/product/233131/HOCHLEISTUNGSGETRIEBEMOTOR-12VDC-118/1210060&ref=list) , Labornetzteil angeschlossen, Demoprogramm von robotikhardware.de eingespielt - läuft :cool:
Danach hab ich das Demoprogramm etwas umgeschrieben um mit beiden Motoren gleichzeitig zu "fahren" (Motor 1+2 vorwärts, Motor 1+2 rückwärts, Motor 1 vorwärts - Motor 2 rückwärts, Motor 1 rückwärts - Motor 2 vorwärts).
Die erste Stufe lief noch alles, bis die Drehrichtung beider Motore umgedreht worden ist - plötzlich hing das Netzteil in der Stromgrenze und die Motoren kamen nicht mehr auf Drehzahl.
Wenn ich das originale Demoprogramm wieder einspiele, welches vorher gelaufen ist, passiert das selbe - Motor kommt nicht auf Drehzahl, auch wenn ich die Stromgrenze etwas aufdrehe. Der Treiber IC wird relativ schnell sehr warm - zwar noch nicht so das man sich die Finger verbrennt, aber vorher ist mir keine Erwärmung aufgefallen.
Hab mir daraufhin mein Programm nochmal angesehen und hab festgestellt das ich wohl bei voller Drehzahl umgepolt hab ohne zu bremsen - hab das so aus dem Demoprogramm übernommen :(.
Ich nehm mal an das hat mir der Motortreiber übel genommen - der Treiber IC ist dieser hier: http://www.pololu.com/file/0J86/TB6612FNG.pdf , so wie ich das auffasse hat der IC schon Freilaufdioden drinnen - richtig?
Oder könnten die Motoren zu stark für den Treiber sein ? Jeder Motor zieht im Leerlauf ca. 0,25A und unter Last ca. 0,7A - sollte eigentlich gehen? (Ich bin hier auch nur im Leerlauf gefahren).
Liegt das jetzt wirklich an meinem Programm oder hatte der schon nen defekt? Trau mich jetzt gar nicht mehr den zweiten anzuhängen :(
Hier noch mein Testprogramm:
'################################################# ##
'Dieses Programm demonstriert die Programmierung
'des Mini Robot Boards Baby Orangutan B-328
'Verwendeter Compiler Bascom
'
'Aufgabe:
' Motor 1 + 2 wird langsam beschleunigt
' Motor 1 + 2 wird langsam in andere Richtung beschleunigt
' Motor 1 wird langsam vorwärts - Motor 2 wird langsam rückwärts beschleunigt
' Motor 1 wird langsam rückwärts - Motor 2 wird langsam vorwärts beschleunigt
'
'################################################# ##
$prog &HFF , &HF6 , &HD9 , &HFC 'Standard Fusebits für Orangutan B-328
'Die üblichen Definitionen bei Standardprogrammen für Orangutan SV-328
$regfile = "m328pdef.dat"
$crystal = 20000000 'Quarzfrequenz
$hwstack = 32
$framesize = 64
$swstack = 32
' ------ Anwendungsspezifische Configurationen ---------
'Ports benennen
Red_led Alias Portd.1
Motor1a Alias Portd.6
Motor1b Alias Portd.5
Motor2a Alias Portd.3
Motor2b Alias Portb.3
Declare Sub Motortest()
'Variablen
Dim I As Integer
Config Pind.1 = Output
Config Pinb.3 = Output
Config Pind.3 = Output
Config Pind.5 = Output
Config Pind.6 = Output
' PWM Register setzen
' see the ATmega48/168/328P datasheet for detailed register info
' configure for inverted PWM output on motor control pins
Tccr0a = &HF3
Tccr2a = &HF3
' use the system clock / 8 (2.5 MHz) as the timer clock
Tccr0b = &H02
Tccr2b = &H02
Do
Call Motortest()
Loop
End
Sub Motortest()
' Motor 1+2 beschleunigen
I = 0
Do
Ocr0a = 0
Ocr0b = I
Ocr2a = 0
Ocr2b = I
Waitms 500
I = I + 5
Loop Until I > 1025
Wait 2
' Motor 1+2 in andere Richtung beschleunigen
I = 0
Do
Ocr0a = I
Ocr0b = 0
Ocr2a = I
Ocr2b = 0
Waitms 500
I = I + 5
Loop Until I > 1025
Ocr0a = 0
Ocr0b = 0
Ocr2a = 0
Ocr2b = 0
' Motor 1 vorwärts, Motor 2 rückwärts beschleunigen
I = 0
Do
Ocr0a = 0
Ocr0b = I
Ocr2a = I
Ocr2b = 0
Waitms 500
I = I + 5
Loop Until I > 1025
Wait 2
' Motor 1 rückwärts, Motor 2 vorwärts beschleunigen
I = 0
Do
Ocr0a = I
Ocr0b = 0
Ocr2a = 0
Ocr2b = I
Waitms 500
I = I + 5
Loop Until I > 1025
Ocr0a = 0
Ocr0b = 0
Ocr2a = 0
Ocr2b = 0
End Sub