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. :)
Ich würde den Taster nicht an den Reset-Pin machen (PB2 ist ja noch frei), das erspart dir bestimmt Ärger.
die led sind verpolt, sonst sieht es gut aus
Ein 100nF Kondensator noch zwischen VCC und GND am Tiny. Kopplung über Optokoppler sollte gehen.
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
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.
Die Pullups (Widerstände nach Plus) kannst du dir auch sparen, sowas ham AVR-Prozessoren eingebaut :)
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?
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.
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?
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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.