PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : i2c rs232 Motor-Servo Controller



Nerb
24.08.2010, 17:16
Hi,
ich bin gerade dabei, einen Motor- und 8-Fach Servocontroller mit I2C und RS232 Interface zu bauen. Der Schaltplan ist gerade eben fertig geworden und ich wollte euch bitten, mal schnell drüber zu fliegen um so noch versteckte Fehler zu finden.
BILD (http://i34.tinypic.com/34y1vu9.jpg)
danke!
mfg Philip

Edit von BASTIUniversal: Bitte auf die Bildgröße achten!
Edit: habe ein paar kleinere Fehler entfernt. Link auf neue Version geändert.

Jakob L.
24.08.2010, 22:42
Hallo,

ich habe mir die Schaltung mal kurz angesehen. Hier sind ein paar Punkte, die mir aufgefallen sind:

1. Die ISP-Programmierung verwendet die selben IO-Pins wie die Servos. Das kann zu unkontrollierten Servo-Bewegungen sowie eventuell zu Signalstörungen bei der Programmierung durch Reflektionen nach den Servoleitungen führen. Eventuell muss man daher die Servos zum Programmieren abstecken. Einfacher wird das, wenn du gleich einen grösseren Controller (ATMega16) nimmst.

2. Was bringt die Diode bei der Stromversorgung der Servos?

3. Warum sind im Schaltplan für den Motortreiber Z-Dioden eingezeichnet? Normalerweise verwendet man für so etwas Shottky-Dioden oder gewöhnliche Si-Dioden. Je nach Dimensionierung kann man die Dioden auch ganz weglassen und die eingebauten Dioden der Mosfets nehmen. Was ist eigentlich die Betriebsspannung der Schaltung? Welche Mosfets verwendest du? Welchen Strom soll die Schaltung liefern können?

4. Mosfet-Ansteuerung: Das Einschalten der unteren Mosfets per Pull-Up Widerstand ist relativ langsam, was bei hohen Strömen und hoher PWM-Frequenz zu hohe Schaltverluste im Mosfet erzeugen würde. Ich würde für die unteren Mosfets Logic-Level Fets nehmen und diese über einen kleinen Widerstand (10-100 Ohm) direkt mit dem µC-Pin ansteuern. Das spart Bauteile und ist auf jeden Fall schneller als die jetzige Lösung. Die Ansteuerung der oberen Mosfets kann man so lassen, da hier nur selten (bei Richtungswechsel) geschaltet werden muss.

Gruss
Jakob

Nerb
25.08.2010, 00:15
Hi,
danke für die Antwort.

zu 1: Der mega8 ist perfekt, es werden alle Pins benutzt. Zum Programmieren stecke ich die Servos ab.

zu 2: Schutz gegen Verpolung. Ich weiß nicht ob das sinnvoll ist, weil Servos das vllt schon eingebaut haben.

zu 3: Das sind Schottkydioden. Das Symbol sieht denen der Z-Dioden sehr ähnlich. Externe Dioden sind schon erfoderlich für hohe Schaltfrequenzen.

zu 4: Danke für den Tipp. Das habe ich in der neuen Version berücksichtigt (siehe weiter unten). Sicher, dass das so ein kleiner Widerstand sein kann? Ich hätte jetzt eher 10k oder irgendwas genommen, was gerade so rumfliegt.

Hier ist die aktuelle Version (hat sich heute bestimmt 10mal geändert :D )
http://i36.tinypic.com/2qtlsig.jpg

Bei drei Sachen bin ich mir noch unsicher: Bei der Diode und bei dem Elko (100µF) in der Servospannung. Kann ich beides weglassen? Brauche ich einen Pullup oder Pulldown Widerstand an Rx? Oder nehme ich hier den Internen?

Ich habe vorher noch nie PWM bei Motoren benutzt. Welche Schaltfrequenzen sind üblich? Ich dachte zuerst an ca 2Khz, aber das hört man bestimmt.

mfg Philip

oberallgeier
25.08.2010, 09:05
Hi Philip,

... habe vorher noch nie PWM bei Motoren benutzt. Welche Schaltfrequenzen sind üblich ...Das kommt auf die Motorgröße drauf an - und selbst dann gibt es noch deutllch unterschiedliche Meinungen. Das hatte ich hier ziemlich (https://www.roboternetz.de/phpBB2/viewtopic.php?t=37410) "abgeklopft". Meine kleinen (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=437282#437282) Hackeservomotoren laufen mit 1,22 kHz, (http://oberallgeier.ob.funpic.de/plan_irupts+timr.gif) das geht sehr ordentlich. Geräusche gibt es ja eher beim unterschwelligen Ansteuern, kurz bevor der Motor anfängt sich zu drehen. Damit hatte man z.B. beim asuro Musikstücke gespielt *ggg*.

Jakob L.
25.08.2010, 09:23
Die 10k zwischen µC und Mosfet sind definitiv zu hoch. Schau dir mal an, welche Ladung ein Mosfet braucht, um voll durchzuschalten.

Für Rx braucht man an sich keinen besonderen Widerstand. Das Signal wird ja von der anderen Seite gesteuert. Wenn du jedoch automatisch erkennen willst, ob die serielle Schnittstelle oder I2C verwendet wird, dann wäre ein Widerstand nach GND oder 5V eventuell sinnvoll, um Fehlerkennungen durch Signalstörungen zu vermeiden. Wenn an dem Rx Pin kein langes, ungeschirmtes und nicht angeschlossenes Kabel hängt, dann sollte auch der interne Pull-Up reichen.

Bei PWM sind sehr unterschiedliche Frequenzen möglich und üblich. Das kann von 100 Hz bis einige 10 kHz gehen. Ich würde erst mal mit ein paar kHz anfangen. Wenn es zu störenden Geräuschen kommt, dann kann man immer noch eine höhere Frequenz versuchen.

daviid
25.08.2010, 09:34
Das mit ISP seh ich auch problematisch, das sagt man zwar vorher immer so, aber wenn man das Teil debuggt flasht man mindestens jede Minute das teil Neu.

Ich würde da eher die 5v Stromversorgung aller Servos über einen Jumper laufen lassen und den zum flashen einfach ziehen, dann sollte den Servos nichts mehr passieren können

Nerb
28.08.2010, 08:35
So, habe nun ein Layout gemacht und den Schaltplan entsprechend angepasst:

Schaltplan: http://i34.tinypic.com/fjeuc1.jpg
Layout: http://i36.tinypic.com/ehm93c.jpg

Ich muss erst noch ein paar Teile bestellen, bevor ich die Platine fertigen kann und somit anfangen kann zu programmieren.
Eine Frage habe ich aber noch: Kann ich den AREF Pin einfach in der Luft hängen lassen? Den AD-Wandler brauche ich nicht.

mfg

daviid
28.08.2010, 16:38
Jo, kannst du einfach nicht beschalten