Positionssensor fĂŒr Notlichtschalter

Vor allen, die frĂŒher oder spĂ€ter ein autonomes Notbeleuchtungssystem entwerfen, tritt das Problem auf, die Notbeleuchtung ein- und auszuschalten. Wie geht das auf bequemste und transparenteste Weise, um die Raumgestaltung nicht durch zusĂ€tzliche Schalter zu beeintrĂ€chtigen?


Eine der Lösungen unter dem Schnitt.


Hintergrund


In der modernen Welt sind viele Dinge an eine unterbrechungsfreie Stromversorgung gebunden. Die meisten Arten von intellektuellen AktivitĂ€ten sind ohne einen Computer und eine Kommunikation, die rund um die Uhr funktionieren, bereits nicht denkbar. Das ist weder gut noch schlecht, und du musst damit leben. Vor allem, wenn sich Ihr Arbeitsplatz nicht in einem modernen BĂŒro befindet, das mit USV- und Notdieselgeneratoren gefĂŒllt ist, sondern in einer Wohnung eines gewöhnlichen Wohnhochhauses. Und so kam es, dass die ZuverlĂ€ssigkeit der Energieversorgung von Wohnraum in den meisten StĂ€dten der ehemaligen UdSSR zu wĂŒnschen ĂŒbrig lĂ€sst. Infolgedessen hat der Faden, der die Ausgangssteckdose und das nĂ€chste Kraftwerk verbindet, die schlechte Angewohnheit, regelmĂ€ĂŸig zu brechen. Wann einmal alle sechs Monate und wann und dreimal am Tag.

Deshalb habe ich zu Beginn der Reparaturarbeiten in einer neuen Wohnung im Projekt zunĂ€chst eine parallele Verkabelung fĂŒr eine unterbrechungsfreie Stromversorgung und Beleuchtung verlegt.

Ich hĂ€tte sehr gerne einen leistungsstarken Generator mit ICE zur VerfĂŒgung, der die gesamte Wohnung mit normalem Strom versorgen kann, aber ich musste diese Idee aufgeben. In einem Privathaus wĂ€re die Frage ĂŒberhaupt nicht aufgeworfen worden, aber eine Wohnung ist eine ganz andere.

Das erste Problem ist die Entfernung von Abgasen, die in der Wohnung eines Hauses mit Zentralheizung absolut nirgends zu finden sind. Nun, Sie werden den Schlauch nicht direkt vor dem Fenster wegwerfen, wo sofort Rauch in das Fenster des nÀchsten offenen Nachbarn gesaugt wird.

Das zweite Problem ist LĂ€rm. Ja, moderne Wechselrichter-Viertaktgeneratoren können sehr leise wirken, wenn Sie sie auf der Straße hören. Und wenn Sie einen zusĂ€tzlichen SchalldĂ€mpfer aufhĂ€ngen, dann ganz leise. Aber glauben Sie mir, in einem stromlosen, was ein völlig ruhiges Wohnhaus bedeutet, wird selbst ein so leises Rumpeln fĂŒr alle Nachbarn perfekt hörbar sein.

Kurz gesagt, die Idee mit dem Generator ist gestorben, so klar und nicht geboren. Von den verbleibenden realen Optionen blieben nur Batterien ĂŒbrig.

Außerdem erlaube ich mir eine einfache Darstellung meiner emotionalen PrĂŒfungen und der Entscheidungen, die in der ersten Person getroffen wurden, ohne Anspruch auf universelle Wahrheit. Und ich warne sofort, dass meine Argumente gegenĂŒber jemandem nicht ĂŒberzeugend erscheinen könnten und die getroffenen Entscheidungen umstritten sind. Trotzdem ist alles, was hier beschrieben wird, derzeit in Hardware implementiert und fĂŒhrt die Aufgaben erfolgreich aus.

Und wenn sich jemand fĂŒr die rein praktische Seite des Problems interessiert und es keine Rolle spielt, wie ich zu einem solchen Leben gekommen bin, kann er viele Buchstaben ĂŒberspringen und direkt zur Beschreibung der vorgefertigten Lösung ĂŒbergehen.

Kurz ĂŒber die Auswahl des Batterietyps


Und obwohl diese Ausgabe nichts mit dem Thema des Artikels zu tun hat, möchte ich auch hier meine fĂŒnf Cent einfĂŒgen. DarĂŒber hinaus , dass zwangslĂ€ufig unter solchen Aussagen Diskussionen entstehen trĂ€gt oft eine Menge von lulz nĂŒtzlichen Informationen.

Heute, im Jahrhundert der rasanten Entwicklung alternativer Energien, tauchen relativ erschwingliche, industriell hergestellte unterbrechungsfreie Stromversorgungssysteme fĂŒr Privathaushalte in Kombination mit Solar- oder Wind-Minikraftwerken auf. Die fortschrittlichsten von ihnen verwenden Lithium-Ionen-Batterien mit einem ganzen Haufen elektronischer "Enhancer" fĂŒr die Wirksamkeit des gesamten Systems.

In meinem Fall kann aus objektiven GrĂŒnden nicht ĂŒber ein Minikraftwerk gesprochen werden, und nur die Backup-Quelle, die wĂ€hrend der „AufklĂ€rung“ aus einer normalen Steckdose erneuerbar ist, war interessant. Aus diesem Grund wurde beschlossen, die gesamte elektronische FĂŒllung der USV-Wohnung selbst zu bewirtschaften. Und da meine HĂ€nde völlig gelöst waren, musste zunĂ€chst entschieden werden, welcher Batterietyp verwendet werden sollte.

Zuerst dachte ich so: „Warum nicht Lithium? Stilvolle trendige Jugend. Versiegelt, energieeffizient, langlebig. " Aber als ich mir die Preise ansah, ließ meine Lithium-Leidenschaft merklich nach. Eine schnelle Suche in Kombination mit Schularithmetik ergab, dass selbst sehr "dumme" chinesische 26650-Banken mit (natĂŒrlich) den ehrlichsten 5000 mAh fĂŒnfmal mehr kosten als eine SĂ€urebatterie mit der gleichen EnergieintensitĂ€t. Und wenn Sie etwas auswĂ€hlen, das nicht vom unteren Ende des Preises sortiert ist, erreicht der Unterschied leicht das 8- bis 10-fache.

Und wie können Sie einen so großen Wertunterschied ausgleichen?

Ja, Lithium speichert Energie effizienter fĂŒr jedes Kilogramm und jeden Kubikmeter, und eine Batterie von der GrĂ¶ĂŸe eines Zigarettenblocks verwendet problemlos eine 10-Kilogramm-Blei-SĂ€ure-Batterie. Aber ist diese Tatsache fĂŒr den stationĂ€ren Gebrauch so wichtig?

NatĂŒrlich wird ein gutes "Lithium", aber mit dem richtigen Ansatz lĂ€nger dauern. Aber zehnmal?

Gleichzeitig auf der anderen Seite der Skala die potenzielle ExplosivitĂ€t von Batterien unbekannter Herkunft, ein komplexerer Ladealgorithmus, Probleme bei der Entsorgung (jeder Obdachlose weiß, wo er eine Bleibatterie gewinnbringend einsetzen kann, wĂ€hrend Lithium viel komplizierter ist).

Kurz gesagt, aufgrund der Summe der Faktoren habe ich beschlossen, die Idee von Lithium auf die nÀchste Iteration zu verschieben. Vielleicht wird sich in ein paar Jahren etwas Àndern, aber im Moment ist Blei unser Alles.

, , . , , , .

FĂŒr Bleibatterien gibt es auch mehrere Optionen. Die „richtige“ Option sind spezielle Pufferbatterien, die in USV, an Basisstationen der Mobilfunkkommunikation und an anderen Ă€hnlichen Orten verwendet werden, an denen sie große Ströme aufnehmen und liefern mĂŒssen, gelegentlich eine starke Entladung erfahren und tatsĂ€chlich arbeiten, ohne die Menschen abzulenken fĂŒr den Service.

Eine weitere „richtige“ Option sind Traktionsbatterien fĂŒr elektrische Autolader oder, was solls, ein Diesel-U-Boot. Diese Batterien haben eine hohe Haltbarkeit und eine gute Toleranz gegenĂŒber Tiefenentladungen, ohne dem Besitzer die Möglichkeit zu nehmen, "etwas Wasser nachzufĂŒllen".

Nun, die "falsche" Option ist die Starterbatterie aus dem nĂ€chsten Autohaus. Eine solche Batterie kann kurzzeitig bis zu einem Kilowatt Strom an den Berg abgeben, aber jede Entladung ist fĂŒr ihn stressig, wie die Arbeit fĂŒr eine faule Person. Und der Ruhm von Einwegbatterien ist im Allgemeinen in modernen Kalziumbatterien verankert: "Entladen - Wechselgeld".

Nun, ich hoffe, niemand zweifelt daran, welche Option ich letztendlich fĂŒr die Implementierung ausgewĂ€hlt habe. Richtig, drittens. Und die GrĂŒnde dafĂŒr liegen nicht nur in der bekannten Warzenamphibie, sondern auch in einer einfachen pragmatischen Berechnung. Starterbatterien sind um ein Vielfaches billiger als alle anderen Optionen und erreichen manchmal einen Lithiumwert. Und anstatt ĂŒber eine teure Batterie zu schĂŒtteln, fĂŒhlen Sie sich in einer Situation gesunder GleichgĂŒltigkeit viel freier, wenn der Ersatz fĂŒr ein paar Wochen zu Verlusten bei der Nahrungsaufnahme fĂŒhrt. Wenn Sie diese Batterien nicht leer werden lassen, bevor Sie einen Impuls verlieren, wird ihre Lebensdauer als Backup fĂŒr viele Jahre berechnet. Sie können jederzeit einen Akku mit einer grĂ¶ĂŸeren KapazitĂ€t einsetzen, die Entladungsgrenze weicher einstellen und dennoch ein besseres Preis- / LeistungsverhĂ€ltnis als den „richtigen“ Akku erzielen.eine tiefe Entladung erleiden.

Die Hauptsache in dieser Angelegenheit ist die BelĂŒftung mindestens auf der Ebene „Loch in der Wand“ am Ort der Installation der Batterien. Organisieren Sie einen banalen Schutz gegen KurzschlĂŒsse, da die niedrige Spannung der Stromquelle die Wachsamkeit trĂŒbt und alles sehr schlecht enden kann.

Aktueller Krieg in einer einzigen Wohnung


Nach einer gewissen moralischen BestĂ€tigung durch die endgĂŒltige Entscheidung ĂŒber den Batterietyp schien ein neuer Grund sofort sorgfĂ€ltig zu ĂŒberlegen.

Ich möchte Sie daran erinnern, dass ich zunĂ€chst einen Wechselstromgenerator mit 230 V haben wollte. Nachdem ich mich jedoch mit der objektiven RealitĂ€t abgefunden und mental auf Batterien umgestellt hatte, fĂŒhrte mich die TrĂ€gheit des Denkens bereits auf den bekannten chinesischen Online-Markt, um einen geeigneten DC / AC-Wandler auszuwĂ€hlen. Und wĂ€hrend der Untersuchung der Eigenschaften tauchte der Begriff „modifizierte Sinuswelle“, der vergessen wurde, zuerst auf und dann der gesunde Menschenverstand, unangenehme Fragen auf.

Das Wesentliche der Fragen war wie folgt. Um den gesamten Energiebedarf der Wohnung mit einer kleinen Batterie zu decken, funktioniert dies immer noch nicht. Kessel, eine Mikrowelle, eine Waschmaschine und ein leistungsstarker Desktop-Computer sind immer noch unertrĂ€glich. Und der KĂŒhlschrank, die Haube und sogar der banale LĂŒfter können aufgrund dieser sehr modifizierten Sinuswelle nicht richtig funktionieren. NatĂŒrlich gibt es Wechselrichter mit einer echten Sinuswelle, aber sie sind nicht nur teurer, sondern auch weniger effizient. Und das Problem der starken Verbraucher ist immer noch nicht gelöst.

Welche Verbraucher bleiben im Budget? Es gibt nicht so viele von ihnen: Unterhaltungselektronik wie Laptops und Telefone / Tablets, ein Router, ein ARM-Server, die Stimmung ist ein Fernseher und natĂŒrlich Beleuchtung. DarĂŒber hinaus besteht die erste Botschaft des Artikels (und meine persönliche Motivation) darin, die Funktion der Backup-Workstation in Form eines Laptops und minimalen Haushaltskomfort wie Licht in der Toilette sicherzustellen.

Fast alle diese GerĂ€te benötigen fĂŒr ihren Betrieb eine konstante Spannung von 5 bis 21 V, und es besteht keine objektive Notwendigkeit, die Batteriespannung zuerst auf 230 V AC zu erhöhen, dann abzusenken und wieder auf plus oder minus den Anfangspegel auszurichten. Bei diesen Transformationen ist es leicht, bis zu 50% der Energie zu verlieren, was ich ĂŒberhaupt nicht gelĂ€chelt habe.

Kurz gesagt, so reibungslos kam die Idee auf, alternativ ein Niederspannungs-Gleichstromnetz zu verwenden. Und nach einer ungefÀhren Berechnung der Verluste in den DrÀhten wurden die anfÀnglichen 12 (13,8) V zu praktischeren 24 (27,6) V.

Zuerst wollte ich sogar 36 (41,4) B nehmen, aber nachdem ich die Eigenschaften einiger elektronischer Komponenten untersucht hatte, mit denen ich mit all dieser Wirtschaft arbeiten wollte, musste ich meinen Appetit dÀmpfen.

So wurde bei einer alternativen Verkabelung mit einem Querschnitt von 3,5 mm 2 reinem Kupfer letztendlich Spannung von zwei in Reihe geschalteten Autobatterien angelegt.

, . ( ) . , .

Um den Verbrauchern die Möglichkeit zu geben, wurde jedem „großen“ Steckdosenblock eine weitere Steckdose hinzugefĂŒgt. Und damit niemand eine gewöhnliche Steckdose mit einer Ersatzsteckdose verwechseln wĂŒrde, wurden die Produkte vom Typ „American“ mit flachen Kontakten unterschiedlicher Breite als letztere installiert. Dies ermöglicht erstens nicht, dass der Staubsauger an das Gleichstromnetz angeschlossen wird, und zweitens verwendet eine solche Steckdose im Gegensatz zur europĂ€ischen immer die gleiche PolaritĂ€t, wenn der „richtige“ Stecker verwendet wird.


FĂŒr diese Steckdosen wurden Laptop-Adapter hergestellt, die die Spannung auf die gewĂŒnschten 18 bis 20 V senken und mit den entsprechenden AnschlĂŒssen ausgestattet sind. Es ist klar, dass die AbsĂ€tze aus den ĂŒblichen FĂŒnf-Volt-USB-Ladungen fĂŒr jede Kleinigkeit hergestellt wurden. FĂŒr alle FĂ€lle wurde ein Paar kleiner 24/230-V-Wandler mit einer Leistung von 50 und 200 Watt gekauft.

Aus China wurden Koffer zum Laden mit einem amerikanischen Stecker, denselben Netzkabeln und vorgefertigten Platinen mit Impuls-AbwÀrtswandlern bestellt. Ein Lötkolben wurde nur zum Verbinden der DrÀhte benötigt.

Ich werde in diesem Artikel nicht auf das Kraftwerk eingehen, zumal es nichts Interessantes enthĂ€lt. Ich werde daher direkt auf eines der "unteren" Probleme eingehen, nĂ€mlich das Problem der Nutzung der von der Batterie angesammelten Energie fĂŒr Beleuchtungszwecke.

Beleuchtung


Wenn also die Wohnung parallel zur Hauptverkabelung verdrahtet wurde, wurden DrĂ€hte eines alternativen Gleichstromnetzes mit einer Spannung von 24 (27,6) V gezogen. Unter anderem wurde eine Schleife, die aus einem Paar solcher DrĂ€hte bestand, in jeden Schaltkasten und dann zusammen mit den 230 V-NetzwerkdrĂ€hten gewickelt fĂŒhrte zu den Deckenleuchten (wenn sich mehrere im Raum befanden, fĂŒhrte der alternative Draht nur zu einer).

Was mit dem Ausgang des Gleichstromnetzes im Bereich der Lampe zu tun ist, ist eine Frage eines individuellen Ansatzes. Als Lichtquelle wurde ein normaler 24-Volt-LED-Streifen gewÀhlt. Die unterschiedlich langen Segmente (im VerhÀltnis zur RaumflÀche) wurden je nach Design der Leuchten entweder direkt in ihren GehÀusen montiert oder auf die OberflÀchen geklebt, von denen sie gut leuchten und von denen sie nicht sehr auffÀllig wÀren.

In jedem Fall ist dies ein Àsthetischeres als ein technisches Problem, und jetzt ist es etwas anderes.

In der Box jedes Schalters habe ich also eine Schleife eines Phasenkabels eines 230-V-Netzwerks zum Einschalten von "normalem" Licht und eine Schleife beider DrÀhte eines Gleichstromnetzes zur Notbeleuchtung. Daraus und tanzen.

Am Ende bestand die Herausforderung vor mir darin, ein bestimmtes GerÀt zu erstellen, das drei ZustÀnde voneinander trennen kann:

  • Wechselstromnetz OK → Notlicht ausschalten.
  • Das Wechselstromnetz ist stromlos, die Schaltkontakte sind geschlossen → Notlicht einschalten.
  • Das Wechselstromnetz ist stromlos, die Schaltkontakte sind offen → Notlicht ausschalten.

Wir betrachten die Aktionen als einseitig, dh das Ausschalten der bereits ausgeschalteten Beleuchtung Àndert nichts. Diese ZustÀnde können voneinander unterschieden werden, wenn die Aufgaben der Bestimmung des Betriebs des Wechselstromnetzes und der Position der Kontakte des Schalters gelöst sind. Gleichzeitig hatte ich folgende Ausgangsbedingungen:

  1. Die Verwaltung sowohl der Haupt- als auch der Notbeleuchtung sollte fĂŒr ein Leitungsgremium vollstĂ€ndig transparent sein, keine „Kollektivfarm“ der zusĂ€tzlichen Tasten.
  2. , , , .
  3. , .
  4. – , .
  5. - .
  6. ( ), .
  7. .

Das Fehlen eines Wechselstromnetzes in den Nullboxen stellte sich natĂŒrlich als sehr komplizierte Konstruktionsfehlberechnung heraus. Ohne sie wird die Bestimmung des Vorhandenseins einer Spannung am Eingang des Schalters unmöglich. Technisch wĂ€re es möglich, den negativen Draht eines Gleichstromnetzes als Null zu verwenden, aber dies widerspricht dem völlig unzerstörbaren Absatz 5 meiner Leistungsbeschreibung.

Sensor


Es besteht jedoch eine Alternative zur Messung der Netzspannung. Es ist fĂŒr mich nicht erforderlich, das Vorhandensein von Spannung zu bestimmen, es reicht aus, das Vorhandensein von Strom im Phasendraht bei geschlossenen Kontakten des Schalters zu bestimmen. Wenn Strom vorhanden ist, liegt schließlich Spannung vor. DarĂŒber hinaus ermöglicht das „Ablesen“ genau des Stroms die Aktivierung der Notbeleuchtung nicht nur bei einem Stromausfall, sondern auch bei einem banalen GlĂŒhbirnenausfall. Diese Methode erlaubt es nicht, den Status des AC-Netzwerks zu bestimmen, wenn der Switch ausgeschaltet ist, aber dieser Status stört mich nicht, weil Sobald der Schalter ausgeschaltet ist, sollte auch die Notbeleuchtung nicht funktionieren.

Das Vorhandensein von Strom im Draht zu bestimmen ist recht einfach, insbesondere wenn dieser Strom abwechselt. Hier können Sie beispielsweise einen Hallsensor anwenden, der das Magnetfeld um den Draht erfasst. Aber Sie können mit einem gewöhnlichen Stromwandler auskommen , der aus einem Ringmagnetkreis mit einer Wicklung besteht. Durch den Ring wird ein Wechselstromdraht gefĂŒhrt, der im Magnetkreis ein Magnetfeld erzeugt. Dieses Feld induziert wiederum einen SekundĂ€rstrom in der Wicklung, der proportional zum PrimĂ€rstrom im Draht ist. Mit diesem einfachen GerĂ€t können Sie die StĂ€rke des Wechselstroms in einem beliebigen Draht messen, ohne ihn zu unterbrechen und im Allgemeinen ohne galvanische Verbindung mit dem PrimĂ€rkreis.

Die Arbeit von Stromzangen, ein sehr nĂŒtzliches Werkzeug fĂŒr jeden Elektriker, basiert auf dem gleichen Prinzip.

Befindet sich ein solcher Transformator in der NĂ€he des Schalters, reicht es aus, die Spannung an seiner SekundĂ€rwicklung zu messen, um festzustellen, ob im Lampenstromkreis Strom fließt. Das Vorhandensein von Strom zeigt, wie gesagt, in erster NĂ€herung zwei Tatsachen an: Im Netzwerk liegt eine Spannung von 230 V an, und der Schalter ist geschlossen. Die erste dieser Tatsachen ist fĂŒr den Betrieb der Notbeleuchtungsaktivierungsvorrichtung wesentlich.

Der zweite "Eingangsparameter" meines zukĂŒnftigen GerĂ€ts sollte die Position der Schaltkontakte sein.

Das unter Hobbykollegen eingeleitete „Brainstorming“ brachte verschiedene Optionen zur Bestimmung der Position des Schalters mit sich, die sich hauptsĂ€chlich auf die Änderung des Designs beschrĂ€nkten, um ihm ein weiteres Kontaktpaar hinzuzufĂŒgen. Hier ist der Spielraum fĂŒr Vorstellungskraft ziemlich groß.

Es war möglich, einen doppelten anstelle eines einzelnen Schalters zu nehmen und seine HĂ€lften mechanisch zu „parallelisieren“, so dass sie zu einem einzigen Ganzen wurden. Diese Option unterschied sich nicht in der Ă€ußeren Ästhetik und löste das Problem nicht in den RĂ€umen, in denen die Beleuchtung zweikreisig und der Schalter anfangs doppelt war.

Weitere Optionen waren die EinfĂŒhrung eines Mikroschalters oder eines Reed-Schalters mit einem Magneten im Schaltermechanismus. Nach dem Studium der Konstruktionen der verwendeten Leistungsschalter verschwanden diese Optionen ebenfalls. Die monolithische Keramikbasis eines guten Schalters lĂ€sst selbst fĂŒr einen kompakten Mikroschalter einfach keine Chance, und der Magnet- und Reedschalter funktionierte aufgrund zu geringer Tastenbewegung und Hysterese in der Betriebs- / Freigabekurve des Reedschalters nicht.

«» , . , , , . , , , .

Kurz gesagt, es war notwendig, eine Methode zu entwickeln, die keine Modifikation des Schalters erfordert. Und diese Methode wurde gefunden.

Oben habe ich einen Stromwandler beschrieben, mit dem Sie das Vorhandensein von Wechselstrom in einem Draht ohne Bruch und galvanischen Kontakt bestimmen können. Jeder Transformator ist jedoch ein bidirektionales GerÀt (im Gegensatz zum gleichen Hallsensor), dessen PrimÀr- und SekundÀrwicklung austauschbar sind.

Wenn wir Wechselstrom an die SekundĂ€rwicklung eines solchen Transformators anlegen, induziert er Spannung an den Enden des Drahtes, der in den Ring eingeschraubt ist. Und vor allem hĂ€ngt die Energie, die die Wicklung von der Quelle verbraucht, davon ab, ob der SekundĂ€rstrom im Draht seinen Weg fĂŒr eine Kreisbewegung findet.

Und hier wird es interessanter. Durch den Ring verlĂ€uft ein Draht, der sofort in wenigen Zentimetern mit einem der Kontakte des Schalters verbunden ist. Es bleibt nur, diesen Strom mit einem RĂŒckweg von der anderen Seite des Schalters zu versorgen, um eine Vorrichtung zum "Erfassen" der Position der Kontakte zu erhalten. Und aus dem Grund, dass dieser Strom wechselt, kann ein herkömmlicher Kondensator eine BrĂŒcke dafĂŒr werden.


Um diesen Stromkreis unter bestimmten Bedingungen zu schließen, wird im Prinzip kein Kondensator benötigt. Wenn ein Strom mit einer ausreichend hohen Frequenz in den Transformator "gepumpt" wird, reicht die StreukapazitĂ€t zwischen den DrĂ€hten aus, um durchzulaufen.


Was wird also benötigt, um einen solchen Detektor zu organisieren:

  1. Stromwandler.
  2. Transformator-Ausgangsspannungsmesser.
  3. Quelle fĂŒr hochfrequenten Wechselstrom.
  4. StromzĂ€hler fließt durch die Wicklung eines Umkehrtransformators.

Am schwierigsten bei der Auswahl der optimalen Parameter ist ein Transformator, der im Stromwandlermodus eine akzeptable Spannung mit einer Frequenz von 50 Hz liefern sollte und im aktiven "Erfassungsmodus" des Leistungsschalterzustands einen akzeptablen Übertragungskoeffizienten bei einer Frequenz von Hunderten von kHz aufweist. Dieses Element kann in einem Programm zur Modellierung elektronischer Schaltungen nicht simuliert werden, und selbst bei mathematischen Berechnungen stellte sich heraus, dass alles sehr schwierig war. Ich musste einen Lötkolben in die Hand nehmen und stundenlang verschiedene Optionen fahren, um die besten zu finden.

Die Anzahl der Windungen und der optimale Lastwiderstand wurden empirisch ausgewÀhlt und nicht die Tatsache, dass ich das beste VerhÀltnis nicht verpasst habe. Als Ergebnis der Experimente erschien die folgende Konstruktion:

  • Ferritkern mit einer PermeabilitĂ€t von 10.000, GrĂ¶ĂŸe 10x6x4 mm.
  • Wicklung 30 Windungen mit 0,25 mm Lackdraht.
  • Die aktive Last der Wicklung betrĂ€gt 1 kOhm.

Die magnetische PermeabilitĂ€t ist ziemlich groß, wahrscheinlich wĂ€re es sinnvoll, einen Ring fĂŒr 5000 oder sogar 2000 Einheiten zu verwenden, aber in ausreichenden Mengen hatte ich diese Ringe. Im Allgemeinen ist die PermeabilitĂ€t in diesem Fall ein Kompromisswert. Zu niedrig macht den Transformator fĂŒr den Betrieb mit einer Frequenz von 50 Hz ungeeignet, und zu hoch verdirbt alles bei Frequenzen ĂŒber Hunderten von Kilohertz.

Mehrere Experimente bestÀtigten die RealitÀt der Idee und die folgenden Ergebnisse wurden erhalten:

  • Im Stromwandlermodus betrug der Übertragungskoeffizient etwa 1 Millivolt pro Watt Fließleistung (Spannung 220-230 V).
  • Im Sondenmodus erreichte die Stromdifferenz bei geschlossenen und offenen Kontakten des Schalters je nach Frequenz und KapazitĂ€t des Lecks zwei- bis dreimal.

Das ist alles. Beide Werte sind mehr als ausreichend, um sowohl den fließenden Strom zuverlĂ€ssig zu fixieren als auch die Position der Schaltkontakte zu bestimmen. Es liegt nur an der konkreten Umsetzung.


In Eisen


Im Gegensatz zu den meisten anderen Designs wurde hier bereits in der Anfangsphase der Überlegungen beschlossen, den Mikrocontroller sofort zu verwenden. Aufgrund der BedĂŒrfnisse und Erfahrungen fiel die Wahl auf den ATtiny13A. Dieser Chip verfĂŒgt ĂŒber einen ADC und kann anstelle der Versorgungsspannung eine interne Referenzquelle von 1,1 V verwenden. Es gibt eine PWM, die sich hervorragend zur Erzeugung eines akustischen Signals eignet. Und was sich spĂ€ter als wichtig herausstellte, gibt es ein EEPROM, mit dem Sie Kalibrierungsdaten speichern können.

, « , , - «» , ».

. . . , , , .

Hier mĂŒssen Sie mindestens einen Generator, einen Spannungsmesser und eine Art Trigger kombinieren, um den aktuellen Zustand zwischen den Messungen zu speichern. Im Allgemeinen erforderte jede spekulative Skizze mindestens drei FĂ€lle nur auf dem "Kern", und die Steuerung erwies sich als viel praktischer.

Die Spannung vom Stromwandler mit einer Last von 10 bis 20 W betrĂ€gt 10 bis 20 mV und ist zu klein, um sie mit einer Grenze von sogar 1,1 V an den DAC-Eingang zu liefern. Daher benötigen Sie zusĂ€tzlich zum Controller auch einen VerstĂ€rker mit einem Übertragungskoeffizienten von etwa 100, um das Signalspannungsminimum zu erhöhen bis zu Hunderten von Millivolt.

Im Allgemeinen hĂ€ngt die Spannung des Ausgangssignals eines Stromwandlers nicht nur von der Lastleistung ab, sondern auch von seiner Art. Eine rein aktive Last wie beispielsweise Ilyichs GlĂŒhbirne erzeugt eine Sinuswelle mit Millivoltpegel. Eine LED-Lampe mit der gleichen Leistung und einfacher Impulsleistung liefert kurze Bursts fĂŒr Volt und mehr. Wir könnten damit spielen, aber erstens wollte ich ein universelles GerĂ€t bauen, und zweitens gab es in der Wohnung eine Lampe mit einem externen Netzteil, das mit einer PFC-Schaltung ausgestattet war (dh eine Verbrauchskennlinie nahe aktiv hatte).

Ich werde den Leser nicht mit Zwischenoptionen quĂ€len und sofort das endgĂŒltige Diagramm des GerĂ€ts geben.


Hier speist die Gleichspannung durch den wirtschaftlichen Linearregler LM2931-5.0 die Steuerung. In Bezug auf GehĂ€use, FunktionalitĂ€t und Pinbelegung Ă€hnelt dieser Stabilisator dem beliebten 78L05, unterscheidet sich jedoch durch einen geringeren Eigenverbrauch (ca. 500 ÎŒA bei einer Last von 10 mA) und eine grĂ¶ĂŸere Toleranz gegenĂŒber kurzen EingangsspannungsstĂ¶ĂŸen. Wenn Sie mit einer Spannung von nicht mehr als 20 V arbeiten möchten, können Sie ein noch wirtschaftlicheres Analogon von LP2950-5.0 verwenden.

LP2950-5.0 30 . 24 . - , , , , . 50%, 100%.

Der Transformator ist im Diagramm nicht dargestellt, seine Wicklung ist jedoch mit den Pins TR1 und TR2 verbunden.

Als SchlĂŒsselelement zum Schalten der Last wird ein Niedrigstrom-P-Kanal-MOS-Transistor 2SJ196 verwendet (ein Strom von bis zu 1 A sollte fĂŒr jede LED-Lampe ausreichen), aber jeder andere, der fĂŒr die Pinbelegung, den maximalen Strom und die maximale Drain-Spannung geeignet ist, kann verwendet werden.

Neben der Steuerung und dem SchlĂŒssel der aktiven Elemente werden zwei Transistoren verwendet. Eine wird benötigt, um den Verschluss des SchlĂŒssels zu steuern, der unter der Spannung der Notquelle arbeitet. Das zweite wirkt als VerstĂ€rkersignal vom Ausgang des Stromwandlers.

Zu diesem Zeitpunkt könnten Sie OperationsverstĂ€rker verwenden, aber in Bezug auf Details war die VerstĂ€rkung minimal, und Sie mĂŒssten vergessen, bei Frequenzen ĂŒber mehreren hundert Kilohertz zu arbeiten.

Es ist nicht das verstĂ€rkte Signal vom Transformator selbst, das dem ADC zugefĂŒhrt wird, sondern seine HĂŒllkurve, die von einer einzelnen Probe gemessen werden kann und nicht durch "Streaming" -Digitalisierung fĂŒr einige Zeit. Um die HĂŒllkurve zu isolieren, werden zwei Schottky-Dioden verwendet, die gemĂ€ĂŸ der Spannungsverdopplungsschaltung verbunden sind. Ein solcher Einschluss bildet einen klassischen Amplitudendetektor, bei dem der Spannungsabfall an den Dioden selbst weitgehend kompensiert wird.

Das Funktionsprinzip des Sensors ist einfach. Betrachten Sie zunÀchst den Algorithmus der Aktionen, die zum Messen des Stroms im Draht erforderlich sind.

Im Strommessmodus wird Pin PB0 in den Ausgangsmodus versetzt und durch eine logische Null geerdet. Dies verhindert, dass Signale von der Steuerung an Punkt TR1 gesendet werden. Parallel dazu werden die gleichen Aktionen an Pin PB3 ausgefĂŒhrt, wodurch der obere Ausgang des Kondensators C2 geerdet wird. Dieser Kondensator erzeugt zusammen mit dem Widerstand R1 ein Tiefpassfilter mit einer Grenzfrequenz von etwa 1500 Hz. Dank dieses Filters wird die Rolle verschiedener hochfrequenter Rauschen bei der Bildung des gemessenen Signals stark reduziert.

Dann wird ein hoher Pegel an PB4 angelegt, um den SignalverstÀrker mit Strom zu versorgen. Nach Abschluss der Transienten wird ein Strom von 50 Hz vom Transformatorausgang verstÀrkt und gelangt zum Gleichrichter, wo er den Kondensator C8 auflÀdt.

Die Ladung des Kondensators C8 wird mit ADC1 gemessen und aus dem erhaltenen Spannungswert wird ein RĂŒckschluss auf den durch den Transformator fließenden „PrimĂ€rstrom“ gezogen.

Die aktive Erfassung wird anders durchgefĂŒhrt. ZunĂ€chst wird Pin PB0 in einen PWM-Löser ĂŒbersetzt und ihm ein Signal mit einer Frequenz von Hunderten von Kilohertz bis zu Einheiten von Megahertz zugefĂŒhrt. Dieses Signal wird durch einen Widerstandsteiler etwas gedĂ€mpft und der Stromwandlerwicklung am Punkt TR1 zugefĂŒhrt. Der Kondensator C1 erzeugt zusammen mit einem Oberarm des Teilers R4 ein Tiefpassfilter mit einer Grenzfrequenz von etwa 1,5 MHz, wodurch der Pegel der Hochfrequenzoberwellen aus Rechteckimpulsen verringert wird.

Nach dem Durchlaufen der Transformatorwicklung gelangt das Sondensignal vom Punkt TR2 zum gleichen VerstÀrker und Detektor, wobei der Kondensator C8 am Ende ebenfalls auf eine Spannung aufgeladen wird, die proportional zur Last im "externen" Stromkreis des Transformators ist. In gleicher Weise wird die Kondensatorladung mit dem ADC des Mikrocontrollers gemessen.

Nun ErklĂ€rungen fĂŒr einige "lose".

Der Widerstand R5 ist so ausgelegt, dass er die Spannung am Gate des Leistungsschalters begrenzt, die bei Niederspannungs-MOSFETs normalerweise 20 V nicht ĂŒberschreiten sollte. In meinem Fall hat das Gleichstromnetz eine Spannung von bis zu 30 V, was die Notwendigkeit eines 1: 3-Teilers vorschreibt, der in Verbindung mit R3 erhalten wird. Bei einer Stromversorgung von weniger als 20 V wird der Widerstand R5 nicht benötigt (durch einen Jumper ersetzt).

Die Kondensatoren C4 und C5 sind parallel geschaltet, um eine KapazitĂ€t von 2 ÎŒF zu erreichen. Dieses Kondensatorpaar ist insofern bemerkenswert, als es Signale mit niedrigen und hohen Frequenzen gleich gut ĂŒbertragen muss. Hier wĂ€re es möglich, eine Parallelschaltung eines Elektrolytkondensators aus mehreren Mikrofarad und einer Keramik aus hundert oder zwei Nanofarad zu verwenden, aber ein "Elektrolyt" mit einer so geringen KapazitĂ€t ergibt im Vergleich zu "Keramik" aus Mikrofarad keinen GrĂ¶ĂŸengewinn. Es stimmt, es war nicht möglich, einen Keramikkondensator fĂŒr 2 Mikrofarad zu kaufen, also habe ich zwei davon gleich platziert.

, 50 2 , . , . . 100 , , . .

Die WiderstÀnde R4 und R1 bilden eine Spannungsteilung, die die 5-Volt-Wechselspannung am PWM-Ausgang mehr oder weniger mit der Ausgangsspannung des Stromwandlers ausgleicht.

Der Kondensator C8 akkumuliert, wie bereits erwÀhnt, die zu messende Spannung. Es ist besser, wenn es sich um einen hochwertigen Kondensator mit einem minimalen Leckstrom handelt.

Besonders hervorzuheben ist der zweipolige „Kamm“ TP1 / TP2, der an das RĂŒckstellbein des Mikrocontrollers angeschlossen ist. Diese Kontakte werden nicht nur zum Neustart verwendet, sondern auch zum Aufrufen des unten beschriebenen Kalibrierungsmodus. Nach der Implementierung der gesamten Wunschliste verfĂŒgte der Controller nicht mehr ĂŒber freie Pins, und beim Debuggen der Firmware trat die Notwendigkeit auf, ein einfaches Steuerelement hinzuzufĂŒgen. Zu diesem Zweck musste ich den Controller-Reset-Fuß verwenden.

«» AVR RESET GPIO. , . , . , , , , RESET.

Im Allgemeinen erwies sich die Schaltung als recht einfach, und die gesamte „Magie“ ist in der Firmware des Mikrocontrollers implementiert. Nach der Herstellung des Prototyps stellte sich jedoch heraus, dass die VerdrahtungskapazitĂ€t fĂŒr einen zuverlĂ€ssigen Betrieb der "Sonde" oft nicht ausreicht. Die Stromdifferenz durch den Transformator erweist sich einfach als vergleichbar mit dem Interferenzpegel und der Betrieb der Schaltung wird unzuverlĂ€ssig.

Daher musste ich den frei an den DrĂ€hten hĂ€ngenden Ferritring aufgeben und in einer neuen Revision des GerĂ€ts einen Hochspannungskreis direkt auf die Platine legen, um die PrĂŒfaufgabe zu erleichtern.

Hier geht es darum, einen dedizierten Kondensator hinzuzufĂŒgen, der eingeschaltet ist, um den Weg zum HF-Strom durch die Kontakte des Schalters auf kĂŒrzestem Weg zu schließen.


Der Kondensator C10 muss fĂŒr eine Spannung von mindestens Kilovolt ausgelegt sein, und seine KapazitĂ€t sollte nach einem Kompromissprinzip gewĂ€hlt werden, damit die Betriebssicherheit fĂŒr den praktischen Gebrauch ausreicht und der kapazitive Streustrom durch die Lampe nicht zu groß ist. In der Praxis können Sie bei Bedarf versuchen, mit dieser Bezeichnung "herumzuspielen".

In jedem Fall kann ein mit einem solchen Sensor ausgestatteter Schalter nicht mehr als ideal angesehen werden. Es Ă€hnelt eher einem Schalter mit einer Anzeige, daher kann es zum einen Streulicht oder Flackern von LED-Lampen geringer QualitĂ€t verursachen, und zum anderen kann es einen elektrischen Schlag verursachen, wenn auch keinen starken. Daher mĂŒssen Sie nie mit Beleuchtungskabeln arbeiten. Verlassen Sie sich nur auf den Schalter in der Wand. Schalten Sie immer den „Schalter“ am Eingang aus.

Und da ich der Karte noch einen Teil des Wechselstromnetzes hinzufĂŒgen musste, habe ich dort zwei Abschaltdrosseln hinzugefĂŒgt, die den hochfrequenten PrĂŒfstrom nicht in die Verkabelung fließen lassen. Der praktische Wert der Frequenz der PrĂŒfspannung kann mehrere MHz erreichen, und ich als Funkamateur habe es sehr satt, die Interferenz im Netzwerk mit meinen eigenen HĂ€nden zu erhöhen.

Die Drosseln L1 und L2 mĂŒssen mit Strom versorgt sein und mit einem Draht von merklicher Dicke auf die Hantel- oder Ringkerne gewickelt sein. Signaldrosseln im axialen Design "Widerstand" können nicht verwendet werden.

Die primĂ€re Windung des Stromwandlers ist jetzt ein StĂŒck Draht, das durch den Ring gefĂŒhrt und an die Punkte TR3 und TR4 auf der Platine gelötet wird. Es ist besser, wenn dieses Kabel abgeschirmt ist, wĂ€hrend der Bildschirm auf beiden Seiten des Rings mit TR5 und TR6 verbunden wird.

TR6 , . - , . , .


Der Firmware-Code und die zusammengestellte HEX-Datei werden am Ende des Artikels zusammen mit der Schaltung und dem Layout der Leiterplatte angehÀngt.

Der Algorithmus des abgestimmten Detektors ist einfach. Alle drei Sekunden wacht der Controller aus dem Tiefschlaf auf, nimmt Messungen vor und Ă€ndert bei Bedarf den Status des SteuerschlĂŒssels in die eine oder andere Richtung. Somit kann die Reaktion auf eine Änderung der Position des Schalters eine Verzögerung von bis zu drei Sekunden haben. Nicht sehr praktisch, aber dies geschieht zum einen, um Energie fĂŒr die Backup-Quelle zu sparen, und zum anderen, um das Abfrageintervall signifikant zu verkĂŒrzen, wird die Dauer von Transienten in verschiedenen Messphasen nicht berĂŒcksichtigt. Das minimale Intervall kann als gleich einer Sekunde angesehen werden, aber dann befindet sich die Schaltung fast immer im aktiven Verbrauchsmodus.

Nun, abschließend ĂŒber die Konfiguration. Aufgrund der Tatsache, dass verschiedene Sensoren je nach Stromverbrauch der Lampe, LĂ€nge und anderen Verdrahtungsmerkmalen, Interferenzpegel und dergleichen unter völlig unterschiedlichen Bedingungen arbeiten mĂŒssen, stellte sich heraus, dass es unmöglich war, einen universellen Satz adaptiver Parameter in die Firmware einzufĂŒgen. Daher erfordert jeder Sensor nach der Installation eine einzige Kalibrierung vor Ort.

Der Sensor wechselt bei jedem Einschalten in den Kalibrierungsmodus, wenn keine Kalibrierungsdaten vorliegen oder nachdem die Kontakte TP1 und TP2 geschlossen wurden. Der Eintritt in die erste Stufe der Kalibrierung wird durch eine fĂŒnfmal blinkende Notlampe angezeigt.

Nach fĂŒnfmaligem Blinken werden 7,5 Sekunden Zeit gegeben, um den Schalter auf „Aus“ zu stellen, falls er zuvor eingeschaltet wurde. Nach dieser Zeit wird der im Wechselstromnetz immer vorhandene Störpegel gemessen. Der erhaltene Wert wird als Ausgangspunkt fĂŒr Messungen im Arbeitszyklus verwendet. Auch in diesem Moment wird der Leistungsschalter bei verschiedenen Frequenzen fĂŒr die nachfolgende Auswahl der "kontrastreichsten" Frequenz erfasst.

Als nĂ€chstes beginnt die zweite Kalibrierungsstufe und die Notleuchte blinkt zweimal. Es wird 7,5 Sekunden Zeit gegeben, um den Schalter in die Position „Ein“ zu schalten. Nach dem Timeout misst das Programm den von der Lampe verbrauchten Strom. Wenn die Lampe mehrere Helligkeitsstufen hat, mĂŒssen Sie sie nach dem Einschalten sofort auf ein Minimum schalten, damit der Sensor in Zukunft mit allen verfĂŒgbaren Stufen korrekt funktioniert.

Der Beginn der dritten und letzten Kalibrierungsstufe ist durch dreimaliges Blinken der Notleuchte gekennzeichnet und erfordert, dass der Schalter im Ein-Modus bleibt und das Beleuchtungsnetzwerk spĂ€testens bis zum Ende auf einem höheren Pegel (dh mit dem Haupt- oder Nebenleistungsschalter auf dem Bedienfeld) abgeschaltet wird 7,5 Sekunden In diesem Fall wird ein zweites Ertönen des Leistungsschalters durchgefĂŒhrt, der bereits bei verschiedenen Frequenzen eingeschaltet ist, und unter BerĂŒcksichtigung der in der ersten Stufe erhaltenen Werte wird die Frequenz ausgewĂ€hlt, bei der die Stromdifferenz durch den Ein- und Ausschalter maximal ist.

Der erfolgreiche Abschluss der Kalibrierung wird durch ein einmaliges Blinken der Notleuchte und, wenn das Beleuchtungsnetz nach der dritten Stufe noch stromlos ist, durch Einschalten der Notbeleuchtung im nÀchsten Abrufzyklus angezeigt.

Wenn die gemessenen Werte von Strömen und WiderstĂ€nden unter verschiedenen Bedingungen zu nahe beieinander liegen und nicht fĂŒr eine zuverlĂ€ssige Erkennung verwendet werden können, schlĂ€gt die Kalibrierung fehl. In diesem Fall blinkt die Notbeleuchtungslampe zweimal, wenn die Schalterstellung nicht erfolgreich ist, oder dreimal, wenn der Standardverbrauch der Beleuchtungslampe zu niedrig ist.

Bei anhaltender Unwilligkeit des Sensors, im Finale mit einem doppelten Blinken zu kalibrieren, sollten Sie versuchen, die KapazitÀt von C10 zu erhöhen.

Gesamt


Das GerĂ€t erwies sich als recht einfach, kompakt genug, um in eine Schaltbox zu passen, aber nicht zu sagen, dass es sehr einfach zu konfigurieren ist. NatĂŒrlich greift es nicht auf die Komponente eines modernen "Smart Home" zurĂŒck, da es nicht ĂŒber 5G, Cloud-Steuerung und sogar banales WLAN mit GPS verfĂŒgt. Trotzdem erfĂŒllen acht dieser GerĂ€te ihre einzige Funktion, und unter Blackout-Bedingungen ist nichts anderes von ihnen erforderlich.

Firmware-Quellcode (Atmel Studio 7)
#define F_CPU 9600000 //   (  : avrdude.exe -U lfuse:w:0x7a:m -U hfuse:w:0xff:m)

#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/eeprom.h>

//#define PROTEUS

typedef unsigned char bool; //   
#define true  (0 == 0)
#define false (0 != 0)

#define MAX_U10BIT 0b0000001111111111 //      

#define INTERVAL         3   //  , 
#define CUR_MINIMAL_DIFF 50  //      , LSB
#define RES_MINIMAL_DIFF 50  //      , LSB
#define FREQ_DIV_OFFSET  2   //     
#define FREQ_MAXIMAL_DIV 6   //     

EEMEM unsigned int  EEPROM_cur_edge;
EEMEM unsigned int  EEPROM_res_edge; 
EEMEM unsigned char EEPROM_frequency_dividor;

unsigned int cur_edge, res_edge; //   ,   EEPROM    
unsigned char frequency_dividor; //   ,   EEPROM    
unsigned char clk = 0; //   watchdog
bool tp_reset = false; //   TP1  TP2

//   
static void init_vars(void) {
  if(MCUSR & (1 << EXTRF)) { // ,       TP1  TP2
    tp_reset = true;
    MCUSR &= ~(1 << EXTRF); //  EXTRF       ,   
  }
}

//  
static void init_pins(void) {
  DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB4); //       
}

//    watchdog
static void init_interrupts(void) {
  sleep_enable(); //   

  WDTCR = (1 << WDCE) | (1 << WDE); //  watchdog
  WDTCR = (1 << WDTIE) | WDTO_1S; // watchdog      ,  1 

  sei(); //  
}

//   
void init_settings(void) {
  cur_edge = eeprom_read_word(&EEPROM_cur_edge); //   
  res_edge = eeprom_read_word(&EEPROM_res_edge); //   
  frequency_dividor = eeprom_read_byte(&EEPROM_frequency_dividor); //   
}

//   
static void toggle_load(bool state) {
  if(state) {
    PORTB |= (1 << PB1);
  } else {
    PORTB &= ~(1 << PB1);
  }
}

//  
static void blink_load(unsigned char count) {
  for(unsigned char i = 0; i < count; ++i) {
    _delay_ms(200);
    toggle_load(true);
    _delay_ms(200);
    toggle_load(false);
  }
}

//   (   )
static void stop(void) {
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  while(true) sleep_cpu();
}

//   
static void toggle_amp(bool state) {
  if(state) {
    PORTB |= (1 << PB4); //     PB4
    _delay_ms(250);      //       200 .
  } else {
    PORTB &= ~(1 << PB4);
  }
}

//  
static void toggle_lpf(bool state) {
  if(state) {
    DDRB |= (1 << PB3); //  PB3    (  "0")     C2
  } else {
    DDRB &= ~(1 << PB3); //  PB3    ( )   C2  
  }
}

//    
static void toggle_gen(bool state) {
  if(state) {
    TCCR0A |= (1 << COM0A0) | (1 << WGM01); //    ( )    OC0A      OCR0A
#ifndef PROTEUS
    TCCR0B |= (1 << CS00); //    1
#else
    TCCR0B |= (1 << CS00) | (1 << CS02); //    1024
#endif
    OCR0A = FREQ_DIV_OFFSET + frequency_dividor; //   ,         OC0A
  } else {
    TCCR0A = 0; //  
  }
}

//  
static void toggle_adc(bool state) {
  if(state) {
    DDRB &= ~(1 << PB2); //  PB2    ( )
    ADMUX = 0b01 | (1 << REFS0); // PB2, 1.1v reference
    ADCSRA = (1 << ADPS0) | (1 << ADPS1) | (1 << ADPS2) | //       = 128 (75 )
             (1 << ADIE) |  //    
             (1 << ADEN);   //  
  } else {
    ADCSRA = 0; //  
    DDRB |= (1 << PB2); //  PB2    (  "0")   C8
    _delay_ms(50); //      C8
  }
}

//  
static unsigned int do_adc(void) {
  set_sleep_mode(SLEEP_MODE_ADC); //   "" 
  do {
    sleep_cpu(); //      ,      ,   
  } while(ADCSRA & (1 << ADSC)); //        ,  

  return ADC;
}

/*
//  
static void blink_bin(unsigned int value, unsigned char count) {
  for(unsigned char i = 0; i < count; ++i) {
    _delay_ms(1000);
    toggle_load(true);
    if(value & (1 << (count - i - 1))) {
      _delay_ms(500);
    } else {
      _delay_ms(50);
    }
    toggle_load(false);
  }
}
*/

//   
static unsigned int get_current(void) {
  unsigned int cur;

  toggle_lpf(true); //  
  _delay_ms(150);
  toggle_adc(true); //  
  _delay_ms(50); //    C8
  cur = do_adc(); //  
  toggle_adc(false);
  toggle_lpf(false);

  return cur;
}

//    
static unsigned int get_resistance(void) {
  unsigned int res;

  toggle_gen(true); //  
  _delay_ms(150);
  toggle_adc(true); //  
  _delay_ms(50); //    C8
  toggle_gen(false); //   ,   C8     
  res = do_adc(); //     
  toggle_adc(false);

  return MAX_U10BIT - res; //      ,      
}

//   
static bool is_current(void) {
  return (get_current() >= cur_edge);
}

//   
static bool is_toggled_on(void) {
  return (get_resistance() <= res_edge);
}

//  
static void do_main(void) {
  toggle_amp(true); //  

  if(is_current()) {
    toggle_load(false); //  ,  
  } else {
    if(is_toggled_on()) {
      toggle_load(true); //  ,  
    } else {
      toggle_load(false); //  ,  
    }
  }

  toggle_amp(false); //  
}

//    
static bool first_on(void) {
  return (frequency_dividor == 0xff); //   EEPROM   0xFF,        FREQ_MAXIMAL_DIV
}

//  
static void calibrate(void) {
  unsigned int cur_off, cur_on, res_off, res_on, res_on_tmp, res_off_array[FREQ_MAXIMAL_DIV + 1], diff, max_diff, frequency_dividor_tmp;

  blink_load(5); //    ,    
  _delay_ms(7500); //      

  toggle_amp(true); //  

  cur_off = get_current(); //      ( )

  //      
  for(frequency_dividor = 0; frequency_dividor <= FREQ_MAXIMAL_DIV; ++frequency_dividor) {
    res_off_array[frequency_dividor] = get_resistance();
  }

  blink_load(2); //     
  _delay_ms(7500); //      

  cur_on = get_current(); //     

  blink_load(3); //     
  _delay_ms(7500); //      

  
  res_off = MAX_U10BIT;
  res_on = MAX_U10BIT;
  frequency_dividor_tmp = 0;
  max_diff = 0;
  //      
  for(frequency_dividor = 0; frequency_dividor <= FREQ_MAXIMAL_DIV; ++frequency_dividor) {
    res_on_tmp = get_resistance();

    //   ,      
    if(res_off_array[frequency_dividor] > res_on_tmp) {
      diff = res_off_array[frequency_dividor] - res_on_tmp;
      if(diff > max_diff) {
        res_off = res_off_array[frequency_dividor];
        res_on = res_on_tmp;
        frequency_dividor_tmp = frequency_dividor;
        max_diff = diff;
      }    
    }
  }
  frequency_dividor = frequency_dividor_tmp;

  toggle_amp(false); //  
  
  if(cur_on > cur_off + CUR_MINIMAL_DIFF) { 
    cur_edge = cur_off + (cur_on - cur_off) / 2; //    ,     
 
    if(res_on + RES_MINIMAL_DIFF < res_off) {
      res_edge = res_off - (res_off - res_on) / 2; //    ,      

      //   
      eeprom_write_word(&EEPROM_cur_edge, cur_edge);
      eeprom_write_word(&EEPROM_res_edge, res_edge);
      eeprom_write_byte(&EEPROM_frequency_dividor, frequency_dividor);
      
      blink_load(1); //  
    } else {
      blink_load(2); //    
      if(first_on()) stop();
    }
  } else {
    blink_load(3); //    
    if(first_on()) stop();
  }
}

ISR(WDT_vect) {
  WDTCR |= (1 << WDTIE); //    watchdog   ""    
}

EMPTY_INTERRUPT(ADC_vect); //     ,     

int main(void)
{
  init_vars();
  init_pins();       
  init_interrupts(); 
  init_settings();

  if(tp_reset || first_on()) {
    calibrate(); //          
  }

  //  
  while(true) {
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_cpu(); //   watchdog

    if(++clk >= INTERVAL) {
      do_main(); //  
      clk = 0;
    }
  }
}


Archiv mit Diagramm, Verkabelung und dem gesamten Atmel Studio 7-Projekt

All Articles