Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Aparat de masurat distante cu ultrasunete
Introducere
Dispozitivul masoara distante de pana la 140 centimetri si le afiseaza pe un afisaj cu LED-uri.
Aparate de masurat distante cu ultrasunete exista deja in mediul industrial, unde o distanta maxima masurata de cativa metri este suficienta pentru eficienta.
Se foloseste principiul SONAR. Transmitatorul trimite o unda de ultrasunete la frecventa de 40kHz spre obiectul tinta. Unda se va reflecta si va ajunge inapoi la receptor. Procesorul calculeaza cat timp ii ia undei sa parcurga distanta pana la obiect si inapoi. Cunoscand viteza sunetului, 340.29 m/s, si stiind timpul de parcurgere, aflam dublul distantei pana la obiect, pe care o impartim la doi. Am calculat ca un milimetru este parcurs in 2,93 us, deci un centimetru va fi parcurs in 29,3 us, aproximat la 30us. Se iau 10 masuratori dupa care se face o medie care se afiseaza pe un display cu LED-uri.
Posibilitati de imbunatatire: in lipsa de resurse materiale si de timp, raza de actiune a dispozitivului este relativ mica, insa poate fi marita pana la cativa metri. De asemenea, pentru o masuratoare mai exacta, se pot lua mai multe masuratori, multiplu de 10. Se poate lua in considerare si cosmetizarea dispozitivului (includerea intr-o carcasa).
Detaliere functionalitati
Aparatul este alimentat de doua baterii de 9 volti in serie. Cu ajutorul unui regulator de voltaj, se obtine o tensiune de 5 volti pentru alimentarea inclusiv a microcontrollerului. Acesta efectueaza operatiile urmatoare: la fiecare ~48ms (TIMER0) lanseaza un impuls catre transmitator, care trimite o unda de ultrasunete catre obiectul tinta. TIMER1 masoara timpul necesar intoarcerii undei la receptor. Atunci cand receptorul primeste unda inapoi, un contor, incrementat la fiecare 30us, reprezinta tocmai distanta dus intors in centimetri. Aceasta distanta se adauga la o suma din care va rezulta media a 10 masuratori.
Partea a doua
Piese folosite:
Circuitul de putere:
Receptorul
Transmitatorul:
Microcontrollerul:
. 4K Bytes de memorie flash In-System Reprogrammable
. Anduranta: 1,000 cicluri de Scriere/Citire
. 0 Hz to 24 MHz
. Trei nivele Program Memory Lock
.
128 x 8-bit Internal
. 32 linii intrare iesire programabile
. Doua 16-bit Timere
. Sase surse de intrerupere
. Canal serial programabil
. Low-power Idle si Power-down Modes
Transmitator-receptor
UST40T si UST40R
LM311: high speed voltage comparator
LM317 (regulator de voltaj):
74HC14N Trigger Schmitt (invertor):
74HC04N invertor
Display:
Listing soft:
INCLUDE 8051.mc
ORG 00h
JMP BEGIN
ORG 03h ; INT0
JMP PULS
ORG 0Bh ; TIMER0
JMP TMR0
ORG 1Bh ; TIMER1
JMP TMR1
ORG 33h
BEGIN:
; activare/configurare sistem intreruperi
MOV TMOD, #00010001b
MOV IP, #00000001b
SETB IT0 ; prindere apasare B0 pe tranzitie din 1 in 0
MOV IE, #10000011b ; activam intreruperile pentru timer 0
SETB TR0; pornim ceas 0
; cifrele fara punct pentru afisare
MOV 10H, #11010111b ; cifra 0
MOV 11H, #00010100b ; cifra 1
MOV 12H, #11001101b ; cifra 2
MOV 13H, #01011011b ; cifra 3
MOV 14H, #00011110b ; cifra 4
MOV 15H, #01011011b ; cifra 5
MOV 16H, #11001111b ; cifra 6
MOV 17H, #00010101b ; cifra 7
MOV 18H, #11011111b ; cifra 8
MOV 19H, #01011111b ; cifra 9
; initializari
MOV P0, #0
MOV P1, #0
MOV P2, #0
MOV R1, #0
MOV R2, #0
MOV R3, #0
MOV R3, #0
MOV R4, #0
MOV R5, #0
MOV R6, #0
MOV R7, #0
LOOP:
CALL AFIS ; apelare afisare
JMP LOOP
TMR0:
MOV R7, #0
SETB P1.0 ; transmitem impulsul catre transmiter
MOV TH1, #11111111b ; configuram timer 1 sa masoare de la 65496 la 65536 => 40 cicli ceas
MOV TL1, #11011000b
SETB TR1 ; start timer 1
MOV IE, #10001011b ; activam intreruperile pentru timer 0, 1 si linie externa
RETI
TMR1:
INC R7 ; numara distanta in multiplu de 30 microsec => in centimetri (pentru ca unda parcurge un cm in 30us)
CJNE R7, #0, NUME
INC R6
CJNE R6, #21, NUME
MOV R6,#10
NUME:
MOV TH1, #11111111b ; configuram timer 1 sa masoare de la 65496 la 65536 => 40 cicli ceas
MOV TL1, #11011000b
RETI
PULS: ; prindere impuls
CLR TR1
SETB P3.2
INC R5
CJNE R5, #10, RETURN
MOV A,R6
CLR C
RRC A
MOV R6,A
RRC A
MOV A,R7
MOV R7,A
MOV R5,#0
MOV A, R7
MOV B, #10
DIV AB
MOV R7, A
MOV A, R6
MOV B,#6
MUL AB
MOV B, #10
DIV AB
ADD A, R7
MOV R7, A
MOV A, R6
MOV B,#25
MUL AB
MOV R6, A
MOV A,R7
MOV B,#10
DIV AB
MOV R1,B
MOV B,#10
DIV AB
MOV R2,B
MOV B,#10
DIV AB
MOV R3,B
MOV A,R6
MOV B,#10
DIV AB
MOV R6,A
MOV A,R1
ADD A,B
MOV B,#10
DIV AB
MOV R1,B
ADD A,R6
MOV B,#10
DIV AB
MOV R6,A
MOV A,R2
ADD A,B
MOV B,#10
DIV AB
MOV R2,B
ADD A,R6
MOV R3,A
MOV R6,#0
MOV R7,#0
RETURN:
RETI
AFIS: ; afisare
MOV A, #10h
ADD A, R1
MOV R0, A
SETB P2.7
MOV P0, @R0 ; caracter 0
MOV A, #10h
ADD A, R2
MOV R0, A
CLR P2.7
SETB P2.6
MOV P0, @R0 ; caracter 1
MOV A, #10h
ADD A, R3
MOV R0, A
CLR P2.6
SETB P2.5
MOV P0, @R0 ; caracter 2
CLR P2.5
RET
Copyright © 2024 - Toate drepturile rezervate