Indholdsfortegnelse:

Termokrom temperatur- og fugtighedsdisplay - PCB -version: 6 trin (med billeder)
Termokrom temperatur- og fugtighedsdisplay - PCB -version: 6 trin (med billeder)

Video: Termokrom temperatur- og fugtighedsdisplay - PCB -version: 6 trin (med billeder)

Video: Termokrom temperatur- og fugtighedsdisplay - PCB -version: 6 trin (med billeder)
Video: Measure Temperature and Humidity using M5Stack Core 2 with DHT11 and DHT22 - Robojax 2024, Juli
Anonim
Image
Image
Design af varmekortet
Design af varmekortet

For et stykke tid siden lavede jeg et projekt kaldet Thermochromic Temperature & Humidity Display, hvor jeg byggede et 7-segment display af kobberplader, der blev opvarmet/afkølet af peltierelementer. Kobberpladerne var dækket med en termokrom folie, der ændrer farve med temperaturen. Dette projekt er en mindre version af displayet, som i stedet for peltiers bruger et printkort med varmespor som foreslået af bruger DmitriyU2 i kommentarfeltet. Brug af en PCB -varmelegeme giver mulighed for et meget enklere og mere kompakt design. Opvarmningen er også mere effektiv, hvilket fører til en hurtigere farveændring.

Se videoen for at se, hvordan displayet fungerer.

Da jeg havde et par PCB tilbage, sælger jeg også denne skærm i min Tindie -butik.

Forbrugsvarer

  • Heater PCB (se min GitHub for Gerber -filer)
  • Styr 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 + møtrik
  • 2x benhoved 1x9, 2,54 mm (f.eks. Mouser.com)
  • 2x SMD -kortstik 1x9, 2,54 mm (f.eks. Mouser.com)

Trin 1: Design af varmekortet

Design af varmekortet
Design af varmekortet
Design af varmekortet
Design af varmekortet

Varmerens printkort blev designet i Eagle. PCB -dimensionerne er 100x150 mm, fordi 150x150 mm er standardstørrelsen på de termokrome plader, jeg brugte. Først lavede jeg en skitse af segmenterne i Fusion360, som blev gemt som dxf og derefter importeret til Eagle. Segmenterne har fræsede huller imellem dem og er kun forbundet med små broer. Dette forbedrer varmeisoleringen af de enkelte segmenter og muliggør derfor hurtigere opvarmning og reducerer 'termisk krydstale'. Segmenterne blev fyldt med PCB -spor på det øverste lag (set i rødt) ved hjælp af meanderværktøjet i Eagle. Jeg brugte en sporbredde og afstand på 6 mil, hvilket er den mindste størrelse, der kan fremstilles af PCBWay uden ekstra omkostninger. Hvert spor slynges mellem to vias, som derefter forbindes til stifterne via bundlaget (set i blåt) ved hjælp af meget tykkere 32 mil spor. Alle segmenter er fælles.

Jeg foretog ikke nogen beregninger for den varmeeffekt, der kræves til en bestemt temperaturstigning, og jeg har heller ikke beregnet den forventede modstand for et segment. Jeg regnede med, at enhver justering af varmeeffekten kan foretages ved hjælp af et PWM -signal med varierende driftscyklus. Jeg fandt senere ud af, at segmenterne varmes rimeligt hurtigt op, når de drives via 5V USB -porten ved hjælp af en driftscyklus på ~ 5%. Den samlede strøm ved opvarmning af alle 17 segmenter er omkring 1,6 A.

Alle bestyrelsesfiler kan findes på min GitHub.

Trin 2: Design af controllerens printkort

Design af controllerens printkort
Design af controllerens printkort
Design af controllerens printkort
Design af controllerens printkort
Design af controllerens printkort
Design af controllerens printkort

For at styre printkortvarmeren vælger jeg en SAMD21E18 MCU, som jeg også brugte i mit GlassCube -projekt. Denne mikrokontroller har nok ben til at styre alle 17 varmesegmenter og aflæse DHT22 -sensoren. Det har også indbygget USB og kan flashes med Adafruit's CircuitPython bootloader. Et mikro USB -stik blev brugt som strømforsyning og til programmering af MCU. Varmeregmenterne styres af 9 dobbeltkanals MOSFET'er (SP8K24FRATB). Disse kan klare op til 6 A og have en gate -tærskelspænding <2,5 V, så de kan skiftes af 3,3 V -logik -signalet fra MCU'en. Jeg fandt denne tråd meget nyttig til at hjælpe mig med at designe varmekontrolkredsløbet.

Jeg bestilte printkortene fra PCBWay og de elektroniske dele separat fra Mouser og monterede printkortene selv for at spare omkostninger. Jeg brugte en loddepasta dispenser placeret delene i hånden og loddet dem med en infrarød IC varmelegeme. På grund af den relativt store mængde af involverede komponenter og den nødvendige omarbejdning var dette dog ret kedeligt, og jeg overvejer at bruge en samlingstjeneste i fremtiden.

Igen kan bestyrelsesfilerne findes på min GitHub. Der kan du finde en forbedret version af printkortet, der bruger et USB-C-stik i stedet for mikro-USB. Jeg korrigerede også afstanden mellem gennemgangshullerne til DHT22-sensoren og tilføjede et 10-benet stik for lettere at blinke bootloaderen via J-Link.

Trin 3: CircuitPython Bootloader

Først blinkede jeg SAMD21 med en UF2 bootloader baseret på Adafruit's Trinket M0. Bootloaderen skulle ændres lidt, fordi Trinket har en LED tilsluttet en af stifterne, som jeg bruger til opvarmning. Ellers går denne pin højt i en kort tid efter opstart og opvarmer det tilsluttede segment med fuld effekt. Blinker bootloaderen udføres ved at forbinde en J-Link til MCU'en via SWD- og SWC-portene. Hele processen er beskrevet detaljeret på Adafruit -webstedet. Efter installation af bootloaderen genkendes MCU'en som et flashdrev, når den er tilsluttet via mikro -USB -porten, og efterfølgende bootloadere kan simpelthen installeres ved at trække en UF2 -fil ind på drevet.

Som et næste trin ville jeg installere en CircuitPython bootloader. Men da mit bord bruger mange pins, der ikke er tilsluttet Trinket M0, var jeg først nødt til at ændre kortets konfiguration lidt. Igen er der en god vejledning til dette på Adafruit -webstedet. Grundlæggende skal man bare kommentere et par ignorerede pins i mpconfigboard.h og derefter kompilere alt igen. De brugerdefinerede bootloader -filer er også tilgængelige på min GitHub.

Trin 4: CircuitPython -kode

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

Efter at CircuitPython bootloader er installeret, kan du bare programmere kortet ved at gemme din kode som en code.py -fil direkte på USB -flashdrevet. Koden, jeg skrev, læser DHT22 -sensoren op og viser derefter skiftevis temperaturen og fugtigheden ved at opvarme de tilsvarende segmenter. Som allerede nævnt sker opvarmningen ved at skifte MOSFET'erne med et PWM -signal. I stedet for at konfigurere benene som PWM -udgange, genererede jeg et "falsk" PWM -signal med en lav koblingsfrekvens på 100 Hz i koden ved hjælp af forsinkelser. For yderligere at sænke det aktuelle forbrug tænder jeg ikke for segmenterne samtidigt, men sekventielt som vist i skematikken ovenfor. Der er også et par tricks til at gøre opvarmningen af segmenterne mere jævn. Først og fremmest er driftscyklussen en smule anderledes for hvert segment. For eksempel har bindestreg for "%" -tegnet brug for en meget større driftscyklus på grund af dets højere modstand. Jeg fandt også ud af, at segmenter, der er omgivet af mange andre segmenter, skal opvarmes mindre. Hvis et segment derudover blev opvarmet i det foregående "løb", kan driftscyklussen reduceres i det næste. Endelig tilpasses opvarmnings- og køletiden til den omgivende temperatur, som bekvemt måles af DHT22 -sensoren. For at finde rimelige tidskonstanter kalibrerede jeg faktisk displayet i et klimakammer, som jeg heldigvis har adgang til på arbejdet.

Du kan finde den fulde kode på min GitHub.

Trin 5: Montering

montage
montage
montage
montage
montage
montage

Monteringen af skærmen er ret let og kan opdeles i de følgende trin

  1. Lodde kvindelige pinhoveder til varmelegeme PCB
  2. Fastgør selvklæbende termokromt ark til varmelegemets printkort
  3. Lodde DHT22 sensor til controller printkort og fastgøres med M2 bolt og møtrik
  4. Lodde hanstifter til han -PCB
  5. Tilslut begge printkort og placer dem i 3D -trykt stativ

Trin 6: Færdiggjort projekt

Afsluttet projekt
Afsluttet projekt
Afsluttet projekt
Afsluttet projekt

Jeg er ganske tilfreds med den færdige diplay, som nu konstant kører i vores stue. Målet om at lave en mindre, enklere version af mit originale termokromiske display blev bestemt nået, og jeg vil gerne takke brugeren DmitriyU2 endnu en gang for forslaget. Projektet hjalp mig også med at forbedre mine PCB -designfærdigheder i Eagle, og jeg lærte om brugen af MOSFET'er som switches.

Man kunne måske yderligere forbedre designet ved at lave et flot kabinet til printkortene. Jeg overvejer også at lave et digitalt ur i samme stil.

Hvis du kan lide dette projekt, kan du bare lave det om eller købe det i min Tindie -butik. Overvej også at stemme på mig i PCB -designudfordringen.

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

Dommerpris i PCB Design Challenge

Anbefalede: