Attiny & Arduino & Schrittmotor & 2 Endschalter & 1 Linearisierung

Hallo miteinander,

ich habe so einen Möchtegern Intelligenten Schrittmotor "PD4-C6018L4204" dieser arbeitet im Takt Richtungsmodus.

Das Bedeutet. das er 6 Leitungen hat.

  1. Freigabe Leitung ==> HIGH == Motor kann ich drehen, LOW == Motor kann sich nicht drehen
  2. Richtungs Leitung ==> HIGH == Rechts herum, LOW == Links herum
  3. Takt Leitung ==> jeder Wechsel von HIGH zu LOW ist ein Takt usw.
  4. GND vom Mikrocontroller
  5. Spannungseingang vom Netzteil
  6. GND vom Netzteil

Ich steuere den Motor über ein Arduino (hier ausgearbeitet) ich bin zwar noch lange nicht soweit das ich mich wirklich um das Problem kümmern muss doch es ist in meinem Kopf und es will raus. daher frage ich hier mal ob ich von der Denkweise her richtig bin, oder ob es da etwas besseres für gibt.

Der Motor hat immer Strom !! jedoch hat der Motor eine eingebaute Steuerung mit Motortreiber denn sonst würde das mit der Takt Richtung nicht gehen ;-).

Ich kann den Motor also immer Takte vorgeben die werden auch dann abgearbeitet wenn er die bekomme sprich er merkt sich nicht was er nicht gemacht hat ;-).

Über die Richtung gebe ich die Aktuelle Drehrichtung vor.

Und das Wichtigste ist die Freigabe Leitung.
Denn ich kann Takte dem Motor schicken wie ich will wenn der Motor nicht Freigegeben
ist dreht er sich auch nicht !!! Jedoch hat er dann auch kein Haltemoment mehr !!

Der Motor Treibt einen Schlitten auf einer Linearisierung an, da ich es verhindern möchte das
mein Schlitten weiter Fahren möchte wie er kann / darf, mache ich Endschalter an die Linearisierung, so das wenn der Schlitten gegen den Endschalter kommt die Freigabe Leitung unterbrochen wird denn dann
kann der Motor sich einfach nicht mehr drehen egal was der Arduino von sich gibt.

Jedoch muss ich die Fehlermeldung irgend wie abfangen und dachte mir das ich da einen Attiny dazwischen hänge.


20150514_104107.jpg

Sprich, wenn der Schlitten nicht an den Endschaltern ist, dann bekommt der Motor das Signal vom Arduino, sobald der Schlitten aber an einen der Endschalter kommt wird das Signal an den Attiny umgeleitet, der Motor bleibt Stehen und der Attiny meldet einen Fehler an den Arduino. dieser kann nun Reagiren und die Drehrichtung ändern, das Bekommt der Attiny wiederum mit und wies das jetzt jetzt der Schlitten sich in die andere Richtung (nicht gefährlich) bewegen würde und gibt das Freigabe Signal wider an den Motor weiter.

Wenn der Endschalter nicht mehr gedrückt wird wird das eigentliche Signal vom Arduino wider an den Motor gesendet und der Attiny überdacht nur noch.

Somit müsste der Attiny zwei Eingänge für die Freigabe haben einen Eingang für die Drehrichtung.
Dann Benötigt er einen Ausgang für das Freigabe Signal und einen Kommunikation Weg zum Arduino.

Ich habe keinen Attiny, und möchte das auch jetzt nicht in Code erstellen, sondern mir geht es darum ob ich die richtigen Überlegungen anstelle oder ob ich Quatsch gerade gedacht habe udn wie man das sonst machen könnte. es ist alles noch offen.

Gruß Mücke

Sicherheit (wird noch mein Steckenpferd im Forum): Ich gehe davon aus, daß Deine Anlage

  • mindestens einen Not-Aus-Schalter hat, der über ein Schütz die Motoren stromlos schaltet
  • je Richtung einen, von den gezeichneten unabhängigen Endschalter hat, der die Motoren über ein Schütz stromlos schaltet

Ich gehe also von zwei unabhängigen Endschaltern je Richtung aus, wobei ich ab jetzt nur die für die Steuerung betrachte.

Wenn ein Endschalter (Öffner) betätigt ist, darf anschließend nur noch im Einrichtbetrieb bei reduzierter Geschwindigkeit per Knopfdruck in die entgegengesetzte Richtung gefahren werden. Daher müssen die Endschalter logisch unterscheidbar sein (anders als die für das Schütz, die in Reihe geschaltet sein müssen.).

Da ich davon ausgehe, Dein Programm wird nicht blockierend geschrieben sein, erschließt sich mir der Zusatznutzen des ATtiny nicht. Endschalter gehören zum Kernprogramm und nicht ausgelagert. In einem anderen Thema habe ich vorgeschlagen, die Bibliothek für das LC-Display in einen ATtiny 4313 auszulagern, weil diese wohl blockierende Verzögerungen enthält. Da macht das bei zeitkritischen Anwendungen Sinn.

Bisjetzt hat das Teil noch nichts denn noch ist es nur eine Linearführung und das ist noch alles im Aufbau.

Du hast aber recht es gibt einen Puffer von ca. 50% der Wagenlänge in die jeweilige Richtung und dann kommt ein Notschalter der den Motor tatsächlich Stromlos macht, so das der Anwender (Ich) Auch Tatsächlich Mechanisch eingreifen muss damit ich die Maschine neu Starten kann, denn wenn ein Motor auf Stromlos geht wird die gerammte Maschine abgeschaltet, so ist es zumindest geplant.

Das andere warum ich das aus gelagert habe, für mich ist das ein Sicherheitskriterium, sicher kann ich es auch über den Arduino machen, da ich versuche keine Bremsklötze zu erstellen für das fertige Programm, jedoch bezeugt es sehr zu wissen das die Freigabe im Notfall nicht von dem Programm gesteuert wird das meinte das könnte in die Richtung weiter Fahren ob wohl das ein eine Tabuzone ist, denn sonst hätte der Endschalter nicht ausgelöst, die Endschalter sind Öffner und Schließer in einem, und der Attiny würde nur bei einem Fehler eingreifen, alles andere würde ganz normal über den Arduino laufen.

Da mir Sicherheit wichtig ist, möchte ich da gerne einen Attiny für verwenden. auch wenn es umständlich ist, jedoch Sicher ist sicher :slight_smile:

Ist meine Überlegung dahingehend Richtig? oder bin ich total auf dem Holzweg und man überwacht so etwas auf eine ganz andere Art und weise?
Und die Mechanische Unterbrechung des Signales (Freigabe) ist eine Schlechte Idee?
und ich lasse grundsätzlich den Attiny das Freigabe Signal geben ?

Sprich der Attiny Überwacht die Endschalter & das Richtungssignal und gibt das Freigabe Signal immer, das macht erst gar nicht der Arduino bei einem Fehler sagt der Attiny zum Arduino (Depp zu weit gefahren in '+' Y Richtung oder '-' Y Richtung) Bitte alles noch mal auf Anfang und Sprich raus aus dem Material und zurück auf 0 Position alle Achsen neu einlesen und Referenzfahrten erstellen, Anwender muss Bestätigen und Prüfen !!

Das wäre die zweite Methode an die ich dachte, wobei mir das Mechanische unterbrechen der Signalleitung besser gefallen tut.

Meine Begeisterung hält sich in Grenzen, weil es Dein Projekt m. E. unnötig verkompliziert. Aber wenn Du denn unbedingt willst, ein Vorschlag:

ATtiny Eingänge: je Richtung ein Endschalter, Freigabe und Richtung vom Arduino, Notaus, ...
ATtiny Ausgänge: Freigabe und Richtung Motor, ...
Arduino Eingänge: Freigabe Motor vom ATtiny, ...
Arduino Ausgänge: Takt Motor, Freigabe und Richtung zum ATtiny, ...

Was meinst Du? Magst Du das mal malen?

agmue:
Was meinst Du? Magst Du das mal malen?

Öm, ja das mache ich. jedoch nicht auf dem Whiteboard das mache ich am PC.
Heute schaffe ich das aber nicht mehr, werde das morgen früh machen, hoffe ich.

wenn ich das Richtig verstanden habe unterbrechen die Endschalter dann das Signal nicht
sonder der ATtiny entscheidet ob der Motor sich drehen darf oder nicht.
also meine Zweiter Ansatz.

ich werde das mal Aufzeichnen. dann Sehen wir weiter.

Muecke:
wenn ich das Richtig verstanden habe unterbrechen die Endschalter dann das Signal nicht
sonder der ATtiny entscheidet ob der Motor sich drehen darf oder nicht.
also meine Zweiter Ansatz.

Der ATtiny braucht die Richtuingsinformation, damit er nur die Gegenrichtung freigibt. Bei Reihenschaltung geht das nicht.

Das ist richtig, in meiner Zeichnung ist das Freigabe Signal vom Arduino in Reihe durch die Endschalter geschleift, so das es Ohne Unterbrechung ankommt am Motor,
wenn es unterbrachen wird wird es an den Attiny weiter geleitet und der Motor bekommt kein Signal mehr, somit dreht er nicht mehr.

Der Attiny bekommt auf Eingang (2) das Freigabe Signal also weis er das der Endschalter auf der Linkenseite ausgelöst hat, wenn jedoch der Attiny auf dem Eingang (13) das Signal bekommt dann wies er das der Reche Endschalter unterbrochen wurde.

Der Attiny hat dazu noch auf dem Eingang (7) das Richtung Signal Parallel zum Motor anliegen (Hoffe das man so was überhaupt machen kann)

Der Attiny gibt also einen Fehler aus an den Arduino " Endschalter XYZ-0815) hat ausgelöst, jetzt muss das Richtungs Signal entsprechend des Endschalters sein und das Freigabe Signal muss am Attiny endsprechend anligen das der Attiny ein Neues Freigabe Signal auf Ausgang (12) ausgibt. denn Nur dann würde der motor wider laufen.

Was zu folge hat wenn der Attiny das Freigabe Signal über die Eingänge nicht mer erhält der Motor wider zwischen den Endschaltern ist. und der Attiny muss das Signal nicht mehr ausgeben, sondern nur noch überwachen.

Nachher mache ich noch deine Zeichnung mal.


Bildschirmfoto 2015-05-15 um 15.31.16.png

Nachher mache ich noch deine Zeichnung mal.

Da warte ich dann mal gespannt :slight_smile:

so ich hoffe das ich es richtig getroffen habe.

es muss nur noch ein abgriff an die Notaus Schalter mit dran, wies aber gerade nicht was ich da nehmen kann.
denn das sollte auch mit abgefragt werden dann, das ist jetzt aber erst mal nicht so wichtig.

Was mir in der Aufteilung nicht gefallen tut ist das das Freigabe Signal zum Motor nicht unterbrochen wird
wenn einer der Endschalter ausgelöst wird.
denn der Attiny muss erst prüfen und dann abschalten.

In meiner Aufstellung bekommt der Attiny die ganze zeit kein Signal und macht daher auch kein Freigabe Signal
denn das Freigabe Signal wird ja duch die Endschalter geschleift in Reihe und wenn der Motor gegen den Endschalter kommt wird das Signal sofort unterbrochen udn der Motor hört mit allem auf.
dafür bekommt dann der Attiny das Signal weitergeleitet und der kann dann entscheiden ob der Motor wider ein Neues Freigabe Signal bekommt oder nicht. gleichzeitig dazu kann er eine Fehlermeldung heraus geben an den Arduino.

Naja schau mal ob ich eins richtig umgesetzt habe.


Bildschirmfoto 2015-05-16 um 12.49.57.png (122 KB)

Muecke:
so ich hoffe das ich es richtig getroffen habe.

Schon so beinahe fast. Freigabe und Richtung werden durch vom ATtiny durchgelassen, wenn alles OK ist, sonst nicht. Ja, so meine Idee.
Was ich anders meinte:

  • NO an Pin 2 und 13 des ATtiny sind m. E. nicht notwendig.
  • ATtiny und UNO brauchen eine Spannungsversorgung (na klar).

Muecke:
denn der Attiny muss erst prüfen und dann abschalten.

Etwas Vertrauen in Deine Elektronik ist schon notwendig. Wenn die Elektronik spinnt, sind die unabhängigen NotAus-Endschalter da.

Für die Sicherheit notwendige Änderungen: Die Spannungsversorgung der Motoren muß über ein selbsthaltendes Schütz erfolgen. Die Spannungsversorgung des Schützes erfolgt über NotAus-Schalter und die NotAus-Endschalter (eigentlich ja Taster, alle Öffner). Dadurch soll ein Wiederanlaufen der Motoren verhindert werden, sobald der betätigte NotAus-Schalter nicht mehr betätigt ist. Nur wenn alle NotAus-Schalter geschlossen sind und der Start-Taster gedrückt wird, dürfen die Motoren wieder Strom bekommen!

Quelle der Grafik

agmue:
Schon so beinahe fast. Freigabe und Richtung werden durch vom ATtiny durchgelassen, wenn alles OK ist, sonst nicht. Ja, so meine Idee.

OK, dann habe ich das Richtig verstanden

agmue:
Was ich anders meinte:

  • NO an Pin 2 und 13 des ATtiny sind m. E. nicht notwendig.
  • ATtiny und UNO brauchen eine Spannungsversorgung (na klar).

Öm, ja stimmt das ändere ich mal ab.

agmue:
Etwas Vertrauen in Deine Elektronik ist schon notwendig. Wenn die Elektronik spinnt, sind die unabhängigen NotAus-Endschalter da.

Das liegt nicht am vertrauen sondern viel mehr an der Reaktionszeit des Systems, eine Mechanische Unterbrechung ist sofort da, hingegen benötigt die Elektrische Unterbrechung etwas Länger.
Da ich sofort reagieren möchte und nicht erst 2 oder 3 Schritte (Impulse) später dachte ich an die Mechanische Unterbrechung.

Denn das Vertrauen in die Technick und Elektronik habe ich denn der ATtiny gibt ja dann das Neue Freigabe Signal erst wider raus wenn der Motor in die Richtige Richtung sich bewegen würde.

Muecke:
Da ich sofort reagieren möchte und nicht erst 2 oder 3 Schritte (Impulse) später dachte ich an die Mechanische Unterbrechung.

Ich gehe von einem schlanken, einfachen Programm im ATtiny aus. Bei einem ATtiny mit 8 MHz (0,125 µSek) geht die Informationsweitergabe doch recht schnell, denn auch ein Schalter hat eine gewisse Trägheit. Die Endschalter sollten möglichst so positioniert werden, daß nicht 1 µSek nach dem Schalter die Zerstörung der Maschine droht. Die Masse der bewegten Teile hat natürlich auch eine Trägheit.

Bin gespannt, für welche Variante Du Dich entscheidest. Meinen Favoriten kennst Du ja.

Ich bin mir auch noch nicht sicher welche Variante ich wirklich verwenden werde.
Ich glaube ich mache da mal ein Paart Tests wenn es dann so weit ist. zuerst mit deiner Variante und dann mit meiner, werde dann mit der Höchsten RPM gegen die Endschalter Fahren, die natürlich nicht am Endpunkt montiert sind und werde mit der Schieblehre dann mal messen wie weit der Wagen drüber raus fahren tut, so kann man das dann auch besser abschätzen an welcher Stelle die Endschalter Montiert werden müssen zu guter Letzt :wink:

Habe jetzt die zwei Leitungen vom den Endschaltern entfernt, dem Arduinu & ATtiny mit Strom versorgt.
Wo bekommt denn der Arduino die 5V eingespeichert? üben den VIN oder 5V Pin?

Einen "Schütz" bzw. "selbsthaltendes Schütz" habe ich im Fritzing noch nicht gefunden daher konnte ich diesen noch nicht mit einzeichnen.


Bildschirmfoto 2015-05-17 um 10.42.44.png

EDIT: habe noch mal eine Variante gezeichnet, ist glaube ich übersichtlicher wie die ersten die ich gezeichnet hatte.


Bildschirmfoto 2015-05-17 um 10.53.25.png

Muecke:
Wo bekommt denn der Arduino die 5V eingespeichert? üben den VIN oder 5V Pin?

Mein UNO hat eine runde Buchse für die Spannungsversorgung (7V DC), den ATtiny kannst Du an 5V vom UNO anschließen. Ich habe das auf einem Prototype-Shield (mit Kabelanschlüssen)realisiert.

Muecke:
Einen "Schütz" bzw. "selbsthaltendes Schütz" habe ich im Fritzing noch nicht gefunden daher konnte ich diesen noch nicht mit einzeichnen.

Schütz = Leistungs-Relais. Die Selbsthaltung erfolgt durch die Beschaltung, die machst also Du. Wenn der Relaiskontakt schließt, gibt sich das Relais selbst einen Strom, damit es angezogen bleibt, sich selbst hält. Oben in meinem Beispiel entspricht "Booster" dann Deinen Motoren.

Mein UNO hat eine runde Buchse für die Spannungsversorgung (7V DC)...

Das hat mein UNO und mein Mega auch, doch wo ist das auf dem Schaltbild?
da ist keine Schwarze runde Buchse :frowning:

Oben rechts auf http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf

UnoPower.png

Von der Seite gesehen ist sie übrigens rechteckig, nicht rund 8)

Meinst Du "Bauteil1"? Da fehlt ja auch der USB-Anschluß. Mußt Du wohl ergänzen. Oder was meinst Du?

Hey Jungs, ich komme gerade nicht ganz mit.

Von der Seite gesehen ist sie übrigens rechteckig, nicht rund 8)

Stimmt, dann die Runde/Eckige Schwarze Buchse ist nicht mit auf dem Plan eingezeichnet :frowning:
wie nennt sich das Teil denn dann schaue ich mal ob ich das mit eingezeichnet bekomme in das Bauteil.

und Stimmt die USB Buchse fehlt auch :-), zu meiner Verteidigung das ist ein Standartbauteil aus Fritzing

Mit Fritzing kenne ich mich nicht aus, kann Dir nur etwas mit Corel malen.

michael_x:
Von der Seite gesehen ist sie übrigens rechteckig, nicht rund 8)

Jetzt wo Du mich darauf aufmerksam machst ... rund mit rechteckiger Applikation. :slight_smile:

Mal so eine Doofe Frage.

So ein Schütz wird mit Strom versorgt, da ich das mit dem Strom denn auch der Motor bekommen soll versorgen, muss ich allso nach einen DC 48V Schütz schauen.

Da mein Motor mit 48V DC versorgt wird.
Der Motor ist auf 4A begrenzt.
das Netzteil kann 5A bringen.

Somit kommt das hier nicht in Frage --> Leistungsschütz AEG LS17.10E

Oder muss ich da noch auf was achten?