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
Die Relais sehen recht kräftig aus, die wird der MC wohl nicht schaffen, d.h. er wird durchbrennen.
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
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.
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.
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
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?
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?
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?
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?
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
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
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?)
Ein richtiger Schaltplan wäre zu Fehlersuche besser als dieses Foto.
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
@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?
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?
Die PullUps sind aber aktiv, dann sollte doch da nix fließen, oder?
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
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 | }
|
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.
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?
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.
OK. vielen Dank für deine Hilfe, dann sollte jetzt alles klappen, hoff ich :)
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
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.
ok, heißt dass ich muss den aufbau verkomplizieren, wie des in dem tut zu relais beschrieben ist
Paul Rummel schrieb: > verkomplizieren Ich würde es richtigstellen nennen und diesen Schaltplan benutzen: https://www.mikrocontroller.net/wikifiles/4/4f/Relais_npn.png
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.