Innholdsfortegnelse:

Termokrom temperatur- og fuktighetsdisplay - PCB -versjon: 6 trinn (med bilder)
Termokrom temperatur- og fuktighetsdisplay - PCB -versjon: 6 trinn (med bilder)

Video: Termokrom temperatur- og fuktighetsdisplay - PCB -versjon: 6 trinn (med bilder)

Video: Termokrom temperatur- og fuktighetsdisplay - PCB -versjon: 6 trinn (med bilder)
Video: STC-3028 Thermostat with Heat and Humidity Fully Explained and demonstrated 2024, Juli
Anonim
Image
Image
Design av varmeapparatets kretskort
Design av varmeapparatets kretskort

For en stund siden gjorde jeg et prosjekt kalt Thermochromic Temperature & Humidity Display, hvor jeg bygde en 7-segment skjerm av kobberplater som ble oppvarmet/avkjølt av peltierelementer. Kobberplatene var dekket med en termokrom folie som endrer farge med temperaturen. Dette prosjektet er en mindre versjon av displayet som i stedet for peltiers bruker et PCB med varmespor som foreslått av bruker DmitriyU2 i kommentarfeltet. Ved hjelp av en kretskortvarmer gir en mye enklere og mer kompakt design. Oppvarmingen er også mer effektiv, noe som fører til en raskere fargeendring.

Se videoen for å se hvordan skjermen fungerer.

Siden jeg hadde noen få PCB igjen, selger jeg også denne skjermen i Tindie -butikken min.

Rekvisita

  • Heater PCB (se min GitHub for Gerber -filer)
  • Kontroll PCB (se min GitHub for Gerber -filer og BoM)
  • DHT22 -sensor (f.eks. Ebay.de)
  • 3D -trykt stativ (se min GitHub for stl -fil)
  • Termokrom lim, 150x150 mm, 30-35 ° C (SFXC)
  • M2x6 bolt + mutter
  • 2x pin header 1x9, 2,54 mm (f.eks. Mouser.com)
  • 2x SMD -kortkontakt 1x9, 2,54 mm (f.eks. Mouser.com)

Trinn 1: Utforme varmekretsens kretskort

Design av varmeapparatets kretskort
Design av varmeapparatets kretskort
Design av varmeapparatets kretskort
Design av varmeapparatets kretskort

Varmeapparatets PCB ble designet i Eagle. PCB -dimensjonene er 100x150 mm fordi 150x150 mm er standardstørrelsen på de termokrome arkene jeg brukte. Først laget jeg en skisse av segmentene i Fusion360 som ble lagret som dxf og deretter importert til Eagle. Segmentene har fresede hull mellom dem og er bare forbundet med små broer. Dette forbedrer varmeisoleringen til de enkelte segmentene og tillater derfor raskere oppvarming og reduserer 'termisk krysstale'. Segmentene ble fylt med PCB -spor på det øverste laget (sett i rødt) ved hjelp av meander -verktøyet i Eagle. Jeg brukte en sporbredde og avstand på 6 mil, som er minimumsstørrelsen som kan produseres av PCBWay uten ekstra kostnader. Hvert spor slynges mellom to vias som deretter kobles til pinnene via det nederste laget (sett i blått) ved bruk av mye tykkere 32 mil spor. Alle segmenter har en felles oppfatning.

Jeg gjorde ingen beregninger for varmekraften som kreves for en viss temperaturstigning, og jeg beregnet heller ikke den forventede motstanden til et segment. Jeg skjønte at enhver justering av varmeeffekten kan gjøres ved å bruke et PWM -signal med varierende driftssyklus. Jeg fant senere ut at segmentene varmer rimelig raskt når de drives gjennom 5V USB -porten ved bruk av en driftssyklus på ~ 5%. Den totale strømmen ved oppvarming av alle 17 segmentene er omtrent 1,6 A.

Alle brettfilene finnes på min GitHub.

Trinn 2: Utforming av kontrollerkretsen

Design av kontrollerkretsen
Design av kontrollerkretsen
Design av kontrollerkretsen
Design av kontrollerkretsen
Design av kontrollerkretsen
Design av kontrollerkretsen

For å kontrollere kretskortvarmeren velger jeg en SAMD21E18 MCU som jeg også brukte i mitt GlassCube -prosjekt. Denne mikrokontrolleren har nok pinner til å kontrollere alle de 17 varmesegmentene og lese DHT22 -sensoren. Den har også innebygd USB og kan flashes med Adafruit's CircuitPython bootloader. En mikro -USB -kontakt ble brukt som strømforsyning og for programmering av MCU. Varmeregmentene styres av 9 tokanals MOSFET (SP8K24FRATB). Disse kan håndtere opptil 6 A og har en grense terskelspenning <2,5 V, slik at de kan byttes av et 3,3 V logisk signal fra MCU. Jeg syntes denne tråden var veldig nyttig for å hjelpe meg med å designe varmekontrollkretsen.

Jeg bestilte kretskortene fra PCBWay og de elektroniske delene separat fra Mouser og monterte kretskortene selv for å spare kostnader. Jeg brukte en loddepasta dispenser plassert delene for hånd og loddet dem med en infrarød IC varmeapparat. På grunn av den relativt store mengden komponenter som er involvert og den nødvendige omarbeidingen, var dette imidlertid ganske kjedelig, og jeg vurderer å bruke en monteringstjeneste i fremtiden.

Igjen kan du finne brettfilene på min GitHub. Der kan du finne en forbedret versjon av kretskortet som bruker en USB-C-kontakt i stedet for mikro-USB. Jeg korrigerte også avstanden mellom gjennomgangshullene for DHT22-sensoren og la til en 10-pinners kontakt for lettere blinking av oppstartslasteren via J-Link.

Trinn 3: CircuitPython Bootloader

Først blinket jeg SAMD21 med en UF2 bootloader basert på Adafruit's Trinket M0. Bootloaderen måtte endres litt fordi Trinket har en LED koblet til en av pinnene som jeg bruker til oppvarming. Ellers vil denne pinnen gå høyt en kort stund etter oppstart og varme det tilkoblede segmentet med full effekt. Blinker bootloader gjøres ved å koble en J-Link til MCU via SWD- og SWC-portene. Hele prosessen er beskrevet i detalj på Adafruit -nettstedet. Etter installering av opplastingsprogrammet blir MCU gjenkjent som en flash -stasjon når den er tilkoblet via mikro -USB -porten, og påfølgende oppstartsladere kan enkelt installeres ved å dra en UF2 -fil til stasjonen.

Som et neste trinn ønsket jeg å installere en CircuitPython bootloader. Siden brettet mitt bruker mange pinner som ikke er koblet til Trinket M0, måtte jeg imidlertid først endre kortkonfigurasjonen litt. Igjen er det en flott opplæring for dette på Adafruit -nettstedet. I utgangspunktet må man bare kommentere noen ignorerte pinner i mpconfigboard.h og deretter kompilere alt på nytt. De egendefinerte bootloader -filene er også tilgjengelige på min GitHub.

Trinn 4: CircuitPython -kode

CircuitPython -kode
CircuitPython -kode
CircuitPython -kode
CircuitPython -kode

Etter at CircuitPython bootloader er installert, kan du bare programmere kortet ved å lagre koden som en code.py -fil direkte på USB -flash -stasjonen. Koden jeg skrev, leser opp DHT22 -sensoren og viser deretter vekselvis temperaturen og fuktigheten ved å varme opp de tilsvarende segmentene. Som allerede nevnt gjøres oppvarmingen ved å bytte MOSFET -er med et PWM -signal. I stedet for å konfigurere pinnene som PWM -utganger, genererte jeg et "falskt" PWM -signal med en lav koblingsfrekvens på 100 Hz i koden ved hjelp av forsinkelser. For å senke strømforbruket ytterligere slår jeg ikke på segmentene samtidig, men sekvensielt som vist i skjemaet ovenfor. Det er også noen få triks for å gjøre oppvarmingen av segmentene mer jevn. Først og fremst er driftssyklusen litt annerledes for hvert segment. For eksempel trenger streken på "%" -tegnet en mye større driftssyklus på grunn av den høyere motstanden. Jeg fant også ut at segmenter som er omgitt av mange andre segmenter, må varmes mindre opp. I tillegg, hvis et segment ble oppvarmet i forrige "kjøring", kan driftssyklusen reduseres i det neste. Til slutt er oppvarmings- og kjøletiden tilpasset omgivelsestemperaturen som enkelt måles av DHT22 -sensoren. For å finne rimelige tidskonstanter kalibrerte jeg faktisk displayet i et klimakammer som jeg heldigvis har tilgang til på jobben.

Du finner hele koden på min GitHub.

Trinn 5: Montering

montering
montering
montering
montering
montering
montering

Monteringen av skjermen er ganske enkel og kan deles i de følgende trinnene

  1. Lodde hun -pinhoder til varmeapparatets kretskort
  2. Fest selvklebende termokromt ark til varmeapparatets kretskort
  3. Lodd DHT22 -sensor til PCB -kontrolleren og fest med M2 -bolt og mutter
  4. Lodde mannlige pinhoder til kontrolleren PCB
  5. Koble begge kretskortene og plasser dem i et 3D -trykt stativ

Trinn 6: Ferdig prosjekt

Ferdig prosjekt
Ferdig prosjekt
Ferdig prosjekt
Ferdig prosjekt

Jeg er ganske fornøyd med den ferdige diplayen som nå stadig kjører i stua vår. Målet om å lage en mindre, enklere versjon av min originale termokromiske skjerm ble definitivt oppnådd, og jeg vil takke brukeren DmitriyU2 nok en gang for forslaget. Prosjektet hjalp meg også med å forbedre PCB -designferdighetene mine i Eagle, og jeg lærte om bruk av MOSFET som brytere.

Man kan kanskje forbedre designet ytterligere ved å lage et fint kabinett for PCB -ene. Jeg tenker også på å lage en digital klokke i samme stil.

Hvis du liker dette prosjektet, kan du bare lage det på nytt eller kjøpe det i min Tindie -butikk. Vurder også å stemme på meg i PCB -designutfordringen.

PCB Design Challenge
PCB Design Challenge
PCB Design Challenge
PCB Design Challenge

Dommerprisen i PCB Design Challenge

Anbefalt: