Inhaltsverzeichnis:

Thermochrome Temperatur- und Feuchtigkeitsanzeige - PCB-Version - Gunook
Thermochrome Temperatur- und Feuchtigkeitsanzeige - PCB-Version - Gunook

Video: Thermochrome Temperatur- und Feuchtigkeitsanzeige - PCB-Version - Gunook

Video: Thermochrome Temperatur- und Feuchtigkeitsanzeige - PCB-Version - Gunook
Video: We Attempt the World's First VANISHING HYPERSHIFT Car 2024, Juli
Anonim
Image
Image
Entwerfen der Heizungsplatine
Entwerfen der Heizungsplatine

Vor einiger Zeit habe ich ein Projekt namens Thermochromic Temperature & Humidity Display gemacht, bei dem ich eine 7-Segment-Anzeige aus Kupferplatten gebaut habe, die durch Peltier-Elemente beheizt / gekühlt wurden. Die Kupferplatten wurden mit einer thermochromen Folie bedeckt, die ihre Farbe mit der Temperatur ändert. Dieses Projekt ist eine kleinere Version des Displays, die anstelle von Peltiers eine Platine mit Heizspuren verwendet, wie von Benutzer DmitriyU2 im Kommentarbereich vorgeschlagen. Die Verwendung einer PCB-Heizung ermöglicht ein viel einfacheres und kompakteres Design. Die Heizung ist auch effizienter, was zu einem schnelleren Farbwechsel führt.

Sehen Sie sich das Video an, um zu sehen, wie die Anzeige funktioniert.

Da ich noch ein paar Platinen übrig hatte, verkaufe ich dieses Display auch in meinem Tindie-Laden.

Lieferungen

  • Heizungsplatine (siehe mein GitHub für Gerber-Dateien)
  • Control PCB (siehe mein GitHub für Gerber-Dateien und BoM)
  • DHT22-Sensor (z. B. ebay.de)
  • 3D-gedruckter Ständer (siehe mein GitHub für stl-Datei)
  • Thermochrome Klebefolie, 150x150 mm, 30-35°C (SFXC)
  • M2x6 Schraube + Mutter
  • 2x Stiftleiste 1x9, 2,54 mm (z. B. mouser.com)
  • 2x SMD-Platinenstecker 1x9, 2,54 mm (z. B. mouser.com)

Schritt 1: Entwerfen der Heizungsplatine

Entwerfen der Heizungsplatine
Entwerfen der Heizungsplatine
Entwerfen der Heizungsplatine
Entwerfen der Heizungsplatine

Die Heizungsplatine wurde in Eagle entwickelt. Die Leiterplattenabmessungen betragen 100x150 mm, da 150x150 mm die Standardgröße der von mir verwendeten thermochromen Platten ist. Zuerst habe ich eine Skizze der Segmente in Fusion360 erstellt, die als dxf gespeichert und dann in Eagle importiert wurde. Die Segmente haben dazwischen gefräste Lücken und sind nur durch kleine Brücken verbunden. Dies verbessert die Wärmedämmung der einzelnen Segmente und ermöglicht somit eine schnellere Erwärmung und reduziert das „thermische Übersprechen“. Die Segmente wurden mit dem Mäanderwerkzeug in Eagle mit PCB-Leiterbahnen auf der obersten Schicht (rot dargestellt) gefüllt. Ich habe eine Spurbreite und einen Abstand von 6 mil verwendet, was die minimale Größe ist, die von PCBWay ohne zusätzliche Kosten hergestellt werden kann. Jede Leiterbahn wird zwischen zwei Durchkontaktierungen gemäandert, die dann über die unterste Schicht (in blau dargestellt) mit den Stiften verbunden werden, wobei viel dickere 32-mil-Leiterbahnen verwendet werden. Alle Segmente haben eine gemeinsame Basis.

Ich habe weder die benötigte Heizleistung für einen bestimmten Temperaturanstieg berechnet noch den zu erwartenden Widerstand eines Segments berechnet. Ich habe mir gedacht, dass jede Anpassung der Heizleistung durch die Verwendung eines PWM-Signals mit unterschiedlichem Tastverhältnis vorgenommen werden kann. Später stellte ich fest, dass sich die Segmente relativ schnell erhitzen, wenn sie über den 5-V-USB-Anschluss mit einem Arbeitszyklus von ~ 5% betrieben werden. Der Gesamtstrom beim Aufheizen aller 17 Segmente beträgt ca. 1,6 A.

Alle Board-Dateien finden Sie auf meinem GitHub.

Schritt 2: Entwerfen der Controller-Platine

Entwerfen der Controller-Platine
Entwerfen der Controller-Platine
Entwerfen der Controller-Platine
Entwerfen der Controller-Platine
Entwerfen der Controller-Platine
Entwerfen der Controller-Platine

Zur Steuerung der PCB-Heizung wähle ich eine SAMD21E18-MCU, die ich auch in meinem GlassCube-Projekt verwendet habe. Dieser Mikrocontroller verfügt über genügend Pins, um alle 17 Heizsegmente zu steuern und den DHT22-Sensor auszulesen. Es hat auch natives USB und kann mit dem CircuitPython-Bootloader von Adafruit geflasht werden. Als Stromversorgung und zur Programmierung der MCU wurde ein Micro-USB-Anschluss verwendet. Die Heizsegmente werden von 9 Zweikanal-MOSFETs (SP8K24FRATB) gesteuert. Diese können bis zu 6 A verarbeiten und haben eine Gate-Schwellenspannung <2,5 V, sodass sie durch das 3,3-V-Logiksignal der MCU geschaltet werden können. Ich fand diesen Thread sehr hilfreich, um mir beim Entwurf des Heizungssteuerkreises zu helfen.

Ich habe die Leiterplatten bei PCBWay und die Elektronikteile separat bei Mouser bestellt und die Leiterplatten selbst bestückt, um Kosten zu sparen. Ich benutzte einen Lotpastenspender, platzierte die Teile von Hand und lötete sie mit einer Infrarot-IC-Heizung. Dies war jedoch aufgrund des relativ großen Bauteilaufkommens und der erforderlichen Nacharbeiten recht mühsam und ich überlege, in Zukunft einen Montageservice in Anspruch zu nehmen.

Auch hier sind die Board-Dateien auf meinem GitHub zu finden. Dort finden Sie eine verbesserte Version der Platine, die einen USB-C-Anschluss anstelle von Micro-USB verwendet. Ich habe auch den Abstand der Durchgangslöcher für den DHT22-Sensor korrigiert und einen 10-Pin-Anschluss zum einfacheren Flashen des Bootloaders über J-Link hinzugefügt.

Schritt 3: CircuitPython Bootloader

Zuerst habe ich das SAMD21 mit einem UF2-Bootloader auf Basis von Adafruits Trinket M0 geflasht. Der Bootloader musste leicht modifiziert werden, da das Trinket eine LED hat, die mit einem der Pins verbunden ist, die ich zum Heizen verwende. Andernfalls geht dieser Pin nach dem Booten für kurze Zeit auf High und heizt das angeschlossene Segment mit voller Leistung auf. Das Flashen des Bootloaders erfolgt durch Anschließen eines J-Links an die MCU über die SWD- und SWC-Ports. Der gesamte Prozess ist auf der Adafruit-Website ausführlich beschrieben. Nach der Installation des Bootloaders wird die MCU beim Anschluss über den Micro-USB-Port als Flash-Laufwerk erkannt und nachfolgende Bootloader können einfach durch Ziehen einer UF2-Datei auf das Laufwerk installiert werden.

Als nächsten Schritt wollte ich einen CircuitPython Bootloader installieren. Da mein Board jedoch viele Pins verwendet, die am Trinket M0 nicht angeschlossen sind, musste ich zunächst die Board-Konfiguration leicht modifizieren. Auch hierfür gibt es auf der Adafruit-Website ein tolles Tutorial. Im Grunde muss man nur ein paar ignorierte Pins in der mpconfigboard.h auskommentieren und dann alles neu kompilieren. Die benutzerdefinierten Bootloader-Dateien sind auch auf meinem GitHub verfügbar.

Schritt 4: CircuitPython-Code

CircuitPython-Code
CircuitPython-Code
CircuitPython-Code
CircuitPython-Code

Nachdem der CircuitPython Bootloader installiert wurde, können Sie das Board einfach programmieren, indem Sie Ihren Code als code.py-Datei direkt auf dem USB-Stick speichern. Der von mir geschriebene Code liest den DHT22-Sensor aus und zeigt dann abwechselnd die Temperatur und die Luftfeuchtigkeit an, indem er die entsprechenden Segmente erhitzt. Wie bereits erwähnt erfolgt die Beheizung durch Schalten der MOSFETs mit einem PWM-Signal. Anstatt die Pins als PWM-Ausgänge zu konfigurieren, habe ich im Code mittels Delays ein "gefälschtes" PWM-Signal mit einer niedrigen Schaltfrequenz von 100 Hz erzeugt. Um die Stromaufnahme weiter zu senken, schalte ich die Segmente nicht gleichzeitig sondern nacheinander ein, wie im obigen Schema gezeigt. Es gibt auch ein paar Tricks, um die Erwärmung der Segmente gleichmäßiger zu gestalten. Zunächst einmal ist das Tastverhältnis für jedes Segment etwas anders. Zum Beispiel benötigt der Strich des "%"-Zeichens aufgrund seines höheren Widerstands ein viel größeres Tastverhältnis. Außerdem habe ich festgestellt, dass Segmente, die von vielen anderen Segmenten umgeben sind, weniger erhitzt werden müssen. Außerdem kann, wenn im vorherigen "Lauf" ein Segment aufgeheizt wurde, die Einschaltdauer im nächsten reduziert werden. Schließlich wird die Heiz- und Kühlzeit an die Umgebungstemperatur angepasst, die bequem vom DHT22-Sensor gemessen wird. Um vernünftige Zeitkonstanten zu finden, habe ich das Display tatsächlich in einer Klimakammer kalibriert, auf die ich glücklicherweise bei der Arbeit Zugriff habe.

Den vollständigen Code finden Sie auf meinem GitHub.

Schritt 5: Montage

Montage
Montage
Montage
Montage
Montage
Montage

Die Montage des Displays ist recht einfach und lässt sich in folgende Schritte unterteilen

  1. Buchsenleisten an Heizungsplatine anlöten
  2. Bringen Sie die selbstklebende thermochrome Folie an der Heizungsplatine an
  3. DHT22-Sensor an Controller-Platine anlöten und mit M2-Schraube und Mutter befestigen
  4. Stiftleisten an die Controller-Leiterplatte anlöten
  5. Verbinden Sie beide Leiterplatten und platzieren Sie sie in einem 3D-gedruckten Ständer

Schritt 6: Fertiges Projekt

Fertiges Projekt
Fertiges Projekt
Fertiges Projekt
Fertiges Projekt

Mit dem fertigen Display, das jetzt ständig in unserem Wohnzimmer läuft, bin ich sehr zufrieden. Das Ziel, eine kleinere, einfachere Version meines ursprünglichen thermochromen Displays zu erstellen, wurde definitiv erreicht und ich möchte dem Benutzer DmitriyU2 noch einmal für den Vorschlag danken. Das Projekt half mir auch, meine PCB-Designfähigkeiten in Eagle zu verbessern und ich lernte den Einsatz von MOSFETs als Schalter kennen.

Man könnte das Design vielleicht noch weiter verbessern, indem man ein schönes Gehäuse für die PCBs macht. Ich denke auch darüber nach, eine Digitaluhr im gleichen Stil zu bauen.

Wenn Ihnen dieses Projekt gefällt, können Sie es einfach neu erstellen oder in meinem Tindie-Shop kaufen. Denken Sie auch daran, für mich bei der PCB-Design-Challenge zu stimmen.

PCB-Design-Herausforderung
PCB-Design-Herausforderung
PCB-Design-Herausforderung
PCB-Design-Herausforderung

Preis der Jury in der PCB Design Challenge

Empfohlen: