Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

3.1.7 Überhitzungsüberwachung

Einführung

Möglicherweise möchten Sie ein Überhitzungsüberwachungsgerät herstellen, das für verschiedene Situationen geeignet ist, z.B. in der Fabrik, wenn wir einen Alarm haben möchten und das rechtzeitige automatische Abschalten der Maschine, wenn es zu einer Schaltungserhitzung kommt. In diesem Projekt werden wir einen Thermistor, einen Joystick, eine Hupe, eine LED und ein LCD verwenden, um ein intelligentes Temperaturüberwachungsgerät herzustellen, dessen Schwellenwert einstellbar ist.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

../_images/list_Overheat_Monitor.png

Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF LINK

GPIO-Erweiterungsplatine

BUY

Steckbrett

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Joystick-Modul

-

ADC0834

-

Transistor

BUY

I2C LCD1602

BUY

Thermistor

BUY

Summer

-

Schaltplan

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO18

Pin 12

1

18

GPIO27

Pin 13

2

27

GPIO22

Pin15

3

22

GPIO23

Pin16

4

23

GPIO24

Pin18

5

24

SDA1

Pin 3

SCL1

Pin 5

../_images/Schematic_three_one8.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis.

../_images/image258.png

Schritt 2: Gehen Sie zum Ordner des Codes.

cd ~/raphael-kit/c/3.1.7/

Schritt 3: Kompilieren Sie den Code.

gcc 3.1.7_Überhitzungsüberwachung.c -lm -lwiringPi

Schritt 4: Führen Sie die ausführbare Datei aus.

sudo ./a.out

Wenn der Code ausgeführt wird, werden die aktuelle Temperatur und der Hochtemperaturschwellenwert 40 auf I2C LCD1602 angezeigt. Wenn die aktuelle Temperatur höher als der Schwellenwert ist, werden die Hupe und die LED gestartet, um Sie zu alarmieren.

Der Joystick dient hier zum Drücken, um den Hochtemperaturschwellenwert anzupassen. Durch das Umschalten des Joysticks in Richtung der X- und Y-Achse können Sie den aktuellen Hochtemperaturschwellenwert erhöhen oder verringern. Drücken Sie den Joystick erneut, um den Schwellenwert auf den Ausgangswert zurückzusetzen.

Bemerkung

  • Wenn die Fehlermeldung wiringPi.h: No such file or directory angezeigt wird, verweisen Sie bitte auf Installieren und Überprüfen von WiringPi.

  • Wenn Sie den Fehler Unable to open I2C device: No such file or directory erhalten, müssen Sie sich auf I2C Konfiguration beziehen, um I2C zu aktivieren und zu überprüfen, ob die Verdrahtung korrekt ist.

  • Wenn der Code und die Verdrahtung in Ordnung sind, das LCD jedoch immer noch keinen Inhalt anzeigt, können Sie das Potentiometer auf der Rückseite drehen, um den Kontrast zu erhöhen.

Code-Erklärung

int get_joystick_value(){
    uchar x_val;
    uchar y_val;
    x_val = get_ADC_Result(1);
    y_val = get_ADC_Result(2);
    if (x_val > 200){
        return 1;
    }
    else if(x_val < 50){
        return -1;
    }
    else if(y_val > 200){
        return -10;
    }
    else if(y_val < 50){
        return 10;
    }
    else{
        return 0;
    }
}

Diese Funktion liest Werte von X und Y. Wenn X>200, wird 1 zurückgegeben; X<50, gibt -1 zurück; y>200, gibt -10 zurück, und y<50, gibt 10 zurück.

void upper_tem_setting(){
    write(0, 0, "Upper Adjust:");
    int change = get_joystick_value();
    upperTem = upperTem + change;
    char str[6];
    snprintf(str,3,"%d",upperTem);
write(0,1,str);
int len;
  len = strlen(str);
  write(len,1,"             ");
    delay(100);
}

Diese Funktion dient zur Anpassung des Schwellenwertes und zur Anzeige auf dem I2C LCD1602.

double temperature(){
    unsigned char temp_value;
    double Vr, Rt, temp, cel, Fah;
    temp_value = get_ADC_Result(0);
    Vr = 5 * (double)(temp_value) / 255;
    Rt = 10000 * (double)(Vr) / (5 - (double)(Vr));
    temp = 1 / (((log(Rt/10000)) / 3950)+(1 / (273.15 + 25)));
    cel = temp - 273.15;
    Fah = cel * 1.8 +32;
    return cel;
}

Liest den analogen Wert des CH0 (Thermistor) des ADC0834 und konvertiert ihn in einen Temperaturwert.

void monitoring_temp(){
    char str[6];
    double cel = temperature();
    snprintf(str,6,"%.2f",cel);
    write(0, 0, "Temp: ");
    write(6, 0, str);
    snprintf(str,3,"%d",upperTem);
    write(0, 1, "Upper: ");
    write(7, 1, str);
    delay(100);
    if(cel >= upperTem){
        digitalWrite(buzzPin, HIGH);
        digitalWrite(LedPin, HIGH);
    }
    else if(cel < upperTem){
        digitalWrite(buzzPin, LOW);
        digitalWrite(LedPin, LOW);
    }
}

Während der Code läuft, werden die aktuelle Temperatur und der Hochtemperatur- Schwellenwert 40 auf dem I2C LCD1602 angezeigt. Wenn die aktuelle Temperatur höher als der Schwellenwert ist, werden Buzzer und LED aktiviert, um Sie zu warnen.

int main(void)
{
    setup();
    int lastState =1;
    int stage=0;
    while (1)
    {
        int currentState = digitalRead(Joy_BtnPin);
        if(currentState==1 && lastState == 0){
            stage=(stage+1)%2;
            delay(100);
            lcd_clear();
        }
        lastState=currentState;
        if (stage==1){
            upper_tem_setting();
        }
        else{
            monitoring_temp();
        }
    }
    return 0;
}

Die Funktion main() beinhaltet den gesamten Programmablauf:

  1. Bei Programmstart ist der Anfangswert von stage 0, und die aktuelle Temperatur sowie der Hochtemperatur-Schwellenwert 40 werden auf dem I2C LCD1602 angezeigt. Wenn die aktuelle Temperatur den Schwellenwert überschreitet, werden Buzzer und LED aktiviert, um Sie zu warnen.

  2. Drücken Sie den Joystick, wird stage auf 1 gesetzt und Sie können den Hochtemperatur-Schwellenwert anpassen. Durch Kippen des Joysticks in X- und Y-Richtung kann der aktuelle Schwellenwert angepasst (erhöht oder verringert) werden. Ein erneutes Drücken des Joysticks setzt den Schwellenwert auf den Ausgangswert zurück.

Phänomen-Bild

../_images/image259.jpeg