Prellen am Notaus, Realisieren einen Notaus

Gast #1265605
Lesenswert?

Hallo!

Für meine Studienarbeit habe ich eine Steuerbox mit einem Notaus-Taster 
vom Conrad (den günstigsten, "NOT-AUS BELEUCHTBAR") gebaut. Nach ein 
paar Versuchen habe ich den Taster nach der Schaltung hier im Forum 
entprellt (2 Widerstände, 3,3 und 33kOhm und eine Kapazität mit 100nF).

Der Notaus trennt die Stromversorgung zu den drei angeschlossenen 
Motoren und es soll dem Mikrocontroller (ATMega2560) mitgeteilt werden, 
dass jetzt eine Notaussituation eingetreten ist (und beim Ziehen wieder 
mitteilen, dass die Situation beendet ist).
Dies habe ich über einen Tasteninterrupt versucht, aber dieser ist 
zumindest beim Ziehen des Tasters fast immer zweimal ausgelöst worden. 
Nun habe ich das Signal mit einem Oszi gemessen (Bild angehängt) und es 
sind 2 Sprünge mit einem Abstand von etwa 130ms zu sehen. Hier im Forum 
wird von einer typischen Prellzeit von bis zu 10ms gesprochen, deshalb 
schließe ich Prellen in diesem Sinn aus.

Ich habe die Vermutung, dass beim Ziehen des Tasters, wobei man zuerst 
drehen muss und dann springt er nach oben, zweimal Kontakt hergestellt 
wird. Hat jemand Erfahrung mit einem solchen Taster? Was denkt ihr?

Wie könnte ich sonst noch den Notaus realisieren?

Vielen Dank schon mal und viele Grüße,
Christoph
Angehängte Dateien:
Gast #1265611
Lesenswert?

Ich denke, dass...

1. ...eine Not-Aus-Funktion in der Regel nicht über Programmierung 
realisiert werden darf, sondern die Anlage über Hardware in einen 
sicheren Zustand versetzen muss (Relais, Sicherheitsschaltmodule)

2. ...20ms Prellen bei dem grobmotorischen Schaltkontakt normal sind und 
dass man dem wohl eher mit einem ausreichend großen RC-Glied beikommen 
sollte, wobei ich damit etwa das Zehn- bis Hundertfache deiner 100nF 
meine.

3. ...man auch in Software wunderbare Entprellroutinen schreiben kann.
Gast #1265627
Lesenswert?

Danke für die schnelle Antwort!

Der sichere Zustand wird dadurch hergestellt, dass die Stromversorgung 
gekappt wird und die Motoren stehenbleiben.

Aber kann es sein, dass der Schalter 130ms lange prellt?


Ich habe auch noch folgendes versucht:
Den Taster nicht als externen Interrupt anzuschließen sondern als 
normalen Taster, den kann ich dann auch softwaremäßig entprellen.
Da ist dann solange Notaus-Situation, solange der Taster gedrückt ist 
und die Situation wird gelöst, sobald man den Taster zieht (über 
Schleifen realisiert).
Für den Pin habe ich den internen Pullup aktiviert und über den Taster 
mit GND verbunden.
Hier passiert folgendes: beim ersten Mal drücken funktioniert der Taster 
und die Notaussituation tritt ein (angezeigt durch blinkende LEDs). Nach 
etwa 10 Sekunden aber löst sich die Situation von selbst, ohne Ziehen 
des Taters. Der Pin ist mittlerweile wieder auf 1, ganz von selbst, und 
das Programm hat deswegen die Schleife verlassen. Anschließend erkennt 
er das Drücken des Notaus auch nicht mehr.

Was kann das sein? Ich bin ratlos und weiß nicht mehr, wie ich den 
Notaus realisieren soll, nachdem der Interrupt auch nicht geht.
Gast #1265630
Lesenswert?

Programmierfehler :-)

130 Millisekunden kann gut und gerne sein. Das ist teilweise sicher gar 
kein Prellen mehr, sondern fehlender Kontaktschluss. Bedenke mal, dass 
die Kontakte eigentlich nicht für solche winzigen Ströme gedacht sind!
Gast #1265634
Lesenswert?

>Der sichere Zustand wird dadurch hergestellt, dass die Stromversorgung
>gekappt wird und die Motoren stehenbleiben.

>Was kann das sein? Ich bin ratlos und weiß nicht mehr, wie ich den
>Notaus realisieren soll, nachdem der Interrupt auch nicht geht.

Schönes Beispiel weshalb man den Notaus nicht per
Software realisiert. Der Controller bleibt irgendwo
hängen, und der Notaus ist reine Makulatur.

Trenn direkt mit dem Notaus die Stromversorgung.
Sonst kann es teuer für dich werden.
Gast #1265635
Lesenswert?

Sachtmal ihr beiden, lest ihr eigentlich mit oder plärrt ihr nur drauf 
los?

> Der sichere Zustand wird dadurch hergestellt, dass die Stromversorgung
> gekappt wird und die Motoren stehenbleiben.
#1265636
Lesenswert?

Christoph V. schrieb:
> Nun habe ich das Signal mit einem Oszi gemessen (Bild angehängt) und es
> sind 2 Sprünge mit einem Abstand von etwa 130ms zu sehen. Hier im Forum
> wird von einer typischen Prellzeit von bis zu 10ms gesprochen, deshalb
> schließe ich Prellen in diesem Sinn aus.

Die 10ms sind das empfohlene Abtastintervall, nicht die Prellzeit.
Wenn Du die bekannte Entprellung mit 4-fach Abtastung nimmst, kriegst Du 
damit nur einen Impuls.
Der 1. High-Pegel ist ja nur 20ms lang, würde also noch unterdrückt 
werden. Nur Pegelwechsel länger als 40ms kommen durch.


Peter
Gast #1265639
Lesenswert?

Er schreibt doch am Anfang dass der Notaus die Stromversorgung der 
Motoren trennt UND dem Controller mitteilt, dass das passiert ist... 
Dann ist die eigentliche Notausfunktion doch in Hardware und es geht nur 
darum, dass die Steuerung das auch weiß...
Gast #1265642
Lesenswert?

>Sonst kann es teuer für dich werden.

Na gut, die Gefahr besteht hier wohl nicht:

>Für meine Studienarbeit ...

Aber trotzdem: in der Industrie wird die NotausFUNKTION meist in 
Hardware realisiert (Oeffnerkontakt des NOTAUS-Schalters). Der 
zusaetzliche Schliesser dient nur dazu, der Steuerung zu erzaehlen, an 
welcher Stelle sich jemand gegen den Taster gelehnt hat.

Gast4
#1265653
Lesenswert?

Christoph V. schrieb:

> Was kann das sein? Ich bin ratlos und weiß nicht mehr, wie ich den
> Notaus realisieren soll, nachdem der Interrupt auch nicht geht.

Nun, Du hast gemerkt, daß ein externer Interrupt völlig untauglich ist, 
das ist doch ein schönes Ergebnis.

Es entspricht völlig den Erfahrungen anderer Entwickler. Jeder kleinste 
Spike (Gewitter, Motoranlauf usw.) kann einen externen Interrupt 
auslösen.

Nun nimm die 4-fach Entprellung per Timerinterrupt und alles ist in 
Butter.


Peter
Gast #1265655
Lesenswert?

>
> Aber trotzdem: in der Industrie wird die NotausFUNKTION meist in
> Hardware realisiert (Oeffnerkontakt des NOTAUS-Schalters). Der
> zusaetzliche Schliesser dient nur dazu, der Steuerung zu erzaehlen, an
> welcher Stelle sich jemand gegen den Taster gelehnt hat.
>

Genau so will ich es machen, vielleicht habe ich mich oben etwas unklar 
ausgedrückt. Die Funktion ist gewährleistet (Strom weg), es geht nur 
noch um die Mitteilung an den Controller, die funktioniert noch nicht so 
ganz.
Ich benutze auch den Öffner für die Stromversorgung und den 
Schließerkontakt für die Meldung.

Zum Programmieren:

Das Blinken bei Notaus geschieht in einer Endlosschleife, die nur 
verlassen werden kann, wenn der Taster wieder gezogen wurde. Deshalb 
wundert es mich, dass er diese ohne Ziehen verlässt und anschließend 
aber nicht mehr hineingeht.
Kann es sein, dass so ein Taster eine kapazitive Komponente hat und sich 
irgendwie auflädt?

Vielen Dank für die schnellen Antworten!
Gast #1265657
Lesenswert?

Glaub ich nicht. Ich tippe weiterhin auf einen Programmierfehler, 
schreib doch das Programm mal hierher.

Ansonsten noch so als Tipp: Lass die Anlage nicht automatisch anlaufen, 
sobald der Notaus wieder gezogen wurde, sondern bau einen weiteren 
Taster ein. Das verhindert dann ungewolltes Wiederanlaufen.
Gast #1265664
Lesenswert?

ok, ich hab den code schnell aus dem kopf zusammengetippt. Dieser Code 
ist das einzige, was in der main()-Funktion steht.

Wie gesagt, es funktioniert einmal und durch die LEDs weiß ich, dass er 
die Zeilen auch durchläuft, aber eben nur einmal, drückt man dann 
nochmal den Notaus, passiert nichts mehr.

1
if ((PINB && (1<<PB4)) == 0)
2
{
3
  delayms(150);
4

5
  if ((PINB && (1<<PB4)) == 0)
6
  {  
7
    while(1)
8
    {
9
      blink();       //schaltet alle LEDs an und kurz später wieder aus
10
      
11
      if ((PINB && (1<<PB4)) != 0)
12
      {
13
        delayms(500);     //lange Entprellen
14
        
15
        if ((PINB && (1<<PB4)) != 0)
16
        {
17
          LEDsaus();
18
          LEDan(5); //Statusled an, zeigt, dass er wieder aus dem Notaus ist
19
          break;  
20
        }
21
      }
22
    }
23
  }
24
}
Gast #1265666
Lesenswert?

Hallo Christoph,

wenn, wie es üblich sein sollte, der betätigte Notaus, also Taste 
"drinnen" einen Offenen Kontakt bedeutet, darf es nicht auf "OK"
gehen. Ein Offener Kontakt ist nun mal hochohmig. Richtig ist hingegen 
die Bemerkung daß solche Kontakte bei sehr kleinen Strömen gerne Ärger 
machen.
Ich hatte schon einen solchen Fall, geschlossener! Schalter ca. 10kOhm!

In Deinem Fall dürfte dann aber nur das "Wiedereinschalten" unentdeckt
bleiben, nicht schön, aber weniger gefährlich.

Ich würde mal folgendes Versuchen:
"Not-Austasten-Information" zum µP mit "normaler Taste" simulieren,
funktioniert es, sollte Programm soweit OK sein.

"Not-Austasten-Information" zum µP mal mit Multimeter messen,
bleibt die stabil?

Oder läuft über diese Leitung noch ein weiteres Signal???
Dann bitte über Optokoppler Trennen!

Mit freundlichen Grüßen
und viel Erfolg!

Miraculix
Gast #1274076
Lesenswert?

holger schrieb:
>>if ((PINB && (1<<PB4)) == 0)
>
> if ((PINB & (1<<PB4)) == 0)

Es war tatsächlich ein Programmierfehler, ich weiß auch nicht, warum ich 
dort das Doppel-& geschrieben habe und der Compiler nicht gemeckert hat.

Auf jeden Fall funktioniert es jetzt einwandfrei, wenn ich nur ein & 
schreibe.

Vielen Dank nochmal für die Hilfe!
Viele grüße,
Christoph
Persönliche Seite #1274737
Lesenswert?

Christoph V. schrieb:
>> Aber trotzdem: in der Industrie wird die NotausFUNKTION meist in
>> Hardware realisiert (Oeffnerkontakt des NOTAUS-Schalters). Der
>> zusaetzliche Schliesser dient nur dazu, der Steuerung zu erzaehlen, an
>> welcher Stelle sich jemand gegen den Taster gelehnt hat.
>>
>
> Genau so will ich es machen

Und wie erfährst Du, ob der Kontakt richtig geschaltet hat? Öffner: 
verschweißt, Schließer: "Notaus geschaltet. Prima, alles OK!"

In Sicherheitsschaltgeräten verwendet man beide Kontakte des Schalters 
zur Auswertung und Weitergabe des Signals (zweikanalige Ansteuerung). 
Kommt natürlich auf die Anforderungen (SIL) an.

Gruß
Marcus
http://www.doulos.com/arm/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren