PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Open-Servo-CAN



Sven04
05.03.2008, 00:41
Hi Leute,

während ich mir Gedanken gemacht habe über die Servos, die ich im meinem Humanoiden Roboter, der in Planung ist, einsetzen will, bin ich auf das Open Servo Projekt gestoßen. Nun hab ich nach längeren Überlegungen begonnen ein eignes Open Servo Projekt zu erstellen, nur soll dieser über einen CAN-Bus verfügen, um auch den Leuten mit Echtzeitbetriebssystem eine Chance zu geben, eine Echtzeitsteuerung weiter zu realisieren. Ich habe angefangen mit diesem Projekt bin leider noch nicht ganz fertig, aber wollte trotzdem mal die ersten Schaltpläne online stellen und Tipps von euch ein zu holen, da momentan die Platinen sehr vollgeoackt wäre und nicht gut zu routen sind. Bitte um Verbesserungsvorschläge und Tipps zur Steuerung. Wollte nach erfolgreichen ersten Prototypen auch ein Wiki-Eintrag über dieses Projekt erstellen, damit jeder, der auch auf der Suche nach einer Servosteuerung ist darauf Zugriff hat.



Gruß,
Sven

lorcan
05.03.2008, 08:53
Hallo Sven.

Was soll deine Schaltung den machen?
Stellt der ATmega ne Verbindung zwischen CANBus und Servo her und steuert das Servo oder die Servos per PWM? Oder soll die Schaltung mit dem Controller ins Gehäuse eines gehackten bzw. bearbeiteten Servos? Wenn ja, dann würde ich versuchen ein kleineren Controller zunehmen (Dafür spricht ja die H-Brücke).
Außerdem sehe ich in deinen Schaltplänen noch nicht viel.
Schreib doch nochmal genauer wie du das Servo ansteuern möchtest.

Sven04
05.03.2008, 10:35
Hi lorcan,

die Elektronik soll in den Servo hinein passen,und mit dem Motor und dem bestehenden Poti verbunden werden. Der Mikrocontroller steuert per PWM die H-Brücke und bekommt über den CAN-Bus seine Befehle wie weite und wie schnell. Was für einen Mikrocontroller wirdest u verwenden? Hab ja gesagt, dass der Schaltplan noch nicht ganz fertig ist, da ich erst eure Meinung zu den verwendeten Teilen hören möchte. Der Controller soll über CAN übertragen bekommen bis zu welcer Position der Servo fahren soll ud wie schnell das passieren soll und soll als Rückgabewerte immer die aktuelle Position des Servos zurückmelden.

Gruß,
Sven

lorcan
05.03.2008, 10:59
Ich würde einen so kleinen Controller wie möglich verwenden und das sind die ATtinys. Du mußt halt gucken was du an Schnittstellen brauchst. Also 1 Pin PWM, 1-2 Pins für die Richtung und n Pins für die Kommunikation mit dem CAN Controller. Denn einen ATmrga wirst du kaum im Gehäuse unterbringen. Dann kommen ja noch Kondensatoren etc dazu.
Welcher jetzt genau deine Anforderung erfüllt kann ich dir so spontan nicht sagen, das musst du aus den Datenblättern entnehmen.
Was noch interessant ist: Welche Sprache willst du nutzen? Denn diese sollte natürlich auch den gewünschten Controller unterstützen.

Sven04
05.03.2008, 19:26
Ich wollte C als Programmiersprache für dieses Projekt benutzen. Hab aber leider noch kein ATtiny gefnden der vollen SPI unterstützt, um den CAN Bus zu betreiben.


Gruß,
Sven

McJenso
05.03.2008, 19:52
Hallo,

habe den Tiny2313 erfolgreich mit dem MCP ans Laufen bekommen. Mit dem USI war das zwar erst etwas gewöhnungsbedürftig, geht aber. Als Grundlage habe ich das Tutorial von http://www.kreatives-chaos.com/ genommen und den SPI-Zugriff für das USI umgebogen.
Hast du dir schon Gedanken über den Takt für den MCP gemacht? Ich habe einen extra Quarz genommen. Bei mir ist Platz aber auch nicht so das Thema.

Gruß

Jens

Sven04
05.03.2008, 21:38
Kannst du mir mal die Schaltung und so schicken, damit ich schauen kann wie du des gemacht hast.
Ich bin für jede Idee offen. Den MCP2515 müsste ich ja noch mit einem Quarz versehen um die CAN Geschwindigkeit von 1MB zu realisieren.


Gruß,
Sven

McJenso
06.03.2008, 20:54
Hallo,

so habe das so schnell es ging noch in eine ähm halbwegs verständliche Form gebracht und entschuldige mich schon mal. Hoffe hab keinen Bock reingebaut und ach frag nicht nach K6, es ist ein Steckverbinder zu einem Funkmodul und hat nix mit dem CAN zu tun :-b
Beim USI gibt es noch ein Fallstrick. Der MOSI Pin ist am Controller plötzlich nicht mehr Output sondern Input, gleiches gilt für den MISO nur halt umgekehrt. Am besten du schaust dir die Bezeichnungen im Datenblatt an.
Im Schaltplan habe ich einen Abschlusswiderstand vorgesehen. Den kann man aus Platzgründen gegebenen Falls in den Anschluß verlegen.
Wenn du keinen Wert darauf legst, dass der Controller den MCP reseten kann, möchtest du vielleicht den CLKOUT des MCP nutzen. Wenn du einen Quarz am MCP hast, kannst du damit auch den Controller takten.

Gruß

Jens

Sven04
06.03.2008, 23:55
Hi Leute,

nachdem ich gerade eben mit dem Schaltplan fertig wurde und versucht habe dies auf dem Board mit den Maßen 17x20mm unterzubringen, stellte sich heraus, dass die ganze Hardware (MCP2515, MCP2551, Atmega8, ZXMHC 6A07 T8TA) nicht auf das Board passt, deshalb möchte ich nochmal neu beginnen mit dem Schaltplan und wollte euch fragen, was ihr meint welche Bauteile ich verwenden sollte?
Das Board soll noch die gleichen Abmaßungen hab wie zuvor, damit es in das Servo Gehäuse rein passt und soll über CAN verfügen, um eine Echtzeitsteuerung zu gewährleisten. Ich hoffe das Projekt findet im Forum seine Anhänger und wir bekommen eine stabile und schnelle Servosteuerung hin.
Vielen Dank für eure Mithilfe.

Gruß,
Sven

McJenso
07.03.2008, 17:42
Hallo,

ist doppelseitige Bestückung möglich?

Gruß

Jens

Sven04
07.03.2008, 18:05
Ja überhaupt kein Problem. Doppelseitig kann ich noch daheim machen als Prototyp nur mit mehr Layern wird kompliziert.


Gruß,
Sven

Kjion
08.03.2008, 20:43
Hi,


habe den Tiny2313 erfolgreich mit dem MCP ans Laufen bekommen. Mit dem USI war das zwar erst etwas gewöhnungsbedürftig, geht aber. Als Grundlage habe ich das Tutorial von http://www.kreatives-chaos.com/ genommen und den SPI-Zugriff für das USI umgebogen.

In der CAN Bibliothek (http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek) währe das für den ATTiny45/85 sogar schon eingebaut ;-) Für andere AVRs müssten nur ein paar Defines erweitert werden.

Allerdings ist der Flashspeicher des Tiny2313 etwas klein, ich glaube kaum das darin der gesamte Code unterzubringen wäre. Beim openservo-Projekt sind sie ja nicht umsonst vom ATTiny45 zum ATMega168 umgestiegen:


Because of the limited Flash memory the ATtiny45 version of the OpenServo is considered to be obsolete.

Die ganzen Chips auf 17x20mm unterzubringen halte ich für sehr sportlich bis ausgeschloßen. Auf dem Bild im Anhang ist quasi die Minimalbeschaltung für CAN zu sehen, damit ist die Oberseite schon komplett voll und es fehlt noch die komplette Ansteuerung des Servos sowieso sämtliche Anschlüsse.

Damit das eventuell auf die Fläche passt bräuchte man einen µC mit integriertem CAN Controller in der Größe des ATMega168, ich kenne allerdings keinen der da in Frage kommt.

Grüße
Fabian

Sven04
08.03.2008, 21:05
Hi Fabian,

so gehts mir auch. Ich hab e einfach das Problem, dass der Servo nicht mehr Platz bietet und ich mir deswegen was einfallen lassen muss. Leider ist der At90Can64 sehr groß und passt nicht drauf. Ich hab e ja auch noch ein ic, der für die Motoransteuerung gedacht ist und im moment fällt mir kein weg ein alle unter zu bringen. Was hälst du aber davom ein At90Can64 im mlp64 format einzusetzen, der hat abmasungen vom 9x9mm und cann integriert, sodass man nur einen ic für die motorsteuerung und den Mcp2551 bräuchte um das ganze hin zu bekommen?

Gruß,
Sven

Kjion
08.03.2008, 21:35
Es ist die Frage ob man das MLP-Package noch gelötet bekommt ... und selbst damit würde es noch sehr eng bleiben bzw. die Platine ließe sich auf jeden Fall nur noch professionell herstellen. Mit selbst ätzen ist da meiner Ansicht nach nichts mehr.

Spricht den etwas dagegen das Servo nach unten noch ein bisschen größer zum machen und eine zweite Platine von außen dagegen zu setzen (oder den Deckel mit etwas Abstand befestigen und die Platine innen anbringen)?

Grüße
Fabian

Sven04
08.03.2008, 21:43
Naja ich wollte den Servo nicht vergrößern, da in dem Roboter sowieso wenig Abstand eingeplant ist und dort auch Drehgelenke angebracht werden. Vielleicht bleibt mir nichts anderes übrig als auch einen I2C oder Rs485 Bus umzusteigen, um dieses Projekt zu verwirklichen. Oder hätte jemand noch eine Idee?

Gruß,
Sven

sigo
10.03.2008, 23:24
Hallo zusammen.
Ich finde das Projekt sehr interessant. Der CAN ist meines Erachtens der optimale Bus für viele Roboterprojekte. Ich persönlich würde auch mit einer größeren Platine zurechtkommen.

Sigo

Sven04
11.03.2008, 00:02
Hi Sigo,

wo wolltest due die Platinen für jeden einzelnen SErvo unterbringen?
Wenn du mir die Maße sagst die du dir vorstellen könntest könnt ich ma versuchen was zu machen.


MfG,
Sven

sigo
11.03.2008, 09:17
Hi Sven,
mir geht es insbesondere darum, normale Servomotoren von MAXON statt der Servos einzusetzen und auf einfach Weise anzusprechen. Denn das Problem aktueller Hexabots ist ja in der Regel, dass selbst die stärksten Servos mehr oder weniger an der Grenze belastet werden. Ich habe einen Servoregler, der aktuell mit RS-232 angesprochen wird. Nur ist das natürlich nicht so praktisch und sicher, wie eine CAN-BUS-Leitung.
Ich könnte die Regelsoftware vom aktuellen ATtiny2313 auf einen größeren Controller portieren, da im ATtiny kein Platz mehr ist...
Meine aktuellen Motoren sind 24mm Durchmesser. Man könnte evtl. mit 2 Platinen zu je 24x24mm arbeiten (einen für die Endstufe) oder auch mit einer langen, die parallel zum Motor liegt.
Ein Bild meiner aktuell riesengroßen Endstufe (einlagig, DIL) siehst du hier: http://silbergold.de/fotos/Ring-O/SV1-3x.jpg. Die sind leistungsmäßig aber auch deutlich überdimensioniert und auch noch für größere Motoren einsetzbar. Ich setze sie aktuell hier ein:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=358649#358649

Gruß Sigo

sigo
11.03.2008, 09:21
Nachtrag:
Die Integration ins Servo und überhaupt die Verwendung von Servos hat natürlich in vielen Fällen echte Vorteile.
Bevor du das Projekt jedoch zur Seite legst, weil es offenbar nicht passt, wäre es doch evtl. ein Kompromiss, an der Breiten Seite des Servos von außen einen Platine anzubringen.

Das ist zwar nur die zweitbeste Lösung, würde aber bei flacher Bauweise kaum auftragen. So dürfte genügend Platz vorhanden sein.

Sigo

Sven04
11.03.2008, 11:29
HI Sigo,

kannst mich ja mal in ICQ adden und wir können mal über deine Paltine sprechen, da findest sich bestimmt eine Lösung. Helfen würd ich dir auf jeden Fall, wenn du wolltest.
Kannst mich ja einfach adden oder schreibst mir ne PN.
Fallen lassen werd ich das Projekt bestimmt nicht nur weil es Rückschläge mit der größe gibt.

Gruß,
Sven

Sven04
14.03.2008, 22:53
Hi Leute,
hab jetzt mein Servo denn ich für dieses Projekt verwenden will bekommen. Ist ein Digital Servo mit bis zu 16Kg/cm Stellkraft. Die Platinenmaße konnen 21x18mm groß werden vllt passt, es ja irgendwie. Der Servos ist ein MG995 für 18 Euro.

Gruß,
Sven

sigo
15.03.2008, 15:19
Sven,

es ist zwar "good practice" an jedes Digital-IC einen 100nF C zu bauen, aber bei den geringen Abmessungen sollte ein zentraler 100nF für alles incl. Spannungsreglerausgang reichen. Das spart schonmal 2 Cs. Bin gespannt, wie klein du es hinbekommst. Welchen Controller nimmst du?
Ich denke, dass ATtiny45 oder 85 die kleinsten sein dürften. Falls es gar nicht geht, kannst du ja evtl. auch eine 2. Platine vorsehen? (Es gibt auch 0,5mm FR4 Materialien. Wo ein Wille ist, ist meist auch ein Weg..

Viel Erfolg,

Sigo

Sven04
15.03.2008, 16:26
Hi sigo,

ich hatte eigentlich gedacht den atmega 168 einzusetzen im Mlf format, da dieser über genügend resourcen verfügt und den zweiten quarz den ich bräuchte spar ich mir indem ich die CLKOUt leitung des mcp2515 benutze. Da sollte man schon was einsparen könne. Leider hat dich mein ICQ nicht in die Liste zu den Kontakten aufgenommen. Was auch günstig ist, ist dass der Poti des Servos direkt über Kabel nach angeschlossen wurde und so nicht unbedingt die pins eingeahlten werden müssen.

Gruß,
Sven