Table of Contents
Stromversorgung (Pi 5)
YouTube Video #79
Original 27W Netzteil (5.1V, 5A)
Das originale Netzteil verwendet USB-PD, um den Pi5 mit max. 5A zu versorgen. Das ist aber über der eigentlichen USB-PD Spezifikation - die geht bei 5V max. bis 3A (siehe hier). Danach sollte normalerweise die Spannung steigen auf 9V, um den Strom gering zu halten. Das kann der Pi5 aber nicht.
Es dürfte deshalb etwas schwierig werden, ein alternatives Netzteil für den Pi5 mit 5A zu finden. Und selbst wenn das Netzteil 5A liefern kann, wird es vom Pi5 vermutlich nicht erkannt. Denn bei USB-PD wird der maximale Strom (und im Normalfall auch die Spannung) zwischen Verbraucher (Pi5) und dem Netzteil ausgehandelt.
Mit dem Original Netzteil sollte sich der Pi 5 auch problemlos übertakten lassen (ausreichende Kühlung vorausgesetzt!). Wie das geht kann man bei Toms Hardware nachlesen:
https://www.tomshardware.com/how-to/overclock-raspberry-pi-5
Hinweis
Übertaktet ist der Pi5 noch empfindlicher bei der Eingangsspannung. Bei 3GHz kam schon bei ~5V (PMIC …) eine Warnmeldung und bei 4,95V hing sich der Pi auf.
Original 15W Netzteil (5.1V, 3A)
Das Netzteil (ursprünglich für den Pi4 gedacht) funktioniert auch mit einem Pi5. Da nur 3A zur Verfügung stehen, werden im Default aber nur 600mAh für die USB-Ports zur Verfügung gestellt. Diese Einschränkung kann man durch einen Eintrag in der config.txt
umgehen - siehe hier.
Wird der Pi5 mit etwas anderem als einer SD-Karte gebootet, erscheint auch eine entsprechende Meldung.
Hinweis:
bei zu viel angeschlossener Peripherie und hoher CPU Last kann es zum Systemabsturz kommen. Entweder schaltet das Netzteil ab, oder die Spannung fällt zu stark ab.
Versorgung über Pins
Der Pi5 kann problemlos auch über die GPIO Stiftleiste versorgt werden.
Dabei sollten ein paar Dinge beachtet werden:
- Nicht verpolungssicher und Kurzschlussgefahr!
- Die Dupon Kontakte sind für hohe Ströme nicht ausgelegt. Deshalb 2x 5V und 2x GND belegen!
- Auch bei dieser Variante kommt der Hinweis, dass das Netzteil keine 5A liefern kann! Siehe hier
- Die Eingangsspannung überprüfen. Unterhalb von 4,85V kommt eine Low Voltage Warnung.
- Es sollte nicht unbedingt 0.14mm² Litze sein. Darf auch ruhig 0.17 oder 0.25 sein
"alte" 5V Netzteile
Jeder hat sicher noch ein Dutzend ältere 5V Ladegeräte herumliegen. Grundsätzlich kann man auch die verwenden, aber auch hier kommt die Meldung bezüglich dem erforderlichen 5A Netzteil. Es gibt zahlreiche Netzteils mit 1000mA - damit bootet der Pi oft erst gar nicht! Außerdem sollte man hier mal sein Augenmerk auf die Spannung legen. Wenn diese eher schwachen Netzteile stark belastet werden, kann die Spannung auch stark einbrechen. Zudem haben die Netzteile generell eher 5V am Ausgang und nicht 5,1V wie die neuen Raspberry Pi Netzteile!
"Fix" für ungeeignete Netzteile
- Meldung kann mit On/Off Taste übersprungen werden (was automatisch usb_max_current_enable=1 setzt)
- USB Geräte werden auf 600mA limitiert (mit dem Original-Netzteil sind es 1.6A)
- Übergehen kann man das mit einem Eintrag in der
/boot/firmware/config.txt
sudo nano /boot/firmware/config.txt
- folgenden Eintrag ergänzen:
usb_max_current_enable=1
Spannungen & Ströme
Die folgenden Werte sind experimentell ermittelt und dienen auch nur als grober Anhaltspunkt!
Spannungen
Verhalten | vcgencmd (EXT5V_V) | Netzteil |
---|---|---|
Warnschwelle Unterspannung | ~4,85V | 5,01V |
Minimale Spannung | ~4,5V | 4.59V |
Strom
Modus | Bootmedium | Strom | Hinweis |
---|---|---|---|
Booten | SD | ~800 mA | |
USB | ~1000 mA | ||
Idle Desktop | SD | ~600 mA | |
USB | ~750 mA | ||
USB | ~780 mA | Übertaktet mit arm_freq=3000 Im Idle wird der Takt aber auf 1,5GHz gedrosselt! |
|
Stress Test (4 Cores) | SD | ~1250 mA | |
USB | ~1600 mA | ||
USB | ~2000 mA | Übertaktet mit arm_freq=3000 |
Hinweis
Stromverbrauch bei der Verwendung von USB Geräten kann je nach Gerät variieren!
Stresstest druchführen
sudo apt install stress
stress -c 4 -m 4
Unterspannung erkennen
- In der Konsole kann man sich die Meldungen über
dmesg -HW
ansehen.
pi@Pi5Test:~ $ dmesg -HW [Dec29 18:27] hwmon hwmon3: Undervoltage detected! [ +8.063959] hwmon hwmon3: Voltage normalised
Check Voltage
Der Pi5 hat einen PMIC (Power Monitor IC) verbaut, den man mit dem Tool vcgencmd
abfragen kann.
- Alle Daten abfragen
vcgencmd pmic_read_adc
pi@Pi5Test:~ $ vcgencmd pmic_read_adc 3V7_WL_SW_A current(0)=0.09076149A 3V3_SYS_A current(1)=0.06538731A 1V8_SYS_A current(2)=0.18249890A DDR_VDD2_A current(3)=0.02147046A DDR_VDDQ_A current(4)=0.00000000A 1V1_SYS_A current(5)=0.24691030A 0V8_SW_A current(6)=0.33474400A VDD_CORE_A current(7)=0.71440000A 3V3_DAC_A current(17)=0.00000000A 3V3_ADC_A current(18)=0.00030525A 0V8_AON_A current(16)=0.00482295A HDMI_A current(22)=0.01452990A 3V7_WL_SW_V volt(8)=3.70441600V 3V3_SYS_V volt(9)=3.31838500V 1V8_SYS_V volt(10)=1.79535800V DDR_VDD2_V volt(11)=1.10805800V DDR_VDDQ_V volt(12)=0.59890050V 1V1_SYS_V volt(13)=1.10439400V 0V8_SW_V volt(14)=0.80146440V VDD_CORE_V volt(15)=0.72017020V 3V3_DAC_V volt(20)=3.30952000V 3V3_ADC_V volt(21)=3.31043600V 0V8_AON_V volt(19)=0.79794790V HDMI_V volt(23)=5.06922000V EXT5V_V volt(24)=5.07056000V BATT_V volt(25)=0.00000000V
- Nur die Eingangsspannung ermitteln
vcgencmd pmic_read_adc | grep EXT5V_V | cut -d"=" -f2
pi@Pi5Test:~ $ vcgencmd pmic_read_adc | grep EXT5V_V | cut -d"=" -f2 5.06922000V
- Die Eingangsspannung alle 2 Sekunden auslesen (Abbruch mit STRG + C)
watch -n 2 'vcgencmd pmic_read_adc | grep EXT5V_V | cut -d"=" -f2'
Every 2.0s: vcgencmd pmic_read_adc | grep EXT5V_V | cut -d"=" -f2 Pi5Test: Fri Dec 29 18:09:42 2023 5.07860000V
etwas Python Magie
sudo apt install python3-virtualenv python3-tk -y
virtualenv grapher
cd grapher/
source bin/activate
pip3 install matplotlib
nano grapher.py
import matplotlib import matplotlib.pyplot as plt from collections import deque from datetime import datetime import subprocess import time def run_linux_program(): command = 'vcgencmd pmic_read_adc | grep EXT5V_V | cut -d"=" -f2' result = subprocess.run(command, capture_output=True, text=True, shell=True) print(result.stdout.strip()[:5]) return float(result.stdout.strip()[:5]) # Initialisierung des Diagramms matplotlib.use('TkAgg') print(f"Interactive mode: {matplotlib.is_interactive()}") print(f"matplotlib backend: {matplotlib.rcParams['backend']}") plt.ion() fig, ax = plt.subplots() values = deque(maxlen=100) try: while True: values.append(run_linux_program()) ax.clear() ax.plot(values) ax.set_title('Pi5 VIn Monitor') ax.set_xlabel('Zeit') ax.set_ylabel('Voltage') # Festlegen von 5 Ticks auf der Y-Achse y_ticks = [4.4, 4.6, 4.85, 5.0, 5.1, 5.2] ax.set_yticks(y_ticks) for y_tick in y_ticks: ax.axhline(y=y_tick, linestyle='dashed', color='gray', linewidth=1) # Bereich zwischen 4,85 und 5,1 einfärben ax.fill_between(range(len(values)), 5.0, 5.1, color='green', alpha=0.3) ax.fill_between(range(len(values)), 4.85, 5.0, color='yellow', alpha=0.3) plt.draw() plt.pause(1.0) except KeyboardInterrupt: pass finally: plt.ioff() plt.show()
Der An / Aus Taster
- Einmal drücken für Einschalten
- bei der Netzteilwarnung kann man durch einmal drücken den Pi booten (was gleichzeitig usb_max_current_enable=1 setzt)
- Wenn der Pi läuft, kann man durch gedrückt halten (ca. 2-3 Sekunden) den Pi direkt ausschalten
- Wenn der Pi läuft, kann man durch 1x drücken den Pi herunter fahren. Im GUI Betrieb muss das durch ein zweites Drücken bestätigt werden.
Links
- USB-PD - USB Power Delivery
https://www.elektronik-kompendium.de/sites/com/1809251.htm