Woher weiß Windows, dass der Akku geladen ist?

25

Laptop-DC / DC-Reglerkarten können auf irgendeine Weise mit Windows kommunizieren, um festzustellen, wie viel Batterieleistung noch übrig ist, aber meine Nachforschungen haben nichts ergeben.

Gibt es eine Datenverbindung von den proprietären Motherboards in Laptops, die dies kommuniziert? Wenn ja, um welche Art von Datenverbindung handelt es sich und wo wird die Verbindung tatsächlich hergestellt? Ist es nur ein PCI-E-Port mit einem Flachbandkabel?

rauben
quelle
12
Es ist nicht spezifisch für Windows oder sogar Laptops, alle Tablets und Smartphones sowie Digitalkameras und alle Arten von batteriefähigen Geräten, die die gleichen Konzepte mit leicht unterschiedlichen Implementierungen verwenden
cat
1
@cat Das habe ich mir gedacht, aber ich habe nach der Implementierung gefragt, die meinem Endziel am nächsten kommt.
Rob

Antworten:

49

Der Laptop enthält einen Akku-Management-Chip mit SMBus, z. B. einen BQ24721C .
Dieser Chip befindet sich an der Verbindung mit der Batterie, dem Ladegerät und dem Systemspannungsregler.
Es erkennt das Ladegerät und regelt dann die Laderate über einen eingebauten DC-DC-Controller. Sie steuert auch verschiedene Transistoren, um die Stromversorgung von oder zur Batterie oder von Wechselstrom zum System zu deaktivieren oder zu aktivieren.
Diese Chips haben verschiedene Möglichkeiten, mit dem Rest des Systems zu kommunizieren.
Es verfügt über IRQs (Interrupt Requests), analoge Ausgänge, ein Power-Good-Signal und SMbus.

Wenn die Batterie austauschbar ist, enthält sie auch einige Informationen, um den Batteriestatus zu messen und sie zu schützen. Dies verwendet SMbus oder etwas Eigenes. Ein Beispiel ist ein Coulomb- Zähler, der die Ladung in und aus der Batterie misst (z. B .: LTC2943 ).

SMbus basiert auf I2C ; Es ist der "System Management Bus". Daran schließen sich alle wichtigen Dinge an. Zum Beispiel ist es auch auf den PCI-Anschlüssen verfügbar.
Es ist mit kleinen Geräten wie Lüftersteuerungen, Temperatur- und Umgebungslichtsensoren oder einfachen Schaltern und LEDs wie WLAN-Ein / Aus oder geschlossenem Deckel ausgestattet.

Dann müssen die Treiber des Betriebssystems wissen, wie dieser Bus aufgebaut ist und wie die Geräte funktionieren. Einige davon sind in ACPI etwas standardisiert .

Jeroen3
quelle
Wäre es fair anzunehmen, dass nur speziell entwickelte Laptop-Boards dazu in der Lage wären, nicht Standard-Desktop-Motherboards? Sie wollten, dass PCI-Anschlüsse dies zur Verfügung stellen - könnte eine PCI-Karte die SMbus-Funktionalität übernehmen?
Rob
@Rob Desktop-Motherboards bieten keine Batterieladeregler. Warum sollten sie? Eine USV für Desktops verwendet eine USB-HID-Klassifizierung für Stromversorgungsgeräte zur standardisierten ACPI-Aufzählung des Betriebssystems als Batterie.
Jeroen3
Ich hatte nicht damit gerechnet, dachte aber, ich könnte fragen, ob irgendetwas in einem kommerziellen Board dasselbe könnte. Für die Zukunft habe ich die Spezifikationen für USB-HID-Stromversorgungsgeräte nachgeschlagen, falls jemand sie benötigt.
Rob
37

Sehen Sie sich die APM- API ( Advanced Power Management ) und deren Nachfolger ACPI ( Advanced Configuration and Power Interface ) an. Vor APM wurden diese Funktionen vom BIOS ausgeführt.

Für Windows 8 und höher hat Microsoft diese Empfehlungen.

In Bezug auf die Hardware kann dies so einfach sein wie eine I 2 C -Schnittstelle (zwei Drähte) zu einem Subsystem.

Spehro Pefhany
quelle
19
Das Einschließen von vier Links anstelle von einem macht dies nicht zu einer reinen Linkantwort. Erwägen Sie, den relevanten Inhalt aus den Links in Anführungszeichen einzufügen oder zusammenzufassen.
Todd Wilcox
16

Abgesehen von einfachen Spannungssensoren ist es nicht ungewöhnlich, dass Sie integrierte Leistungsmesser erhalten, die den Nettoleistungsfluss aus einer Batterie überwachen.

Die Frage, wie diese Sensoren mit dem Betriebssystem kommunizieren, ist unterschiedlich und wird von Modell zu Modell unterschiedlich sein.

In der Regel kommuniziert die Firmware Ihres Laptops jedoch mit Ihren Sensoren, verarbeitet diese Werte und präsentiert sie über eine proprietäre oder Standardschnittstelle (z. B. ACPI) Ihrem Betriebssystem.

PCIe ist mit ziemlicher Sicherheit nicht als Hauptverbindung beteiligt - das ist viel zu teuer, um jede Minute ein paar Bits zu übertragen. Erwarten Sie elektrisch I²C, Varianten wie SMBUS, einfaches SPI, 3.3V UARTs, möglicherweise USB und alle anderen Dinge, mit denen Sie einen Plattform-Controller (der eigentlich nur eine MCU ist) mit Sensoren verbinden könnten.

Marcus Müller
quelle
3

Zusätzlich zu den in anderen Kommentaren und Antworten angegebenen Sensortypen enthalten Standard-Computerchipsätze zwei Signale, die von der Hauptplatine kommen und über den Chipsatz an das BIOS und / oder die Betriebssystemtreiber gemeldet werden. Die beiden Signale heißen:

AC_PRES - Zeigt den vorhandenen Wechselstrom an. Bei einem Laptop ist dies aktiv, wenn das externe Netzteil angeschlossen ist. Bei einem Desktop ist dies aktiv, wenn die Hauptstromversorgung aktiv ist.

BATT_LOW - Zeigt an, dass die Batterie schwach ist. Gilt nur für eine Laptop- oder Tablet-Konfiguration. Dies zeigt an, wann sich der Akku auf einen Wert entladen hat, ab dem nur noch eine kurze Betriebszeit verbleibt. (Beachten Sie, dass dies überhaupt nicht mit der Batterie der Echtzeituhr zu tun hat).

Es ist üblich, dass die Register im Chipsatz, die den Status dieser Signale enthalten, als Legacy-Zuweisung eingerichtet wurden und dazu neigen, über viele Generationen von Computerhardware hinweg gleich zu bleiben.

Michael Karas
quelle