PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfaenger Schaltplan fuer spezielle Servosteuerung



MrWhite
05.04.2010, 22:26
Hallo Leute,

habe noch nicht so viel Ahnung von Elektronik. Habe gerade meinen ersten Schaltplan einigermassen fertiggestellt und haette dazu gerne Feedback von alten Hasen.

Zielsetzung:
Servomotoren in Abhaengigkeit vom Vorgaenger schalten. Nur der Schubservo ist interessant fuer den Nachfolger.

PIN4 HI: Achtung, jetzt kommen neue Daten vom Vorgaenger!
PIN2: Datenleitung fuer Daten vom Vorgaenger.

Auf einen Quarz habe ich verzichtet. Ich denke der billigste ATTiny tut es auch mit dem internen Oszillator. Auch wenn der ATTiny 11 kein ISP hat, werde ich ihn mit einem STK500 bespielen koennen, so nehme ich an. Wichtig ist mir, dass die Servosteuerungen autonom sind, d.h. das keine Zentraleinheit alle Servos steuert.

Was sagt ihr zu dem Schaltplan? Wie wuerde ich da jetzt Abblockkondensatoren fuer den IC einbauen? Habe ich irgendeinen gravierenden Fehler gemacht?

Was ich noch nicht kapiere: Wie wuerde ich einen I2C Bus integrieren, so dass die Schaltung eine ansteuerbare Slave-ID bekommt?

Bitte gebt mir Feedback! Das waere sehr nett von euch!

Eagle Schematics anbei.

Del
05.04.2010, 23:14
Hi

Poste den Schaltplan als Grafik, nicht jeder (ich z.B.) benutzt Eagle.
Der Controller bekommt seine I2C Adresse nicht über Beschaltung, sondern per Software.

MrWhite
06.04.2010, 07:59
Hallo Del,

danke fuer dein Feedback!


Hi

Poste den Schaltplan als Grafik, nicht jeder (ich z.B.) benutzt Eagle.

OK, werde ich heute Abend machen und mich in Zukunft dran halten.


Der Controller bekommt seine I2C Adresse nicht über Beschaltung, sondern per Software.

Ja, schon klar, aber dafuer muss der Controller ja I2C faehig sein und am Bus haengen! Wenn der Controller nicht I2C faehig ist, muss ich dann einen zweiten, I2C-faehigen, zur Vorverarbeitung vorne ranstellen? Wenn ja, welchen guenstigen Baustein wuerdet ihr dafuer empfehlen?

Und mein Hauptboard hab ich ja noch gar nicht designed, sollte ich vielleicht auch nicht selber machen, will ich aber unbedingt. Da muss ja dann ein I2C Bus drauf. Was brauche ich dann dafuer? 2 Leitungen, eine (bis 3) Clocks und einen Bus-Controller?

Del
06.04.2010, 08:35
Alle Controller der Atmega/Attiny Reihe können I2C, du brauchst nur 2 freie Pins. Falls ja kannst du sie direkt am I2C Bus anschliessen. Manche bringen dafür schon alles mit, bei manchen muss man das per Software lösen.

Wozu 3 Clocks?
Wozu einen Bus-Controller? Das übernimmt dein Master µC.
Das einzige was du noch brauchst sind Pull-Up Widerstände.

MrWhite
06.04.2010, 09:13
Alle Controller der Atmega/Attiny Reihe können I2C, du brauchst nur 2 freie Pins. Falls ja kannst du sie direkt am I2C Bus anschliessen. Manche bringen dafür schon alles mit, bei manchen muss man das per Software lösen.

Wirklich? Wo stecke ich denn dann beim ATTiny 11L SCL und SDA an? Das ist doch sicher nicht egal, an welche PINs ich die anschliesse, oder doch?


Wozu 3 Clocks?
Wozu einen Bus-Controller? Das übernimmt dein Master µC.
Das einzige was du noch brauchst sind Pull-Up Widerstände.

Naja, ich dachte ich brauche 3 Clocks um die möglichen Taktraten von I2C zu erzeugen und einen Bus-Controller für das Protokoll, als Vermittler quasi. Wie lege ich bei I2C fest, welcher der Master µC ist?

Aber was mir noch wichtiger ist, für alle die Eagle haben: Ist der oben angehängte Schaltplan formal korrekt? Ist es ok, wie der Datenanschluss realisiert wurde oder sollte das dann besser über I2C laufen? Wo baue ich die Abblockkondensatoren ein? Direkt vor den IO-Pins des IC?

Sorry falls die Fragen dumm sind oder langweilen, aber für mich ist das alles noch ein Buch mit 7 Siegeln. Ich recherchier ja viel, aber trotzdem bleiben viele Fragen auch nach Studium der Wiki offen.

Del
06.04.2010, 10:34
Wirklich? Wo stecke ich denn dann beim ATTiny 11L SCL und SDA an? Das ist doch sicher nicht egal, an welche PINs ich die anschliesse, oder doch?
Doch es ist egal, guck dir mal an was ein Software-I2C ist.


Naja, ich dachte ich brauche 3 Clocks um die möglichen Taktraten von I2C zu erzeugen und einen Bus-Controller für das Protokoll, als Vermittler quasi. Wie lege ich bei I2C fest, welcher der Master µC ist?
Nein brauchst du nicht, einer reicht.
Der Hauptcontroller übernimmt alle Aufgaben, welche Master ist gibst du per Software vor. Die Slaves senden an eine Master ID, wo der genau in deinem Bussystem sitzt ist egal.
Weisst du überhaupt was I2C ist??


Sorry falls die Fragen dumm sind oder langweilen, aber für mich ist das alles noch ein Buch mit 7 Siegeln. Ich recherchier ja viel, aber trotzdem bleiben viele Fragen auch nach Studium der Wiki offen.
Dort steht es doch ganz genau.
Der Abblockkondensator kommt zwischen Vcc und GND, möglichst nah an den Controller.

MrWhite
06.04.2010, 11:02
Doch es ist egal, guck dir mal an was ein Software-I2C ist.

Ah, jetzt verstehe ich! Der Chip braucht nur zwei Leitungen und ich spiele dann die I2C-Betriebssoftware auf, also quasi das Protokoll.


Nein brauchst du nicht, einer reicht.
Der Hauptcontroller übernimmt alle Aufgaben, welche Master ist gibst du per Software vor. Die Slaves senden an eine Master ID, wo der genau in deinem Bussystem sitzt ist egal.
Weisst du überhaupt was I2C ist??

Ich habe mir das durchgelesen, aber richtig verstanden habe ich es jetzt erst! Ich dachte erst, der I2C muss in Hardware realisiert werden. Also ich habe verschiedene ICs, die alle die I2C Software drauf haben. Einer startet die Show, also initiiert das Protokoll und die anderen melden dann ihre Slave-IDs. Stimmt das so in etwa?


Der Abblockkondensator kommt zwischen Vcc und GND, möglichst nah an den Controller.

Danke nochmal für die Erinnerung. Das sind sehr viele Informationen für mich in den letzten Tagen und das hatte ich wieder vergessen. Werde in Zukunft wieder mehr nachschlagen.

Du hast mir auf jeden Fall schon sehr geholfen (denke ich).

Del
06.04.2010, 11:14
Wenn du den Schaltplan als Grafik postest, könnte ich dir vielleicht noch was dazu sagen.

MrWhite
06.04.2010, 11:29
Danke für das Angebot, Del, das kann ich aber erst heute Abend tun, wenn ich wieder daheim bin.

Ich denke dann aber, dass für die geplanten "intelligenten" Beine I2C nicht der richtige Bus ist, da ich eine Art Slave-To-Slave Kommunikation brauche, also die Daten einfach an den nächsten weiter reiche. Oder kann man beim I2C Bus erkennen, wer physisch der nächste oder vorherige Slave in der seriellen Leitung ist? Ich will nämlich nicht jedes Bein vorher konfigurieren müssen und welche hinzufügen, bzw. wegnehmen, wie ich möchte.

Del
06.04.2010, 11:54
Doch, bei I2C müsstest du jedem Bein eine feste Adresse zuordnen.
Du kannst aber auch die Daten immer an jedes Bein senden, nur muss diese oder was du auch immer schickst auch sagen welches Bein gemeint ist.
Aber das wirst du immer tun müssen. Ich denke schon das I2C das richtige ist.

MrWhite
06.04.2010, 12:25
Doch, bei I2C müsstest du jedem Bein eine feste Adresse zuordnen.
Du kannst aber auch die Daten immer an jedes Bein senden, nur muss diese oder was du auch immer schickst auch sagen welches Bein gemeint ist.
Aber das wirst du immer tun müssen. Ich denke schon das I2C das richtige ist.

Beim I2C muss ich dann aber die Beine Jumpern um eine Reihenfolge zu definieren. Das möchte ich nicht.

Vielleicht eine Hybrid-Lösung: I2C um den ausschlaggebenden Impuls zur Neueinstellung an alle Beine zu schicken und ansonsten direkte Verbindungen von Vorgänger zu Nachfolger?

Wäre das einfach realisierbar? Der Nachfolger-Controller würde halt anfangen seine Beine einzustellen, wenn am PIN, der mit dem Vorgänger verbunden ist, das Signal ankommt.

Theorethisch könnte ich auch jedes Bein zum Master vom Nachfolger und zum Slave vom Vorgänger machen. Ob so eine Master-Slave-Chain praktikabel ist?

MrWhite
06.04.2010, 20:52
Anbei das Bild des Schaltplans, ueberarbeitete Version fuer I2C.

Hat jemand ein gutes Tutorial, bzw. eine gute Erklaerung irgendwo im Netz wie man Jumper nutzt, am besten mit Schaltplan? Ich weiss irgendwie nicht, wie ich ohne Mikro-Controller 8Bit Jumper Information auf einen Pin bekomme.

Koennte die Reihenposition zwar im EEPROM des ATTiny's ablegen, aber das ist umstaendlich, wenn man umbauen will.

Edit: Schematics V2 mit Abblock-Kondensator.

MrWhite
10.04.2010, 17:01
*bump*

Leider hat noch niemand etwas dazu gesagt, ich haette aber schon mal gerne Feedback von erfahreneren Forenmitgliedern.

Ich zerbreche mir immer noch den Kopf, wie ich onboard die Positionsreihenfolge festlege oder ob so eine Master-Slave-Master-Slave Chain mittels I2C sinnvoll bzw. praktikabel waere. Eigentlich will ich naemlich onboard nichts konfigurieren muessen.

Gibt es Dinge, die man bei Motorsteuerungen noch beachten sollte? Sollte dieses Board ausser einem Chip zur Motorensteuerung eigentlich noch andere Features haben?

wkrug
11.04.2010, 00:05
Auf deinem Schaltplan sind ja der Vorgänger- und der Nachfolge Stecker direkt galvanisch miteinander verbunden.
Also werden alle an dem Bussystem angeschlossenen Teilnehmer Ihre Daten gleichzeitig erhalten.
Also wird jeder Busteilnehmer eine Adresse brauchen, um seine Daten aus dem Datenstrom rauszufiltern.
Wie Du das ohne Konfiguration an einem Controller machen willst ist mir nicht klar.
Ein möglicher Weg wären noch Löt Jumper, die den einzelnen Controllern über eigene Pins Adressen vorgeben. Die Software in den Controllern könnte dann für alle Beine die gleiche sein.

Ich denk auch mal, das dein System einen Master braucht, der dann auch koordiniert in welche Richtung sich die einzelnen Beine bewegen sollen, wie schnell und wie weit. Die konkrete Ansteuerung des Beines kann dann der Bein Controller übernehmen.

Eine mögliche Buslösung wär eventuell auch noch SPI, das sehr viele ATMEL Controller schon als Hardware implementiert haben. Aber auch da ist ein Master vorgesehen.

Ich geb zu selber kein Roboterbastler zu sein, über die möglichen Erweiterungen des Systems sollten sich deshalb lieber die Profis hier äussern.

MrWhite
11.04.2010, 11:43
Auf deinem Schaltplan sind ja der Vorgänger- und der Nachfolge Stecker direkt galvanisch miteinander verbunden.
Also werden alle an dem Bussystem angeschlossenen Teilnehmer Ihre Daten gleichzeitig erhalten.
Also wird jeder Busteilnehmer eine Adresse brauchen, um seine Daten aus dem Datenstrom rauszufiltern.

Ja, das ist aber nur in den unteren Bildern so, wo ein I2C Bus genutzt wird, nicht in den urspruenglichen Schematics. Dort sitzt der Mikrocontroller zwischen den Vorgaenger-Leitungen und den Nachfolger-Leitungen.


Wie Du das ohne Konfiguration an einem Controller machen willst ist mir nicht klar.

Was ich eigentlich tun moechte:
Ich moechte einen Domino-Effekt ausloesen, bei dem der Nachfolger abhaengig von der Bewegungsaenderung des Vorgaengers eine Aktion durchfuehrt. Aber dafuer mussesen die Vorgaenger-Informationen auf maximal 2 Leitungen uebertragen werden. Und da stellt sich die Frage, wie ich so ein Signal am besten sende und auswerte. Ich denke weiterhin, das I2C fuer diese Aufgabe suboptimal ist.

Ich moechte halt nichts konfigurieren und Module zuschalten oder herausnehmen wie es mir gefaellt. Diese Modularitaet ist eine Hauptanforderung fuer mein System! Es reicht wenn jedes Modul Daten vom Vorgaenger empfaengt und an den Nachfolger weitergibt. Sonst soll das Modul dumm sein!



Ich denk auch mal, das dein System einen Master braucht, der dann auch koordiniert in welche Richtung sich die einzelnen Beine bewegen sollen, wie schnell und wie weit. Die konkrete Ansteuerung des Beines kann dann der Bein Controller übernehmen.

Ja, so einen Impuls soll es geben, aber keinen wirklichen Master-Controller der die Justierung fuer alle Beine uebernimmt, nur eine Kopf-Einheit, die den Impuls, bzw. das erste Bewegungssignal sendet.


Ich geb zu selber kein Roboterbastler zu sein, über die möglichen Erweiterungen des Systems sollten sich deshalb lieber die Profis hier äussern.

Vielen Dank, dass du dich ueberhaupt herabgelassen hast um dem N00b zu helfen. Da du am Schaltplan selbst nichts auszusetzen hattest, war er ja anscheinend zumindest formal korrekt.