-         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Mein Modell, mein Mega2560 und kein Plan...

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.07.2019
    Beiträge
    5

    Mein Modell, mein Mega2560 und kein Plan...

    Anzeige

    Servus zusammen,

    dies ist mein erster Beitrag in euren Forum und das ist schon für meine Verhältnisse ein echt dicker Klopper und falls ich die falsche Rubrik gewählt habe, sorry.
    Kurz zu meiner Person:
    Familienvater, 43 Jahre, begeisterter Modellbauer und völlig Brain AFK was das Thema Arduino, Stepper und Co angeht.

    Zu meinem Anliegen:

    Ich bin stolzer Besitzer einer Bismarck in 1:200 die RC tauglich ist. Dieses Modell würde ich gerne mit mehr Details ausbauen und da wären als Anfang angedacht, dass sich die Geschütztürme drehen.

    Bestimmt werden sich jetzt einige denken, nicht schon wieder. Warum nimmt der Strunk nicht einfach Servos ?!

    Das Problem an Servos ist a) die Drehgeschwindigkeit (trotz Geschwindigkeitsregler) und b) das Ruckeln bzw. das flüssige Drehen der Türme.

    Dann probieren wir es mit Schrittmotoren. Die Vorteile sind hier eindeutig.
    Das ganze möchte ich gerne über meine RC Fernbedienung ansteuern und direkt an den Empfänger kann ich die Stepper nicht anschließen. Was fehlt sind Treiberplatinen. Und die werden angeschlossen an ein Microcontroller.
    Sprich ein Original Arduino Board oder ein Clone.

    Ich habe mich dann für die Clone Variante entschieden und die Versuchsketche für Stepper und Servo funktionieren auch toll.

    Klicke auf die Grafik für eine größere Ansicht

Name:	71PgyE6r+BL._SX679_.jpg
Hits:	2
Größe:	60,7 KB
ID:	34243 Klicke auf die Grafik für eine größere Ansicht

Name:	bxBIqRwuQ36P._UX300_TTW__.jpg
Hits:	3
Größe:	12,8 KB
ID:	34244 Klicke auf die Grafik für eine größere Ansicht

Name:	mega2560 pin belegung.jpg
Hits:	5
Größe:	69,8 KB
ID:	34247

    Es ist ein Elegoo MEGA 2560 R3 Mikrocontroller Board ATmega2560 ATMEGA16U2 mit USB-Kabel Kompatibel mit Arduino Genuino Mega2560 und die Stepper sind Elegoo 5er Stepper Motor Schrittmotor 5V 28BYJ-48 ULN2003 und 5 Stück Treiberplatine ULN2003 für Arduino

    Meine RC Fernbedienung mit Empfänger ist eine FS Reflex Stick Multi Pro LCD 2.4G 14CH

    Klicke auf die Grafik für eine größere Ansicht

Name:	fs-reflex-stick-multi-pro-lcd-24g-14ch-500501004_00.jpeg
Hits:	8
Größe:	28,5 KB
ID:	34245 Klicke auf die Grafik für eine größere Ansicht

Name:	20190702_111341.jpg
Hits:	5
Größe:	78,4 KB
ID:	34246 Klicke auf die Grafik für eine größere Ansicht

Name:	Steuerung Carson.jpg
Hits:	6
Größe:	87,3 KB
ID:	34249


    Hier nun mein Grundgedanke und meine Probleme:

    Ich habe mich ein bissl in die theoretische und praktische Praxis für den Mega2560 angeschaut und habe ganz schnell gemerkt, dass ich, was das programmieren angeht, da ganz schnell an meine Grenzen stoße.

    Den "Schaltplan" meiner Idee sieht so aus:

    Klicke auf die Grafik für eine größere Ansicht

Name:	BAUPLAN SCHRITTMOTOR.jpg
Hits:	10
Größe:	37,8 KB
ID:	34248

    Ich hoffe ich kann das jetzt richtig erklären, fangen wir an:

    Die Geschütztürme sollen sich via Drehpotentiometer an meiner Fernbedienung steuerbar sein. An meiner Fernbedienung sind die Kanäle 7 und 8 bestückt mit Drehpotentiometer. Die beiden vorderen Türme, Anton und Bruno würden über Kanal 7 laufen und Caesar und Dora über Kanal 8.
    Die Türme sollen sich auch als "Paar" drehen. Eine einzelne Steuerung jeden Turmes würde jeglichen Rahmen für meine Verhältnisse sprengen und ist auch nicht wirklich realisierbar, da ich nur 2 Drehpotentiometer an meiner Fernbedienung habe.
    Der momentane Winkel ist insgesamt 180 Grad. Also von der 0 Position 90 Grad links, 90 Grad rechts. Das konnte ich durch Selbstversuche mit einem Stepper schon realisieren.

    Die Geschütztürme würden direkt auf den verbauten Schrittmotor sitzen und dieser ist mit seiner dazugehörigen Treiberplatine verbunden und die Platinen mit dem Mega2560 R3. Dieser ist wiederum mit dem Empfänger verbunden.

    Zur theoretischen Überlegung der Belegung der Kanäle:

    Die Kanäle 7 und 8 vom Empfänger würden an dem Mega2560 an den PWM Kanäle 7 und 8 angeschlossen (einfacher zu merken).
    Die Outputs würden theoretisch dann so verkabelt:

    Turm Anton - Platine
    IN1 - 22 Digital
    IN2 - 24 Digital
    IN3 - 26 Digital
    IN4 - 28 Digital

    Turm Bruno - Platine
    IN1 - 23 Digital
    IN2 - 25 Digital
    IN3 - 27 Digital
    IN4 - 29 Digital

    Turm Caesar - Platine
    IN1 - 46 Digital
    IN2 - 48 Digital
    IN3 - 50 Digital
    IN4 - 52 Digital

    Turm Dora - Platine
    IN1 - 47 Digital
    IN2 - 49 Digital
    IN3 - 51 Digital
    IN4 - 53 Digital

    Soweit die Pinbelegung. Strom technisch würde ich theoretisch den Mega2560 an eine externe Akku anschließen. Die Treibeplatinen würde ich an den Empfänger anschließen. Der Empfänger wird durch die Fahrakkus (7,2V) mit Strom versorgt. Da gibt es ja noch freie Bezugsquellen auf dem Empfänger.


    Das ist meine theoretische Idee. Und ab da benötige ich fachliche Kompetenz. Und als ich mir euer Forum so anschaute, sind hier ne ganze Menge von vertreten was fachliche Kompetenz angeht. Ich weiß einfach nicht, wie ich das programmiert kriegen soll, dass alle Komponente auch wirklich funktionieren und mein Wissen was das Programmieren angeht, sind mehr als schlecht als recht.

    Ich hoffe man kann mir hier irgendwie weiter helfen.

    Grüße

    Luthias

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    50
    Beiträge
    1.387
    Hm-ich verstehe die Frage nicht (bzw. finde keine)- aber einige Bemerkungen hätt ich schon.
    Zuerst: natürlich kann man auch Servos sehr smooth und langsam laufen lassen, per Mikrocontroller.
    Das ist einfach nur ne Frage der Programmierung, grob ungefähr so: möglichst kleine Schritte in (für Mikrocontroller, wir reden hier von Millisekunden) in grösseren Zeitabständen ausführen.

    Zweitens: wieso nicht mit zwei Potis vier Türme einzeln ansteuern?
    Ich hab im Seeteufel (vor Jahren gebaut) mit einem Schalter vier Funktionen (alles Servos, aber die konnten wahlweise vor und zurück) problemlos umgesetzt.
    Der Trick ist: du liest die ganze RC-Geschichte in den Controller ein (gibts praktische Lib's für).
    Der Controller dröselt alles logisch auf:
    -willst du Turm A steuern, dann gibst du vorher (beispielsweise) einen sehr kurzen Fahrimpuls nach vorne.
    Da der zu kurz ist um das Schiff zu bewegen, kann der Controller den Unterschied leicht erkennen, und schaltet Turm A frei.
    Nun drehst du am Poti....das Gleiche kannst du mit allen anderen Türmen machen, somit reicht schon _ein_ Poti aus.
    Welches Steuerelement du nun als "Shift-Taste" benutzt, musst du selber wissen- irgendwas, was man am Schiff nicht sieht.
    In meinem Beispiel (kurzer Fahrimpuls) könntest du den Controller so programmieren, dass Fahrsignale erst dann als Fahrsignale interpretiert werden, wenn sie länger als eine Sekunde dauern- das merkt niemand, und du hast allemal genug Zeit, um die Türme anzuwählen.
    Oder: du hast zwei Potis.
    Einen nimmst du als Vorwahl (Stellungen 12,3,6,9 Uhr, ungefähr reicht ja), den anderen zum drehen- ganz einfach...

    Ich benutze für sowas gerne diese Bibliothek: https://wkla.no-ip.biz/ArduinoWiki/d...ekte:rcreciver
    Die hat, gegenüber manch anderer, den Vorteil, dass sie non-blocking ist.
    Die übliche Vorgehensweise (die manche anderen nutzen, und die _diese_ auch kann) ist, per PulseIn zu lauschen, was reinkommt.
    Dadurch wird aber der Controller die meiste Zeit blockiert....die Interrupt-Methode (alles da beschrieben) tut das nicht!

    Was du zuerst lernen musst (zwingend nötig, wenn du Motoren _irgendwelcher_ Art smooth ansteuern willst): nicht-blockierenden Code zu schreiben.
    Sämtliche delay(); in den Schleifen sind verboten, bzw. sollten, wenn überhaupt, nur dort eingesetzt werden, wo der Controller wirklich _nichts_ zu tun hat (beispielsweise ist er mit Servoimpulsen grundsätzlich eigentlich ununterbrochen beschäftigt).
    Dazu hat die Arduino-IDE ein Beispielprogramm namens blink without delay.
    Das _muss_ sitzen.
    Wenn du das Beispiel verstanden hast, kannst du ganz problemlos mehrere Vorgänge in unterschiedlichen Zyklen simultan ablaufen lassen, ohne den Controller dabei mit delay's zu blockieren (man kann das problemlos verschachteln).

    Dann dazu die genannte Bibliothek, und du kommst zurecht-alles andere ist lediglich ein logisches Aufdröseln der gewünschten Funktionen.
    Wenn du eh nen Mega hast, kannst du das furchtbar weit treiben: in meinem Seeteufel kümmert der sich nebenbei noch komplett eigenständig um die Beleuchtung (und das Ding hat, da es ein Schlepper ist, nen ganzen Christbaum am Mast, und kann auch, je nach Einsatz, die entsprechenden Lichter zeigen, ohne mein Zutun), überwacht den Akku, den Rumpf auf Wassereinbrüche, und stellt gleich noch ein Fail-save.
    Und da ist noch ne Menge Luft....

    Zur Ansteuerung deiner Schrittmotoren kann ich allerdings _gar nicht_ helfen- ich würds mit Servos machen, aber nur, weil ich damit genug Erfahrung habe.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.07.2019
    Beiträge
    5
    Zitat Zitat von Rabenauge Beitrag anzeigen
    Hm-ich verstehe die Frage nicht (bzw. finde keine)- aber einige Bemerkungen hätt ich schon.
    Zuerst: natürlich kann man auch Servos sehr smooth und langsam laufen lassen, per Mikrocontroller.
    Das ist einfach nur ne Frage der Programmierung, grob ungefähr so: möglichst kleine Schritte in (für Mikrocontroller, wir reden hier von Millisekunden) in grösseren Zeitabständen ausführen.

    Zweitens: wieso nicht mit zwei Potis vier Türme einzeln ansteuern?
    Ich hab im Seeteufel (vor Jahren gebaut) mit einem Schalter vier Funktionen (alles Servos, aber die konnten wahlweise vor und zurück) problemlos umgesetzt.
    Der Trick ist: du liest die ganze RC-Geschichte in den Controller ein (gibts praktische Lib's für).
    Der Controller dröselt alles logisch auf:
    -willst du Turm A steuern, dann gibst du vorher (beispielsweise) einen sehr kurzen Fahrimpuls nach vorne.
    Da der zu kurz ist um das Schiff zu bewegen, kann der Controller den Unterschied leicht erkennen, und schaltet Turm A frei.
    Nun drehst du am Poti....das Gleiche kannst du mit allen anderen Türmen machen, somit reicht schon _ein_ Poti aus.
    Welches Steuerelement du nun als "Shift-Taste" benutzt, musst du selber wissen- irgendwas, was man am Schiff nicht sieht.
    In meinem Beispiel (kurzer Fahrimpuls) könntest du den Controller so programmieren, dass Fahrsignale erst dann als Fahrsignale interpretiert werden, wenn sie länger als eine Sekunde dauern- das merkt niemand, und du hast allemal genug Zeit, um die Türme anzuwählen.
    Oder: du hast zwei Potis.
    Einen nimmst du als Vorwahl (Stellungen 12,3,6,9 Uhr, ungefähr reicht ja), den anderen zum drehen- ganz einfach...

    Ich benutze für sowas gerne diese Bibliothek: https://wkla.no-ip.biz/ArduinoWiki/d...ekte:rcreciver
    Die hat, gegenüber manch anderer, den Vorteil, dass sie non-blocking ist.
    Die übliche Vorgehensweise (die manche anderen nutzen, und die _diese_ auch kann) ist, per PulseIn zu lauschen, was reinkommt.
    Dadurch wird aber der Controller die meiste Zeit blockiert....die Interrupt-Methode (alles da beschrieben) tut das nicht!

    Was du zuerst lernen musst (zwingend nötig, wenn du Motoren _irgendwelcher_ Art smooth ansteuern willst): nicht-blockierenden Code zu schreiben.
    Sämtliche delay(); in den Schleifen sind verboten, bzw. sollten, wenn überhaupt, nur dort eingesetzt werden, wo der Controller wirklich _nichts_ zu tun hat (beispielsweise ist er mit Servoimpulsen grundsätzlich eigentlich ununterbrochen beschäftigt).
    Dazu hat die Arduino-IDE ein Beispielprogramm namens blink without delay.
    Das _muss_ sitzen.
    Wenn du das Beispiel verstanden hast, kannst du ganz problemlos mehrere Vorgänge in unterschiedlichen Zyklen simultan ablaufen lassen, ohne den Controller dabei mit delay's zu blockieren (man kann das problemlos verschachteln).

    Dann dazu die genannte Bibliothek, und du kommst zurecht-alles andere ist lediglich ein logisches Aufdröseln der gewünschten Funktionen.
    Wenn du eh nen Mega hast, kannst du das furchtbar weit treiben: in meinem Seeteufel kümmert der sich nebenbei noch komplett eigenständig um die Beleuchtung (und das Ding hat, da es ein Schlepper ist, nen ganzen Christbaum am Mast, und kann auch, je nach Einsatz, die entsprechenden Lichter zeigen, ohne mein Zutun), überwacht den Akku, den Rumpf auf Wassereinbrüche, und stellt gleich noch ein Fail-save.
    Und da ist noch ne Menge Luft....

    Zur Ansteuerung deiner Schrittmotoren kann ich allerdings _gar nicht_ helfen- ich würds mit Servos machen, aber nur, weil ich damit genug Erfahrung habe.


    Hallo Rabenauge,

    das nenne ich mal ne Ansage, die selbst ich verstehe. Gleich mal ne Gegenfrage von mir: Hast du mal Pics von deiner Seeteufel

    Ok zurück zum Thema. Wir sind mehrere Modellbauer, die diesen Code erarbeiten wollen. Und deren Modelle bewegen sich alle im Rahmen von 1:200 und 1:100 und sind alle aus der grauen Flotte.
    Natürlich könnte man mit 2 Potis 4 Türme einzeln ansteuern, ob uns Laien das aber in Moment nicht ein bissl überfordert, ist die Frage. Ich bin der einzige, der in unserer Truppe den Mega2560 hat und das da ganz viel Luft nach oben ist, ist mir relativ schnell klar geworden (wenn ich das hin bekomme und die Sache mit den Türmen erledigt ist, sollen auf meine Bismarck noch Beleuchtung und ein Dampferzeuger).

    Was ich auf jeden Fall schon mal nicht wusste, war die Sache mit dem Delay. Das das so eine krasse Auswirkung hat (was ja eigentlich auch logisch erscheint), hätte ich mir nicht gedacht.
    Und was das Thema Servos vs. Schrittmotor angeht, bin ich persönlich der Meinung, dass es relativ wumpe ist wodurch die Türme sich drehen, Hauptsache sie drehen sich.

    Als absoluter Laie ist halt das größte Problem, wenn man sich zum ersten mal mit dieser Materie auseinander setzt und davon mal überhaupt kein Plan hat, wird man förmlich von einer Flut an Informationen erschlagen. Man weiß dann nicht, was kann man verwenden, was nicht, der sagt einem es so, der nächste so und der dritte sagt wieder was ganz anderes (wie war das mit zu vielen Köchen in der Küche).

    Warum, wieso oder weshalb erklärt einer seiner natürlich nicht. Das ist so und fertig.
    Daher bin ich für deinen Kommentar recht dankbar und versuche das jetzt mal in die Tat um zu setzen.

    Grüße
    Luthias

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.042
    Ich würde einen 3 fach Schalter benutzen und damit das Turmpaar auswählen.
    Somit könnte man mit 2 Potis und einem 3Fach Schalter 6 Geschütztürme unabahängig voneinander steuern.

    Meine Idee wäre auch die Potis nicht als Absolutgeber einzusetzen, sondern damit die Geschwindigkeit der Drehbewegung zu steuern.

    Also Poti 1 leicht nach Links -> Der Turm dreht langsam nach links.
    Poti 1 stärker nach links - Der Turm dreht schneller nach links.
    Poti 1 Mitte -Turm bleibt stehen usw.
    Bei so einer Konfiguration würde Ich dann aber lieber einen Stepper oder sogar einen normalen Getriebemotor einsetzen.
    Wie man den dann ansteuert kommt halt eben auf die Leistung an ( Schrittmotortreiber [ vollbrücke ] oder PWM mit Relais )

    Die Auswertung der Impulslängen macht man üblicherweise mit einem Timer ( 16 Bit mit prescaler 8 wär da ein gutes Maß ).
    Und über Interrupts.
    INT 0, INT 1, ICP wären da gute Kandidaten.
    Pin Changes verwende Ich persönlich da lieber ungern, weil hierbei gleich mehrere Eingänge den gleichen Interrupt Vektor ansteuern und man zusätzlich auch noch rauskriegen muss, ob es sich um eine steigende oder fallende Flanke gehandelt hat. ( Gut - Geht alles, fich Ich aber irgendwie aufwändiger )

    Da man ja Impulslängen messen muß, reagiert der Interrupt im ersten Durchlauf auf steigende Flanken.
    Innerhab des Interrupts wird dann auf fallende Impulsflanke umgestellt und der Timerwert des Messtimers abgespeichert.
    Kommt die fallende Flanke dann liest man den Timerwert erneut aus und zieht den vorher abgespeicherten Wert ab und man hat ein Maß für die Impulslänge.
    Für den nächsten Impuls stellt man wieder auf steigende Flanke und das Spielchen beginnt von vorne.
    Man setzt dann noch ein Flag und in der Hauptschleife wird dann die gemessene Impulslänge verarbeitet und das Flag wieder gelöscht.

    Für alle verwendeten Interrupts kann der gleiche Timer als Quelle verwendet werden - Er läuft ja frei und wird nur ausgelesen.

    Die Impulslängen liegen bei normalen Fernsteuerungen zwischen 1ms = links, 1,5ms = mitte, 2ms = rechts.
    Rechts und Links können je nach Hersteller auch vertauscht sein.
    8MHz Taktrate und ein Prescaler von 8 ergibt eine Auflösung von 1µs und eine maximale Messdauer von ca. 65ms - Also allemal ausreichend für die max 2 ms eines Fernsteuerimpulses.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    04.07.2019
    Beiträge
    5
    Zitat Zitat von wkrug Beitrag anzeigen
    Ich würde einen 3 fach Schalter benutzen und damit das Turmpaar auswählen.
    Somit könnte man mit 2 Potis und einem 3Fach Schalter 6 Geschütztürme unabahängig voneinander steuern.

    Meine Idee wäre auch die Potis nicht als Absolutgeber einzusetzen, sondern damit die Geschwindigkeit der Drehbewegung zu steuern.

    Also Poti 1 leicht nach Links -> Der Turm dreht langsam nach links.
    Poti 1 stärker nach links - Der Turm dreht schneller nach links.
    Poti 1 Mitte -Turm bleibt stehen usw.
    Bei so einer Konfiguration würde Ich dann aber lieber einen Stepper oder sogar einen normalen Getriebemotor einsetzen.

    Wie man den dann ansteuert kommt halt eben auf die Leistung an ( Schrittmotortreiber [ vollbrücke ] oder PWM mit Relais )

    Die Auswertung der Impulslängen macht man üblicherweise mit einem Timer ( 16 Bit mit prescaler 8 wär da ein gutes Maß ).
    Und über Interrupts.
    INT 0, INT 1, ICP wären da gute Kandidaten.
    Pin Changes verwende Ich persönlich da lieber ungern, weil hierbei gleich mehrere Eingänge den gleichen Interrupt Vektor ansteuern und man zusätzlich auch noch rauskriegen muss, ob es sich um eine steigende oder fallende Flanke gehandelt hat. ( Gut - Geht alles, fich Ich aber irgendwie aufwändiger )

    Da man ja Impulslängen messen muß, reagiert der Interrupt im ersten Durchlauf auf steigende Flanken.
    Innerhab des Interrupts wird dann auf fallende Impulsflanke umgestellt und der Timerwert des Messtimers abgespeichert.
    Kommt die fallende Flanke dann liest man den Timerwert erneut aus und zieht den vorher abgespeicherten Wert ab und man hat ein Maß für die Impulslänge.
    Für den nächsten Impuls stellt man wieder auf steigende Flanke und das Spielchen beginnt von vorne.
    Man setzt dann noch ein Flag und in der Hauptschleife wird dann die gemessene Impulslänge verarbeitet und das Flag wieder gelöscht.

    Für alle verwendeten Interrupts kann der gleiche Timer als Quelle verwendet werden - Er läuft ja frei und wird nur ausgelesen.

    Die Impulslängen liegen bei normalen Fernsteuerungen zwischen 1ms = links, 1,5ms = mitte, 2ms = rechts.
    Rechts und Links können je nach Hersteller auch vertauscht sein.
    8MHz Taktrate und ein Prescaler von 8 ergibt eine Auflösung von 1µs und eine maximale Messdauer von ca. 65ms - Also allemal ausreichend für die max 2 ms eines Fernsteuerimpulses.

    So war auch die Grundidee von mir.
    Klar kann man auch über Schalter, dann die Türme einzeln ansteuern. Das sind Spielerein die man später, wenn das Grundgerüst steht, immer noch einbauen.

    Das programmieren von folgender Reihenfolge ist das Manko:
    1. Ich dreh am Potentiometer nach links, Turm dreht sich nach Links
    2. Ich dreh nach rechts, Turm dreht sich rechts.
    3. Poti steht in der Mitte, Turm ist mittig ausgerichtet.

    Und das jeweils ERSTMAL mit Turm A + B über ein Poti und Turm C+D über ein Poti.
    Nicht mehr nicht weniger.

    Bei so einer Konfiguration würde Ich dann aber lieber einen Stepper oder sogar einen normalen Getriebemotor einsetzen.
    Sorry für die blöde Frage. Was ist das bitte den dann da, was ich habe. Kein Schrittmotor ??
    Man muss auch bedenken, dass im Rumpf nicht unendlich Platz ist. Bei 1:200 ist das Schiff 181 mm breit und 1265 mm lang. Davon effektiv nutzen kann ich aber nur ca 800 mm. da wird es schon echt eng mit all den Kabeln, Modulen, Empfänger, Servos etc..

    Alles was du danach geschrieben hast, habe ich kein Wort von verstanden was du da meintest. Sorry. Hab jedoch schon mehrmals erwähnt, dass ich absoluter blutiger Laie bin. Ich möchte nix anderes, dass sich die Türme drehen, ein bissl Licht und wenn dann noch machbar, ein bissl Dampf aus dem Schornstein. Nicht mehr, nicht weniger.

    Das muss doch realisierbar sein für ein Modellschiff in 1:200.

    Die Modellfreunde der Eisenbahn bekommen es ja auch hin. Da qualmt es, leuchtet vorne und hinten, Bügel rauf und runter etc.. Da ist noch weniger Platz vorhanden.

    Grüße
    Luthias

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.042
    So war auch die Grundidee von mir.
    Klar kann man auch über Schalter, dann die Türme einzeln ansteuern. Das sind Spielerein die man später, wenn das Grundgerüst steht, immer noch einbauen.
    Softwaretechnisch hast Du natürlich Recht.
    Aber von der Hardwareseite her muss man die entsprechenden Eingänge schon mal vorsehen.
    So ein Controller kann einen Motor nicht direkt ansteuern, man braucht also noch eine Leistungsstufe dahinter.
    Für Rauch und Licht geht da ein normaler Feldeffekttransistor.
    Bei Motoren ist das etwas schwieriger, da diese ja vorwärts und rückwärts laufen müssen.
    Zudem soll ja die Geschwindigkeit einstellbar sein.
    Dazu braucht man dann eine sog. Vollbrücke ( Bei einem Bürstenmotor ).
    Ich würde hier einen kleinen Bürstenmotor mit getriebe als Antrieb für die Türme verwenden.
    Die gibts relativ günstig und klein bei diversen Elektronikversendern.

    Das mit Poti in der mitte Turm steht in der Mitte ist in meinen Augen so nicht realisierbar.
    Dann müsstest Du wieder ein Servo nehmen und den absoluten Wert des Potis für die Einstellung des Turmes verwenden.
    Dadurch verlierst Du aber die Geschwindigkeitssteuerung bzw. kann nur auf einen fixen Wert eingestellt werden.
    Der Controller kann für alle diese Betriebsarten programmiert werden.

    Noch ein bischen Begriffserklärung:
    INT0 bedeutet Interrupt Quelle 0. Dieser Pin kann programiert werden, das ein Pegelwechsel von 0 nach 5V oder umgekehrt, oder Potentialabhängig einen Interrupt im Controller auslöst und die entsprechende Routine angesprungen wird. INT1 ist genau das gleiche nur ein anderer Eingang wird benutzt und ein anderer Interrupt Vektor wird angesprungen.
    Man hat hier viele Möglichkeiten - Da hilft nur Datenblatt lesen.

    ICP ist der Input Capture Pin. Der macht im Prinzip das gleiche wie der INTx nur das zusätzlich noch der Wert eines Timers mit abgespeichert wird ( Das wird üblicherweise für Zeitmessungen verwendet ).
    Da ein Controller nur eine beschränkte Anzahl von INTx hat kann man so einen aber mit verwenden.

    Willst Du als Ausgang auch Servoimpulse generieren kann man das über einen 16 Bit Timer und Comparematch Interrupts machen.
    Da kann man dann 8 bis max 10 Ausgänge = Servos damit bedienen.
    Wie man das proggt würde hier mal zu weit führen - Wenn nötig noch mal extra anfragen.

    - - - Aktualisiert - - -

    Sorry für die blöde Frage. Was ist das bitte den dann da, was ich habe. Kein Schrittmotor ??
    Ich denke mal, das ist ein Schrittmotor.
    Damit sich der bewegt müssen die einzelnen Anschlüsse in einer bestimmten Reihenfolge angesteuert werden.
    Da die Treiberplatine anscheinend aus einem ULN2003 ( 7 fach Darlington Array max 500mA ) besteht muss diese Ansteuerreihenfolge im Controller programmiert werden.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    50
    Beiträge
    1.387
    https://www.rc-modellbau-schiffe.de/...-tug/&pageNo=6
    Das ist der alte Bauthread vom Seeteufel.
    Einige, wenige Bilder und Videos (in gruseliger Auflösung, damals hatte ich keine bessere Kamera) schwirren da auch drin herum.

    Was wkrug sagt, stimmt übrigens: einen Schrittmotor kann man sehr nett gezielt um soundso viel Grad drehen, aber: es gibt _keine_ Möglichkeit, eine "Startposition" festzulegen.
    Heisst: wenn man die Türme beim Transport oder beim herumwerkeln mal verdreht hatte, dann ist "nach vorne" eben nicht mehr nach vorne, weil die Technik nicht wissen kann, dass am Turm gedreht wurde.
    Man müsste also vor jedem Einschalten:
    -die entsprechenden Potis in die richtige Position bringen (Mittelstellung halt)
    -die Türme manuell richtig drehen (nach vorne oder hinten
    Früher oder später wird man das mal vergessen.....
    Daher würde ich, wenns denn bei den Steppern bleiben soll, eine Möglichkeit vorsehen, die Türme per Elektronik zu "nullen"- 3D-Drucker machen das mit einfachen Mikrotastern, oder auch mit ner kleinen Lichtschranke (letzteres ist besser bei dem Schiff, da man durch ne Gabellichtschranke auch "durch" fahren kann). Das nimmt kaum Platz weg und kostet nicht die Welt...
    Dann schreibt man eine Routine, die die Türme bei jedem Einschalten erst mal auf Null dreht, und von dort ausgehend, in die Position bringt, die von den Potis am Sender vorgeeben wird.

    Nimmt man ein Servo, hat man _das_ Problem nicht, da Servos ihre Position kennen.
    Aber auch das hat einen Nachteil: so ohne weiteres drehen Servos nicht 360 Grad.
    Man kann die meisten zwar so umbauen, dass sie das können, aber dann verliert man wiederum den Geber.
    Die Lösung wäre, ein Getriebe nach dem Servo vorzusehen, was aus der halben Umdrehung, die die meisten Servos schaffen, eine volle macht.
    Praktisch nicht kompliziert umzusetzen, da ja nicht allzu viel Last auf die Sache kommt.

    Dafür sind Servos aber wiederum recht einfach anzusteuern, mit der passenden Bibliothek, und benötigen nur _einen_ Pin pro Servo.
    Stepper kann man mit Doppel-H-Brücken ansteuern, ich hab hier einige Motorsteuerungsplatinen, die zwei Bürstenmotoren _oder_ einen Stepper ansteuern können- die Dinger brauchen allerdings _sechs_ Pins...

    Hat also alles seine Vor-und Nachteile.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.042
    Heisst: wenn man die Türme beim Transport oder beim herumwerkeln mal verdreht hatte, dann ist "nach vorne" eben nicht mehr nach vorne, weil die Technik nicht wissen kann, dass am Turm gedreht wurde.
    Jo, auch deshalb die Idee die Türme einzeln ansteuern zu können, dann kann man das auch per Fernsteuerung erledigen.

    Dafür sind Servos aber wiederum recht einfach anzusteuern, mit der passenden Bibliothek, und benötigen nur _einen_ Pin pro Servo
    Gibt natürlich auch Servos, die 360° machen, wie zum Beispiel Windenservos.
    Auch die neuere Generation der Digitalservos von Hacker kann man auf höhere Drehwinkel programmieren - Sind dann allerdings nicht mehr so ganz günstig.

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    50
    Beiträge
    1.387
    Stimmt auch wieder.
    Und: bei einer Bismarck dürften die Kosten die kleinere Rolle spielen, hehe- da ich selber Modellbauer bin, weiss ich das: wenns den Hund sowieso kostet, kann man den Schwanz auch noch mit kaufen....

    Dadurch, dass die Elektronik weiss, wo die Türme wirklich stehen, hat man übrigens noch nen Vorteil: man kann verhindern, dass die Türme in unerlaubte Positionen drehen (wenn ich die Bismark grad richtig in Erinnerung hab, ist es gar nicht möglich, alle Türme 360 Grad zu drehen). Das wäre, rein per Software, dann recht einfach zu verhindern.
    Auch diese Option hat man mit Schrittmotoren ohne Lageerkennung _nicht_.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    04.07.2019
    Beiträge
    5
    Nein, es ist nicht möglich bei der Bismarck die Türme um 360 Grad zu drehen.

    Danke für eure Ratschläge. Ich werde das mit den Servos ausprobieren. 180 Grad Gesamtrotation reicht völlig.

    Grüße
    Luthias

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. "Guckfix" - Kein Plan :D
    Von squelver im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 16
    Letzter Beitrag: 26.08.2008, 13:45
  2. Antworten: 44
    Letzter Beitrag: 11.09.2007, 23:54
  3. Mein Plan - funktioniert's?
    Von Chris_Bones im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 26
    Letzter Beitrag: 17.06.2007, 18:35
  4. Tuxman1971: Das ist mein Bot (leider kein Name!)
    Von Tuxman1971 im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 25
    Letzter Beitrag: 12.11.2005, 15:20
  5. Diode mit Pc zum Leuchten bringen (kein Plan)
    Von MischaMV im Forum Elektronik
    Antworten: 35
    Letzter Beitrag: 12.03.2005, 16:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •