Talaan ng mga Nilalaman:

Fault-Tolerant Temperature Sensor Network Controller: 8 Hakbang
Fault-Tolerant Temperature Sensor Network Controller: 8 Hakbang

Video: Fault-Tolerant Temperature Sensor Network Controller: 8 Hakbang

Video: Fault-Tolerant Temperature Sensor Network Controller: 8 Hakbang
Video: REVAN - THE COMPLETE STORY 2024, Nobyembre
Anonim
Mali-Tolerant Temperature Sensor Network Controller
Mali-Tolerant Temperature Sensor Network Controller

Ipinapakita sa iyo ng Instructable na ito kung paano i-convert ang isang Arduino Uno board sa isang solong-layunin na controller para sa isang hanay ng mga sensor ng temperatura ng DS18B20 na may kakayahang awtomatikong pag-iisa ng mga may sira na sensor.

Ang pamamahala ay maaaring pamahalaan ang hanggang sa 8 sensor na may Arduino Uno. (At higit pa sa Arduino Mega o may isang bahagyang pagbabago ng software.)

Hakbang 1: Kuwento sa Likod…

Ilang taon na ang nakalilipas na nag-set up ako ng isang network ng sensor ng temperatura ng DS18B20 sa greenhouse ng aking ama para sa aking pi-based na heating controller. Sa kasamaang palad, ang pagiging maaasahan ng tagakontrol ay hindi maganda pangunahin dahil sa madalas na pagkawala ng sensor. Sinubukan ko ang maraming pag-setup - lakas ng parasito, direktang lakas, pagkonekta sa network sa pi pati na rin ang pagkonekta nito sa pasadyang board na nakabatay sa Atmega (na pangunahing layunin ay upang himukin ang mga motor na balbula).

Ano ang mas masahol pa, ang pagiging maaasahan ng sensor ng network ay bumaba higit sa lahat sa mga gabi ng taglamig habang halos walang mga problema sa tag-init! Ano ba ang nangyayari dito?

Upang siyasatin kung aling sensor ang sanhi ng problema, lumitaw ang isang pangangailangan upang i-on / i-off ang mga ito nang paisa-isa o paganahin ang anumang kumbinasyon ng mga ito.

Hakbang 2: Paano Ito Gumagana

Ang DS18B20 (ang sensor ng temperatura) ay gumagamit ng pagmamay-ari na 1-wire na protokol na nagpapahintulot sa maraming mga sensor na ibahagi ang karaniwang link ng data (na isang kawad). Ang karaniwang link ng data na ito ay konektado sa isa sa mga pin ng GPIO ng Arduino at sa + 5 V sa pamamagitan ng isang resistor na pull-up - walang bihira, maraming mga tagubilin ang sumasaklaw sa pag-set up na ito.

Ang lansihin ay ang kapangyarihan ng bawat lead ng sensor ay nakakonekta sa pagmamay-ari (nakatuon) na mga GPIO pin, upang maaari silang mai-on at i-off nang magkahiwalay. Halimbawa, kung ang isang sensor ay may Vcc lead na konektado sa pin # 3 at GND upang i-pin ang # 2, ang setting ng pin # 3 sa HIGH ay nagbibigay ng lakas para sa sensor (walang sorpresa) habang ang setting ng pin # 2 sa LOW ay nagbibigay ng ground (isang litte sorpresa para sa ako). Ang pagtatakda ng parehong mga pin sa mode ng pag-input ay (halos) ganap na ihiwalay ang sensor at ang mga kable nito - kahit na anong pagkabigo (e. Isang shortcut) ang nangyayari sa loob nito, hindi ito makagambala sa iba pa.

(Makatarungang sabihin na ang pagkonekta sa data wire sa ibang bagay na konektado sa paanuman sa Arduino ay talagang magiging sanhi ng pagkagambala, ngunit ito ay halos imposible sa aking pag-set up).

Pansinin na ang DS18B20 ay kumonsumo ng hanggang sa 1, 5 mA habang ang isang Arduino pin ay maaaring mapagkukunan / lumubog hanggang sa 40 mA, kaya perpektong ligtas ito sa mga sensor ng kuryente ng mga GPIO pin nang direkta.

Hakbang 3: Mga Materyal at Tool

Materyal

  • 1 Arduino UNO board
  • 3 babaeng mga header ng pin: 1 × 4, 1 × 6 at 1 × 6 (o mas mahaba - pinutol ko ang mga ito mula sa isang 1 × 40 header)
  • isang pandikit
  • isang piraso ng hubad na wire wire (hindi bababa sa 10 cm)
  • isang tape ng pagkakabukod
  • mga nahahabol na panghinang (wire, flux…)

Mga kasangkapan

  • kagamitan sa paghihinang (bakal, may hawak,…)
  • maliit na plato ng paggupit

Hakbang 4: Ayusin ang Mga Bagay na Magkasama

Ayusin ang Mga Bagay na Magkasama
Ayusin ang Mga Bagay na Magkasama

Kola ang mga babaeng pin header sa Arduino board header:

  1. 1 × 4 na header sa tabi ng "analog" na pin header, tabi-tabi sa mga pin na A0 – A4
  2. 1 × 6 na header sa tabi ng unang digital pin header, tabi-tabi na may mga pin 2-7
  3. 1 × 6 na header sa tabi ng pangalawang digital pin header, tabi-tabi na may mga pin na 8–13

Pansinin na ang aking mga header ay medyo mas mahaba … wala itong kahinaan at walang mga kalamang akala ko.

Hakbang 5: Sama-sama ang Wire Things

Wire Things Together
Wire Things Together
Wire Things Together
Wire Things Together

Pag-kable ng linya ng 1-wire bus:

  1. Ikonekta ang lahat ng mga lead ng nakadikit na mga header sa gilid na "digital" (katabi ng mga pin 2–13) sa pamamagitan ng paghihinang ng isang piraso ng hubad na kawad sa kanila
  2. Solder ang dulo ng kawad na ito sa SCL pin lead (panloob na konektado sa A5)
  3. Ikonekta ang lahat ng mga lead ng nakadikit na header sa gilid ng "analog" (mga pin na A0 – A3) sa pamamagitan ng paghihinang ng isang piraso ng hubad na kawad sa kanila
  4. Solder ang dulo ng kawad na ito sa A4 at A5 lead (Gumamit ako ng A5 at A6 dahil mayroon akong isang board na may A6 & A7)
  5. Maghinang ng isang 4k7 risistor sa pagitan ng iba pang mga dulo ng kawad na ito at +5 V pin lead

Mga Tala:

  • Ang Pins A0 – A5, kahit na minarkahan ng "analog", ay maaaring magamit bilang GPIO digital pin din.
  • Ang SCL pin sa "digital" na bahagi ay panloob na konektado sa A5 sa "analog" na bahagi; konektado sa mga header, bumubuo ito ng linya ng 1-wire bus
  • Sinusukat ng A4 (ginamit bilang analog input) ang boltahe ng bus para sa mga layuning diagnostic. Iyon ang dahilan kung bakit direktang konektado ito sa bus.
  • Gumamit ako ng A6 sa halip na A4 dahil mayroon akong isang board na may A6 & A7; orihinal na nais kong gamitin ang A7 bilang 1-wire bus master ngunit ang dalawang mga pin na ito ay hindi mai-configure upang maging digital GPIO.
  • Upang maiwasan ang maling koneksyon ng mga konektor ng sensor maaari mong alisin / gupitin ang hindi nagamit na contact (hindi konektado sa anumang kawad) mula sa bawat lalaking konektor at ipasok ito sa kaukulang butas sa nakadikit na header ng pin.

Hakbang 6: Pagkonekta sa Mga Sensor

Pagkonekta sa Mga Sensor
Pagkonekta sa Mga Sensor

Lumikha ka lamang ng isang hanay ng walong mga 2 × 2 na socket. Maaari kang maghinang at magtipun-tipon ng 2 × 2 Dupont connectors sa mga sensor cable at ikonekta ang mga ito sa mga socket na ito. I-configure ng software ang mga pin upang kahit na ang mga pin ay mga pin ng GND at ang mga kakaibang pin ay mga Vcc pin. Para sa bawat sensor, ang Vcc pin ay GND pin + 1. Ang isa sa iba pang dalawang mga pin ng 2 × 2 socket (isa sa dalawang iyon sa nakadikit at soldered na header) ay para sa data wire ng sensor. Hindi mahalaga kung alin ang ginagamit mo.

Hakbang 7: Controller Software

Controller Software
Controller Software

Pinapatakbo ng sketch ng SerialThermometer ang controller. Mahahanap mo ito sa github. Buksan at i-upload gamit ang Arduino IDE.

Hakbang-hakbang:

  1. Buksan ang iyong Arduino IDE at i-install ang DallasTemperature library at lahat ng mga dependency nito sa pamamagitan ng Sketch | Isama ang Library | Pamahalaan ang Mga Aklatan.
  2. Repository ng clone git. Kung hindi pamilyar sa git, i-download at i-unpack ang zip na ito saanman sa iyong computer.
  3. Buksan ang SerialThermometer sketch sa iyong Arduino IDE.
  4. Ikonekta ang iyong binagong Arduino board sa iyong computer sa pamamagitan ng USB cable (karaniwang paraan)
  5. I-upload ang sketch gamit ang iyong Arduino IDE
  6. Buksan ang Serial Monitor sa pamamagitan ng Mga Tool | Serial Monitor
  7. Dapat mong makita ang output ng diagnostic na naglalaman ng maraming mga pisikal na sukat na sinusundan ng mga pagbabasa ng temperatura - bawat sensor socket sa solong linya. Kung ang bilang ng sensor ay naiiba kapag naka-on nang magkahiwalay at kapag ang lahat ay naka-on nang magkasama), mga diagnostic na loop hanggang sa malutas. Ngunit walang pag-aalala, nagbibigay din ng diagnostic ang mga sukat ng temperatura!

Tingnan ang anotadong larawan para sa higit pang detalye tungkol sa output ng diagnostic.

Hakbang 8: Konklusyon

Mayroon akong isang malakas na pakiramdam na ang aking pagkabigo ng sensor network ay sanhi ng mataas na capacitance ng aking mahabang mga kable - sa paligid ng 10 m ng LIYY 314 (3 × 0, 14 mm²) cable para sa bawat sensor. Ipinakita ng aking mga eksperimento na masisira ang komunikasyon kung mayroong capacitance sa paligid o mas mataas sa 0.01 μF sa pagitan ng 1-wire bus at ground, sa palagay ko dahil ang 4k7 pull-up risistor ay hindi mahila ang bus sa + 5 V na sapat na mabilis upang sumunod sa mga limitasyon ng protocol.

Sa aking pag-set up nangyayari ito kapag ang higit sa 3 mga sensor ay konektado magkasama. Pagkatapos, ang mga loop ng controller sa ikot ng diagnostic, pagsukat ng sensor ng sensor ayon sa sensor (kung ano ang cool din …)

Ngunit ang 5th sensor din (28: ff: f2: 41: 51: 17: 04: 31) ay mukhang may sakit (baka mali ang paghihinang), kaya't maaari pa akong mag-imbestiga!

Inirerekumendang: