Automatischer Speicher für Autobatterien auf PIC. Universal-Mikrocontroller-Ladegerät ATmega8-Ladegerät

Die wurde zum Testen in einem Gehäuse aus einem CD-Laufwerk zusammengebaut. Es stellte sich heraus, dass das Gerät mit seinen Funktionen hervorragende Arbeit leistet, fast jeden Akku lädt und entlädt, während es die Kapazität berechnet. Durch abwechselnde Lade- und Entladezyklen können die Batterien wiederhergestellt werden. In einem kürzlich durchgeführten Ideenwettbewerb wurde vorgeschlagen, eine menschlichere Version zu erstellen.

Das neue Universalladegerät wird über USB von einem Smartphone- oder Tablet-Ladegerät mit Strom versorgt. Es kann auch über einen USB-Anschluss eines Computers mit Strom versorgt werden. Das Board hat Micro-USB installiert, aber jede andere Option kann installiert werden. Es gibt auch eine Buchse für einen Standard-DC-Stecker; Wenn über ihn Strom mit einer Spannung von mehr als 5 Volt zugeführt wird, wird der Jumper auf der Platine entfernt und der Logikteil beginnt, über den LDO-Stabilisator mit Strom versorgt zu werden. Bei einer Stromversorgung mit 5 Volt muss der Jumper installiert werden (er schließt einfach den Eingang und Ausgang des +5-Volt-Stabilisators kurz).

Das Gerät wird auf einer 10 * 12 cm großen Platine platziert, LCD-Anzeige 16 * 2 mit i2c-Wandler wird an den Montagepfosten befestigt. Die Platine verfügt über Schraubklemmen zum Anschließen eines Akkus und einer Last zum Entladen, die eine Glühbirne oder ein leistungsstarker 5W-Zementwiderstand mit einem Widerstand von beispielsweise 4,7 Ohm sein kann. Der Widerstand dieses Widerstands wird durch die Formel R = U / I berechnet, wobei U die Batteriespannung und I der gewünschte anfängliche Entladestrom ist. Wenn keine Entladung geplant ist, kann die Last nicht angeschlossen bleiben. Die Verwaltung erfolgt über drei Schaltflächen. Die Informationen werden auf dem Display angezeigt, zusätzlich kommt ein kleiner Piepser ohne eingebauten Generator und eine LED zum Einsatz. Je heller die LED leuchtet, desto breiter ist die Pulsbreite im Lademodus.

Die Ladeschaltung ist die gleiche wie in der ursprünglichen Testversion mit geringfügigen Änderungen. Feldeffekttransistoren müssen einen Logikpegel haben, Sie finden sie auf Computerplatinen. Die Transistoren des p-Kanal-Feldtreibers müssen aktuell sein, zum Beispiel - SS8050 und SS8550. Die Umrichterdrossel muss dem entsprechenden Strom standhalten.


klicken um zu vergrößern
Betriebsarten des intelligenten Universalladegeräts:

  • Hauptmenü. es wählt die Parameter des Ladens, Entladens und Kalibrierens des Voltmeters aus
  • aufladen. die aktuellen und eingestellten Ladeparameter werden auf dem Bildschirm angezeigt, es ist möglich, die Parameter direkt während des Ladevorgangs zu ändern. es gibt eine Begrenzung von Spannung und Strom auf die angegebenen Werte mittels PWM. der Ladevorgang ist abgeschlossen, wenn die angegebene Spannung erreicht ist und der Ladestrom unter den angegebenen abfällt.
  • entladen. Die Steuerung ist ähnlich wie beim Laden. die Entladung endet, wenn die Spannung oder der Strom unter die angegebenen Werte sinkt.
Dabei werden Milliamperestunden gezählt, die auch am Ende angezeigt werden. Anhand der berechneten Werte können Sie den Verlustgrad der Batteriekapazität ermitteln, d.h. wie abgenutzt es ist. Wenn ein Akku mit einer Kapazität von 1A/h 500mA/h aufnimmt oder 1A/h aufnimmt und 500mA/h abgibt, dann ist seine Ressource bereits deutlich erschöpft.

Die Kalibrierung der Strommessung beim Laden und Entladen erfolgt mit Trimmwiderständen nach den Angaben eines beispielhaften Amperemeters. Die Kalibrierung des Voltmeters wird auf die gleiche Weise durchgeführt. Auf der Platine befindet sich ein ISP-Anschluss zum Flashen des Mikrocontrollers.

Diese Version des Geräts ist für den Einsatz durchaus geeignet, aber vieles kann verbessert werden. Die Platine kann kompakter gestaltet werden, indem die Batteriehalter direkt darauf platziert werden. Vielleicht wird es eine andere Version des Geräts geben, wenn Interesse daran besteht. Sie können dieses Interesse bekunden, indem Sie in einem beliebigen sozialen Netzwerk ein Like setzen, indem Sie auf die Schaltfläche unter dem Artikel klicken. Je mehr Interesse besteht, desto mehr Anreiz besteht, an diesem Projekt mitzuarbeiten, die Informationen werden ergänzt.

Mit Wünschen, Ergänzungen und Klarstellungen - gerne in den Kommentaren.

Platine: Demnächst verfügbar
Firmware: bald

"People"-Option zum fast universellen Laden auf Aliexpress: Lii-100.

Eine leichte Modifikation des Universalladegeräts, mit der Sie den Entladestrom einstellen können. Anfangs wurde es nur durch den Widerstand des Lastwiderstands bestimmt. Mit dieser Modifikation kann der Strom innerhalb dieses Wertes angepasst werden, d.h. der maximale Strom wird durch den Lastwiderstand bestimmt, es kann jedoch ein niedrigerer eingestellt werden.

Die Veredelung kann durch Aufputzmontage oder auf einem kleinen Brett erfolgen. Gleichzeitig ändern sich einige Signale. Das PWM-Ladesignal (Frequenz um 66 kHz) wird nun also von OC1A genommen, PWM-Entladung - von OC1B, Ton - von OC2. Dazu müssen Sie auf der Platine zwei Widerstände (die zu OC1A und OC2 gehen) werfen und eine Pause vom ungenutzten PB0 machen. Änderungen im Diagramm werden gelb dargestellt.

Der Operationsverstärker kann wie bei der Strommessung im Hauptteil der Schaltung eingesetzt werden. MCP6002 haben wir nicht gefunden, stattdessen wurde TLC2272 installiert. Die Entladestromeinstellung funktioniert wie beim Original IMAX. In diesem Fall erwärmt sich nicht nur der Lastwiderstand, sondern auch der Feldregler Q1.

Da wir das Gerät während der gesamten Nutzungsdauer ausschließlich über USB mit Strom versorgt haben, ist die Firmware auf eine Ausgangsspannung von maximal 5 Volt optimiert, für fast alle "runden" Akkus reicht das: Sie können einzelne Lithium-Dosen laden und entladen oder zwei in Reihe geschaltete Nickelbatterien, der maximale Strom - 2 Ampere.

Frequenzmesser am AT90S2313

Ein virtueller Frequenzzähler ist ein "Satz" aus einem PC-Programm und einem einfachen Messgerät, das an den COM-Port des Computers angeschlossen wird.Mit dem virtuellen Instrument können Sie Frequenz, Periode, Zeitintervalle und Zählimpulse messen.

Einzelheiten:http://home.skif.net/~yukol/FMrus.htm

Ich empfehle, ein einfaches Design zusammenzustellen, das keine Konfiguration erfordert und vor allem funktioniert! Mikrocontroller programmiertProgrammierer PonyProg - ein ausgezeichneter Programmierer, einfache, große Auswahl an programmierbaren Mikrocontrollern,funktioniert unter Windows, die Oberfläche ist russisch.


Radiomagazin N1 2002 Für Ni-Cd-Akkus. Ermöglicht das Aufladen von 4 Akkus.



Frequenzzähler auf Bild 16F84A

Spezifikationen des Frequenzmessers:

Maximale gemessene Frequenz ...... 30 MHz;

Die maximale Auflösung der gemessenen Frequenz .. .10 Hz.

Eingangsempfindlichkeit .................... 250 mV;

Versorgungsspannung ......................... 8 ... 12 V:

Stromaufnahme ................................ 35 mA


Details, Firmware:http://cadcamlab.ru


Lötstation auf Atmega 8


Die Umschaltung des Lötkolbens und des Föns erfolgt über die PC-Schalter. Der Fön wird über einen Thyristor angesteuert, denn 110V Fön statt R1 Diodenkathode an V. 6.


Details, Firmware: http://radiokot.ru/forum


Digitales Kapazitätsmessgerät ohne Löten aus dem Stromkreis

Die Beschreibung ist in der Zeitschrift "Radio" Nr. 6 2009 angegeben. Die Struktur wird auf AT90S2313 montiert, ohne Änderungen in der Firmware Tiny2313 verwendet. In Pon'ka habe ich die Checkboxen für SUT1, CKSEL1, CKSEL0 gesetzt, der Rest ist leer. Ich habe MAX631 nicht installiert, es ist teuer für uns, ich habe mich entschieden, es vom Netzteil über den Stabilisator zu versorgen 7805, R29, R32, R33 legte es auf das Plus-Netzteil. Zusätzlich zum Kapazitätsmesser ist im Gehäuse eine Sonde zum Testen von Transistoren ohne Löten und ein NF-HF-Signalgenerator montiert.



Halbleitermeter basierend auf ATmega8

Das Gerät kann:

Bestimmen Sie die Anschlüsse von Halbleitern;
- Art und Aufbau bestimmen;
- statische Parameter messen.
Misst Dioden, Bipolartransistoren, JFET- und MOS-Feldeffekttransistoren, Widerstände, Kondensatoren.


Das Messgerät wird im gleichen Gehäuse wie das FCL-Messgerät hergestellt, die Anzeige wird durch den PC-Schalter zwischen den Instrumenten umgeschaltet.

Frequenzmesser, Kapazitäts- und Induktivitätsmesser - FCL-meter

Die nachfolgend beschriebene Vorrichtung ermöglicht es, die Frequenzen elektrischer Schwingungen sowie die Kapazität und Induktivität elektronischer Bauteile mit hoher Genauigkeit über einen weiten Bereich zu messen. Das Design hat minimale Abmessungen, Gewicht und Energieverbrauch.

Technische Eigenschaften:

Versorgungsspannung, V: 6 ... 15

Verbrauchsstrom, mA: 14 ... 17

Messgrenzen:

F1, MHz 0,01 ... 65 **

F2, MHz 10 ... 950

Von 0,01 pF ... 0,5 μF

L 0,001 μH ... 5 H


Remote-Kopf-Diagramm


Mehr Details: http://ru3ga.qrz.ru/PRIB/fcl.shtml


Miniaturvoltmeter auf Basis des Mikrocontrollers ATmega8L


Hier betrachten wir das Design eines Voltmeters auf nur einem ATmega8L-Mikrocontroller und einer Anzeige von einem elektronischen medizinischen Thermometer. Der Bereich der gemessenen Gleichspannungen beträgt ± 50 V. Als zusätzliche Funktion ist ein Schallsondenmodus implementiert, um die Integrität von Drähten und Glühlampen zu überprüfen. Das Gerät geht automatisch in den Standby-Modus, wenn keine Messungen anstehen. Der Mikrocontroller wird von zwei Miniatur-Alkalizellen (Batterien für eine Armbanduhr) gespeist, ich habe 1 Zelle auf 3 V eingestellt. Ein häufiges Wechseln der Batterien entfällt: Die Stromaufnahme im aktiven Modus beträgt nur 330 μA, im Standby-Modus weniger als 300 nA. Aufgrund seines Miniaturdesigns und seiner Fähigkeiten ist das Gerät nützlich und praktisch. Die Platine passte nicht in das Thermometergehäuse, und ich habe es aus dem Flammenofen in das Gehäuse gemacht. Er baute seine eigene Platine, die Widerstände R5-R7 wurden vetikal in den Bussen installiert. VADZZ hat dank ihm geholfen, die Firmware aus der Quelle zu erstellen. Anzeigestifte von links nach rechts, Stifte unten und zu Ihnen hin.

Schema (für ein Diagramm in voller Größe speichern Sie das Bild auf Ihrem Computer).

Weitere Informationen finden Sie unter: http://www.rlocman.ru/shem/schematics.html?di=63917

Speicher mit Kapazitätsmessfunktion

Ich wollte die Kapazität der Batterien messen, importierte Zähler sind recht teuer, ich habe eine interessante Schaltung gefunden und zusammengebaut. Es funktioniert gut, lädt, misst, aber mit welcher Genauigkeit ich nicht sagen kann - es gibt keinen Standard. Ich habe Akkus von ziemlich anständigen Firmen gemessen 2700 ma / h - ich wollte 2000. Batterien für Spielzeug 700 ma / h - 350, viel rentabler als Batterien.


Das Gerät dient zum Laden von NiMH-Akkus und zur Kontrolle ihrer Kapazität. Die Umschaltung zwischen Lade- / Entlademodus erfolgt mit der Taste SA1. Die Betriebsart wird durch LEDs und Dezimalpunkte der ersten beiden Stellen der Siebensegmentanzeige angezeigt.
Unmittelbar nach dem Einschalten geht das Gerät in den Lademodus. Die Anzeige zeigt die Ladezeit an. Nach Ablauf der programmierten Zeit wird der Ladevorgang beendet. Das Ende der Ladung (und die Entladung ist dieselbe) wird durch den leuchtenden Punkt der vierten Entladung angezeigt. Der Ladestrom ist als C/10 definiert, wobei C die Batteriekapazität ist, die vom Trimmer R14 eingestellt wird.
Das Funktionsprinzip des Messgeräts basiert auf der Berechnung der Zeit, in der die Batteriespannung auf 1,1 V abfällt. Der Entladestrom sollte 450 mA betragen, eingestellt auf R16. Um die Kapazität zu messen, müssen Sie den Akku in das Entladefach einlegen und den Vorgang per Knopfdruck starten! Das Gerät kann nur einen Akku entladen.

Mehr Details:http://cxem.net

Universal-Amateurfunkherd

Ein Ofen zum Löten von SMD-Teilen hat 4 programmierbare Modi.

Kontrollblockdiagramm (für ein Diagramm im Vollformat speichern Sie das Bild auf Ihrem Computer).


Stromversorgung und Heizungssteuerung


Ich habe diese Struktur zusammengebaut, um eine IR-Lötstation zu steuern. Vielleicht schaffe ich eines Tages den Herd. Es gab ein Problem beim Starten des Generators, legte die 22 pF-Kondensatoren von den Pins 7, 8 auf Masse und begann normal zu starten. Alle Modi funktionieren normal, geladen 250 W mit einer Keramikheizung.

Mehr Details: http://radiokot.ru/lab/hardwork/11/

Obwohl es keinen Herd gibt, habe ich diese Unterhitze für kleine Bretter gemacht:

Heizung 250 W, Durchmesser 12 cm, gesendet aus England, bei EBAY gekauft.


Digitale Lötstation basierend auf PIC16F88x / PIC16F87x (a)

Lötstation mit zwei gleichzeitig arbeitenden Lötkolben und Fön. Sie können verschiedene MCUs verwenden (PIC16F886 / PIC16F887, PIC16F876 / PIC16F877, PIC16F876a / PIC16F877a). Das Display ist vom Nokia 1100 (1110). Die Drehzahl der Föhn-Turbine wird elektronisch gesteuert, auch der im Fön eingebaute Reed-Schalter ist beteiligt. In der Version des Autors wurde ein gepulstes Netzteil verwendet, ich habe ein Transformatornetzteil verwendet. Ich mag diese Station alle, aber mit meinem Lötkolben: 60W, 24V, mit Keramikheizung, großem Anlauf und Temperaturschwankungen. Gleichzeitig weisen Lötkolben mit geringerer Leistung mit einer Nichrom-Heizung weniger Schwankungen auf. Gleichzeitig hält mein Lötkolben, mit der oben beschriebenen Lötstation von Mikhi-Pskov, mit Firmware von Volu, die Temperatur mit einer Genauigkeit von bis zu einem Grad. Daher ist ein guter Heiz- und Temperaturerhaltungsalgorithmus erforderlich. Als Experiment habe ich einen PWM-Regler an einem Timer hergestellt, die Steuerspannung vom Ausgang des Thermoelementverstärkers geliefert, vom Mikrocontroller getrennt, eingeschaltet. Die Temperaturschwankung nahm sofort auf mehrere Grad ab, dies bestätigt, dass ein korrekter Regelalgorithmus ist erforderlich. Externes PWM ist natürlich Pornografie in Gegenwart eines Mikrocontrollers, aber eine gute Firmware wurde noch nicht geschrieben. Ich habe mir einen anderen Lötkolben bestellt, wenn damit keine gute Stabilisierung erreicht wird, werde ich meine Experimente mit externer PWM-Steuerung fortsetzen, oder vielleicht erscheint eine gute Firmware. Die Station wurde auf 4 Platinen aufgebaut, die über Stecker miteinander verbunden sind.

Das Diagramm des digitalen Teils des Geräts ist in der Abbildung dargestellt; der Übersichtlichkeit halber sind zwei MCs dargestellt: IC1 - PIC16F887, IC1 (*) - PIC16F876. Andere MCUs werden auf die gleiche Weise an die entsprechenden Ports angeschlossen.

Um den Kontrast zu ändern, müssen Sie 67 Bytes finden, sein Wert ist "0x80", für den Anfang können Sie "0x90" eingeben. Werte müssen von "0x80" bis "0x9F" reichen.

Bezüglich der 1110i-Anzeige (der Text wird gespiegelt angezeigt), wenn nicht China, sondern das ursprüngliche, geöffnete EEPROM, suchen Sie nach 75 Bytes, ändern Sie es von A0 auf A1.

Im Internet gibt es eine Vielzahl von Ladeschaltungen (Ladegeräte) für Autobatterien. Von den einfachsten bis zu den komplexesten. In unserem Fall sprechen wir über einen Speicher, der auf einem Atmega8-Mikrocontroller (MK) erstellt wurde. Durch die Verwendung von MK können Sie im Gegensatz zur Schaltung auf Transistoren eine sehr reichhaltige Funktionalität für den Speicher implementieren. In diesem Ladegerät habe ich mich beispielsweise entschieden, die folgenden Funktionen zu implementieren.

1. Einfach zu bedienen. Ein Encoder reicht. Im Uhrzeigersinn gedreht - die Ladung ist eingeschaltet. Durch Drehen im oder gegen den Uhrzeigersinn wird der Ladestrom gewählt. Der Encoder entschied sich mit einem Beat zu wählen. Durch Anklicken gelangen Sie in das Menü mit Einstellungen für Zusatzfunktionen.

2. Der Ladestrom beträgt bis zu 5A. Obwohl ich einen 85A/h Akku in meinem Auto habe, reichen mir 5A zum Aufladen, das Aufladen dauert nur etwas länger. Bei Bedarf kann der Ladestrom jedoch ohne globale Änderungen und erneutes Flashen des MK auf 10A erhöht werden.

3. Der Ladestrom kann in Schritten von bis zu 0,1 A geändert werden. Der Mindeststrom kann bis zu 0,1A gewählt werden. Damit können Sie auch kleine Akkus laden. Wenn der Encoder etwas schneller gedreht wird, funktioniert der Schritt zum Erhöhen / Verringern des Ladestroms innerhalb von 0,5 A.

4. Der Akku wird auf 14,4 Volt aufgeladen.

5. Auf das Display zeigt Informationen über den aktuellen Ladestrom und die Spannung des Akkus an, auch die Akkuladeanzeige funktioniert wie bei einem Mobiltelefon. Es schien mir, dass dies visueller wäre.

6. Es muss ein Kurzschlussschutz der Ladegeräte vorhanden sein. Wenn Sie beispielsweise die Klemmen miteinander kurzschließen und gleichzeitig das Ladegerät einschalten, dann sollte ihm dies natürlich nicht schaden. Und im Allgemeinen liegt an den Klemmen keine Spannung an, bis die Batterie angeschlossen ist. Auch wenn der Akku versehentlich mit der falschen Polarität angeschlossen wurde, kann die Ladung nicht eingeschaltet werden. All dieser Schutz wird in Software und Hardware implementiert.

7. Das Laden der Batterie sollte vollständig automatisiert sein. Dies ist durchaus möglich, da der MK verwendet wird. Die Automatisierung des Ladevorgangs sollte menschliche Eingriffe ausschließen. Das heißt, ich habe die Batterie angeschlossen, den Ladestrom gewählt und das war's. Den Rest sollte das Ladegerät erledigen. Nämlich das Aufrechterhalten des ausgewählten Ladestroms während des Ladevorgangs. Wenn der Akku defekt ist und kein Aufladen mehr möglich ist, sollte der Akku automatisch abgeklemmt werden, sonst kocht er einfach endlos und wir brauchen ihn nicht.

8. Die Funktion „Akkulagerung im Winter“ schien praktisch. Was auch immer man sagen mag, absolut jede Batterie in der Natur hat ihre eigene interne Selbstentladung. Das heißt, wenn Sie die Batterie nur eine gewisse Zeit unbeaufsichtigt lassen, wird sie durch den Selbstentladungsstrom entladen, was letztendlich zur Sulfatierung der Platten führt. Und für die Batterie ist das der Tod. Darüber hinaus ist die Zeit der Selbstentladung und Sulfatierung nicht so lang. Manchmal reichen ein paar Monate. Um dies zu verhindern, wird die Funktion implementiert"Batterielagerung im Winter". Es funktioniert einfach, wir schließen das Ladegerät an die Batterie an und die Batterie muss nicht aus dem Auto entfernt werden. Außerdem überwacht das Ladegerät jede halbe Stunde die Spannung an der Batterie. Wenn die Spannung unter die Norm fällt, schaltet sich die automatische Ladung ein, nach dem Ende des Ladezyklus wechselt das Ladegerät wieder in den Batteriespannungssteuerungsmodus. Außerdem wird die Ansprechschwelle vom Benutzer selbst im Menü eingestellt und auch die Stromstärke kann im Menü ausgewählt werden. Ich persönlich setze für mich eine Schwelle von 12,5 Volt und einen Ladestrom von 0,5A. Das Laden mit niedrigen Strömen ist effektiver als mit hohen Strömen.

9. Vielleicht ist die Funktion "Nach Stromausfall weiterladen" hilfreich. Obwohl ein solcher Zufall alle 150 Jahre einmal vorkommen kann, ist diese Funktion dennoch vorhanden. Das Ladegerät „merkt“ sich immer, dass der Ladevorgang läuft und wird der Strom aus/eingeschaltet, wird einfach weiter geladen. In jedem Fall können alle Funktionen durch Auswahl im Menü deaktiviert oder aktiviert werden. Wenn Sie alle Funktionen ausschalten, wird das Ladegerät einfach zu einem "normalen Ladegerät", das den Akku auflädt und abschaltet.

10. Und schließlich arbeitet der Programmtimer im Speicher. Der Timer tickt ständig vorwärts 0..1.2 und so weiter. Wenn der Akku geladen wird, wird dies daran erkannt, dass die Spannung allmählich auf 14,4 Volt ansteigt. Sobald also die Spannung an der Batterie leicht angestiegen ist, wird der Timer sofort auf 0 zurückgesetzt und zählt erneut 0 ... 1,2 ... Aber wenn die Batterie defekt oder alt ist oder die Elektrolytdichte nicht ganz stimmt richtig, dann ist ab einer bestimmten Schwelle die Aufladung weiter unmöglich. Und dieser Schwellenwert kann unter 14,4 Volt liegen. Wie sein? In diesem Fall stoppt der Timer das Zurücksetzen. Und wenn er einen bestimmten Punkt erreicht hat, schaltet er die Ladung einfach mit einer Meldung auf dem Display ab. Es hat keinen Sinn, die Batterie weiter aufzukochen. Der Timer kann im Menü ausgeschaltet oder durch Einstellen des Tickbereichs von 30 Minuten bis 3 Stunden eingeschaltet werden. Das Display zeigt an, wie der Timer von Zeit zu Zeit tickt und zurückgesetzt wird, wenn die Ladung im normalen Modus ausläuft.

Kommen wir nun zur Diskussion der Ladeschaltung.

Netzteil.
In diesem Fall verwenden wir ein beliebiges Schaltnetzteil (USV). Ausgangsspannung von 16 bis 20 Volt. Da der Ladestrom bis zu 5 A beträgt, sollte der Ausgangsstrom der USV mit einem Spielraum von bis zu 6 A liegen. Ich habe IPB verwendetMEINEN ES GUTRS-75-15 die eine Ausgangsspannung von 15 Volt hat, aber es gibt einen Trimmer im Gerät, mit dem Sie die Spannung auf 16,5 Volt erhöhen können. Der Vorteil der USV besteht darin, dass sie leicht und kompakt ist und über einen integrierten Schutz gegen hohe Ströme, Kurzschlüsse usw. verfügt. Daher müssen Sie sich keine Sorgen mehr machen. Das Prinzip ist für alle anderen IGE geeignet. Zumindest von einem Laptop. Wenn Ihre USV einen Strom von weniger als 5A hat, können Sie diese auch verwenden, Sie müssen nur darauf achten, dass Sie den Ladestrom nicht höher einstellen, als die USV liefern kann. Ein Trafonetzteil ist in unserem Fall nicht geeignet. Ein Ladegerät an einem Transformator ist ein separates Thema und ein separater Artikel. Der Stromkreis sieht also ungefähr so ​​​​aus.

Ein 1000uF-Kondensator kann im Prinzip nicht installiert werden, da er bereits im Schaltnetzteil am Ausgang installiert ist, aber wenn Sie ihn installieren, wird es nicht schlimmer. Kondensator C2 ist besser, wenn ein Elektrolyt vorhanden ist, aber ich habe eine Keramik-SMD. Der 7805-Stabilisator wird benötigt, um den MK, das LCD-Display und andere Umreifungen mit Strom zu versorgen.

Verbinden wir nun die Batterie und den Feldeffekttransistor.



Wie Sie sehen, ist alles einfach. Der Transistor regelt den Strom durch die Batterie. Relais K1 übernimmt die Schutzfunktion, es schaltet sich nur ein, wenn die Batterie angeschlossen und richtig angeschlossen ist. Der Zementwiderstand R18 wirkt als Shunt. Bei einem Strom von 5A hat es eine Spannung von 0,5 Volt. Wir werden diese Spannung erhöhen und an den MK ADC liefern, damit der MK weiß, welcher Strom im Ladekreis ist und dieser Wert angezeigt werden kann. Jetzt ist es an der Zeit, den MK an die Schaltung anzuschließen.

Wie Sie sehen, ist das Schema etwas komplizierter geworden. Aber nicht viel. Wir schließen ein Relais an die PB0-Klemme an, ein beliebiges Relais für 12V, dessen Kontakte einem Strom von 5A standhalten müssen. In Reihe mit dem Relais muss ein Dämpfungswiderstand von ca. 200 Ohm geschaltet werden, da das Relais mit einer Spannung von 16-20 Volt gespeist wird. Parallel zur Relaisspule muss eine Schutzdiode installiert werden (beliebig,LL4148), ohne Diode kann der VT4-Transistor durchbrechen. VT4 kann jeder npn-Typ sein, verwendet MMBT4401LT1.

An den Pins PD7, PC1, PC0 ist ein Encoder angeschlossen. Habe diesen oder diesen verwendet. An den Ausgängen, an denen der Encoder angeschlossen ist, müssen 0,1-uF-Kondensatoren und 10k-Pull-up-Widerstände angeschlossen werden. Dadurch werden Kontakte reduziert.

Das Display wurde auf zwei Zeilen mit 16 Zeichen verwendet. Das Display hat auch eine eingebaute russische Schrift. Wenn Sie ein Display ohne russische Zeichen anschließen, wird der Bildschirm geknackt. Da der Atmega8 MK nicht viele Beine hat, wurde das Display über einen 4-Bit-Bus angebunden. Display-Pins DB3-DB0 werden nicht verwendet.

An den MK PB2 Pin sind eine BAT54S Schottky-Diode, zwei 0,1uF Kondensatoren und ein 100 Ohm Widerstand angeschlossen. Warum wird das benötigt? Tatsache ist, dass die Schaltung einen Operationsverstärker LM358 verwendet, der nicht "Rail-to-Rail" ist. Bei solchen Operationsverstärkern ohne negative Versorgungsspannung am negativen Stromanschluss hat der Ausgang des Operationsverstärkers niemals 0 Volt. Daher erzeugt diese mit dem PB2-Pin verbundene Kette von Elementen eine negative Spannung von etwa -4 V, um den Operationsverstärker mit Strom zu versorgen. Damit die Kette am PB2-Pin funktioniert und -4V erzeugt, muss ein PWM-Signal mit einem Tastverhältnis von 50% daran angelegt werden. Somit liegt an Pin PB2 immer eine PWM mit einer Frequenz von 62,5 kHz an.

PWM liegt immer am PB3-Pin an, aber das Tastverhältnis des Signals in diesem Fall von 0 bis 100 % wird bereits durch die Drehung des Encoders geregelt. Widerstand R18 und Kondensator C11 bilden eine integrierende Schaltung, die die PWM in eine konstante Spannung glättet. Widerstände R19 und Trimmer R20 sind Spannungsteiler. Wie richte ich den R20 ein? Wir schließen das Multimeter an den PB3-Pin an und drehen den Encoder, bis das Gerät 2,5 Volt anzeigt. Als nächstes drehen wir den Trimmerwiderstand R20 so, dass am nicht invertierenden Ausgang des Operationsverstärkers eine Spannung von 0,25 Volt anliegt. Damit ist das R20-Setup abgeschlossen.

Wie funktioniert die Transistorregelung und -steuerung? Angenommen, der nicht invertierende Ausgang des Operationsverstärkers (+) beträgt 0,5 Volt. Eine der Eigenschaften eines Operationsverstärkers besteht darin, dass er bestrebt ist, die Potenzialdifferenz zwischen seinen beiden Eingängen auszugleichen. Er tut dies, indem er seinen Ausgang verwendet, indem er die Spannung darüber erhöht oder senkt. Am (+)-Pin beträgt also 0,5 Volt und am (-)-Pin 0 Volt. Was weiter? Der Operationsverstärker beginnt sofort, die Spannung am Ausgang zu erhöhen, der mit dem Gate des IRF540-Transistors verbunden ist. Der Transistor beginnt sich zu öffnen. Strom beginnt durch die Batterie, den Transistor und den Shunt zu fließen. Der aktuelle Strom verursacht einen Spannungsabfall am R18-Shunt. Der Operationsverstärker schaltet den Transistor ein, bis am Shunt eine Spannung von 0,5 Volt anliegt. Die Spannung vom Shunt wird über R13 an die (-)-Klemme angelegt. Sobald am (-)-Pin (derselbe wie am (+)-Pin) 0,5 Volt anliegen, schaltet der Operationsverstärker den Transistor nicht mehr ein. In diesem Fall beträgt der Ladestrom 5A.

Wenn der Encoder die Spannung an der (+)-Klemme auf 0,25 Volt reduziert, reduziert der Operationsverstärker die Spannung am Gate des Transistors auf einen solchen Wert, dass sie an der (-)-Klemme ebenfalls 0,25 Volt beträgt, dieser Wert entspricht einem Ladestrom von 2,5A. Es stellt sich heraus, dass die Regelung des Ladestroms in Hardware mit einem Operationsverstärker erfolgt. Und das ist sehr gut, da der Operationsverstärker nie einfriert und die Rechengeschwindigkeit augenblicklich ist. Diese Steuerschaltung ist eine herkömmliche lineare Stromquelle. Der Vorteil dieser Schaltung besteht darin, dass sie einfach ist, der Nachteil besteht jedoch darin, dass die gesamte Spannungsdifferenz zwischen dem Schaltnetzteil und der Spannung an der Batterie in Form von Wärme am Transistor abgegeben wird.

Zum Beispiel gibt die USV 20 Volt aus, die Spannung an der Batterie zu Beginn des Ladevorgangs beträgt 12 Volt und der Ladestrom beträgt 5 A. Wie viel Leistung wird dem Transistor zugewiesen? (20-12) * 5 = 40 W. 40W sind viel !!! Sie benötigen einen kräftigen Kühlkörper und fünf Lüfter. Also gut für nichts. Obwohl der IRF540-Transistor 150 Watt aushält, macht es keinen Sinn, das Ladegerät mit dem Transistor zu erhitzen. Wie kann die Wärmeentwicklung reduziert werden? Sie können die Spannung der USV beispielsweise auf 16 Volt absenken. Dann ist (16-12) * 5 = 20 W zweimal weniger schon besser. Aber die Heizung kann noch weniger auf 5 Watt oder weniger erfolgen. Auf welche Weise?

Im IPB eines ähnlichen Typs wieMEINEN ES GUTRS-75-15 Es gibt immer einen Trimmwiderstand, der die Ausgangsspannung innerhalb von 10% anpassen kann. Das bedeutet von 13,5 bis 16,5, in meinem Fall von 13 bis 17 Volt. Sie können den Trimmer vom ISB löten und stattdessen den MK-Ausgang löten, damit wir den MK verwenden können, um die Spannung am ISB-Ausgang zu regulieren, dies reduziert die Wärmeentwicklung am Transistor auf ein Minimum. Wenn die Batterie beispielsweise 12 Volt hat, senken wir die Spannung auf 13 Volt und erhalten (13-12) * 5 = 5 W Wärme auf dem Transistor, besser als 40. Also aktualisieren wir die Schaltung


Schließen Sie den Optokoppler PC123 oder ähnliches an den PB1-Pin an. Am Pin PB1 liegt außerdem immer ein PWM-Signal an, das durch eine Kette von R22 und C13 eingebunden wird. Wir löten den Trimmerwiderstand in die USV ein und löten stattdessen den üblichen 1,2 kOhm Widerstand. Jetzt kann MK die Spannung am Ausgang der USV über einen Optokoppler steuern. Wenn der Optokoppler ausgeschaltet ist, ist die Spannung am Ausgang der USV minimal, wenn er eingeschaltet ist, wird der Widerstand R23 auf Masse gelegt, die Spannung steigt. Sanftes Schließen / Öffnen des Optokopplers mit einem PWM-Signal am PB1-Pin, wodurch die Spannung am USV-Ausgang sanft geregelt wird.

Um zu wissen, wann und wie viel die Spannung am Ausgang der USV geregelt werden muss, müssen Sie wissen, wie viel Volt im Allgemeinen am Leistungstransistor anliegen. Wir müssen dann die Spannung am Ausgang der USV absenken, damit die Differenz zwischen der Spannung an der Batterie und der Spannung am Ausgang der USV möglichst gering ist. Dazu messen wir mit dem MK ADC die Spannung am Drain des Transistors mit dem Ausgang von PC2. Dies geschieht mit einem Teiler für R9 und R10. Nun, da das Programm im MC die notwendigen Parameter kennt, steuert es selbst den PWM-Tastverhältnis am PB1-Pin.

Jetzt ist nur noch sehr wenig übrig. Damit wird der Strom im Ladekreis gemessen und auf dem Display angezeigt. Und es bleibt, die Spannung an der Batterie zu messen und auch auf dem Display anzuzeigen.

Die Batteriespannung wird differenziell gemessen. Wir entfernen den Wert vom PC5-Pin. Die Widerstände R5 und R6 sollten jeweils genau 3 kOhm betragen, und die Widerstände R2 und R4 sollten jeweils 1 kOhm betragen, vorzugsweise eine Genauigkeit von mindestens 1%, also hatte ich keinen solchen R4 als Trimmer. Die Quintessenz ist, dass bei solchen Widerstandswerten das Spannungsverhältnis an den Eingängen des Operationsverstärkers und an seinem Ausgang 3:1 beträgt. Wenn sich die Spannung an der Batterie von 0 auf 15 Volt ändert, ändert sich die Spannung am Ausgang des Operationsverstärkers von 0 auf 5 Volt. Um diese Kette aufzubauen, müssen Sie statt einer Batterie 14,4 Volt beispielsweise aus einem Labornetzteil anschließen. Dann drehen wir den Trimmer R4 so, dass das LCD-Display ebenfalls 14,4 Volt anzeigt. Die Einrichtung der Spannungsmessschaltung ist nun abgeschlossen.

Der Strom wird durch den Spannungsabfall am Shunt gemessen, der von einem herkömmlichen Zementwiderstand gespielt wird. Unser Strom ist von 0 bis 5A. Die Spannung am Shunt variiert jeweils von 0 bis 0,5 Volt. Die Werte der Widerstände R16 und R17 sind so gewählt, dass die Spannung am Ausgang des Operationsverstärkers 0 bis 5 Volt betrug. Die Anzeige des Ladestroms richten wir nach folgender Kette ein. Wir schließen die Batterie an und machen einen Strom von 2,5 A. Parallel zur Batterie schließen wir eine 12-Volt-Glühbirne an. Wir trennen die Batterie und lassen die Glühbirne. Wir stellen sicher, dass der Strom 2,5 Ampere beträgt. Wenn die Spannung am Shunt 0,25 Volt beträgt, beträgt der Strom 2,5 A. Wenn nicht, drehen Sie den Encoder, bis der Shunt 0,25 Volt beträgt. Nun drehen wir den Trimmer R17 so, dass das Display einen Strom von 2,5A anzeigt. Die Einrichtung der aktuellen Anzeige ist nun abgeschlossen.

Was könnte vereinfacht werden? Wenn Sie beispielsweise nicht mit dem Spannungsteiler in der USV herumspielen möchten, kann alles, was am Bein von MK PB1 angelötet ist, aus dem Stromkreis geworfen werden. Aber alles andere sollte an Ort und Stelle sein. In diesem Fall landet jedoch die gesamte Spannungsdifferenz zwischen der Batterie und am Ausgang der USV in Form von Wärme auf dem Leistungstransistor. In diesem Fall bereuen wir es nicht, mehr vom Heizkörper genommen zu haben.

Benötigen Sie einen Ladestrom von bis zu 10A, parallel zum Shunt, verlöten wir den gleichen Shunt mit einem Wert von 0,1 Ohm. Wir nehmen das Relais mit Kontakten bis 10A und löten parallel zum IRF540-Transistor ein weiteres davon. Wir schrauben die Transistoren auf einen kräftigen Kühler und machen den Test. Nur der Wert des Stroms auf dem Display muss mit 2 multipliziert werden. Zeigt das Display 5A an, sind es tatsächlich schon 10A. Ich persönlich habe das nicht selbst gemacht, aber theoretisch sollte es funktionieren.

Am Ende sieht das resultierende Diagramm so aus:


Ich sehe nichts, womit ich einverstanden bin, also lade das Schema herunter von hier .

Ein paar Firmware-Fragmente.

#include "define.h" #include "init_mcu.h" #include "lcd.h" #include "text.h" #include "bits_macros.h" #include "fun.h" #include "encoder.h" # include "servise.h" #include "main.h" #include #enthalten #enthalten #enthalten #einschließen #einschließen #enthalten #define RELAY PB0 uint8_t lcd_time, lcd_track, lcd_count, enc_interval, enc_speed, off_charge; uint8_t U_bat_tim, I_bat_tim = 255, stok_reg, energy_flag, count; uint16_t I_reg, enc_block, bat_count, bat_save, bat_off; EEMEM uint8_t energy_off; struct Flag (_Bool lcd_clr_txt0: 1; _Bool lcd_clr_txt1: 1; _Bool count_timer0: 1; // für den Interrupt-Handler _Bool start_charging: 1; // Schalte das Relais aus, wenn der Strom aus ist, wenn die Fledermaus geladen wird _Bool ocr1a_block: 1;) Flaggen; ISR (TIMER0_OVF_vect) // Timer 0 Überlauf-Interrupt alle 1ms. (TCNT0 = 0x6; flags.count_timer0 = 1;) void reg_I (uint16_t reg_val) // Ladestrom verringern, wenn 14,4 Volt erreicht sind (if (I_reg> reg_val) (I_reg = 0; off_charge = 1; if (OCR2! = .) 0) (OCR2--; enc_data = OCR2;))) void charg_off (void) (if (BitIsSet (PORTB, RELAY)) (eeprom_update_byte (& energy_off, 0);) ClearBit (PORTB, RELAY); ClearBit (TCCR2, COM21); // Hardware-Pwm-Ausgang am PB3-Pin deaktiviert OCR1A = 0; // Stromversorgung des Impulsgenerators auf 12,5 Volt gesenkt.off_charge = 0; flags.start_charging = 0; flags.ocr1a_block = 0; enc_data = 0; I_bat_tim = 255; count = 0; OCR2 = 0;) int main (void) (#if 1 // Initialisierung MCU_init_ports (); MCU_init_adc (); MCU_init_an_comp (); MCU_init_timer0 (); MCU_init_timer1 (); MCU ()init_time ; LCD_init_flash , 0); LCD_string_of_flashXY (text_2,3,1); _delay_ms (1500); LCD_string_of_flashXY (text_3,3,0); LCD_string_of_flashXY (text_4,2,1); _delay_ms (1500); LCD_clear (ear); if (BitIsCl); (PIND , PUSH)) (servise ();) // ins Service-Menü gehen, wenn (eeprom_read_byte (& energy_off) && u_batt ()> 20) (enc_data = eeprom_read_byte (& i_pusk); ) sonst (eeprom_update_byte (& energy_off, 0);) MCU_init_wdt (); sei (); #endif while (1) (wdt_reset (); uint8_t u_bat = u_batt (); uint8_t i_bat = i_batt (); #if 1 / * bestimmen ob die Batterie angeschlossen ist * / if (u_bat> 30) // 30 * 0.0585 = 1,7 Volt an Batterie, angeschlossen (if (flags.lcd_clr_txt0 == 0) (flags.lcd_clr_txt0 = 1; LCD_clear (;) if (lcd_time> 200) (lcd_time = 0; LCD_string_of_flashXY (text_7,0,0); LCD_string_of_flash, XY (text 7,0); LCD_string_of_flashXY (text_11,13,0); char buffer; uint16_t U = (u_bat * 59) / 100; utoa ((uint8_t) U, buffer, 10); // Spannung anzeigen if (( uint8_t ) U> = 100) (LCD_dataXY (Puffer, 2,0); LCD_data (Puffer); LCD_data ("."); LCD_data (Puffer); LCD_string_of_flashXY (text_10,6,0);) else if ((uint8_t) U > = 10 && (uint8_t) U<=99) { LCD_dataXY(buffer,2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } else { LCD_dataXY("0",2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } uint16_t I=(i_bat*20)/100; utoa((uint8_t)I, buffer, 10);//выводим ток на дисплей c шунта if ((uint8_t)I>9) (LCD_dataXY (Puffer, 10,0); LCD_data ("."); LCD_data (Puffer);) else (LCD_dataXY ("0", 10,0); LCD_data ("."); LCD_data (Puffer); ))) else // nicht verbunden (LCD_string_of_flashXY (text_5,0,0); LCD_string_of_flashXY (text_6,0,1); flags.lcd_clr_txt0 = 0; eeprom_update_byte (& energy_off, 0);;) #endif #if 1 / * Process Timer0 Interrupt Flag * / if (flags.count_timer0 == 1) (flags.count_timer0 = 0; lcd_time ++; enc_interval ++; I_reg ++; lcd_track ++; if (enc_speed! = 100) // Geber ermitteln (enc_speed ++;) if (enc_block > = 1) (enc_block ++; if (enc_block> = 500) (enc_block = 0;)) if (BitIsSet (PORTB, RELAY)) (bat_count ++;) else (bat_count = 0; bat_off = 0; bat_save ++;) stok_reg ++; if (flags.start_charging && count! = 255) (count ++;)) #endif #if 1 / * Daten vom Encoder empfangen * / if (enc_interval> = 5) (enc_interval = 0; OCR2 = encoder (); // den Wert Encoder lesen. #if 0 // temporär für Testzeichenpuffer; utoa (OCR2, bu ffer, 10); if (OCR2> = 100) (LCD_dataXY (Puffer, 0,1); LCD_data (Puffer); LCD_data (Puffer);) else if (OCR2> = 10 && OCR2<=99) { LCD_dataXY("0",0,1); LCD_data(buffer); LCD_data(buffer); } else { LCD_dataXY("0",0,1); LCD_data("0"); LCD_data(buffer); } #endif if (OCR2==0)//отключаем все. { charg_off(); } else//начали заряд { if (flags.ocr1a_block==0) { flags.ocr1a_block=1; OCR1A=255;//подняли питание импульсника до 17 вольт. } SetBit(TCCR2,COM21); SetBit(PORTB,RELAY); } } #endif #if 1 /*уменьшение тока заряда при достижении 14.4вольта*/ if (u_bat==246 && OCR2>0) (reg_I (3000); // einmal alle 3 Sekunden) else if (u_bat == 255 && OCR2> 0) (reg_I (100); // einmal alle 100 ms) else if (u_bat> 246 && OCR2> 0 ) (reg_I (500); // einmal alle 500 ms) #endif #if 1 / * Schalten Sie die Ladung aus, wenn der Ladestrom 0,1 A erreicht * / if (off_charge == 1 && enc_block == 0) (if (i_bat<=5)//5*0.02=0.1 А ток в батарее. { charg_off(); flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_13,0,1);//"БАТАРЕЯ ЗАРЯЖЕНА" } } //отключение реле если при заряде бат откл. электричество. if (OCR2>0 && i_bat> 4) // 4 * 0,02 = 0,08A (flags.start_charging = 1;) if (flags.start_charging == 1 && i_bat<2 && count==255)//2*0.02=0.04 А ток в батарее. { ClearBit(PORTB,RELAY); } #endif #if 1 /*Бегущий индикатор на дисплее*/ if (OCR2>0) (if (flags.lcd_clr_txt1 == 1) (flags.lcd_clr_txt1 = 0; LCD_string_of_flashXY (text_8,0,1);) if (lcd_track> = 200) (lcd_track = 0; lcd_count ++; Schalter (lcd_count) ( Fall 0 : LCD_data_of_flashXY (text_15,8,1); Pause; Fall 1: LCD_data_of_flashXY (text_16,8,1); Pause; Fall 2: LCD_data_of_flashXY (text_17,8,1); Pause; Fall 3: LCD_data_of_flashXY (text_18,8 ,1 ); Pause; Fall 4: LCD_data_of_flashXY (text_19,8,1); Pause; Fall 5: LCD_data_of_flashXY (text_20,8,1); Pause; Fall 6: LCD_data_of_flashXY (text_21,8,1); Pause; Fall 7 : LCD_data_of_flashXY (text_22,8,1); break; Fall 8: #if 1 if (off_charge == 1) (lcd_count = 5; break;) if (u_bat<232)// 13.57V/0.0585=230 на АЦП. { lcd_count=255; LCD_string_of_flashXY(text_12,8,1); } else if (u_bat<=234) { lcd_count=0; } else if (u_bat<=236) { lcd_count=1; } else if (u_bat<=238) { lcd_count=2; } else if (u_bat<=240) { lcd_count=3; } else if (u_bat<=242) { lcd_count=4; } else if (u_bat<=244) { lcd_count=5; } else { lcd_count=5; } break; #endif default:lcd_count=5; break; } } } else { lcd_count=255; if (flags.lcd_clr_txt1==0) { flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_8,0,1); } } #endif #if 1 /*Аварийный таймер отключения*/ if (bat_count>= 60000 && eeprom_read_byte (& timer_time)) // msec 60000 (bat_count = 0; bat_off ++; #if 1 // zum Debuggen LCD_string_of_flashXY (text_37,0,1); char buffer; utoa (bat_off, buffer, 10); if (bat_off > = 100) (LCD_dataXY (Puffer, 2,1); LCD_data (Puffer); LCD_data (Puffer); LCD_string_of_flashXY (text_38,5,1);) else if (bat_off> = 10 && bat_off<=99) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_string_of_flashXY(text_38,4,1); } else { LCD_dataXY(buffer,2,1); LCD_data(" "); LCD_string_of_flashXY(text_38,4,1); LCD_dataXY(" ",7,1); } #endif } if (u_bat>U_bat_tim && off_charge == 0) // Reset des Spannungsalarm-Timers (bat_off = 0; U_bat_tim = u_bat;) if (i_bat = eeprom_read_word (& tim_dlitl)) // Standardmäßig 180 Minuten (charg_off (); LCD_string_of_flashXY (text_14,0,1); bat_off = 0; flags.lcd_clr_txt1 = 1;) #endif #if 1 / * Spannungsregelung am Ausgang des Netzteils * / if (stok_reg> = 100) (stok_reg = 0; uint8_t u_stok = u_stokk (); if (u_stok> 62) // 0,0195 * 51 * 2 = 2 Volt an der Senke. (if (OCR1A! = 0) (OCR1A--;)) else if (u_stok<60) { if (OCR1A!=255) { OCR1A++; } } #if 0//временно для теста char buff; utoa(u_stok, buff, 10); if (u_stok>= 100) (LCD_dataXY (buff, 3,1); LCD_data (buff); LCD_data (buff);) else if (u_stok> = 10 && u_stok<=99) { LCD_dataXY("0",3,1); LCD_data(buff); LCD_data(buff); } else { LCD_dataXY("0",3,1); LCD_data("0"); LCD_data(buff); } #endif } #endif #if 1 /*Режим хранения батареи*/ if (bat_save>= 60000 && eeprom_read_byte (& save_on)! = 0) (bat_save = 0; if (u_bat<=eeprom_read_byte(&u_start))//12.5V / 0.0585=213,6 на АЦП { enc_data=eeprom_read_byte(&i_pusk); } } #endif #if 1 /*Режим отключения питания*/ if (enc_data && eeprom_read_byte(&power_off) && energy_flag==0) { energy_flag=1; eeprom_update_byte(&energy_off,1); } #endif } } #if 1 //тексты на дисплей const uint8_t PROGMEM text_1="Зарядное"; const uint8_t PROGMEM text_2="устройcтво"; const uint8_t PROGMEM text_3="SIRIUS 5А "; const uint8_t PROGMEM text_4="Для АКБ 12В"; const uint8_t PROGMEM text_5="Подключи батарею"; const uint8_t PROGMEM text_6="УЧТИ полярность."; const uint8_t PROGMEM text_7="U="; const uint8_t PROGMEM text_8=" "; const uint8_t PROGMEM text_9=" I="; const uint8_t PROGMEM text_10="В "; const uint8_t PROGMEM text_11="А "; const uint8_t PROGMEM text_12=" "; const uint8_t PROGMEM text_13="БАТАРЕЯ ЗАРЯЖЕНА"; const uint8_t PROGMEM text_14="ЗАРЯД ОТКЛЮЧЕН! "; // const uint8_t PROGMEM text_15={0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 1 const uint8_t PROGMEM text_16={0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 12 const uint8_t PROGMEM text_17={0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0}; // 123 const uint8_t PROGMEM text_18={0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0}; // 1234 const uint8_t PROGMEM text_19={0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0}; // 12345 const uint8_t PROGMEM text_20={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0}; // 123456 const uint8_t PROGMEM text_21={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0}; // 1234567 const uint8_t PROGMEM text_22={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0}; // 12345678 const uint8_t PROGMEM text_23 ="Режим сохр. "; const uint8_t PROGMEM text_24 ="ВКЛ "; const uint8_t PROGMEM text_25 ="ВЫКЛ"; const uint8_t PROGMEM text_26 ="U запуска <"; const uint8_t PROGMEM text_27 =" СЕРВИСНОЕ МЕНЮ "; const uint8_t PROGMEM text_28 =" ВЫХОД ИЗ МЕНЮ "; const uint8_t PROGMEM text_29 ="I запуска "; const uint8_t PROGMEM text_30 ="Режим отключения"; const uint8_t PROGMEM text_31 ="питания "; const uint8_t PROGMEM text_32 ="Аварийный Таймер"; const uint8_t PROGMEM text_33 =" ВКЛ "; const uint8_t PROGMEM text_34 =" ВЫКЛ "; const uint8_t PROGMEM text_35 ="задержка "; const uint8_t PROGMEM text_36 =" мин"; const uint8_t PROGMEM text_37 ="T="; const uint8_t PROGMEM text_38 ="min"; #endif

Wir stellen hier Fragen [E-Mail geschützt] com
Wenn jemand einen geflashten Mikrocontroller benötigt, dann kann dieser bestellt werden von hier... Alles andere sammeln wir selbstverständlich und machen es selbst.

Jetzt gibt es einige Videos und Fotos. So sah der allererste Prototyp aus.

So sah das erste Board aus.

Anschließend wurde eine zivilisiertere Zahlung geleistet.

Dann wurde der Körper erfunden.

Dann wurde das alles gesammelt.

Am Ende ist das passiert.

Sie können das Ladediagramm herunterladen.
Sie können einen geflashten Mikrocontroller bestellen.
Zusätzliche Informationen., Leiterplatte.
Fragen und Wünsche [E-Mail geschützt]

Dieses Gerät ist zum Messen der Kapazität von Li-Ionen- und Ni-Mh-Akkus sowie zum Laden von Li-Ionen-Akkus mit wählbarem Anfangsladestrom bestimmt.

Steuerung

Wir schließen das Gerät an eine stabilisierte Stromversorgung von 5V und einem Strom von 1A (z. B. von einem Mobiltelefon) an. Der Indikator für 2 Sekunden zeigt das Ergebnis der vorherigen Messung der Kapazität "xxxxmA / s" und in der zweiten Zeile den Wert des OCR1A-Registers "S.xxx". Wir legen die Batterie ein. Wenn Sie den Akku laden müssen, dann drücken Sie kurz die CHARGE-Taste, wenn Sie die Kapazität messen möchten, dann drücken Sie kurz die TEST-Taste. Wenn Sie den Ladestrom (Wert des OCR1A-Registers) ändern müssen, drücken Sie lange (2 Sekunden) die Taste CHARGE. Wir gehen in das Registeranpassungsfenster. Lassen Sie den Knopf los. Durch kurzes Drücken der CHARGE-Taste ändern wir die Werte (50-75-100-125-150-175-200-225) des Registers im Kreis, die erste Zeile zeigt den leeren Akku-Ladestrom beim ausgewählten Wert (vorausgesetzt, Sie haben einen 0-Widerstand im Stromkreis), 22 Ohm). Drücken Sie kurz die TEST-Taste, der Wert des OCR1A-Registers wird im nichtflüchtigen Speicher abgelegt.
Wenn Sie verschiedene Manipulationen mit dem Gerät vorgenommen haben und die Uhr und die gemessene Kapazität zurücksetzen müssen, dann drücken Sie die TEST-Taste lange (der Wert des OCR1A-Registers wird nicht zurückgesetzt). Sobald der Ladevorgang beendet ist, erlischt die Hintergrundbeleuchtung des Displays, um die Hintergrundbeleuchtung einzuschalten, drücken Sie kurz die Taste TEST oder CHARGE.

Die Logik des Geräts ist wie folgt:

Wenn Strom angelegt wird, zeigt die Anzeige das Ergebnis der vorherigen Messung der Batteriekapazität und den Wert des OCR1A-Registers an, der im nichtflüchtigen Speicher gespeichert ist. Nach 2 Sekunden wechselt das Gerät in den Modus zur Ermittlung des Batterietyps anhand der Spannung an den Klemmen.

Wenn die Spannung mehr als 2 V beträgt, handelt es sich um einen Li-Ionen-Akku und die Vollentladespannung beträgt 2,9 V, andernfalls handelt es sich um einen Ni-MH-Akku und die Vollentladespannung beträgt 1 V. Erst nach dem Anschließen des Akkus stehen die Bedientasten zur Verfügung. Dann wartet das Gerät auf das Drücken der Test- oder Ladetaste. Das Display zeigt „_STOP“ an. Wenn Sie die Test-Taste kurz drücken, wird die Last über den MOSFET angeschlossen.

Die Höhe des Entladestroms wird durch die Spannung am 5,1 Ohm Widerstand bestimmt und jede Minute mit dem vorherigen Wert aufsummiert. Das Gerät verwendet 32768 Hz Quarz, um die Uhr zu betreiben.

Das Display zeigt den aktuellen Wert der Batteriekapazität „xxxxmA/s“ und des Entladetorus „A.xxx“, sowie die Zeit „xx:xx:xx“ ab dem Moment der Tastenbetätigung an. Ein animiertes Symbol für schwache Batterie wird ebenfalls angezeigt. Am Ende des Tests für den Ni-MH-Akku erscheint die Aufschrift „_STOP“, das Messergebnis wird auf dem Display „xxxxmA/s“ angezeigt und gespeichert.

Handelt es sich bei dem Akku um Li-Ion, dann wird das Messergebnis auch auf dem Display „xxxxmA/s“ angezeigt und gespeichert, aber der Lademodus wird sofort eingeschaltet. Das Display zeigt den Inhalt des Registers OCR1A "S.xxx". Außerdem wird ein animiertes Batterieladesymbol angezeigt.

Der Ladestrom wird durch PWM gesteuert und durch einen 0,22 Ohm Widerstand begrenzt. In der Hardware kann der Ladestrom reduziert werden, indem der Widerstand von 0,22 Ohm auf 0,5-1 Ohm erhöht wird. Zu Beginn des Ladevorgangs steigt der Strom allmählich auf den Wert des OCR1A-Registers oder bis die Spannung an den Batterieklemmen 4,22 V erreicht (wenn die Batterie geladen wurde).

Der Wert des Ladestroms hängt vom Wert des OCR1A-Registers ab – je größer der Wert, desto größer der Ladestrom. Wenn die Spannung an den Batterieklemmen 4,22 V beträgt, sinkt der Wert des OCR1A-Registers. Der Ladevorgang wird fortgesetzt, bis der Wert des OCR1A-Registers gleich 33 ist, was einem Strom von etwa 40 mA entspricht. Damit ist die Ladung beendet. Die Hintergrundbeleuchtung des Displays wird ausgeschaltet.

Anpassung

1. Schließen Sie das Netzteil an.
2. Schließen Sie die Batterie an.
3. Wir schließen das Voltmeter an die Batterie an.
4. Durch die temporären Tasten + und - (PB4 und PB5) erreichen wir eine Übereinstimmung der Voltmeter-Messwerte auf dem Display und auf dem Referenz-Voltmeter.
5. Drücken Sie die TEST-Taste lange (2 Sek.), die Speicherung erfolgt.
6. Wir entfernen den Akku.
7. Wir verbinden das Voltmeter mit dem 5,1 Ohm Widerstand (gemäß dem Diagramm in der Nähe des 09N03LA Transistors).
8. Schließen Sie das geregelte Netzteil an die Batteriepole an, stellen Sie es auf 4V Netzteil ein.
9. Drücken Sie kurz die TEST-Taste.
10. Wir messen die Spannung am 5,1 Ohm Widerstand - U.
11. Berechnen Sie den Entladestrom I = U / 5,1
12. Stellen Sie mit den temporären Tasten + und - (PB4 und PB5) den berechneten Entladestrom I an der Anzeige "A.xxx" ein.
13. Drücken Sie die TEST-Taste lange (2 Sek.), die Speicherung erfolgt.

Das Gerät wird von einer stabilisierten Quelle mit einer Spannung von 5 Volt und einem Strom von 1 A gespeist. Quarz bei 32768 Hz ist für genaues Timing ausgelegt. Der ATmega8 wird von einem internen 8-MHz-Oszillator getaktet und der EEPROM-Schutz muss mit den entsprechenden Konfigurationsbits gesetzt werden. Beim Schreiben des Steuerungsprogramms wurden Tutorial-Artikel von dieser Site verwendet.

Die aktuellen Werte der Spannungs- und Stromkoeffizienten (Ukof. Ikof) erkennt man, wenn man in der dritten Zeile ein 16x4-Display (16x4 ist zum Debuggen vorzuziehen) anschließt. Oder in Ponyprog, wenn Sie die EEPROM-Firmware-Datei öffnen (vom EEPROM-Controller gelesen).
1 Byte - OCR1A, 2 Byte - I_kof, 3 Byte - U_kof, 4 und 5 Byte sind das Ergebnis der vorherigen Kapazitätsmessung.

Video des Gerätes:

Manchmal läuft man an parkenden Autos vorbei und aus dem Augenwinkel merkt man, dass jemand, dem schwachen Schein der Lampen nach zu urteilen, lange vergessen hat, das Licht auszuschalten. Jemand hat es selbst erwischt. Es ist gut, wenn es eine regelmäßige Anzeige gibt, dass das Licht nicht ausgeschaltet ist, und wenn es nicht hilft, hilft: Unforgettable kann quietschen, wenn das Licht nicht ausgeschaltet ist und weiß, wie man den Knüppel im Rückwärtsgang steckt.

Die Schaltung der digitalen Kraftstoffstandsanzeige weist ein hohes Maß an Wiederholbarkeit auf, auch wenn die Erfahrung mit Mikrocontrollern vernachlässigbar ist, sodass das Verständnis der Feinheiten des Montage- und Abstimmungsprozesses keine Probleme bereitet. Der Programmierer von Gromov ist der einfachste Programmierer, der zum Programmieren eines avr-Mikrocontrollers erforderlich ist. Der Programmierer von Goromov eignet sich sowohl für die In-Circuit- als auch für die Standard-Circuit-Programmierung. Unten ist ein Diagramm der Tankanzeigesteuerung.

Sanftes Ein- und Ausschalten der LEDs in jedem Modus (die Tür ist geöffnet und die Lampe leuchtet). Auch automatische Abschaltung nach fünf Minuten. Und minimaler Standby-Stromverbrauch.

Option 1 - Minus-Kommutierung. (mit N-Kanal-Transistoren) 1) "Minus-Schaltung", dh eine solche Option, bei der ein Versorgungsdraht der Lampe mit + 12 V der Batterie (Stromversorgung) verbunden ist und der zweite Draht den Strom durch die kommutiert Lampe und schaltet sie dadurch ein. In dieser Variante wird Minus geliefert. Für solche Schaltungen ist es erforderlich, N-Kanal-Feldeffekttransistoren als Ausgangsschalter zu verwenden.

Das Modem selbst ist klein, preiswert, funktioniert problemlos, übersichtlich und schnell und im Allgemeinen gibt es keine Beschwerden. Das einzig Negative für mich war die Notwendigkeit, es mit einem Knopf ein- und auszuschalten. Wenn Sie es nicht ausschalten, wurde das Modem von einem eingebauten Akku mit Strom versorgt, der sich schließlich hinsetzte und das Modem wieder eingeschaltet werden musste.

Das Funktionsprinzip ist einfach: Durch Drehen des Reglers wird die Lautstärke angepasst, beim Drücken wird der Ton aus- und wieder eingeschaltet. Sie müssen auf Windows oder Android schreiben

Anfänglich ist in Lifan Smily (und nicht nur) der Heckwischermodus der einzige, und er heißt "immer schwingen". Ein solches Regime wird besonders zu Beginn der Regenzeit negativ wahrgenommen, wenn sich Tropfen auf der Heckscheibe sammeln, jedoch in unzureichender Menge für einen Durchgang des Wischers. Sie müssen also entweder dem Knarren des Gummis auf dem Glas zuhören oder einen Roboter darstellen und den Wischer regelmäßig ein- / ausschalten.

Ich habe die Schaltung des Zeitverzögerungsrelais zum Einschalten der Innenbeleuchtung für ein Ford-Auto leicht modifiziert (die Schaltung wurde für ein ganz bestimmtes Auto entwickelt, als Ersatz für das serienmäßige Ford 85GG-13C718-AA-Relais, wurde aber erfolgreich eingebaut in der heimische "Klassiker").

Dies ist nicht das erste Mal, dass solche Handwerke durchgerutscht sind. Aber aus irgendeinem Grund klammern sich die Leute an die Firmware. Obwohl sie größtenteils auf dem elmchan-Projekt "Simple SD Audio Player with an 8-pin IC" basieren. Die Quelldatei wird nicht geöffnet mit dem Argument, dass das Projekt korrigiert werden muss, dass meine Qualität besser ist ... und so weiter. Kurz gesagt, sie nahmen ein Open-Source-Projekt, stellten es zusammen und gaben es als ihr eigenes aus.

So. Der Attiny 13 Mikrocontroller ist sozusagen das Herzstück dieses Gerätes. Ich habe lange mit der Firmware gelitten, ich konnte sie in keiner Weise flashen, weder 5 Drähte durch LPT noch Gromovs Progromator. Der Computer sieht den Controller einfach nicht und das war's.

Im Zusammenhang mit Neuerungen bei den Verkehrsregeln begann man über die Einführung von Tagfahrlicht nachzudenken. Eine der Möglichkeiten besteht darin, das Fernlicht für einen Teil der Leistung einzuschalten, darum geht es in diesem Artikel.

Dieses Gerät ermöglicht das automatische Einschalten des Abblendlichts, wenn Sie mit der Fahrt beginnen, und passt die Spannung der Lampen und des Abblendlichts je nach Geschwindigkeit an, mit der Sie fahren. Es wird auch das Fahren sicherer machen und die Lebensdauer der Lampen verlängern.