![]() | În acest articol, vom vedea cum să construiască un dispozitiv capabil să citească şi să afişeze într-un ecran de înălţimea nivelului de apă într-un bine sau un rezervor. Open Source va folosi un dispozitiv hardware numit Arduino , un senzor de ultrasunete pentru a măsura înălţimea de apă, un display LCD de 16 caractere pe două linii şi o sonerie, care ne va avertiza în cazul în care nivelul depăşeşte un anumit prag. |
Vedere
Proiectul, aşa cum am menţionat deja, este compus din mai multe părţi. Un senzor sonar pentru a fi poziţionat în partea superioară a bine (departe de apa), care se uită în jos, astfel încât pentru a măsura distanţa dintre punctul cel mai înalt de bine şi de apă. Având o simplă diferenţă între înălţimea de la partea de jos a senzorului şi citeşte contorul se obţine înălţimea de apă. La intervale de timp prestabilite cantitatea de apă vor fi citite şi afişate. Dacă nivelul depăşeşte un prag declanşat o alarmă care sună soneria, până la nivelurile de revenire sub pragul sau atunci când porniţi manual de pe sonerie.
Arduino controlează logica de operare, printr-un program pe care o vom vedea mai jos, şi gestionează toate dispozitivele.
Arduino
Arduino este un open-source electronice platformă bazată pe simplitate şi uşurinţa de utilizare. Este tocmai aceste caracteristici, care este utilizat de către artişti, de proiectare, pasionati si oricine este interesat de crearea de obiecte interactive sau medii.
Acesta acceptă un număr mare de senzori şi este programat printr-un limbaj care are multe similitudini cu C. Din site-ul proiectului puteţi descărca un mediul cu editorul, compilatorul şi funcţia de încărcare. Tot ce avem nevoie pentru a programa Arduino. Puteţi utiliza, de asemenea, instrumente de linie de comandă, dar acum ne vom ocupa de acest lucru.
Schema de conexiune
PCB-uri
Sketchbook
Mai jos este programul încărcat pe Arduino. Codul este foarte simplu, mai ales daca stiti deja C sau C + +. Reţineţi că nu are funcţia principală (), executarea începe prin invocarea configurare function () numai o dată la punerea în funcţiune a dispozitivului şi apoi bucla funcţia de bucla ().
/* initialize the library with the numbers of the interface pins */ LiquidCrystal lcd ( 12 , 11 , 5 , 4 , 3 , 6 ) ; int mute = 0 ; byte * getChar ( int n , byte newChar [ ] ) { int i ; byte / * - * - Mode: C - * - * / / *** pozzo.pde * Versiune: 1.2 * / # include <liquidCrystal.h> PING_PIN 13 # define # define # define SWITCH_INT BUZZER_PIN 8 0 / * 0 => PIN 2 * / # define PI 3.1415926535898 # define SUPERFICE_BASE (R_POZZO R_POZZO * pi *) # define SIZE_BAR (16 * 5) # define ALARM_ICON 0 / * cod * / # define SOUND_ICON 6 / * cod * / # define SOUND_ICON_ON 7 / * codul * / # define R_POZZO 0,5 / * raza de bine (m) * / # define H_POZZO 146.0 / * cm * / # define SOGLIA_ALLARME_1 100 / * cm * / # define SOGLIA_ALLARME_2 120 / * cm * / # define DELAY_0 60000 / * ms , 1000 * 60 * 1 = 1 min * / # define DELAY_1 600 / * MS * / # define DELAY_2 200 / * ms * / / * initializeaza biblioteca cu numerele de pini interfata * / LiquidCrystal lcd (12, 11, 5, 4, 3, 6); mut int = 0; octeţi * getchar (int n, newChar byte []) {int i; bytes ] ; /* set up the LCD's number of rows and columns: newChar [8]; / * stabilit numărul de LCD de rânduri şi coloane: * LOW pentru a declanşa întrerupere Ori de câte ori este schimbarea PIN-ul mic, * pentru a declanşa pini de întrerupere Ori de câte ori modificările de valoare pentru a declanşa * RISING Când PIN merge de la mic la mare, pentru caderea * Când PIN merge de la mare la mic. SWITCH_INT , button , RISING ) ; /* initialize serial communication * / AttachInterrupt (SWITCH_INT, buton, în creştere); / * initializeaza de comunicaţie serială citi din nou înălţime wather ; // litres = SUPERFICE_BASE * (hWather / 100.0) * 1000 litres = floor ( SUPERFICE_BASE * hWatherCm * 10 ) ; lcd. print ( litres ) ; lcd. print ( " l cm - ") / / = SUPERFICE_BASE litri * (hWather / 100.0) * 1000 litri = podea (* SUPERFICE_BASE hWatherCm * 10);.. lcd de imprimare (litri); lcd print (" Serial.print ("cm ="); Serial.println (hWatherCm); DELAY_0 ) ; } } void print_histogram ( int hWatherCm ) { int i ; int bloks ; float histogram ; // hWatherCm : HPOZZO = histogram : nici o intarziere alarma (DELAY_0);}} void print_histogram (hWatherCm int) {int i; Bloks int, float histograma; / / hWatherCm: HPOZZO = histogramă: duration , hWatherCm ; /** * The PING))) is triggered by a HIGH pulse of 2 or more microseconds. * Stabilirea variabilelor pentru durata de masă, * şi distanţa în centimetri rezultatul: * / de lungă durată, hWatherCm; / *** PING))) este declansata de un impuls mare de 2 microsecunde sau mure. * Oferă un impuls scurt LOW în prealabil pentru a asigura un impuls curat de la înălţime: * Acelaşi cod PIN este utilizat pentru a citi semnalul de la PING))): o * HIGH a carui durata impulsului este perioada de timp (în microsecunde) * de la trimiterea de ping la primirea de ecou în afara de un obiect. PING_PIN , INPUT ) ; duration = pulseIn ( PING_PIN , HIGH ) ; /* convert the time into a distance * / PinMode (PING_PIN, INPUT); durata = pulseIn (PING_PIN, HIGH); / * converti timp într-o distanţă * Viteza sunetului este de 340.29 m / s sau 29,4 microsecunde pe centimetru. * Ping călătoreşte şi înapoi, ştiu să găsească distanţă de obiect * luăm jumătate din distanţa parcursă. microseconds / 29.387 / 2 ; } void button ( ) { // Serial.println("Pulsante premuto"); mute = ! mute ; lcd. setCursor ( 15 , 1 ) ; if ( ! mute ) lcd. write ( SOUND_ICON_ON ) ; else lcd. write ( 'X' ) ; } * / Return microsecunde / 29 387/2;} buton void () {/ / Serial.println ("apasat"); = mut mut;!.. Lcd SetCursor (15, 1), dacă (! Mute) Scrie LCD ( SOUND_ICON_ON). altfel lcd scrie ("X");}













Întâi de toate, felicitări pentru proiect. Sunt, de asemenea, realizarea ceva similar, pot să-mi spuneţi marca şi modelul de senzor ultrasonic şi LCD?
Multumesc pentru complimente,
pentru senzor ultrasonic am folosit Ping))) Parallax dintre cost şi de transport maritim este o sumă ordonat, dar am ales asta pentru că am vrut să fie sigur că a lucrat cu Arduino.
Pentru afişare poate alege orice, care este compatibil cu driverul Hitachi HD44780, care sunt cele mai de cele de pe piaţă. Singurul lucru de care aveţi nevoie pentru a viziona este pin-out-uri, deoarece se poate schimba de la model la model.
Buna ziua! De asemenea, am făcut ceva foarte asemănător, aşa cum am folosit saensore SFR05, am vrut să întreb dacă măsura este corectă DLE senzorul atunci când senzorul este plasat în interiorul rezervorului, care în cazul meu, este un rezervor de 1000 litri subteran, am observat că în mod clar mediul este foarte umed, şi a condensului risc de scurt-am, nu ştiu cum să obţineţi împreună cu SUA capsule .... Pentru un prim test, se pare că măsurile sunt mai mici decât real ...
Eşti conştient de modificări ale caracteristicilor de apă bombardaţi cu ultrasunete ..?
Pe curând.
Marcaţi
Am o masura destul de precise, ar trebui să fie atent pentru a plasa senzorul departe de peretii rezervorului, şi perpendicular pe apă. `Nu ştiu dacă suprafaţa apei afectează ultrasunete, vă-vă că la viteze de sunet variază în funcţie de umiditate, dar` aici `vorbim despre câţiva metri ... diferenţa este practic neglijabil.
Am vrut să întreb dacă aţi luat-o oarecare măsură, pe senzorul de ... au folosit-o cutie ABS sigiliu etanş cu silicon două capsule ..? Am pus srf05 intr-o cutie de metal cu găuri pentru a elibera capsula.
Problemele sunt, probabil, 2, care a latura scurtă a PCB a senzorului din cauza umidităţii ridicate şi condensarea, celălalt este relativsa capsule sine, care este, chiar dacă izolarea şi PCB de capsule trebuie neapărat să fie în contact cu aerul umed şi condenza ... Arruginirsi va fi în cele din urmă ..?
Orice sfaturi?
Mulţumiri
Exact, am pus senzor ultrasonic într-o intersecţie statola, cele din plastic şi am făcut două găuri pentru a lăsa să iasă de senzori. Dacă eu pot să-l facă nişte poze. Ei bine, am doar pus în masă, există 3 fire (2 + 1 de alimentare semnal de alimentare) care provin din cutie şi să ajungă la restul circuitului, care este uscat.
Deci, dacă am înţeles că într-o casetă rezistentă la apă "în jurul valorii de masa (capsule si circuitino), apoi cele 3 fire ajung operator (Arduino, sau alte lucruri ...)
Şi toate funza ..? nu crea o condensare fricos în interiorul casetei ..? faci cu gauri mici de ventilaţie sau nu ..?
Dă-mi detalii, cu ...
PS: Idale ar putea avea pentru a obţine de aer în caseta, probabil printr-un tub care iese din rezervor ... Dar ea devine mult mai complicat atunci ...
Multumesc pentru sfaturi.
Marcaţi
Alo
De asemenea, am vrut să creeze un obiect ca acest x verifica bine de apa.
Poate să-mi daţi lista de echipamentele achiziţionate, pe care am încerca să cumpere tot ceea ce, în speranţa de a reuşi?
Mulţumiri
Componente:
Arduino 1
1 10K ohm rezistor
1 buzzer
1 buton
1 senzor ultrasonic Ping))) Parallax
1 16x2 LCD Compatibil cu Hitachi HD44780 cip de afişare
1 10k potenţiometru
Buna ziua,
Îmi pare rău dacă am sparge chiar, o altă întrebare ..
ar fi posibil, atunci să-l văd prin LAN?
de exemplu, "dacă am lua un Arduino, cu ethernet, atunci am putea vedea datele prin LAN?
Da, acesta este un lucru foarte frumos de a face ... Am, din păcate, cabluri Ethernet departe de circuit. Dacă aveţi un server disponibil, va pot stoca date într-o bază de date şi apoi face o pagina web cu o grafică.
Rezumatul întrebări şi se adaugă 1, deoarece "şi bine" despre 20/25m, aşa că am vrut să înţeleagă cum de a face cu ultrasunete .. x
1) 1 sonerie această dimensiune?
2) 1 10k potenţiometru ce este?
3) au folosit o cutie de 7 locuri BTICINO corect? cum ai setat lcd? Mă refer la masca neagra este văzut
4) Când şi "de imprimare mare, vreau să spun în mărime ..
5) Aţi utiliza un audio stereo jack x conectarea cu ultrasunete? şosete, apoi roşu, şi negru?
6) cum ştiu că apa şi "între 20 - 25m? Am înţeles paralaxa nu este bună.
Sonar Parallax citire de la o distanţă de 2 cm la 3 m, deci nu este bine pentru dumneavoastră de bine. Am incercat pe cineva mai puternic, dar vine pana la 6m, nu cred că există unul care ajunge la 25m, dar poate ai mai mult noroc decât mine.
Dacă nu se poate face cu sonar dumneavoastră vă poate lua în considerare utilizarea unui senzor de presiune să fie plasate în partea de jos de bine, de a citi ca apa se duce în jos, pur şi simplu pune greutatea de apă, apă mai există `şi cântăreşte mai mult. Din această valoare poate înălţime ricavarti. `Dar nu am să vă dau mai multe informatii despre el.
Pentru alte întrebări ... Buzzer este o afacere care sună atunci când alimentat, este unul care funcţionează cu 5V. Potenţiometru este folosit pentru a seta luminozitatea ecranului de caractere, nu este nevoie să-l transforma peste si peste, o dată set rămâne fix, de aceea l-am pus înapoi în circuit. Caseta este BTICINO 7 locuri, fata este o placa de otel neagra pe care am făcut cu mâna. Jack îl puteţi folosi pentru orice o am servit cu 3 fire si am folosit audio, chiar dacă nu-mi place ca o soluţie, dacă am avut de a face din nou, mi-ar folosi de conectori care sunt sudate direct pe PCB.
Sper ca am clarificat toate îndoielile
crezi ca pot folosi acest tip sonar, fără a modifica circuitul sau de program?
şi "un MB1361: XL-MaxSonar-AEL1 face de 10 metri .. dar am pus 10 de metri de cablu, si am rezolvat ...
Am decis să "întinde" de cablu şi apoi ia-o de o fata de 6 metri .. simt .. Eu folosesc acest lucru în opinia dumneavoastră?
http://www.robot-italy.com/product_info.php?cPath=15_48_146&products_id=99 şi "Devantech SRF10.
Fără a schimba circuit / SW, pentru că "aşa", am lua totul de la un singur site si cumpara, de asemenea, de manipulare caseta x ..
Ce crezi?