Forum: Mikrocontroller und Digitale Elektronik Neuling mit lustiger Klingel, wird das funktionieren?


von Sebastian K. (kasbah)


Angehängte Dateien:

Lesenswert?

Hallo liebe Leute,

ich bin absolut neu im Bereich Analog und Digitalelektronik. Ich arbeite 
als Programmierer aber habe von Hardware NOCH nicht so viel Ahnung.

Ich moechte jetzt in die "Hardwareentwicklung" einsteigen und hab mir da 
mal so zum Spass ein kleines Projekt ausgedacht:
Ich nehme einen ATtiny13V-10PU, eine fernbedienbare Steckdose, 2 
Mignonbatterien und ein paar Kleinteile um mir eine "Klingel" zu bauen, 
die halt eine fernbediente Steckdose fuer einen einstellbaren Zeitraum 
an schaltet.
Wichtig bei diesem Projekt ist fuer mich, das ich den Kram verstehe, den 
ich da mache und mich in uC Hardwareentwicklung einarbeite. D.h. ich 
will es selbst machen und vor allem verstehen! Egal was es da an 
fertigen Loesungen zu kaufen gibt oder ob eine einfache analoge 
Schaltung einfacher waere, also bitte nicht ueber Sinn oder Unsinn 
nachdenken, viel Sinn hats nich, ich wills nur verstehen. ;)

Ich habe jetzt mal mit Eagle einen Schaltplan entworfen, der anstelle an 
der Fernbedienung zu haengen einfach nur 2 LEDs (2mA 2V) ansteuern soll. 
Dieser ist im Anhang zu sehen.

Bevor ich jetzt fleissig mit loeten anfange und mir beim ersten 
anschalten "die ganze Wohnung um die Ohren fliegt" wollte ich gern mal 
wissen, ob ich mir da voelligen Unsinn ausgedacht hab, oder ob das 
vielleicht doch so funktionieren koennte. ;)

Meine Fragen lauten nun:

Kann das so funktionieren?

Stimmt die Anbindung der ISP Schnittstelle?

Koennte ich etwas sinnvoller gestalten?

Wie verbinde ich diese Schaltung sinnvoll mit der Fernbedienung? (Diese 
ist gut zum basteln geeignet, man kann einfach Kabel an die Taster 
loeten, aber sie arbeitet mit 12V und daher muss ich sie wohl galvanisch 
trennen. Ich dachte da an Solid State Relais?)

Schonmal vielen Dank fuer eure Hilfe. :)

von flo (Gast)


Lesenswert?

Ich würde den Taster nicht an den Reset-Pin machen (PB2 ist ja noch 
frei), das erspart dir bestimmt Ärger.

von michi0021 (Gast)


Lesenswert?

die led sind verpolt, sonst sieht es gut aus

von crazy horse (Gast)


Lesenswert?

Die LEDs sind doch richtig...

von Winfried M. (win)


Lesenswert?

Ein 100nF Kondensator noch zwischen VCC und GND am Tiny.

Kopplung über Optokoppler sollte gehen.

von Alex22 (Gast)


Lesenswert?

Ich würde, um die Taster zu überbrücken, auch einen Opto-Koppler 
empfehlen und kein SSR, ist ein Preisunterschied um etwa Faktor 60.

Mir ist die Funktion deines Delay-Elements nicht ganz klar?!

Schöne Grüße,
Alex

von Sebastian K. (kasbah)


Angehängte Dateien:

Lesenswert?

Vielen Dank fuer eure Tipps! :)

flo: Ich habe den Taster mal auf PB2 verschoben.

win: Ah, jetzt wo du es schreibst, das habe ich doch in "AVR042: AVR 
Hardware Design Considerations" schon gelesen, nur leider ohne eine 
Wertangabe oder eine Berechnungsgrundlage. Wie kommt man auf die 100nF? 
Daher, erstmal einen 100nF Kondensator mit eingefuegt. :)

win und Alex22:
Ich habe mal als Optokoppler 2 MOS3020 eingesetzt. Wenn ich das richtig 
verstanden habe, dann kann ich damit 400V Wechselspannung schalten. Bei 
mir sollen ja nur 12V Gleichspannung geschalten werden. Durch die 
Doppeldiode kann ich die Ausgaenge dann einfach parallel zum Taster auf 
der Fernbedienung anschliessen, ohne auf die Polung achten zu muessen? 
Somit hat der Ausgang die gleiche Wirkung wie der originale Taster? Oder 
hab ich da irgendwas noch nicht richtig verstanden? Ich hoffe die 
Vorwiederstaende fuer die Eingaenge habe ich auch richtig berechnet. bei 
3V aus den 2 Mignonzellen als Betriebsspannung und 1,2V typischer 
Spannung bei 10mA typischem Strom fuer die LED im MOS3020 sollten da 180 
Ohm raus kommen? Beim programmieren des Tiny zerschiesse ich mir die 
Optokoppler so auch nicht? Schalten die dann wild an der Fernbedienung 
rum?

Alex22: Das Delay Element sind 2 Jumper, womit ich also 4 moegliche 
Kompinationen aus AN/AUS einstellen kann. Das soll dann vom Tiny 
ausgelesen und je nach Einstellung in eine unterschiedlich lange Pause 
zwischen dem Einschalten und Ausschalten der Steckdose umgesetzt werden. 
Also einfach 2 Jumper, die vom Tiny programmtechnisch verarbeitet 
werden.

von Compy (Gast)


Lesenswert?

Die Pullups (Widerstände nach Plus) kannst du dir auch sparen, sowas ham 
AVR-Prozessoren eingebaut :)

von Sebastian K. (kasbah)


Lesenswert?

Okay, der Schaltplan ist soweit fertig und ich bin mit der 
Programmierung beschaeftigt. :)

Nun ergibt sich aber eine Frage, die ich so ohne weiteres nicht 
beantworten kann.
Ich benutze einen ATtiny13 und lege ihn in der Hauptschleife schlafen, 
um Strom zu sparen.
Leider habe ich mein Programmiergeraet noch nicht geliefert bekommen, 
kann also nur mit dem Simulator im AVRStudio ausprobieren, was mein 
Programm macht.
Jetzt moechte ich den ATtiny13 ueber einen Pin Change Interrupt wecken. 
Dafuer habe ich GIMSK und PCMSK entsprechend gesetzt.
Wenn ich einen der maskierten Pins, egal welchen, aendere, springt der 
ATtiny13 zu der Adresse an PCI0addr aus dem Interrupt Vector. Das ist 
soweit auch benutzbar, aber:
Im Datenblatt zum ATtiny13 steht auf Seite 56 folgendes: "Any change on 
any enabled PCINT5..0 pin will cause an interrupt. The corresponding 
interrupt of Pin Change Interrupt Request is executed from the PCI 
Interrupt Vector." Das interpretiere ich wie folgt: Es gibt einen PCI 
Interrupt Vector (nicht der normale Interrupt Vector), in dem ich fuer 
jeden einzelnen Pin eine andere Sprungadresse hinterlegen kann. Leider 
ist das aber die einzige Erwaehnung eines "PCI Interrupt Vector" im 
Datenblatt.
Es ist ja nicht so das ich das nicht in Software loesen koennte, aber 
wenn der Microcontroller das fuer mich in Hardware erledigen kann, waer 
es ja Unsinn, das nochmal nach zu programmieren.

Gibt es da eine Moeglichkeit das doch noch so einzurichten, das er fuer 
jeden Pin eine eigene Sprungadresse verwendet? Sprich, wo ist der PCI 
Interrupt Vector und wie richte ich diesen ein?

von David M. (md2k7)


Lesenswert?

PCI steht doch für Pin Change Interrupt, da wird der Vektor PCI0addr 
doch stimmen... Bei jedem Pin-Change wird derselbe Vektor angesprungen. 
Hab nur leider grad das Datenblatt nicht zur Hand.

von Sebastian K. (kasbah)


Lesenswert?

Ich habe jetzt ein Problem: Leider klappt die ganze sache so mit diesen 
Optokopplern nicht. Die Koppler vertragen maximal 150mW. Durch den 
Taster in der Fernbedienung fliessen aber ca. 20mA bei 12V, was der 
Koppler also nicht mehr vertraegt. Schalte ich aber einen Widerstand in 
Reihe zum Optokoppler und Taster, dann saugt die Fernbedienung ihre 
Batterie in 3 bis 4 Schaltvorgaengen so sehr aus, das die Spannung von 
12V auf unter 10V faellt und somit erstmal nicht mehr geschaltet werden 
kann, bis sich die Batterie wieder erholt hat. D.h. mit dem Widerstand 
zum Schutze des Optokopplers war dann wohl doch keine so gute Idee. 
(Vergebt mir, ich bin blutiger Anfaenger im Bereich Elektronik ;) )
Was kann ich da jetzt tun, um das ganze doch noch zu realisieren?

von Fred S. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Sebastian,
> ... Durch den Taster in der Fernbedienung fliessen aber ca. 20mA bei
> 12V, was der Koppler also nicht mehr vertraegt.

Siehe Abbildung:
20 mA fließen durch den Ausgangskreis des Kopplers, aber die 
Verlustleistung des Kopplers wäre zu berechnen als
(Spannung zwischen den Punkten 4 und 6 des Kopplers)*20mA, nicht als 
Vcc*20mA! Zwischen den Punkten 4 und 6 wird nur eine minimale Spannung 
abfallen - miss diese mal.

Viel Erfolg mit Deinem Projekt!

Fred

von Fred S. (Gast)


Lesenswert?

Hallo Sebastian,

noch ein Nachtrag: Die Formel oben bezieht sich natürlich nur auf die 
Verlustleistung der Ausgangsseite des Kopplers und darauf, dass die 
Spannung bei durchgeschaltetem Ausgang gemessen wird. Bei 
ausgeschaltetem Ausgang wirst Du zwischen den Punkten 4 und 6 annähernd 
12V messen; natürlich fließt dabei nur ein Strom von ein paar 
microAmpere.

Viele Grüße

Fred

von Sebastian K. (kasbah)


Lesenswert?

Okay, danke fuer die Info. :)
Jetzt frage ich mich natuerlich, warum faellt die Spannung so stark? 
(geht arg richtung Null beim schalten) und wie koennte ich die 
vorraussichtliche Verlustleistung berechnen, ohne den "Verbraucher" am 
Optokopplerausgang genau zu kennen. Also er (der Verbraucher, die 
Fernbedienung) liegt hier, ist aber nicht dokumentiert.

von Fred S. (Gast)


Lesenswert?

Hallo Sebastian,

> Jetzt frage ich mich natuerlich, warum faellt die Spannung so stark?

Stell Dir den Ausgangskreis des Kopplers als Schalter vor. Am Schalter 
soll doch auch keine (bzw. kaum eine) Spannung abfallen! Der Widerstand 
in meiner Skizze oben soll Deinen Verbraucher darstellen.

> vorraussichtliche Verlustleistung berechnen, ohne den "Verbraucher" am
> Optokopplerausgang genau zu kennen. Also er (der Verbraucher, die
> Fernbedienung) liegt hier, ist aber nicht dokumentiert.

Das hast Du doch schon gemacht! 20mA (Strom durch Deinen 
Verbraucher)*(Spannung zwischen Pins 4&6)=Verlustleistung auf der 
Ausgangsseite! D.h.: Alles im Rahmen des Datenblattes.

Oder habe ich etwas falsch verstanden?

Viele Grüße

Fred

von Sebastian K. (kasbah)


Lesenswert?

Tatsächlich, es geht! :)
Nachdem ich die Hürden der Assemblerprogrammierung (Mit Pullup ist ja 1 
0 und 0 1) auch noch gemeistert habe und auf dem Steckbrett ein paar 
Experimente durchgeführt habe ist die Klingel jetzt zusammengelötet, in 
ein Gehäuse installiert und funktioniert einwandfrei. :)

Abschließend kann ich sagen, ich bin froh mit einem derart simplen 
Projekt in die uC Programmierung und "Hardwareentwicklung" eingestiegen 
zu sein, denn obwohl auf den ersten Blick alles sehr einfach aus sieht, 
ist es dann in der praktischen Umsetzung doch nochmal deutlich 
komplizierter als gedacht, wenn man keine Ahnung von Elektronik hat. 
Dann können ja jetzt die spannenden und komplexeren Projekte kommen. Man 
wird sich sicherlich nochmal lesen. :)

Vielen Dank für eure Hilfe!

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.