mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Notaus bei Schrittmotor/Interrupt


Autor: Michael L. (strompaedagoge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin dabei mit einem Arduino Uno und einem Motorshield einen 
Schrittmotor zu steuern.
Dabei soll über zwei Tasten die Richtung bestimmt werden. Taster 1 
Umdrehung links herum und Taster 2 1 Umdrehung rechts herum. Das 
funktioniert soweit. Soll vllt auch noch über eine Rampenfunktion 
erweitert werden.
Der Taster 3 soll als Notaus funktionieren. Sprich wird dieser gedrückt 
so soll der Motor anhalten und sich zusätzlich zwei Steps zurück 
bewegen.

Das Problem:
Wenn ich dies versuche über einen Interrupt zu lösen, bekomme ich diesen 
nicht mehr beendet oder dieser wird ignoriert. Ich habe die Vermutung 
das er sich die Anzahl der Schritte merkt und erst einen neunen Befehl 
entgegen nimmt wenn er diese abgearbeitet hat. Dies verhindert jedoch 
der Interrupt (soll er ja auch).

Vllt hat ja hier jemand eine Idee.

Beste Grüße

Michael (Strompädagoge)


#include <Stepper.h>


/* STEPS muss auf die Anzahl der Stepps des verwendeten Motors angepasst werden */
#define STEPS 200
 
// eine Instanz aus der Klasse Stepper wird erzeugt
// sie bekommt die Anzahl der Steps und die Pins, an die der Schrittmotor
// angeschlossen ist übermittelt
Stepper stepper(STEPS, 3, 11, 12, 13);

//Pinbelegung

const int buttonPin1 = 5;
const int buttonPin2 = 4;
const int led1Pin = 7;
int drehrichtung = 0; 
int steps = 200;
int buttonState1 = 0;
int buttonState2 = 0;
volatile int state = LOW;

//---------------------------------------------------------------------------------------------

void setup() {
  // put your setup code here, to run once:
  
  stepper.setSpeed(10);             // setzt die Geschwindigkeit des Motors in Umdrehungen pro Minute
                                  
  
   pinMode(led1Pin, OUTPUT);
   pinMode(buttonPin1, INPUT);
   pinMode(buttonPin2, INPUT);

//interrupt für Notaus
attachInterrupt(0, notaus, RISING);
 

                                    //    Pinbelegung Interrupt
                                    //    Inter. 0 = Digitaler Pin 2
                                    //    Inter. 1 = Digitaler Pin 3
                                     
                                    //    LOW: Interrupt, wenn der Pin Low-Pegel hat,
                                    //    CHANGE: Interrupt, wenn der Pin seinen Wert wechselt,
                                    //    RISING: Interrupt bei steigender Flanke am Pin,
                                    //    FALLING: Interrupt bei fallender Flanke am Pin. 
}

//---------------------------------------------------------------------------------------------

void notaus(){

stepper.setSpeed(0);   // Drehung stopp


digitalWrite(led1Pin, LOW);
state = !state; 

}

//---------------------------------------------------------------------------------------------

void loop() {
  // put your main code here, to run repeatedly:
  
 //1 Umdrehung =  200 Schritte 
  buttonState1 = digitalRead(buttonPin1);     // im Loop wird der Variable buttonState mit dem Befehl = digitalRead(buttonPin) 
  buttonState2 = digitalRead(buttonPin2);    // der aktuelle Zustand des Buttons übergeben (entweder HIGH oder LOW).

  
                                            
if (buttonState1 == HIGH) {
  digitalWrite(led1Pin, HIGH);
  stepper.step(steps);          // Drehung rechts
  drehrichtung = 1; 
}
else {
  digitalWrite(led1Pin, LOW);
}

if (buttonState2 == HIGH) {
  digitalWrite(led1Pin, HIGH);
  stepper.step(- steps);       // Drehung links
  drehrichtung = -1;
}
else {
  digitalWrite(led1Pin, LOW);
}

}


Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Behandle dein Notaus wie die anderen Tasten. Du musst dir nur den Status 
merken damit der Notaus nur einmal abgefragt wird. Diesen Status löscht 
du mit betätigen einer der beiden anderen Tasten.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hubert G. schrieb:
> Behandle dein Notaus wie die anderen Tasten.

Ich würde ihn mit RESET verbinden...

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Ich würde ihn mit RESET verbinden...

Dann wird es ein Problem mit den beiden Retourschritten geben.

Autor: Teo D. (teoderix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Ich würde ihn mit RESET verbinden...

Nich wirklich Zielführend.

Falls man die Infos als solche bezeichnen darf;)


@TO
Ist Dir eigentlich bewusst wie oft der Int ausgelöst wird, wenn Du da 
die Taste drückst?

Äää.. nich das ich da nachgesehen hätte!

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael L. schrieb:
> volatile int state = LOW;

Was soll das denn sein?!

Autor: Samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Bezeichnung Notaus ist hier sehr verwirrend.
Wenn von Notaus geredet wird, dann im Normalfall im Zusammenhang mit CE. 
Da dieser Notaus in keinster weise die CE Bedingungen erfüllen kann, 
handelt es sich nicht um einen Notaus in klassischem Sinne...

Autor: Michael L. (strompaedagoge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Draco schrieb:
> Michael L. schrieb:
>> volatile int state = LOW;
>
> Was soll das denn sein?!

volatile bedeutet, dass der Wert bei jeder Verwendung aus der Variablen 
gelesen wird (also nicht temporär in Registern gehalten wird), weil er 
z.B. durch Interruptroutinen verändert werden kann o.ä.

https://www.arduino.cc/en/Reference/Volatile

Samuel schrieb:
> Die Bezeichnung Notaus ist hier sehr verwirrend.
> Wenn von Notaus geredet wird, dann im Normalfall im Zusammenhang mit CE.
> Da dieser Notaus in keinster weise die CE Bedingungen erfüllen kann,
> handelt es sich nicht um einen Notaus in klassischem Sinne...

Das ich damit keine Norm erfülle ist mir klar. Ich will das laufende 
Programm unterbrechen um Schaden am Versuchsaufbau zu vermeiden. Wenn du 
einen besseren Titel hast, änder ich das gerne ab. ;)

Beste Grüße

strompädagoge

Autor: Michael L. (strompaedagoge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist es eigentlich Möglich den Interrupt erst auf Betätigung eines 
Tasters zu beenden?
So geht der ja wieder zurück ins eigentliche Programm sobald dieser 
abgearbeitet ist.

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Notaus gehört in die Stromversorgung der Motoren oder der ganzen 
Maschine. Nicht auf eine Softwarebene. Wenn der Prozi hängt .... was 
dann.... Arm/ Bein ab ?

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael L. schrieb:
> Ist es eigentlich Möglich den Interrupt erst auf Betätigung eines
> Tasters zu beenden?
> So geht der ja wieder zurück ins eigentliche Programm sobald dieser
> abgearbeitet ist.
Wenn du im Interrupt alles zurückstellst, Tastendruck, Schritte usw., 
dann rührt sich ja nichts mehr wenn herausgesprungen wird.
Im Interrupt merken das die Taste 3 gedrückt wurde, im main dann wieder 
zurücksetzen wenn sie losgelassen wurde.

Autor: aSma>> (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,
die Tasten müssten erstmal entprellt werden (zumindest die Notaus 
Taste). Weiterhin müsste man die Variable "state" auch im Programm 
(loop) einbauen.

Sowas wie

do{
...
}while(state);

Außerdem müsste man im Interrupt das Notaus wieder entriegeln können...

Autor: Peter II (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Stephan schrieb:
> Notaus gehört in die Stromversorgung der Motoren oder der ganzen
> Maschine. Nicht auf eine Softwarebene. Wenn der Prozi hängt .... was
> dann.... Arm/ Bein ab ?

und was ist wenn Schäden erst dadurch entstehen, das das Gerät sofort 
abgeschaltet wird?`

Es gibt auch gute gründe warum man ein Notaus über Software geordnet 
machen sollte.

Überlegt dir mal ein Kran mit Magnet, der Schrott transportiert. Beim 
Notaus sollte wohl nicht der Magnet abgeschaltet werden. Es sollte die 
Bewegung möglichst schnell beenden aber auch nicht "sofort".

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aSma>> schrieb:
> die Tasten müssten erstmal entprellt werden (zumindest die Notaus
> Taste)

Gerade die Notaustaste sollte nicht entprellt sein, die Schrittmotoren 
sollen doch sofort stehen bleiben und nicht erst nach, angenommen, 
5msec.
Für die anderen Tasten stellt sich die Frage, sollen die Steps nur 
einmal ausgeführt werden oder sollen sie laufen solange die Taste 
gedrückt ist. Die Laufzeit der Steps ist sicher länger als das Prellen 
der Tasten.
Was ist wenn beide Tasten gleichzeitig gedrückt werden?

Autor: Route 6. (route_66)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> Es gibt auch gute gründe warum man ein Notaus über Software geordnet
> machen sollte.

Nein!
Not-Aus bedeutet *immer*: Alles Aus und sofort!
Das bedeutet bei deinem Kranbeispiel: Ja, die Last fällt runter.

Was du meinst ist Not-Halt. Da gibt es die Stopp-Kategorien 0, 1 und 2.
0 sofort alles aus
1 gesteuertes Stillsetzten bis Gefahr weg und dann alles aus
2 gesteuertes Stillsetzen bis Gefahren weg und nur wichtige, aber 
ungefährliche Sachen unter Energie lassen (z.B. dein Hubmagnet, Kühlung, 
Absaugung, Beleuchtung...)

Autor: Georg (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Peter II schrieb:
> Es gibt auch gute gründe warum man ein Notaus über Software geordnet
> machen sollte.

Nein, die gibt es nicht. So etwas wäre ein gefährlicher Verstoss gegen 
die Maschinenrichtlinie und andere Vorschriften, das wird auch bei einer 
Prüfung niemals genehmigt.

Natürlich herrscht hier im Forum die Meinung vor, 
Sicherheitsvorschriften sind nichts für echte deutsche Kerle und 
ausserdem völlig unverbindlich, das ändert aber nicht das geringste 
daran, dass eine Missachtung nicht nur den Pfuscher selbst, sondern auch 
andere in Gefahr bringt. Daher kann man solche unverantwortlichen Posts 
nicht unwidersprochen lassen.

Georg

Autor: Hubert G. (hubertg)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Georg schrieb:
> Daher kann man solche unverantwortlichen Posts
> nicht unwidersprochen lassen.

Da bin ich ganz deiner Meinung. Notaus ist NOTAUS und sonst nichts, ohne 
jegliche Einschränkung.

Wenn ihr allerdings den Thread etwas weiter oben lesen würdet, dann wäre 
klar das der Titel nicht dem entspricht was der TO eigentlich will. Er 
hat das auch selbst schon eingeschränkt.
Er will nur einen Ablauf gezielt beenden.

Autor: Peter II (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Georg schrieb:
> Nein, die gibt es nicht. So etwas wäre ein gefährlicher Verstoss gegen
> die Maschinenrichtlinie und andere Vorschriften, das wird auch bei einer
> Prüfung niemals genehmigt.

achso - warum gibt es dann Notaustaster die über einen Bus an eine SPS 
angeschlossen werden?

Route 6. schrieb:
> Nein!
> Not-Aus bedeutet *immer*: Alles Aus und sofort!
> Das bedeutet bei deinem Kranbeispiel: Ja, die Last fällt runter.

nein, ganz bestimmt nicht.

https://de.wikipedia.org/wiki/Notausschalter

[...]
Stopp-KategorienStopp-Kategorie 0:
Energiezufuhr zu den Antriebselementen wird sofort getrennt (nur 
möglich, wenn das plötzliche Abschalten der Energie keine Gefährdung 
verursacht)
Stopp-Kategorie 1:
gesteuertes Stillsetzen: Maschine wird in einen sicheren Zustand 
versetzt, dann erst wird die Energie zu den Antriebselementen endgültig 
getrennt. Dies ist sinnvoll, wenn Klemmungen, Bremsen o. ä. Energie 
benötigen.
Stopp-Kategorie 2:
Maschine wird in einen sicheren Zustand versetzt, die Energie aber nicht 
getrennt. Diese Kategorie sollte nur dann genutzt werden, wenn technisch 
keine Möglichkeit besteht, gefahrlos die Energie zu trennen. Zum 
Beispiel würde bei einem Kran mit Lasthebemagnet das Abschalten der 
Spannung am Magnet zum Abstürzen der Last führen (nur EN 60204-1:2006 
Pkt. 9.2.2).
[...]

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hubert G. schrieb:
> Da bin ich ganz deiner Meinung. Notaus ist NOTAUS und sonst nichts, ohne
> jegliche Einschränkung.

dann solltest du dich etwas mehr informieren.

Autor: Michael L. (strompaedagoge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hubert G. schrieb:
> Michael L. schrieb:
>> Ist es eigentlich Möglich den Interrupt erst auf Betätigung eines
>> Tasters zu beenden?
>> So geht der ja wieder zurück ins eigentliche Programm sobald dieser
>> abgearbeitet ist.
> Wenn du im Interrupt alles zurückstellst, Tastendruck, Schritte usw.,
> dann rührt sich ja nichts mehr wenn herausgesprungen wird.
> Im Interrupt merken das die Taste 3 gedrückt wurde, im main dann wieder
> zurücksetzen wenn sie losgelassen wurde.

Wie bekomme ich denn das alles zurück gesetzt?
Bei Funktionen wie stepper.runToNewPosition(20); merkt er sich ja die 20 
Schritte irgendwo. Nur ich weiß nicht wo...

Autor: Route 6. (route_66)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> dann solltest du dich etwas mehr informieren.

Eher du.

Du vemischt hier Not-Aus mit den Handlungen im Notfall, die in der DIN 
EN 60204-1 beschrieben sind.
Da gibt es neben Not-Aus sogar das Einschalten oder das Starten im 
Notfall.

Not-Aus ist Not-Aus, basta!

Autor: Peter II (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Route 6. schrieb:
> Not-Aus ist Not-Aus, basta!

ich habe den link auf wiki oben schon geschrieben, dort geht es um 
Not-Aus und dort ist auch das Beispiel mit dem Kran drin. Auch mit 
verweis auf eine DIN.

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da musst du in die Stepper.c schauen wie das dort gelöst ist.

Autor: NA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> Route 6. schrieb:
>> Not-Aus ist Not-Aus, basta!
>
> ich habe den link auf wiki oben schon geschrieben, dort geht es um
> Not-Aus und dort ist auch das Beispiel mit dem Kran drin. Auch mit
> verweis auf eine DIN.

In dem verlinkten Artikel steht aber auch noch mehr:

https://de.wikipedia.org/wiki/Notausschalter#Siche...

[...]
"Bei Notaus ist gefordert, die Anlage zum Schutz gegen elektrischen 
Schlag spannungsfrei zu schalten. Sicherheitsnormen erwähnen den 
Not-Halt. Bei Not-Halt ist es nicht gefordert, dass die gesamte Maschine 
spannungsfrei wird. Ein Antrieb muss bei Erkennen einer gefahrbringenden 
Situation durch den Bediener angehalten werden können zum Schutz vor 
einer Gefährdung. Zum kontrollierten Abbremsen des Antriebes wird 
Spannung benötigt. In den meisten Fällen wird z. B. eine 
Speicherprogrammierbare Steuerung (SPS) oder angeschlossene PC-Technik 
nicht abgeschaltet. Auch Bremsen, Kühlungen, Absaugungen u. ä. 
Sicherheitstechnik werden meist nicht abgeschaltet, sofern von ihnen 
keine Gefährdungen ausgehen."
[...]

https://de.wikipedia.org/wiki/Notausschalter#Probl...

[...]
"Im deutschen Sprachgebrauch werden die beiden Funktionen Not-Aus (= 
Abschalten, Unterbrechen der Energiezufuhr) und Not-Halt (= Anhalten, 
Stillsetzen der beweglichen Maschinenteile) häufig unter dem Begriff 
„Not-Aus“ subsumiert, was zuweilen – auch unter Fachleuten – zu 
Verwirrungen führt. Korrekt ist die Verwendung von „Not-Aus“ als 
deutsche Entsprechung für den englischen Begriff emergency switching 
off.[1] Es gab aber deutsche Normausgaben, die auch den englischen 
Begriff emergency stop fälschlich mit dem Ausdruck „Not-Aus“ 
wiedergaben. Dies tat insbesondere die EN418 (Sicherheit von Maschinen; 
NOT-AUS-Einrichtung, funktionelle Aspekte; Gestaltungsleitsätze; 
Deutsche Fassung EN 418:1992) und teilweise auch die alte 
EG-Maschinenrichtlinie 98/37/EG.

Die Nachfolgenorm ISO 13850 hat dies korrigiert und spricht von 
Not-Halt. In der neuen Fassung der Maschinenrichtlinie (2006/42/EG, bzw. 
2009/127/EG) wurde der falsch verwendete Begriff ebenfalls durch 
Not-Halt ersetzt."
[...]

Beide Auszüge bestätigen die Aussage von Route 66.


Zum Thema Not-Aus auf SPS:

Es gibt spezielle Sicherheits-SPS, welche für Not-Aus-Funktionen 
zugelassen sind (und auch den passenden SIL-Level besitzen).

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NA schrieb:
> Beide Auszüge bestätigen die Aussage von Route 66.

wo?

Es steht unter NOT-AUS

[...]
Der Not-Aus-Schalter

Stopp-Kategorie 0: Energiezufuhr zu den Antriebselementen wird sofort 
getrennt (nur möglich, wenn das plötzliche Abschalten der Energie keine 
Gefährdung verursacht)
[...]


Damit ist doch schon klar, das ein NOT-AUS nicht immer die Gesamte 
anlange ausschalten muss.

Autor: NA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> NA schrieb:
>> Beide Auszüge bestätigen die Aussage von Route 66.
>
> wo?
>
> Es steht unter NOT-AUS
>
> [...]
> Der Not-Aus-Schalter
>
> Stopp-Kategorie 0: Energiezufuhr zu den Antriebselementen wird sofort
> getrennt (nur möglich, wenn das plötzliche Abschalten der Energie keine
> Gefährdung verursacht)
> [...]
>
> Damit ist doch schon klar, das ein NOT-AUS nicht immer die Gesamte
> anlange ausschalten muss.

Das ist eher der Formatierung in Wikipedia geschuldet. Die 
Stopp-Kategorien gehören nicht nur zur Funktion Not-Aus.

Kategorie 0 ohne Gefährdung -> Not-Aus -> Elektrische Versorgung weg

Ab Kategorie 0 mit Gefährdung -> Not-Halt mit anschließender (nicht 
zwingend geforderter) Abschaltung der elektrischen Versorgung.

Steht in den Hinweisen zur Begriffsproblematik.

Autor: Stephan H. (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
womit ich eigentlich ja schon alles gesagt hatte.
Ob der Kran dann die Last abwirft oder der Magnet an bleibt dürfte ja 
von den vorgeschriebenen Arbeitsumgebungen abhängig sein. Sofern sich eh 
Niemand unterhalb des Magneten aufhalten soll und darf, soll er doch 
abwerfen.
Ist doch eine Frage WIE die Arbeitssicherheit im Umgang mit dem Kran vom 
Hersteller definiert wurde. Der Hersteller definiert doch die Sicherheit 
des Kranes und den Umgang mit ihm.

Autor: Frank B. (frank501)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael L. schrieb:
> Bei Funktionen wie stepper.runToNewPosition(20); merkt er sich ja die 20
> Schritte irgendwo. Nur ich weiß nicht wo...

Wenn das von dir verwendete Stepper Objekt keine passende Methode zur 
Verfügung stellt, musst du wohl selber aktiv werden und die passende 
Funktion implementieren.

Autor: Alexander T. (Firma: Arge f. t. abgeh. Technologie) (atat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Route 6. tautologisierte im Beitrag #4746568:

> Not-Aus ist Not-Aus, basta!

Not-Aus ist Ein (Dichotomieaxiom).

Not-Fall ist Aufstieg.

Not-Book ist kein Buch.

Basta Asciutta!

: Bearbeitet durch User
Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> [...]
> Stopp-KategorienStopp

ich ziehe meinen Hut vor dir, ich hatte dich durch andere Postings 
falsch eingeschätzt, tut mir leid.

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> Damit ist doch schon klar, das ein NOT-AUS nicht immer die Gesamte
> anlange ausschalten muss

Das war ja überhaupt nicht die Frage, sondern ob man eine 
Not-Aus-Funktion einfach durch eine zusätzliche Funktion in der Software 
realisieren kann, wie der TO das vorhat. Und das ist einfach nur 
unverantwortlich. Z.B. weil der angebliche Not-Aus völlig wirkungslos 
ist, wenn sich die Software mal aufgehängt hat.

Ja, ich weiss, du bist ein harter Kerl, der keine Sicherheiten braucht, 
und ausserdem sind deine Programme alle vollkommen fehlerfrei, bewiesen 
dadurch das sie ja von dir sind. Aber leider kann man das nicht 
verallgemeinern.

Georg

Autor: Michael L. (strompaedagoge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht das eigentlich aus wenn ich drei Taster mit Interrupt 
überwachen möchte? Dafür sind doch nur Pin D2 und D3 vorgesehen. Oder 
funktioniert das nur mit maximal zwei Tastern?

Autor: Amateur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Not-Aus MUSS jegliche Energie von den Antriebselementen nehmen, dazu 
gibt es nur sehr wenige Ausnahmen.

Dabei ist es egal, ob sie gerade in Betrieb sind oder nicht. Dies geht 
natürlich nicht im Rahmen von irgendwelcher Software. Also indirekt.
Geh' einfach mal davon aus, dass gerade die Not-Abschaltung, durch einen 
Absturz der Software erzwungen wird;-/

... aber niemand hindert Dich daran den Zustand des Not-Aus-Schalters, 
mittels Software, zu überwachen.
Bei Schrittmotoren ist aber davon auszugehen, dass ein "hartes" 
abschalten, fast immer zu Schrittverlusten führt.

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Taster über einen Interrupt schalten ist eine schlechte Idee. Du 
müsstest die Taste hardwaremässig entprellen. Ansonsten löst du immer 
zumindest 2x den Interrupt aus.
Der Mega328 des UNO kann aber auch Pin-Change Interrupt. Wie das 
allerdings mit der Arduino-IDE funktioniert weiß ich nicht. Das Problem 
mit den Tastenprellen stellt sich aber auch hier.

Autor: Meister E. (edson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael L. schrieb:
> Dafür sind doch nur Pin D2 und D3 vorgesehen. Oder
> funktioniert das nur mit maximal zwei Tastern?

Versuch doch mal Dir vorzustellen, wie Du Tasten abfragen kannst ohne 
die INT-Eingänge zu benutzen. Das ist nämlich kein guter Stil und kann 
je nach Situation schädlich sein. Leider ist diese Denkweise sehr 
verbreitet, viele Anfänger denken die INT-Eingänge seien eine Art 
"NotAus-Interface" - sind sie aber nicht.

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir die Stepper.cpp mal kurz angeschaut. Die Anzahl der Steps 
wird in einer while-Schleife abgearbeitet. Es kann daher nur durch einen 
Interrupt unterbrochen werden. Wie das zu machen wäre müsste man sich 
genauer ansehen. In einem fremden Programm herumzuzaubern ist aber nicht 
so leicht. Wenn du dann auch noch eine Rampe hinzufügen willst, wird es 
besonders lustig, oder gibt es sowas schon fertig?
Daher ist das Programm für deine Wünsche nur bedingt geeignet. Und das 
Problem des Tastenprellen bleibt bestehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.