- ADC0804 at Raspberry Pi:
- LM35 Temperatura Sensor:
- Kinakailangan ang Mga Bahagi:
- Circuit at Paggawa ng Paliwanag:
- Paliwanag sa Programming:
Karamihan naming sakop ang lahat ng Mga Pangunahing Mga Bahagi na nakikipag-ugnay sa Raspberry Pi sa aming Serye ng Tutorial ng Raspberry Pi. Saklaw namin ang lahat ng Mga Tutorial sa simple at detalyadong pamamaraan, upang ang sinuman, kung nagtrabaho siya kasama ang Raspberry Pi o hindi, ay madaling matuto mula sa Seryeng ito. At pagkatapos ng pagdaan sa lahat ng mga tutorial magagawa mong bumuo ng ilang mga proyekto sa Mataas na Antas gamit ang Raspberry Pi.
Kaya narito namin ang pagdidisenyo ng unang aplikasyon batay sa nakaraang mga tutorial. Ang unang pangunahing aplikasyon ay isang Temperatura sa Pagbasa ng Silid sa pamamagitan ng Raspberry Pi. At maaari mong subaybayan ang Mga Pagbasa sa computer.
Tulad ng tinalakay sa mga nakaraang tutorial, walang mga ADC channel na ibinigay sa loob sa Raspberry Pi. Kaya kung nais naming i-interface ang anumang mga analog sensor kailangan namin ng isang unit ng conversion ng ADC. At sa isa sa aming mga tutorial mayroon kaming Interfaced ADC0804 chip sa Raspberry Pi upang mabasa ang isang halagang analog. Kaya dumaan ito bago itayo ang Room Temperature Thermometer na ito.
ADC0804 at Raspberry Pi:
Ang ADC0804 ay isang chip na dinisenyo upang i-convert ang analog signal sa 8 bit digital na data. Ang chip na ito ay isa sa mga tanyag na serye ng ADC. Ito ay isang 8bit na yunit ng conversion, kaya mayroon kaming mga halaga o 0 hanggang 255 na halaga. Ang resolusyon ng maliit na tilad na ito ay nagbabago batay sa pinili naming boltahe ng sanggunian, pag-uusapan pa namin ito tungkol sa ibang pagkakataon. Nasa ibaba ang Pinout ng ADC0804:
Ngayon isa pang mahalagang bagay dito ay, ang ADC0804 ay nagpapatakbo sa 5V at sa gayon nagbibigay ito ng output sa 5V signal ng lohika. Sa 8 pin output (kumakatawan sa 8bits), ang bawat pin ay nagbibigay ng + 5V output upang kumatawan sa lohika'1 '. Kaya't ang problema ay ang lohika ng PI ay + 3.3v, kaya't hindi mo maibigay ang + 5V na lohika sa + 3.3V GPIO pin ng PI. Kung bibigyan mo ng + 5V ang anumang GPIO pin ng PI, nasisira ang board.
Kaya't sa antas ng step-down na lohika mula sa + 5V, gagamit kami ng circuit ng divider ng boltahe. Pinag-usapan namin ang Voltage Divider Circuit na dating tumingin dito para sa karagdagang paglilinaw. Ang gagawin namin ay, gumagamit kami ng dalawang resistors upang hatiin ang + 5V lohika sa 2 * 2.5V na mga lohika. Kaya pagkatapos ng paghahati magbibigay kami ng + 2.5v na lohika sa PI. Kaya, tuwing ang lohika na '1' ay ipinakita ng ADC0804 makikita namin ang + 2.5V sa PI GPIO Pin, sa halip na + 5V.
LM35 Temperatura Sensor:
Ngayon para sa Temperatura ng Pagbasa ng Silid, kailangan namin ng isang sensor. Dito ay gagamitin namin ang LM35 Temperature Sensor. Karaniwang sinusukat ang temperatura sa "Centigrade" o "Fahrenheit". Nagbibigay ang sensor na "LM35" ng output sa degree na Centigrade.
Tulad ng ipinakita sa figure, LM35 ay isang tatlong pin transistor tulad ng aparato. Ang mga pin ay bilang bilang, PIN1 = Vcc - Lakas (Nakakonekta sa + 5V)
PIN2 = Signal o Output (konektado sa ADC chip)
PIN3 = Ground (Nakakonekta sa lupa)
Nagbibigay ang sensor na ito ng variable boltahe sa output, batay sa temperatura. Para sa bawat +1 na pagtaas ng centigrade sa temperatura magkakaroon ng + 10mV na mas mataas na boltahe sa output pin. Kaya't kung ang temperatura ay 0◦ centigrade ang output ng sensor ay magiging 0V, kung ang temperatura ay 10◦ centigrade ang output ng sensor ay magiging + 100mV, kung ang temperatura ay 25◦ centigrade ang output ng sensor ay magiging + 250mV.
Kinakailangan ang Mga Bahagi:
Narito ginagamit namin ang Raspberry Pi 2 Model B kasama ang Raspbian Jessie OS. Ang lahat ng pangunahing mga kinakailangan sa Hardware at Software ay dati nang tinalakay, maaari mo itong tingnan sa Panimula ng Raspberry Pi, bukod sa kailangan namin:
- Kumokonekta na mga pin
- 1KΩresistor (17 piraso)
- 10K palayok
- 0.1µF capacitor
- 100µF capacitor
- 1000µF capacitor
- ADC0804 IC
- LM35 Temperatura Sensor
- Lupon ng Tinapay
Circuit at Paggawa ng Paliwanag:
Ang mga koneksyon na tapos na para sa Pagkonekta ng Raspberry sa ADC0804 at LM35, ay ipinapakita sa circuit diagram sa ibaba.
Ang output ng LM35 ay may maraming pagbabagu-bago ng boltahe; kaya ang isang 100uF capacitor ay ginagamit upang makinis ang output, tulad ng ipinakita sa figure.
Palaging may maraming ingay ang ADC, ang ingay na ito ay maaaring makaapekto sa pagganap, kaya gumagamit kami ng 0.1uF capacitor para sa Pagsala ng Noise. Kung wala ito magkakaroon ng maraming pagbabagu-bago sa output.
Gumagana ang maliit na tilad sa orasan ng oscillator ng RC (Resistor-Capacitor). Tulad ng ipinakita sa circuit diagram , ang C2 at R20 ay bumubuo ng isang Clock. Ang mahalagang bagay na dapat tandaan dito ay ang capacitor C2 ay maaaring mabago sa isang mas mababang halaga para sa mas mataas na rate ng conversion ng ADC. Gayunpaman sa mas mataas na bilis magkakaroon ng pagbaba sa kawastuhan. Kaya't kung ang application ay nangangailangan ng mas mataas na kawastuhan, piliin ang capacitor na may mas mataas na halaga at para sa mas mataas na bilis piliin ang capacitor na may mas mababang halaga.
Tulad ng sinabi nang mas maaga ang LM35 ay nagbibigay ng + 10mV para sa bawat centigrade. Ang maximum na temperatura na maaaring sukatin ng LM35 ay 150º centigrade. Kaya magkakaroon kami ng maximum na 1.5V sa terminal ng output ng LM35. Ngunit ang default na boltahe ng sanggunian ng ADC0804 ay + 5V. Kaya't kung gagamitin namin ang halagang iyon ng sanggunian, ang resolusyon ng output ay magiging mababa dahil gagamit kami ng maximum na (5 / 1.5) 34% ng saklaw ng digital na output.
Sa kabutihang palad ang ADC0804 ay may isang naaayos na Vref pin (PIN9) tulad ng ipinapakita nito sa Pin Diagram sa itaas. Kaya itatakda namin ang Vref ng chip sa + 2V. Upang maitakda ang Vref + 2V, kailangan naming magbigay ng boltahe na + 1V (VREF / 2) sa PIN9. Narito ginagamit namin ang 10K palayok upang ayusin ang boltahe sa PIN9 hanggang + 1V. Gamitin ang voltmeter upang makuha ang tumpak na boltahe.
Ginamit namin dati ang LM35 Temperature Sensor upang Basahin ang temperatura ng Room sa Arduino at sa AVR Microcontroller. Suriin din ang Humidity at Temperatura Pagsukat gamit ang Arduino
Paliwanag sa Programming:
Kapag ang lahat ay konektado ayon sa diagram ng circuit, maaari nating buksan ang PI upang isulat ang programa sa PYHTON.
Pag-uusapan natin ang ilang mga utos na gagamitin namin sa programa ng PYHTON, Mag-a-import kami ng GPIO file mula sa silid-aklatan, sa ibaba ang pagpapaandar ay nagbibigay-daan sa amin upang mai-program ang mga pin ng GPIO ng PI. Pinapalitan din namin ang pangalan ng "GPIO" sa "IO", kaya sa programa tuwing nais naming mag-refer sa mga GPIO pin gagamitin namin ang salitang 'IO'.
i-import ang RPi.GPIO bilang IO
Minsan, kapag ang mga GPIO pin, na sinusubukan naming gamitin, ay maaaring gumagawa ng ilang iba pang mga pagpapaandar. Sa kasong iyon, makakatanggap kami ng mga babala habang isinasagawa ang programa. Sa ibaba ng utos ay sinasabi sa PI na huwag pansinin ang mga babala at magpatuloy sa programa.
IO.setwarnings (Mali)
Maaari naming i-refer ang mga GPIO pin ng PI, alinman sa pamamagitan ng pin number sa board o ng kanilang function number. Tulad ng 'PIN 29' sa pisara ay 'GPIO5'. Kaya sasabihin namin dito alinman na ilalarawan namin ang pin dito sa pamamagitan ng '29' o '5'.
IO.setmode (IO.BCM)
Nagtatakda kami ng 8 mga pin bilang mga input pin. Madidiskubre namin ang 8 bit ng data ng ADC ng mga pin na ito.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Sakaling totoo ang kundisyon sa mga brace, ang mga pahayag sa loob ng loop ay naisasagawa nang isang beses. Kaya't kung ang GPIO pin 19 ay mataas, kung gayon ang mga pahayag sa loob ng IF loop ay papatayin nang isang beses. Kung ang GPIO pin 19 ay hindi mataas, kung gayon ang mga pahayag sa loob ng IF loop ay hindi naisakatuparan.
kung (IO.input (19) == Totoo):
Ang utos sa ibaba ay ginagamit bilang walang hanggang loop, kasama ang utos na ito ang mga pahayag sa loob ng loop na ito ay patuloy na isasagawa.
Habang ang 1:
Ang karagdagang Paliwanag ng Code ay ibinibigay sa Seksyon ng Code sa ibaba.
Matapos isulat ang programa oras na upang maipatupad ito. Bago magpatupad ng programa, hinahayaan ang mga pag-uusap kung ano ang nangyayari sa circuit bilang isang Buod. Nakita ng unang sensor ng LM35 ang temperatura ng kuwarto at nagbibigay ng isang analog boltahe sa output nito. Ang variable na boltahe na ito ay kumakatawan sa temperatura nang tuwid na may + 10mV bawat ºC. Ang signal na ito ay pinakain sa ADC0804 chip, ang chip na ito ay nagko-convert ng halaga ng Analog sa digital na halaga na may 255/200 = 1.275 na bilang per10mv o 1.275count para sa 1degree. Ang bilang na ito ay kinuha ng PI GPIO. Ang programa ay nagko-convert ang bilang sa halaga ng temperatura at ipinapakita ito sa screen. Ang karaniwang temperatura na nabasa ng PI ay ipinapakita sa ibaba, Samakatuwid namin ito monitor ng temperatura ng Raspberry Pi.