- ADC0804 og Raspberry Pi:
- LM35 temperaturføler:
- Nødvendige komponenter:
- Kredsløb og arbejdsforklaring:
- Programmeringsforklaring:
Vi har for det meste dækket alle de grundlæggende komponenter, der grænseflader til Raspberry Pi i vores Raspberry Pi Tutorial Series. Vi har dækket alle vejledningerne på en enkel og detaljeret måde, så enhver, hvad enten han har arbejdet med Raspberry Pi eller ej, let kan lære af denne serie. Og efter at have gennemgået alle vejledningerne vil du være i stand til at opbygge nogle projekter på højt niveau ved hjælp af Raspberry Pi.
Så her designer vi den første applikation baseret på de tidligere tutorials. Den første grundlæggende applikation er en læserumstemperatur af Raspberry Pi. Og du kan overvåge aflæsningerne på computeren.
Som diskuteret i tidligere tutorials er der ingen ADC-kanaler leveret internt i Raspberry Pi. Så hvis vi vil interface nogen analoge sensorer, har vi brug for en ADC-konverteringsenhed. Og i en af vores tutorials har vi grænsefladen ADC0804 chip til Raspberry Pi for at læse en analog værdi. Så gå igennem det, før du bygger dette rumtemperaturtermometer.
ADC0804 og Raspberry Pi:
ADC0804 er en chip designet til at konvertere analogt signal til 8 bit digitale data. Denne chip er en af de populære ADC-serier. Det er en 8bit konverteringsenhed, så vi har værdier eller 0 til 255 værdier. Opløsningen af denne chip ændres baseret på den referencespænding, vi vælger, vi vil tale mere om det senere. Nedenfor er pinout af ADC0804:
Nu er en anden vigtig ting her, ADC0804 fungerer ved 5V, og det giver output i 5V logisk signal. I 8-pin output (repræsenterer 8bits) giver hver pin + 5V output til at repræsentere logisk'1 '. Så problemet er, at PI-logikken er på + 3.3v, så du kan ikke give + 5V-logik til + 3.3V GPIO-stiften på PI. Hvis du giver + 5V til en hvilken som helst GPIO-pin af PI, bliver kortet beskadiget.
Så for at nedtone det logiske niveau fra + 5V bruger vi spændingsdelerkredsløb. Vi har diskuteret Voltage Divider Circuit tidligere undersøgt det for yderligere afklaring. Hvad vi vil gøre er, vi bruger to modstande til at opdele + 5V-logik i 2 * 2,5V-logik. Så efter division vil vi give + 2.5v logik til PI. Så når logik '1' præsenteres af ADC0804, vil vi se + 2.5V ved PI GPIO Pin i stedet for + 5V.
LM35 temperaturføler:
Nu til aflæsning af rumtemperatur har vi brug for en sensor. Her skal vi bruge LM35 temperaturføler. Temperatur måles normalt i ”Celsius” eller “Fahrenheit”. “LM35” -sensor leverer output i grad Celsius.
Som vist i figur er LM35 en trebenet transistorlignende enhed. Stifterne er nummereret som, PIN1 = Vcc - Strøm (tilsluttet til + 5V)
PIN2 = Signal eller output (tilsluttet ADC-chip)
PIN3 = Jord (tilsluttet jord)
Denne sensor giver variabel spænding ved udgangen, baseret på temperatur. For hver +1 celsius temperaturstigning vil der være + 10mV højere spænding ved udgangsstiften. Så hvis temperaturen er 0 ◦ celsius, vil sensorens output være 0 V, hvis temperaturen er 10 igr celsius, vil sensorens output være + 100 mV, hvis temperaturen er 25 ◦ C, vil sensorens output være + 250 mV.
Nødvendige komponenter:
Her bruger vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alle de grundlæggende hardware- og softwarekrav er tidligere diskuteret, du kan slå det op i Raspberry Pi Introduktion, bortset fra hvad vi har brug for:
- Tilslutningsstifter
- 1KΩ modstand (17 stykker)
- 10K pot
- 0,1 µF kondensator
- 100 µF kondensator
- 1000 µF kondensator
- ADC0804 IC
- LM35 temperaturføler
- Brødbræt
Kredsløb og arbejdsforklaring:
Forbindelserne, der er udført for at forbinde hindbær til ADC0804 og LM35, er vist i kredsløbsdiagrammet nedenfor.
LM35-udgangen har mange spændingsudsving; så en 100uF kondensator bruges til at udjævne output, som vist i figuren.
ADC har altid masser af støj, denne støj kan i høj grad påvirke ydeevnen, så vi bruger 0,1 uF kondensator til støjfiltrering. Uden dette vil der være store udsving ved output.
Chippen fungerer på RC (Resistor-Capacitor) oscillatorur. Som vist i kredsløbsdiagrammet danner C2 og R20 et ur. Den vigtige ting at huske her er, at kondensatoren C2 kan ændres til en lavere værdi for højere ADC-konverteringshastighed. Men med højere hastighed vil der være fald i nøjagtighed. Så hvis applikationen kræver højere nøjagtighed, skal du vælge kondensatoren med højere værdi og vælge højere kondensator med højere værdi.
Som tidligere fortalt leverer LM35 + 10 mV for hver celsius. Den maksimale temperatur, der kan måles med LM35, er 150 ºC. Så vi har maksimalt 1,5V ved LM35-udgangsterminalen. Men standardreferencespændingen på ADC0804 er + 5V. Så hvis vi bruger denne referenceværdi, vil opløsningens output være lav, fordi vi maksimalt bruger (5 / 1,5) 34% af det digitale outputområde.
Heldigvis har ADC0804 en justerbar Vref-pin (PIN9) som vist, dens pin-diagram ovenfor. Så vi indstiller chipens Vref til + 2V. For at indstille Vref + 2V skal vi give en spænding på + 1V (VREF / 2) ved PIN9. Her bruger vi 10K pot til at justere spændingen ved PIN9 til + 1V. Brug voltmeteret til at få den nøjagtige spænding.
Vi har tidligere brugt LM35 temperaturføler til at læse stuetemperatur med Arduino og med AVR Microcontroller. Kontroller også fugtigheds- og temperaturmåling ved hjælp af Arduino
Programmeringsforklaring:
Når alt er tilsluttet i henhold til kredsløbsdiagrammet, kan vi tænde PI for at skrive programmet i PYHTON.
Vi vil tale om få kommandoer, som vi skal bruge i PYHTON-programmet, Vi skal importere GPIO-filer fra biblioteket, nedenstående funktion giver os mulighed for at programmere GPIO-ben på PI. Vi omdøber også "GPIO" til "IO", så når vi vil henvise til GPIO-ben i programmet, bruger vi ordet 'IO'.
importer RPi.GPIO som IO
Nogle gange, når GPIO-stifterne, som vi prøver at bruge, udfører måske nogle andre funktioner. I så fald modtager vi advarsler, mens vi udfører programmet. Kommandoen nedenfor fortæller PI at ignorere advarslerne og fortsætte med programmet.
IO.setwarnings (Falsk)
Vi kan henvise GPIO-benene på PI, enten ved pin-nummer om bord eller ved deres funktionsnummer. Ligesom 'PIN 29' på tavlen er 'GPIO5'. Så vi fortæller her, enten skal vi repræsentere stiften her med '29' eller '5'.
IO.setmode (IO.BCM)
Vi indstiller 8 ben som inputstift. Vi registrerer 8 bit ADC-data ved hjælp af disse ben.
IO.opsætning (4, IO.IN) IO.opsætning (17, IO.IN) IO.opsætning (27, IO.IN) IO.opsætning (22, IO.IN) IO.opsætning (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Hvis betingelsen i selerne er sand, vil udsagnene i sløjfen blive udført en gang. Så hvis GPIO-pin 19 går højt, udføres udsagnene inde i IF-sløjfen en gang. Hvis GPIO-stift 19 ikke går højt, udføres udsagnene inden i IF-sløjfen ikke.
hvis (IO.input (19) == True):
Nedenstående kommando bruges som evigt løkke, med denne kommando udføres udsagnene inde i denne løb kontinuerligt.
Mens 1:
Yderligere forklaring på koden findes i kodeafsnittet nedenfor.
Efter at have skrevet programmet er det tid til at udføre det. Før vi udfører programmet, kan vi tale, hvad der sker i kredsløbet som et resumé. Den første LM35-sensor registrerer rumtemperaturen og giver en analog spænding ved dens udgang. Denne variable spænding repræsenterer temperaturen lineært med + 10mV pr. ºC. Dette signal føres til ADC0804-chip, denne chip konverterer den analoge værdi til digital værdi med 255/200 = 1,275 tæller pr. 10mv eller 1,275 tælling for 1 grad. Denne optælling optages af PI GPIO. Programmet konverterer optællingen til temperaturværdien og viser den på skærmen. Den typiske temperatur aflæst af PI er vist nedenfor, Derfor har vi denne Raspberry Pi temperaturmonitor.