Spisu treści:

Wskaźnik temperatury procesora Raspberry Pi: 11 kroków (ze zdjęciami)
Wskaźnik temperatury procesora Raspberry Pi: 11 kroków (ze zdjęciami)

Wideo: Wskaźnik temperatury procesora Raspberry Pi: 11 kroków (ze zdjęciami)

Wideo: Wskaźnik temperatury procesora Raspberry Pi: 11 kroków (ze zdjęciami)
Wideo: Raspberry Pi 4 może drogie ale przynajmniej g*wniane! 2024, Lipiec
Anonim
Wskaźnik temperatury procesora Raspberry Pi
Wskaźnik temperatury procesora Raspberry Pi

Wcześniej wprowadziłem prosty obwód wskaźnika stanu operacyjnego raspberry pi (dalej jako RPI).

Tym razem wyjaśnię bardziej przydatny obwód wskaźnika dla RPI działającego w sposób bezgłowy (bez monitora).

Powyższy obwód pokazuje temperaturę procesora na 4 różnych poziomach, takich jak:

- Zielona dioda LED włącza się, gdy temperatura procesora wynosi 30~39 stopni

- Żółta dioda LED wskazuje wzrost temperatury w zakresie od 40 do 45 stopni

- Trzecia czerwona dioda LED pokazuje, że procesor trochę się nagrzewa, osiągając 46 ~ 49 stopni

- Kolejna czerwona dioda LED będzie migać, gdy temperatura przekroczy 50 stopni

Powyższe zakresy temperatur procesora są moją osobistą koncepcją projektową (inne zakresy temperatur można skonfigurować, zmieniając warunki testowe programu Pythona, który steruje tym obwodem).

Używając tego obwodu, niekoniecznie często wykonujesz polecenie „vcgencmd Measure_temp” na terminalu konsoli.

Obwód ten będzie stale i wygodnie informować o aktualnej temperaturze procesora.

Krok 1: Przygotowanie schematów

Przygotowywanie schematów
Przygotowywanie schematów

Chociaż możesz bezpośrednio kontrolować 4 diody LED, wykorzystując tylko kody Pythona, logika sterowania programu załaduje RPI, w wyniku czego temperatura procesora wzrośnie bardziej, ponieważ powinieneś stale uruchamiać nieco skomplikowany kod Pythona.

Dlatego minimalizuję złożoność kodu Pythona tak prosto, jak to tylko możliwe i odciążam logikę sterowania LED do zewnętrznego obwodu sprzętowego.

Obwód wskaźnika temperatury procesora (dalej INICATOR) składa się z następujących głównych części.

- Dwa transoptory są podłączone do pinów RPI GPIO, aby uzyskać dane o poziomie temperatury, takie jak 00-> LOW, 01-> Medium, 10-> High, 11-> Need cooling.

- 74LS139 (lub 74HC139, dekoder 2 na 4 i demultiplekser) sterują wyjściami (Y0, Y1, Y2, Y3) zgodnie z wejściami (A, B)

-Gdy temperatura mieści się w zakresie 30 ~ 39 stopni, kod Pythona wyprowadza 00 na piny GPIO. Dlatego 74LS139 otrzymuje dane wejściowe 00 (A->0, B->0)

- Po wprowadzeniu 00 wyjście Y0 staje się NISKIE. (Proszę odnieść się do tabeli prawdy 74LS139)

- Gdy wyjście Y0 stanie się LOW, aktywuje tranzystor 2N3906 PNP i w rezultacie zapali się zielona dioda LED

- Podobnie Y1 (01 -> średnia temperatura procesora) powinien włączyć żółtą diodę LED i tak dalej

- Kiedy Y3 staje się NISKI, DB140 aktywuje obwód migania diody LED NE555 (jest to wspólny migacz diodowy oparty na układzie scalonym 555), który jest obciążony tranzystorem BD140 PNP

Najważniejszym elementem tego obwodu jest 74LS139, który dekoduje 2 cyfry wejściowe na 4 różne pojedyncze wyjścia, jak pokazano w poniższej tabeli prawdy.

Wejście | Wyjście

G (Włącz) | B | | Y0 | Y1 | Y2 | Y3 |

H | X | X | H | H | H | H |

L | L | L | L | H | H | H |

L | L | H | H | L | H | H |

L | H | L | H | H | L | H |

L | H | H | H | H | H | L |

Ponieważ wyjście 74LS139 staje się NISKIE, tranzystor typu PNP może uprościć ogólny obwód, ponieważ tranzystor PNP jest włączany, gdy zacisk bazy staje się NISKIE. (Wersję NPN pokażę na końcu tej historii)

Ponieważ potencjometr 100K jest dołączony do obwodu migacza LED NE555, czas włączenia/wyłączenia czerwonej diody LED można dowolnie regulować w zależności od potrzeb.

Krok 2: Tworzenie rysunku PCB

Tworzenie rysunku PCB
Tworzenie rysunku PCB

Po wyjaśnieniu schematu działania WSKAŹNIKA zacznijmy tworzyć obwód.

Przed wlutowaniem czegoś na płytkę uniwersalną przygotowanie pokazanego powyżej rysunku PCB jest pomocne, aby zminimalizować ewentualne błędy.

Rysunek jest wykonywany za pomocą punktu zasilania, aby zlokalizować każdą część na płycie uniwersalnej i wykonać wzory połączeń między częściami z przewodami.

Ponieważ obrazy wyprowadzeń układów scalonych i tranzystorów są rozmieszczone razem ze schematem okablowania płytki drukowanej, lutowanie można wykonać za pomocą tego rysunku.

Krok 3: Lutowanie

Lutowanie
Lutowanie

Chociaż oryginalny rysunek PCB nie jest wykonany przy użyciu pojedynczych przewodów do łączenia elementów na PCB, lutuję nieco inaczej.

Używając pojedynczego przewodnika przewodów (nie cynowego), staram się zmniejszyć rozmiar uniwersalnej płytki zawierającej układ INDICATOR.

Ale jak widać po stronie lutowania PCB używam drutu cynowego również według wzorów przedstawionych na rysunku PCB.

Gdy każdy element jest podłączony zgodnie z oryginalnym projektem rysunku PCB, lutowanie ukończonej płytki PCB wraz z obwodem INDICATOR będzie działać poprawnie.

Krok 4: Przygotowanie do testowania

Przygotowanie do testów
Przygotowanie do testów

Przed podłączeniem do RPI gotowy obwód wymaga testowania.

Ponieważ mogą wystąpić jakiekolwiek błędy lutowania, zasilacz prądu stałego służy do zapobiegania uszkodzeniom w przypadku wystąpienia zwarć lub nieprawidłowego okablowania.

W celu przetestowania WSKAŹNIKA dwa dodatkowe przewody zasilające podłącza się do złącza zasilania 5V obwodu.

Krok 5: Testowanie (temperatura procesora jest na średnim poziomie)

Testowanie (temperatura procesora jest na średnim poziomie)
Testowanie (temperatura procesora jest na średnim poziomie)

Gdy nie ma żadnego wejścia 5V, to 74LS139 dekoduje wejście i aktywuje wyjście Y0 jako LOW (świeci zielona dioda).

Ale 5V przyłożone do wejścia A, wyjście Y1 z 74LS139 aktywuje (NISKI).

Dlatego żółta dioda LED jest włączona, jak pokazano na powyższym obrazku.

Krok 6: Testowanie (wymagany poziom chłodzenia procesora)

Testowanie (wymagany poziom chłodzenia procesora)
Testowanie (wymagany poziom chłodzenia procesora)

Po podaniu napięcia 5V na oba wejścia (A i B) 74LS139, czwarta czerwona dioda LED miga.

Częstotliwość migania można zmienić, dostosowując 100K VR, jak pokazano na powyższym obrazku.

Po zakończeniu testowania można odłączyć dwa 3-pinowe żeńskie kable Molex.

Krok 7: Zasilanie obwodu WSKAŹNIKA

Zasilanie do obwodu WSKAŹNIKA
Zasilanie do obwodu WSKAŹNIKA

Do zasilania układu INDICATOR używam zwykłej ładowarki do telefonów komórkowych, która ma wyjście 5V i przejściówkę USB typu B, jak pokazano na powyższym obrazku.

Aby uniknąć problemów z RPI, łącząc 3.3V GPIO i zasilany 5V obwód INDICATOR, interfejs sygnałowy i zasilanie są całkowicie odizolowane od siebie.

Krok 8: Okablowanie RPI

Okablowanie RPI
Okablowanie RPI

Do połączenia obwodu INDICATOR z RPI, dwa piny GPIO powinny być dedykowane wraz z dwoma pinami uziemienia.

Nie ma szczególnych wymagań dotyczących wyboru pinów GPIO.

Do podłączenia INDICATORA można użyć dowolnych pinów GPIO.

Ale piny przewodowe powinny być oznaczone jako wejścia do 74LS139 (np. A, B) w programie python.

Krok 9: Program w Pythonie

Program w Pythonie
Program w Pythonie

Ponieważ obwód jest gotowy, wykonanie programu python jest wymagane do korzystania z funkcji INDICATOR.

Więcej informacji na temat logiki programu można znaleźć w powyższym schemacie blokowym.

#-*- kodowanie:utf-8 -*-

importuj podproces, sygnał, sys

czas importu, ponownie

importuj RPi. GPIO jako g

A = 12

B = 16

g.setmode(g. BCM)

g.ustawienia(A, g. OUT)

g.ustawienia(B, g. WY)

##

def signal_handler(sig, ramka):

print('Nacisnąłeś Ctrl+C!')

g.wyjście(A, Fałsz)

g.output(B, Fałsz)

f.zamknij()

sys.exit(0)

signal.signal(signal. SIGINT, signal_handler)

##

podczas gdy prawda:

f = otwórz('/home/pi/Mój_projekt/CPU_temperature_log.txt', 'a+')

temp_str = subprocess.check_output('/opt/vc/bin/vcgencmd Measure_temp', shell=True)

temp_str = temp_str.decode(kodowanie = 'UTF-8', błędy = 'ścisłe')

CPU_temp = re.findall("\d+\.\d+", temp_str)

# wyodrębnianie aktualnej temperatury procesora

current_temp = float(CPU_temp[0])

jeśli bieżąca_temp > 30 i bieżąca_temp < 40:

# niska temperatura A=0, B=0

g.wyjście(A, Fałsz)

g.output(B, Fałsz)

czas.sen(5)

elif aktualna_temp >= 40 i aktualna_temp < 45:

# temperatura medium A=0, B=1

g.wyjście(A, Fałsz)

g.wyjście(B, Prawda)

czas.sen(5)

elif aktualna_temp >= 45 i aktualna_temp < 50:

# temperatura wysoka A=1, B=0

g.wyjście(A, Prawda)

g.output(B, Fałsz)

czas.sen(5)

elif aktualna_temp >= 50:

# Wymagane chłodzenie procesora wysokie A=1, B=1

g.wyjście(A, Prawda)

g.wyjście(B, Prawda)

czas.sen(5)

aktualny_czas = czas.czas()

formated_time = time.strftime("%H:%M:%S", time.gmtime(current_time))

f.write(str(format_czas)+'\t'+str(current_temp)+'\n')

f.zamknij()

Główna funkcja programu python jest jak poniżej.

-Po pierwsze ustawienie GPIO 12, 16 jako portu wyjściowego

- Definiowanie obsługi przerwań Ctrl+C do zamykania pliku dziennika i wyłączania GPIO 12, 16

- Po wejściu do nieskończonej pętli otwórz plik dziennika jako tryb dołączania

- Odczytaj temperaturę procesora, wykonując polecenie „/opt/vc/bin/vcgencmd Measure_temp”

- Gdy temperatura jest w zakresie 30 ~ 39, wyjście 00, aby włączyć zieloną diodę LED

- Gdy temperatura jest w zakresie 40 ~ 44, wyjście 01, aby włączyć żółtą diodę LED

- Gdy temperatura jest w zakresie 45 ~ 49, wyjście 10, aby włączyć czerwoną diodę LED

- Gdy temperatura jest wyższa niż 50, wyjście 11 powoduje miganie czerwonej diody LED

- Zapisz znacznik czasu i dane temperatury do pliku dziennika

Krok 10: Działanie WSKAŹNIKA

WSKAŹNIK Działanie
WSKAŹNIK Działanie

Gdy wszystko jest w porządku, możesz zobaczyć, że każda dioda LED jest włączona lub miga w zależności od temperatury procesora.

Nie musisz wpisywać polecenia powłoki, aby sprawdzić aktualną temperaturę.

Po zebraniu danych w pliku dziennika i wyrenderowaniu danych tekstowych do wykresu za pomocą programu Excel, wynik jest pokazany na powyższym obrazku.

Przy dużym obciążeniu (uruchamianie dwóch przeglądarek Midori i odtwarzanie wideo z Youtube) temperatura procesora wzrasta do 57,9C.

Krok 11: Alternatywne wytwarzanie (za pomocą tranzystora NPN) i dalszy rozwój

Alternatywne wytwarzanie (z wykorzystaniem tranzystora NPN) i dalszy rozwój
Alternatywne wytwarzanie (z wykorzystaniem tranzystora NPN) i dalszy rozwój

To jest poprzedni przykład projektu INDICATOR wykorzystujący tranzystory NPN (2N3904 i BD139).

Jak widać jeszcze jeden układ scalony (74HC04, poczwórne inwertery) jest niezbędny do sterowania tranzystorem NPN, ponieważ napięcie wysokiego poziomu należy podać na bazę NPN, aby włączyć tranzystor.

Podsumowując, użycie tranzystora NPN dodaje niepotrzebnej komplikacji do wykonania układu INDICATOR.

W celu dalszego rozwoju tego projektu dodam wentylator, jak pokazano na powyższym obrazku, aby obwód INDICATOR był bardziej użyteczny.

Zalecana: