Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Mål temperaturen på en væske ved hjelp av en analog inngang xChip fra XinaBox og en termistorsonde.
Trinn 1: Ting som brukes i dette prosjektet
Maskinvarekomponenter
- XinaBox SX02 x 1 xChip analog inngangssensor med ADC
- XinaBox CC01 x 1 xChip -versjon av Arduino Uno basert på ATmega328P
- Motstand 10k ohm x 1 10k motstand for spenningsdeler -nettverk
- Thermistor Probe x 1 10k ved 25 ° C NTC vanntett termistorsonde
- XinaBox IP01 x 1 xChip USB -programmerer basert på FT232R fra FTDI Limited
- XinaBox OD01 x 1 xChip 128x64 piksel OLED -skjerm
- XinaBox XC10 x 4 xChip -busskontakter
- XinaBox PU01 x 1 xChip USB (Type A) strømforsyning
- 5V USB strømforsyning x 1 strømbank eller lignende
Programvare -apper og online -tjenester
Arduino IDE
Håndverktøy og fabrikasjonsmaskiner
Flat skrutrekker For å stramme eller løsne skrueklemmen
Trinn 2: Historie
Introduksjon
Jeg ønsket å måle temperaturen på en væske ved å lage et enkelt termometer. Ved å bruke XinaBox xChips kunne jeg oppnå dette med relativ enkelhet. Jeg brukte den analoge SX02 -inngangen xChip som aksepterer 0 - 3.3V, CC01 xChip basert på ATmega328P og OD01 OLED -skjermen xChip for å se temperaturresultatene mine.
Termistor som måler temperaturen på vann i et glass
Trinn 3: Last ned nødvendige filer
Du trenger følgende biblioteker og programvare:
- xSX0X- Analog inngangssensorbibliotek
- xOD01 - OLED -skjermbibliotek
- Arduino IDE - Utviklingsmiljø
Klikk her for å se hvordan du installerer bibliotekene.
Når du har installert Arduino IDE, åpner du den og velger "Arduino Pro eller Pro Mini" som brettet du vil laste opp programmet til. Sørg også for at ATmega328P (5V, 16MHz) prosessoren er valgt. Se bildet nedenfor.
Velg Arduino Pro eller Pro Mini -kortet og ATmega328P (5V, 16MHz) prosessor
Trinn 4: Monter
Klikk på programmereren xChip, IP01 og ATmega328P -baserte CC01 xChip sammen med XC10 -busskontakter som vist nedenfor. For å laste opp til CC01 må du plassere bryterne i henholdsvis 'A' og 'DCE' posisjoner.
IP01 og CC01 klikket sammen
Ta deretter din 10kΩ motstand og skru den ene enden i terminalen merket "IN" og den andre enden i jordterminalen, "GND", på SX02. Ta ledningene på termistorsonden og skru den ene enden i Vcc, "3.3V", og den andre enden i "IN" -terminalen. Se grafikken nedenfor.
SX02 -tilkoblinger
Kombiner nå OD01 og SX02 med CC01 ved å klikke dem sammen ved hjelp av XC10 -bussforbindelser. Se nedenfor. Sølvelementet i bildet er termistorsonden.
Komplett enhet for programmering
Trinn 5: Program
Sett enheten inn i USB -porten på datamaskinen. Last ned eller kopier og lim inn koden nedenfor i Arduino IDE. Kompiler og last opp koden til brettet ditt. Når programmet er lastet opp, skal programmet begynne å kjøre. Hvis sonden er ved romtemperatur, bør du observere ± 25 ° C på OLED -displayet som vist nedenfor.
Etter opplasting må du observere romtemperaturen på OLED -displayet
Trinn 6: Bærbart termometer
Fjern enheten fra datamaskinen. Demonter enheten og sett den sammen igjen med PU01 i stedet for IP01. Ta nå din bærbare 5V USB -strømforsyning, for eksempel en strømbank eller lignende, og sett den nye enheten inn i den. Du har nå ditt eget kule bærbare termometer med god nøyaktighet. Se omslagsbildet for å se det i drift. Jeg målte varmt vann i et glass. Bildene nedenfor viser hele enheten.
Komplett enhet som består av CC01, OD01, SX02 og PU02.
Trinn 7: Konklusjon
Dette prosjektet tok under 10 minutter å sette sammen og ytterligere 20 minutter å programmere. den eneste passive komponenten som kreves var en motstand. XChips klikker bare sammen, noe som gjør det veldig praktisk.
Trinn 8: Kode
ThermTemp_Display.ino Arduino Research termistorer for å forstå beregningene i koden.
#include // inkluderer kjernebibliotek for xCHIP -er
#include // inkluderer analogt inngangssensorbibliotek #include // inkluderer OLED -visningsbibliotek #include // inkluderer matematiske funksjoner #definere C_Kelvin 273.15 // for konvertering fra kelvin til celsius #definer serie_res 10000 // verdi for seriemotstand i ohm #define B 3950 // B parameter for termistor #definere rom_tempK 298.15 // romtemperatur i kelvin #definere rom_res 10000 // motstand ved romtemperatur i ohm #definere vcc 3.3 // forsyningsspenning xSX01 SX01 (0x55); // angi i2c -adressen flytespenning; // variabel som inneholder den målte spenningen (0 - 3.3V) float term_res; // termistor motstand float act_tempK; // faktisk temperatur kelvin float act_tempC; // faktisk temperatur i celsius ugyldig oppsett () {// legg oppsettskoden her, for å kjøre en gang: // initialisere variabler til 0 spenning = 0; term_res = 0; act_tempK = 0; act_tempC = 0; // start seriell kommunikasjon Serial.begin (115200); // start i2c kommunikasjon Wire.begin (); // start den analoge inngangssensoren SX01.begin (); // start OLED -skjerm OLED.begin (); // klar visning OD01.clear (); // forsinkelse for å normalisere forsinkelse (1000); } void loop () {// legg hovedkoden din her for å kjøre gjentatte ganger: // les spenningen SX01.poll (); // lagre volatgespenningen = SX01.getVoltage (); // beregne termistorresistens therm_res = ((vcc * series_res) / spenning) - series_res; // beregne den faktiske temperaturen i kelvin act_tempK = (room_tempK * B) / (B + room_tempK * log (therm_res / room_res)); // konvertere kelvin til celsius act_tempC = act_tempK - C_Kelvin; // utskriftstemperatur på OLED -skjerm // manuell formatering for visning i midten OD01.set2X (); OD01.println (""); OD01.println (""); OD01.print (""); OD01.print (act_tempC); OD01.print ("C"); OD01.println (""); forsinkelse (2000); // oppdater skjerm hvert 2. sekund}