Locomotiva Zonama

Jucării automatizate. Detectează mișcarea unei locomotive pe o șină. Aplicație Genuino/Arduino.

Publicat pe Publicat în Electronică, Genuino, Micro

Faptul că oferă posibilități de dezvoltare rapidă și eficientă face ca platforma Arduino să fie o minune pentru cei pasionați de electronică și DIY deopotrivă.

Hai să vă dau un exemplu distractiv. În acest mini-proiect propun detectarea momentelor când o jucărie, aici o locomotivă, trece prin anumite puncte de demarcație de pe o șină. Vom aprinde leduri diferite, reprezentând fiecare o culoare a semaforului, în funcție de poziția prin care trece trenul la un moment dat.

Fișa de achiziții

  1. Jucăria în sine – o locomotivă care se plimbă pe o șină
  2. Diode Reed – acestea vor fi folosite drept senzori cu care se va detecta mișcarea din apropierea lor
  3. Un magnet – recomand unul puternic de forma unui bănuț
  4. Cabluri subțiri de cupru
  5. Arduino/Genuino Micro original, deși se poate folosi aproape orice placă de acest tip sau dacă vă țin forțele, chiar un circuit cu microcontroler programabil cu 8 pini (de exemplu PIC12f675, un chip de ~4-5 RON)
  6. Rezistențe de diferite valori (vezi în explicațiile de mai jos), aici 400, 120, respectiv 320 ohmi.
  7. Unelte: pistol de lipit, fludor, bandă izolatoare.

Schema proiectului

Principiul de bază care stă la baza acestui proiect este felul de funcționare a unei diode Reed. Aceasta închide circuitul când este sub influența unui câmp magnetic și deschide circuitul în lipsa acestuia.

Dar cum detectăm poziția locomotivei? Recomand lipirea magnetului pe spatele jucăriei, iar diodele Reed se vor afla sub șină (sau sub suportul de hârtie pe care este așezată aceasta). În momentul în care locomotiva se va deplasa pe deasupra acestora, diodele vor lăsa curentul să circule. Acum ne vom folosi de principiul divizorului de tensiune pentru a citi pe același pin valori diferite, în funcție de dioda care va fi activată. Pentru logica integrată vom folosi o placă de dezvoltare Arduino Micro sau orice placă Genuino sau un chip de 8 pini (de exemplu, un PIC12f675).

Figura 1. Schema sumară (Fritzing) – poate fi scalată prin adăugarea de contacte Reed.

Pentru a micșora numărul de pini de semnalizare a activării unei diode se va folosi ADC0 (A0). Aici vom citi o valoare de tensiune analog și o vom converti la un număr digital pe 8 biți.

Cum funcționează un ADC (Analog to Digital Converter)? În cazul nostru va împărți intervalul 0-5 V în 256 de sub-intervale egale, iar valorile analog care se află într-un anumit interval vor fi convertite în indexul intervalului (o valoare digitală deci). Mai multe informații și pe Hardware Secrets.

Culorile din Figura 1 corespund:

  • portocaliu: tensiunea citită de ADC de la divizorul de tensiune.
  • negru: circuitul care duce la masă.
  • roșu: alimentare (se aduce de la pinul de 5V al plăcii de dezvoltare).

Explicația matematică

Avem practic 2 circuite care se pot închide, în funcție de aducerea sub un câmp magnetic a contactelor S1, respectiv S2. Pentru S1 închis tensiunea la masă va fi:

V_{citit1}=\frac{R_1}{R_1+R_3}*V_{max}, iar pentru S2 închis va fi V_{citit2}=\frac{R_1}{R_1+R_2}*V_{max}, conform legii lui Ohm. [lextex]V_{max}[/latex] este 5V, iar R_1 și R_2 au valorile din Figura 1.

Valoarea citită de ADC va fi [\frac{V_{citit}/V_{max}}x256{}], unde [] este partea întreagă.

Finalizarea

O abordare pentru codul programului este citirea permanentă a valorii de tensiune prezente la portul de ADC și luarea unei acțiuni dacă aceasta egalează valoarea dată de închiderea circuitului S1, respectiv S2. Poate fi mimat un semafor cu 2 leduri, care la trecerea peste S1 să se transforme în roșu, iar la trecerea peste S2 să se transforme în verde. Dar cu imaginație se pot face multiple variațiuni. Succes la tinkering! 😉

Pentru a vedea implementări asemănătoare, recomand vizualizarea puzzle-ului stea al Sălii Tronurilor, de la escape-room-ul Locked-In, un proiect realizat în colaborare cu Zonama.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *