Forum: Mikrocontroller und Digitale Elektronik Anfängerhilfe - Tasterschaltung


von Paul R. (pamel)


Angehängte Dateien:

Lesenswert?

Hi Ihr,

ich hab hab zwei drei kleine Fragen.
Ich hab euch n Foto von meiner momentanen Verschaltung hochgeladen.
Der Taster ist als ActiveLow programmiert und verbindet den µC mit GND, 
wenn er geschlossen wird.
Mein Problem ist, dass ich die Grafik von 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing.C3.A4nge_.28Wie_kommen_Signale_in_den_.C2.B5C.29 
nicht ganz versteh. Fließt der Strom durch den µC oder muss ich im Bild 
die grüne Linie noch mit einem Draht realisieren? Wenn ja, brauch ich 
dann da nen 10kOhm Widerstand, oder macht das der interne Pull-Up (der 
ist angeschalten).

Was anderes:
Ich hab gelesen, dass man VCC mit GND über nen 100 nF Kondensator 
verbinden soll. Muss das sein? Hab ich bis jetzt noch nicht, können 
dadurch Fehler entstehen?

Danke schonmal.
Gruß
Pamel

von Peter D. (peda)


Lesenswert?

Die Relais sehen recht kräftig aus, die wird der MC wohl nicht schaffen, 
d.h. er wird durchbrennen.

von Paul R. (pamel)


Lesenswert?

die Relais machen ein Problem, die schalten mit 6V, praktisch schon ab 
4,5 und tun ihre arbeit bis jetzt ziemlich gut, mein Problem sind die 
Taster

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:

> die grüne Linie noch mit einem Draht realisieren?

Nein, du brauchst nichts weiter tun.
So wie du das hast, ist das in Ordnung.

Der Taster stellt eine Verbindung des µC-Pins mit GND (Masse) her. Das 
reicht schon.

> Wenn ja, brauch ich
> dann da nen 10kOhm Widerstand, oder macht das der interne Pull-Up (der
> ist angeschalten).

Das macht der interne Pullup.


> Was anderes:
> Ich hab gelesen, dass man VCC mit GND über nen 100 nF Kondensator
> verbinden soll. Muss das sein?

Ja.

> Hab ich bis jetzt noch nicht, können
> dadurch Fehler entstehen?

Ja.
Sogar sehr seltsame Fehler.

Jedes Digital-IC bekommt an JEDEM Vcc/GND Anschluss-Pärchen einen 100nF 
Kondensator.

Ohne kann es gehen, muss aber nicht.

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:
> die Relais machen ein Problem, die schalten mit 6V, praktisch schon ab
> 4,5 und tun ihre arbeit bis jetzt ziemlich gut, mein Problem sind die
> Taster

Muss schon sagen:
Du hast Gott Vertrauen.

von Max H. (hartl192)


Lesenswert?

Paul Rummel schrieb:
> Bild
Welches Bild?

Paul Rummel schrieb:
> Muss das sein? Hab ich bis jetzt noch nicht, können
> dadurch Fehler entstehen?
Ja, das muss sein und ja, es können Fehler entstehen.

Siehe unter anderem: Relais mit Logik ansteuern

von Paul R. (pamel)


Lesenswert?

das ist ein Attiny 2313 mit einem GND und einem VCC Pin, reicht es dann 
den Kondensator einfach zwischen VCC und GND zu löten?

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:
> das ist ein Attiny 2313 mit einem GND und einem VCC Pin, reicht es dann
> den Kondensator einfach zwischen VCC und GND zu löten?

Ja.
Möglichst nahe an die physikalischen µC-Pins ran.


Ich seh auch keine Freilaufdioden für die Relais. Haben die schon welche 
eingebaut?

von Max H. (hartl192)


Lesenswert?

Paul Rummel schrieb:
> praktisch schon ab 4,5
Der Strom wird aber nicht reichen.

von Paul R. (pamel)


Lesenswert?

Freilaufdioden? Was ist das?
Ich werd mal versuchen das Tut zu Relais zu verstehen.
Die Relais schalten die Spannung durch, wenn sie ein Signal vom µC 
bekommen.
Mein Problem ist dass ich nicht wusste, ob der Taster richtig 
angeschlossen ist.

Jetzt macht der nämlich was anderes komisches:
Wenn ich mit dem Finger auf das Kabelende drücke, über das ich das 
Symbol für den Taster gemalt hab, dann fließt da schon ein Strom. Das 
heißt, die Spannung aus dem µC fließt durch meinen Körper und der µC 
denkt, der Taster wäre geschlossen. Liegt das an dem fehlenden 
Kondesator?

von Peter D. (peda)


Lesenswert?

Paul Rummel schrieb:
> mein Problem sind die
> Taster

Wie hast Du das festgestellt?
Kann gut sein, daß der hohe Relaisstrom den MC zum Absturz bringt.
Wieviel Ohm haben die Relais?
Ist das ein 2313 oder ein 2313A?

von Max H. (hartl192)


Lesenswert?

Paul Rummel schrieb:
> Die Relais schalten die Spannung durch, wenn sie ein Signal vom µC
> bekommen.
Das Signal der IOs des µCs wird aber zu schwach sein (zu wenig Strom). 
Deshalb siehe: Relais mit Logik ansteuern

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:
> Freilaufdioden? Was ist das?
> Ich werd mal versuchen das Tut zu Relais zu verstehen.
> Die Relais schalten die Spannung durch, wenn sie ein Signal vom µC
> bekommen.

Das ist sehr vereinfacht ausgedrückt.

Dein 'Signal' landet in einer Spule. Da muss ein gewisser Strom 
fliessen, damit diese Spule ein Magnetfeld aufbaut, das stark genug ist, 
dass es den 2.ten Teil des Relais magnetisch anzieht.

Spannung ist die eine Sache. Strom die andere.

> Mein Problem ist dass ich nicht wusste, ob der Taster richtig
> angeschlossen ist.

Dein "Problem" sitzt tiefer. Praktisch quer durch die ganze Schaltung 
weißt du die Hälfte dessen nicht, was du eigentlich wissen solltest.


> Wenn ich mit dem Finger auf das Kabelende drücke, über das ich das
> Symbol für den Taster gemalt hab, dann fließt da schon ein Strom.

Logisch

> Das
> heißt, die Spannung aus dem µC fließt durch meinen Körper und der µC
> denkt, der Taster wäre geschlossen.

Hast du die internen Pullups aktiviert?

> Liegt das an dem fehlenden
> Kondesator?

Nein.

: Bearbeitet durch User
von Paul R. (pamel)


Lesenswert?

Ich sehs vor mir: Die Relais schalten
Das Hauptproblem war: Ich wusste nicht, ob meine Taster passen, das weis 
ich jetzt. Sie passen.

Jetzt ist mein Problem: Es fließt ein Strom, wenn ich mit dem Finger auf 
den Tasteranschluss drücke, ohne das eine Verbindung zu GND geschaltet 
ist -> Der Strom fließt durch meinen Körper, der µC denkt, der Schalter 
ist zu und schaltet ein Relais und eine LED geht an.
Meine Frage: Liegt das an dem fehlenden Kondensator, oder versteh ich 
euer Problem mit meinen Relais nicht? (Das ich das falsch gemacht hab 
weis ich, aber verursacht das gerade mein Problem?)

von Max H. (hartl192)


Lesenswert?

Ein richtiger Schaltplan wäre zu Fehlersuche besser als dieses Foto.

von Paul R. (pamel)


Lesenswert?

Pull Ups sind an

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:

> Jetzt ist mein Problem: Es fließt ein Strom, wenn ich mit dem Finger auf
> den Tasteranschluss drücke, ohne das eine Verbindung zu GND geschaltet
> ist -> Der Strom fließt durch meinen Körper, der µC denkt, der Schalter
> ist zu und schaltet ein Relais und eine LED geht an.

Nochmal.
Hast du per Programm den Pullup am Pin aktiviert.
Auch wenn die mit 10k bis 20k schon recht groß sind, sollte es trotzdem 
nicht reichen, dass der Widerstand deines Körpers das Potential weit 
genug herunterziehen kann.

Ohne Pullup kann das natürlich jederzeit sein.

> Meine Frage: Liegt das an dem fehlenden Kondensator

nein.
andere Baustelle

> oder versteh ich
> euer Problem mit meinen Relais nicht?

Weil ein Relais auch STROM braucht um zu schalten.

Spannung ist die eine Sache. Strom die andere.

Das Wasser in einem Kraftwerk an der Donau fliesst auch nur mit 3m/s 
durch die Turbine. Wenn ich mit meinem Gartenschlauch Wasser mit 3m/s 
auf die Turbinenschaufel pritscheln lasse, dreht sich aber trotzdem 
nichts.
Die Wassermenge ist zu gering

Durchflussgeschwindigkeit <==> Spannung
Durchflussmenge <==> Strom

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:
> Pull Ups sind an

Programm zeigen

von Paul R. (pamel)


Lesenswert?

@Karl Heinz: warum ist das logisch, dass da n Strom fließt, mein Körper 
sollte doch nen viel zu hohen Widerstand haben, oder nicht?
Was passiert denn, wenn ich da n 10 m langes Kabel dran bau was ich vor 
hab, löst der µC dann auch von selber aus?

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:
> @Karl Heinz: warum ist das logisch, dass da n Strom fließt, mein Körper
> sollte doch nen viel zu hohen Widerstand haben, oder nicht?

hoher Widerstand ist nicht dasselbe wie ein unendlicher Widerstand 
(sprich eine unterbrochene Leitung).
Natürlich rinnt durch deinen Körper Strom. Die Frage ist: wieviel?

Dein normaler Widerstand ist zu hoch als das sich beim Spannungsteiler
1
          o +5V
2
          |
3
       Pullup in der Größenordnung
4
       von 10k bis 20k
5
          |
6
    ------+
7
          |
8
         Körper
9
          |
10
         GND

nennenswert was tut. Anders sieht es aus, wenn kein Pullup da ist. Dann 
sind die Eingänge eines AVR hochohmig genug, dass du mit deinem Körper 
schon etwas erreichst. Das kann auch sein, dass du mit deiner 
Körper-Antenne elektromagnetische Felder einfängst und an den µC in Form 
einer Spannung weiter gibst. Normalerweise kann man auf die Art die 
allgegenwärtigen 50Hz aus dem Stromnetz recht gut messen.

> Was passiert denn, wenn ich da n 10 m langes Kabel dran bau was ich vor
> hab, löst der µC dann auch von selber aus?

In dem Fall könnte dann tatsächlich ein externer Pullup hilfreich sein.
Aber von einem 10m Kabel war ja auch bisher nicht die Rede. 
Salamitaktik?

von Paul R. (pamel)


Lesenswert?

Die PullUps sind aber aktiv, dann sollte doch da nix fließen, oder?

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:
> Die PullUps sind aber aktiv

sagst du.

Solange ich das nicht selbst im Programm gesehen habe, glaube ich erst 
mal gar nichts.
Die 'Taktik' hat sich im Lauf der Jahre bewährt :-)

> , dann sollte doch da nix fließen, oder?
gerade dann fliesst Strom. Aber eben nicht genug.

: Bearbeitet durch User
von Paul R. (pamel)


Lesenswert?

1
/*
2
 * Buzzer.c
3
 *
4
 * Created: 04.02.2014 16:55:53
5
 *  Author: Paul
6
 */ 
7
8
9
#define F_CPU 1000000UL
10
11
#include <avr/io.h>
12
#include <util/delay.h>
13
14
int main(void)
15
{
16
17
  DDRB &= ~((1<<PB0) | (1<<PB1) | (1<<PB2) | (1<<PB3));  //Port B0-3 als Eingang definieren
18
  PORTB |=  (1<<PB0) | (1<<PB1) | (1<<PB2) | (1<<PB3);  //Port B0-3 interner Pull-Up aktivieren
19
20
  DDRA &= ~(1<<PA0);  //Port A0 als Eingang definieren    //Port A0 als reset-Button
21
  PORTA |= (1<<PA0);  //Port A0 interner Pull-Up aktivieren
22
23
  DDRD |=  (1<<PD0) | (1<<PD1) | (1<<PD2) | (1<<PD3);  //Port D0-3 als Ausgang definieren
24
  PORTD &= ~((1<<PD0) | (1<<PD1) | (1<<PD2) | (1<<PD3));    //Port D0-3 Spannung 0  
25
  
26
  uint8_t bitChanged = 0;
27
  
28
  PORTD |= (1<<PD3) | (1<<PD2) | (1<<PD1) | (1<<PD0);
29
  _delay_ms(400);
30
  PORTD &= ~(1<<PD3);
31
  _delay_ms(400);
32
  PORTD &= ~(1<<PD2);
33
  PORTD |= (1<<PD3);
34
  _delay_ms(400);
35
  PORTD &= ~(1<<PD1);
36
  PORTD |= (1<<PD2);
37
  _delay_ms(400);
38
  PORTD &= ~(1<<PD0);
39
  PORTD |= (1<<PD1);
40
  _delay_ms(400);
41
  PORTD |= (1<<PD0);
42
  _delay_ms(400);
43
  PORTD &= ~((1<<PD3) | (1<<PD2) | (1<<PD1) | (1<<PD0));
44
45
    while(1)
46
    {
47
        //TODO:: Please write your application code 
48
    
49
    if(!(PINB & (1 << PINB0)))
50
    {
51
      PORTD |= (1<<PD3);
52
      bitChanged = 1;
53
    }
54
    else if(!(PINB & (1 << PINB1)))
55
    {
56
      PORTD |= (1<<PD2);
57
      bitChanged = 1;
58
    }
59
    else if(!(PINB & (1 << PINB2)))
60
    {
61
      PORTD |= (1<<PD1);
62
      bitChanged = 1;
63
    }
64
    else if(!(PINB & (1 << PINB3)))
65
    {
66
      PORTD |= (1<<PD0);
67
      bitChanged = 1;
68
    }
69
    
70
    _delay_ms(100);
71
    
72
    while(bitChanged == 1)
73
    {
74
      if(!(PINA & (1<<PINA0)))
75
      {
76
        bitChanged = 0;
77
        PORTD &= ~((1<<PD3) | (1<<PD2) | (1<<PD1) | (1<<PD0));
78
        
79
        PORTD |= (1<<PD3);
80
        _delay_ms(400);
81
        PORTD |= (1<<PD2);
82
        _delay_ms(400);
83
        PORTD |= (1<<PD1);
84
        _delay_ms(400);
85
        PORTD |= (1<<PD0);
86
        _delay_ms(400);
87
        
88
        PORTD &= ~((1<<PD3) | (1<<PD2) | (1<<PD1) | (1<<PD0));
89
      }
90
    }
91
    }
92
}

von Karl H. (kbuchegg)


Lesenswert?

Jep.
Pullups sind aktiv und du schaltest sie auch nicht irrtümlich ab.

Wenn der Eingang trotzdem auf deinen Körper reagiert, und du den Taster 
letzten Endes tatsächlich durch Fingerkontakt realisiern willst, dann 
wirst du wohl nicht umhin kommen, kleinere externe Pullups zu verbauen. 
Probier mal etwas in der Größenordnung von 5k.

von Paul R. (pamel)


Lesenswert?

Ich will den Fingerkontakt vermeiden.
Wenn er bei nem 10 m Kabel trotzdem schaltet, nehm ich nen kleineren 
externen pullup, wenn ich dich jetzt richtig verstanden hab, oder?

von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:
> Ich will den Fingerkontakt vermeiden.

Gut.
Denn mit einem menschlichen Körper sind die Sachen ein wenig 
komplizierter.
Ich hab das jetzt schon länger nicht mehr ausprobiert, aber ich kann 
mich an meinen ersten Frequenzzähler erinnern, der mir wunderbar 50Hz 
angezeigt hatte, als ich den Eingangsdraht mit den Fingern berührt habe. 
Ein Einschalten des Pullup hat dem Spuck dann ein Ende gemacht.

> Wenn er bei nem 10 m Kabel trotzdem schaltet, nehm ich nen kleineren
> externen pullup, wenn ich dich jetzt richtig verstanden hab, oder?

Ausprobieren.
Wenn der lange Draht schon zu sehr als Antenne fungiert: schaden kanns 
nicht.
Zumal das ganze auch von der Umgebung abhängt. In der Nähe starker 
elektromagnetischer Felder sieht die Sache dann ein wenig anders aus, 
als wie wenn weit und breit nichts ist.

von Paul R. (pamel)


Lesenswert?

OK.
vielen Dank für deine Hilfe, dann sollte jetzt alles klappen, hoff ich 
:)

von Karl H. (kbuchegg)


Lesenswert?

Nicht so schnell.

Was ist mit den Relais.
Welcher Typ ist das?

von Paul R. (pamel)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Paul Rummel schrieb:
> Typ: Kein Ahnung, aber schau mal hier:
> 
http://www.conrad.de/ce/de/product/503975/Relais-Standardtyp-G2R-2-5-A-2-x-UM-Omron-G2R-2-6V-6-VDC-2-Wechsler-Max-5-A-Max-125-VDC400-VAC-1250-VAAC-150-W/SHOP_AREA_17391?
> steht bestimmt irgendwo dabei


Mit dem Relais wird dein Tiny aber nicht glücklich.
Dieses Relais hat einen Spulenwiderstand von 68 Ohm.

Laut I = U / R = 5 / 68
macht das einen Spulenstrom von rund 74mA. Viel zu viel für den armen 
Tiny. Der ist überlastet und wird das nicht recht lange mit machen.

Ausserdem fehlt immer noch die Freilaufdiode. Irgendwann produziert die 
Spule beim Abschalten einen Spannungspuls, der hoch genug ist, um dir 
den Tiny zu zerschiessen.

von Paul R. (pamel)


Lesenswert?

ok, heißt dass ich muss den aufbau verkomplizieren, wie des in dem tut 
zu relais beschrieben ist

von Max H. (hartl192)


Lesenswert?

Paul Rummel schrieb:
> verkomplizieren
Ich würde es richtigstellen nennen und diesen Schaltplan benutzen: 
https://www.mikrocontroller.net/wikifiles/4/4f/Relais_npn.png

von Harald W. (wilhelms)


Lesenswert?

Paul Rummel schrieb:

> ok, heißt dass ich muss den aufbau verkomplizieren, wie des in dem tut
> zu relais beschrieben ist

Nein, Du sollst eine funktionsfähige Schaltung entwerfen, und nicht
eine, die nur zufällig funktioniert.
Gruss
Harald
Mitglied im Schutzverein für gequälte µCs.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.