PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Baby Orangutan B-328 - Motortreiber gekillt?



ScummVM
06.05.2012, 16: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

oberallgeier
06.05.2012, 16:31
... Jeder Motor zieht im Leerlauf ca. 0,25A und unter Last ca. 0,7A - sollte eigentlich gehen ...
Sollte gehen - dachte ich auch mal. Aber erstens - was heißt bei Dir "Laststrom" - und zweitens ist der Anlaufstrom manchmal erheblich über dem Strom im "normalen" (das ist genauso schwammig wie Dein Laststrom *ggg*) Betrieb. Ich hatte mich vor Jahren mal beim TB6612FNG durch die Absolute Maximum Ratings beruhigen lassen. Zu Unrecht, das belegt jedenfalls ein alter, ruinierter babyorangutan in meiner Schublade.

Fazit: der TB6612FNG wird Dir den Anlaufstrom der Motoren übel genommen haben.

Das Datenblatt spricht in den Absolute Maximum Ratings von 3,2 A bei einem 10ms-single-pulse. Und 10 ms ist schon eine ziemlich flotte Zeitkonstante für nen Motor der von Dir benutzten Art. Meine winzigen Motoren - aus billigen Servos - haben schon Zeitkonstanten in dieser Größenordnung.

ScummVM
06.05.2012, 17:56
Also Laststrom... ich hab den einfach vom Typenschild abgeschrieben :D
Um da aber wirklich mal 0,5A fließen zu lassen muss man schon ordentlich an der Welle zupacken.

Ich dachte nicht das die Motoren nen sehr hohen Anlaufstrom haben - immerhin läuft der bei 0,5V schon weg, dabei zieht er dann 0,15A. (Leerlauf versteht sich)

Ajo, hatte das Labornetzteil auf 12V und ca. 0,5 - 0,6A eingestellt.

021aet04
06.05.2012, 18:47
Wenn du ein NT mit Strombegrenzung hast ist das nur für einen länger anhaltenden Strom. Wenn du einen Anlaufstrom hast entlädt sich der eingebaute Kondensator. Dadurch hast du kurzzeitig einen viel höheren Strom als den eingestellten.

So habe ich auch schon Leds (Hochleistungsleds) "umgebracht". Deswegen erhöhe ich die Spannung immer schrittweise. Beim Bsp. Led nehme ich die Nennspannung her und stelle das NT unterhalb dieser Grenze ein (je nach Led bis zu einigen Volt). Wenn ein Strom fließt erhöhe ich die Spannung.

MfG Hannes

ScummVM
06.05.2012, 20:04
hmmm... Mist. Also der Treiber IC ist definitiv hin - das Modul zieht auch ohne angeschlossene Motore Strom bis das Labornetzteil in der Stromgrenze hängt und der Treiber IC wird auch warm, was ohne Motoren nicht sein sollte.
Stellt sich nur die Frage ob der Treiber IC durch Überstrom oder durch meine Umpolaktion durchgeschmort ist. Ach Mist aber auch, wollt doch nur mein umgebautes Chassis mit den neuen Motoren austesten. :(

021aet04
06.05.2012, 20:07
Der Treiber ist durch Überstrom, verursacht durch umpolen. Das ist noch schlimmer als nur mit 100% PWM starten. Wenn der Motor läuft und man schaltet ihn ab wirkt der Motor als Generator. Wenn man ihn umpolt wirken Motor und Netzteil bzw Treiber gegeneinander. Somit ist der Strom noch größer als der Anlaufstrom.

MfG Hannes

ScummVM
06.05.2012, 21:47
Das heißt das der Treiber den normal Betrieb "vermutlich" ausgehalten hätte wenn ich vorher auf Bremsbetrieb oder Leerlauf geschaltet hätte. Blöderweise ist es im Beispiel von robotikhardware.de genauso gemacht.
Mit dem ganzen PWM Zeugs muss ich mich sowieso noch genauer auseinandersetzen.

Vielen Dank für die Erklärungen und die Hilfe!

P.S.: Kennt wer eine Quelle (außer Digikey) um an ein paar TB6612FNG zu kommen?

oberallgeier
07.05.2012, 08:04
... Kennt wer eine Quelle ... um an ein paar TB6612FNG zu kommen?Ich habe in den letzten Jahren etliche Teilchen von/bei pololu gekauft - die ja die babyorangutans u.a. herstellen. Dabei war ich immer mit deren ausserordentlich freundlichen, schnellen Service zufrieden. Eine Mail senden - gibt fast immer nach wenigen Stunden Antwort. Die Leute sind sehr entgegenkommend, möglich dass Sie Dir ein paar Treiber per Post (Brief, bitte extra erwähnen, dass sie die TEile per BRIEF senden sollen) zusenden. Gezahlt hatte ich stets mit Kreditkarte, allerdings habe ich ne Postadresse in den USA (und fast wöchentliche "Boten", die mir die Teile hierher bringen - unter Beachtung der Zollvorschriften!).

Mein letzter Kontakt dort war mit Kevin, schreib einfach an ihn oder ruf ihn an:
kevin@pololu.com
Kevin Chang
(702) 262-6648
www.pololu.com (http://www.pololu.com)
..............................
Pololu Corporation
3095 E. Patrick Ln. #12
Las Vegas, NV 89120
USA


Viele Grüße, viel Erfolg

ScummVM
07.05.2012, 22:23
Super, danke!
Werd Pololu mal eine Mail schreiben, vielleicht haben sie ein paar Treiber für mich ;)

Hab mich jetzt allerdings entschieden ein paar "dickere" Motortreiber zu kaufen, will nicht riskieren den zweiten auch noch zu killen. Die Baby Orangutans werd ich zur Turm / Kanonensteuerung verwenden da sind wesentlich kleinere Motore drin - das sollten sie eher verkraften.

Gruß
ScummVM

5Volt-Junkie
07.05.2012, 23:01
Hab einmal auf die selbe Weise den L293D gefetzt. Dann habe ich das im Code so angepasst, dass die Enable-Leitung erst mal auf GND gezogen wird, paar ms Verzögerung, Richtung wird umgeschaltet, Enable-Leitung wieder auf High. So läufst noch heute ;)

oberallgeier
08.05.2012, 08:11
Hab einmal auf die selbe Weise den L293D gefetzt. Dann ... Code ... angepasst ...Den L293 habe ich erst einmal verheizt - mit meinem WALL R. (https://www.roboternetz.de/community/threads/40453-WALL-R-läuft-(autonomes-Fahrzeug)) Die Abhilfe war einfach - ich habe für den einzigen Motor beide Kanäle des 293 parallel genommen - und der WALL R fährt und fährt und fährt ...

Die Bremserei mit dem Gegenschub - das Normalste der Welt für jeden, der schon Bötchen (na ja, geht ja bis zum Dickschiff) mit Motor gefahren ist - funktioniert bei meinen autonomen Dosen (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=358306&viewfull=1#post358306) ziemlich gut. Allerdings ist deren Leistung, und nicht nur die Aufnahmen sondern vermutlich auch die Leistungsabgabe, relativ bescheiden. Entsprechende Tests (klick) (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=429579&viewfull=1#post429579) hatte ich systematisch betrieben, um eine optimale, auch ne präzise Fahrweise zu erreichen. Dazu gibts etliche Diagramme, eins mit "Vollschub zum Bremsen" z.B. hier. (http://oberallgeier.ob.funpic.de/SpA-an-Sp-ab-mBr-akt.jpg)

Es gibt ein Fazit (getestet bei TB6612FNG und ~293): beim TB6612FNG kann man beide Kanäle parallel schalten und softwaremässig gleichzeitig steuern. Das verdoppelt die zulässige Leistung. Wenn man nicht zwei Motoren zu schalten hat, kann das DIE Alternative sein, unabhängig vom Treiberbaustein.

ScummVM
09.05.2012, 01:06
Da hab ich jetzt einige Threads zu lesen bis ich meine neuen Treiber hab - sind echt super Teile die du da zusammenschraubst :cool:

Das man einige Treiber parallel schalten kann wusste ich - allerdings scheitert's da am programmieren bei mir.

oberallgeier
10.05.2012, 18:25
... Treiber parallel schalten ... scheitert's da am programmieren bei mir.Einmal danke. Zum Programmieren von beiden Kanälen parallel : Du setzt stets simultan beide entsprechenden Pins die den Treiberbaustein ansteuern - am einfachsten verbindest Du die "verschwisterten" Treibereingänge und die Ausgänge. Dann läufts parallel - und das sieht softwaretechnisch wie EIN einziger Kanal aus. Aber elektrisch mit doppelter Ausgangspower. War das verständlich (Urlaubszeit - Birne leicht überhitzt . . . )

ScummVM
12.05.2012, 10:45
thx, muss ich mal ausprobieren wenn ich etwas mehr Zeit hab. ;)