Sunteți pe pagina 1din 26

UNIVERSITATEA „POLITEHNICA” DIN BUCUREȘTI

FACULTATEA TRANSPORTURI

Departamentul Telecomenzi și Electronică în Transporturi

PROIECT
MICROCONTROLERE

Îndrumător Student
Ș.l. Dr. Ing Angel Ciprian Cormoş Adrian COSTICĂ

București
2022
1
UNIVERSITATEA „POLITEHNICA” DIN BUCUREȘTI
FACULTATEA TRANSPORTURI

Departamentul Telecomenzi și Electronică în Transporturi

Cântar electronic –
măsurarea masei

Îndrumător Student
Ș.l. Dr. Ing Angel Ciprian Cormoş Adrian COSTICĂ

București
2022

2
Cuprins

CAPITOLUL 1. INTRODUCERE...........................................................................................
1.1 DESCRIEREA PROIECTULUI..........................................................................................4
1.2 DESCRIEREA COMERCIALĂ..........................................................................................5
1.3 SCURT ISTORIC............................................................................................................6
CAPITOLUL 2. PROIECTARE HARDWARE.....................................................................
2.1 DESCRIEREA SENZORULUI SEN-10245.......................................................................9
2.2 SCHEMA BLOC...........................................................................................................10
2.3 SCHEMA ELECTRICĂ..................................................................................................14
2.3.1 Componente folosite în schema electrică.............................................................14
2.4 CABLAJ IMPRIMAT.....................................................................................................15
CAPITOLUL 3. PROIECTAREA SOFTWARE..................................................................
3.1 ORGANIGRAMA CODULUI..........................................................................................17
3.2 CODUL SURSĂ............................................................................................................18
CAPITOLUL 4. CONCLUZII................................................................................................
CAPITOLUL 5. BIBLIOGRAFIE.........................................................................................

3
Capitolul 1. Introducere
1.1 Descrierea proiectului
Am ales această temă, întrucât au fost multe cazuri în care aș fi avut nevoie de un
cântar, însă nu am deținut sau dețin unul.
Prezentarea generală a proiectului prezintă un scurt istoric al cântarului cât și detalii
despre modul în care a evoluat acesta de-a lungul timpului, cât și o descriere comercială care
are rolul de evidenția caracteristicile unui cântar digital și funcțiile pe care acesta le
îndeplinește.
Pe de altă parte, odată aleasă tema proiectului, am găsit a fi interesant ce se află în
”spatele” cântarului, descoperind modul de funcționare: cântarul electronic este împărțit în
doua părți: senzorii pentru cântărire – în număr de patru - și partea de procesare a informației
transmise de senzori; la acestea se aduagă și un display LCD pentru citire. Sub fiecare picior
există cadre care reacționează la orice schimbare, care sunt poziționați în așa fel încât
picioarele utilizatorului vor exercita o forță asupra acestori senzori.
Senzorii ce sunt folosiți pentru măsurare sunt cunoscuți și ca ”celule de sarcină” (load
cells). Celula de sarcină transformă o formă de energie într-un semnal electric.
Produsul prezentat incorporează senzorul ales pentru măsurarea masei corporale.
Cântarul pe care am decis să îl proiectez va avea uz casnic, cu o capacitate maximă de
măsură de 180 kg, cu o precizie de 50gr. Caracteristicile principale pe care aș vrea să le
îndeplinească cântarul ar fi: disponibilitatea de schimbare a unității de măsură ( kg / lb) prin
apăsarea unui buton, funcție de oprire automată sau pornire automată în momentul în care pui
picioarele pe platformă.
În următoarele capitole voi discuta amănunțit atăt partea de software cât și partea de
hardware ce ține de proiect.
Schema electrică va conține 4 senzori în fiecare din colțurile cântarului, ce vor fi
conenctați la circuitul de bază ce va conține o punte redresoare pentru acuratețea în măsurarea
cât și sursa de alimentare reprezentată de cele 2 baterii de 1.5V tip ”AAA”.
În cadrul proiectării hardware se va afla schema bloc a proiectului în care se va
prezenta modul de functionare, incepând cu alimentarea până la afișajul pe display.
Proiectarea software constă în prelucrarea datelor transmise de cei patru senzori,
ulterior rezultatul urmând să fie afișat pe ecranul LCD. Puntea redresoare va avea rolul de a

4
interpreta informația transmisă de fiecare senzor, trimitând aceste informații către circuitul de
afișare.

1.2 Descrierea comercială


Cântarul digital este un aparat casnic prezent în probabil fiecare locuință, fiind o
invenție versatilă. Comparativ cu un cântar clasic un cântar electronic oferă o precizie mult
mai mare atât pentru obiectele foarte mici, cât și pentru măsurătorile obiectelor mai mari.
Cântarul digital beneficinează de un ecran LCD, care poate aduce multe plusuri din
punct de vedere al comfortului, precum o bună vizualizare a rezultatului dorit.
De asemenea, recalibrarea rapidă se face ușor, compensând astfel atât variațiile de
câmp gravițional, cât și masa suplimentară a unui vas, coș sau echipament suplimentar. [24]

Figura 1. Cântar digital [25]

Cântarul prezentat în Figura 1 este un cântar electronic de baie – pe care îl voi urma
ca exemplu, dorind să obțin un rezultat similar, cu un preț mai bun și o precizie mai exactă.
Cântarul este de uz casnic, având culoarea neagră, materialul folosit este sticla
securizată, diviziunea de cântărire fiind de 100 g. Acesta are capacitatea de a măsura 2 unități
de măsură: kilogramre si livra și o greutate maximă suportată de 180 kg; va folosi două baterii
de 1.5V de tip ”AAA”; greutatea propriu-zisă a cântarului este de aproximativ 1.5kg; are o
durata de viață de cel până la 100 de ani; poate măsura începând cu 5kg până la 180 de kg;
temperaturile de funcționare 0 °C – 40 °C, umiditatea sub 85%; buton pentru setarea unității
de măsură (kg / lb).
Cântarul va folosi 4 senzori de tip ”load cell” TAS606, cu o capacitate de măsurare a
masei de 45kg, ceea ce va face posibilă masa maximă posibilă de măsurat a cântarului să fie
de 180kg.
5
Figura 2. TAS606 [23]

În funcție de necesități, cântarele electronice disponibile pe piață variază ca formă,


caracteristici și capabilități, astfel având toate opțiunile pe care și le-ar putea dori un posibil
cumpărător, fiind un dispozitiv de foarte bună calitate, al cărui raport calitate-preț este foarte
bun.

1.3 Scurt istoric


Cântarul sau balanța este un instrument pentru determinarea masei unui corp constând
dintr-o pârghie cu brațe egale și două talere, care echilibrează cu greutăți etalonate.
Căntarele se pot clasifica în mai multe moduri: după numărul de pârghii utilizate:
instrumente cu o pârghie, numite balanțe, care pot fi cu brațe egale sau inegale, instrumente
cu mai multe pârghii, numite bascule, la care brațele pârghiilor sunt în general inegale; după
modul de efectuare a cântaririlor: manuale, semiautomate, automate; după modul de instalare:
fixe, transportabile; după principiul de funcționare: mecanice, electromecanice.
Elementele de construcție mai importante ale aparatelor de cântărit sunt următoarele:
pârghiile, cuțitele, pernițele, plăcuțele limitatoare, paftalele, indicatoarele, suporturile pentru
sarcină și dispozitivele de izolare.
Dacă se ține seama de construcția, precum și de modul de echilibrare la efectuarea
cântăririi, aparatele de cântărit manuale se îmaprt în mai multe categorii, și anume: balanțe
simple, balanțe compuse, balanțe romane, bascule zecimale, bascule omane.
Balanțele simple sunt aparate de cântărit care au ca parte componentă esențială o
pârghie, în general cu brațele egale, iar talerele sunt situate sub această pârgie; există 2
categorii de balanțe simple: de lucru și etalon.
Spre deosebire de balațele simple, la care talerele se sprijină pe câte un singur cuțit, la
balanțele compuse talerele se sprijină pe câte trei cuțite, care consituie 3 puncte de încărcare.
Balanțele romane sunt aparate de cântărit care au singura pârgie cu brațele inegale.
Corpul de cântărit se suspendă la brațul scurt, iar pe brațul lung, care este divizat, se
deplasează pentru stabilirea poziției de echilibru o piesă de masă constantă, denumită cursor

6
sau romană. Ținând seama de construcția lor, balanțele romane se împart în: balanțe romane
obișnuite, balanțe romane cu dublu raport, bascule zecimale.
Aparatele de cântărit semiautomate cu cudran sunt utilizate în comerț, la poștă pentru
cântărirea scrisorilor, la cântărirea persoanelor, în industrie, pentru cântărirea unor sarcini
mari. Acestea au următoarele părți componente: sistemul de pârghii, dispozitivul de înclinare,
dispozitivul de indicare și amortizorul.
Aparatele de cântărit automate sunt aparate de cântărit combinat cu dispozitive
mecanice sau electrice, care efectuează în mod automat încărcarea, cântărirea și descărcarea
diferitelor produse ce se cântăresc. Aparatele posedă fie dispozitive de numărare, fie
dispozitive de integrare, pentru numărarea, respectiv însumarea cântăririlor. [27]
În urmă cu 7.000 de ani, egiptenii descopereau cea mai simplă formă a cântarului.
Aceea era balanța. Aceasta avea o formă extrem de simplă, brațul orizontal fiind susținut la
mijloc de un pivot și dispus pe laterale, la distanțe egale, cu două talere suspendate cu sfoară.
Inițial, această balanță era utilizată pentru a cântări și compara nu numai diverse produse
destinate trocului, cât și pentru a determina masa prafului de aur pe care îl primeau, uneori,
vânzătorii în schimbul bunurilor. Deși se număra printre primele modele, balanța egiptenilor
avea o acuratețe de aproximativ 99%. Egiptenii au fost cei care au introdus și conceptul
utilizării greutăților pentru a afla masa unui produs în urma echilibrării balanței. [22]
Acest tip de măsurătoare a masei corpurilor a fost îmbunătățit în mod semnificativ de
romani, de la care a rămas moștenire "cântarul roman", încă din perioada primului mileniu.
Noua balanță avea, pe una dintre jumătățile brațului, o singură contragreutate etalonată, care
putea fi deplasată de-a lungul pârghiei, până când aceasta stătea în echilibru. Romanii au fost
aceia care au confecționat balanța astfel încât porțiunea punct de sprijin să fie sprjinită pe un
pivot ascuțit la capătul de sprijin, pentru a oferi o balansare cât mai exactă în momentul
cântăririi.

7
Figura 3. Cântarul în antichitate [22]

În anul 1959 cercetătorul G. Sauerbrey a proiectat un cântar bazar pe proprietățile


rezonatoarelor cu cristal de cuarț. Astfel a aprărul microbalanța cu cristale de cuarț, care oferă
o precizie de circa 100 de ori mai mare decât un cântar electronic de înaltă precizie.
Cantarele electronice (digitale) sunt ultimele aparitii pe piata. Folosesc un mic senzor
piezoelectric, ceea ce permite ca forma constructiva a lor sa varieze intre limite foarte largi,
incomparabile cu rigiditatea cantarelor mecanice. Cantarele digitale pot fi plate, cu bol, format
cana, lingura etc. Cantarul a fost adaptat necesitatilor din diverse domenii, iar astazi
producatorii ofera o gama variata de produse, de la cantare mici, de foarte mare precizie, utile
bijutierilor, laboratoarelor, bucatarilor sau producatorilor din industria fina, la cantare usoare
si rezistente, folosite in targuri si piete, la cantare cu memorie, ecran tactil si imprimanta de
bonuri, regasite in supermarketuri, si pana la platformele de cantarire pentru animale vii sau
uz industrial.

8
Capitolul 2. Proiectare hardware

2.1 Descrierea senzorului SEN-10245


Senzorul SEN-10245 este un senzor de tip Load Cell (=”celulă de sarcină”) utilizat
împreună cu convertorul Analogic - Digital HX711. Senzorul este utilizat atât în aplicații care
presupun măsurarea greutății cât și în industrie.
Senzorul este capabil să măsoare rezistențe electrice care se încarcă ca răspuns al
presiunii exercitate pe disc.
Celula de sarcină are dimensiunea de 20mm x 11mm și este făcută din aliaj de oțel,
fiind capabilă să măsoare până la 50kg. Acuratețea, conform specificațiilor este de ± 0.05%
=> 50kg x 0.0005 = 0.025kg -> ± 25g. [2]

Figura 4. Senzorul SEN-10245 [13]

Figura 5. Caracterstici principale SEN-10245[3]

9
2.2 Schema bloc

Figura 6. Schema bloc

Alimentare – circuitul va fi alimentat cu 4 baterii tip ”AAA” de 1.5V;


Senzorul SEN-10245 – transmite datele către convertorul analogic – digital HX711;
este un senzor cu precizie ridicată;
Microcontroler Atmega32 – microcontroler CMOS de 8 biți cu eficiență de execuție
îmbunătățită și arhitectură RISC, parte a familiei de microcontrolere AVR de la Atmel. Dacă
frecvența ciclului este de 1MHz, se pot executa 1 milion de instrucțiuni pe secundă. O sursă
de alimentare de 5V va furniza tuturor celorlalte componente exact puterea de care au nevoie
pentru a asigura funcționarea lor.
Caracteristici ale microcontrolerului Atmega32[10]:
 32KB de memorie Flash reinscriptibilă pentru stocarea programelor
 2KB de memorie RAM
 1KB de memorie EEPROM
 două numărătoare/temporizatoare de 8 biţi
 un numărător/temporizator de 16 biţi

10
 convertor analog – digital de 10 biți, cu intrări multiple
 un comparator analogic
 un modul USART pentru comunicaţie serială (port serial)
 32 de linii I/O organizate în patru porturi (PA, PB, PC, PD)

ATmega32 conţine 32 de registre de uz general şi 64 de registre speciale pentru


modulele I/O. ATmega32 dispune de 21 surse de întrerupere. Atunci când una dintre ele
devine activă se suspendă cursul normal de execuție și se face salt automat la o adresă
prestabilită din memoria programului.
Port-ul A serveşte drept port de intrări analogice pentru Convertorul A/D. Port-ul A
servește de asemenea şi ca un port bidirecţional I/O de 8 biţi, în cazul în care Convertorul A/D
nu este folosit. Pinii de port pot fi conectaţi opţional la VCC prin rezistori interni, (selectaţi
pentru fiecare bit). Buffer-ele de ieşire ale Portului A au caracteristici de amplificare.
Portul D este un port I/O de 8 biţi bidirecţional cu rezistori interni conectaţi optional la
VCC (selectaţi pentru fiecare bit). Buffer-ele de output ale Port-ului D au caracteristici de
amplificare. Port-ul D indeplineşte de asemenea funcţii speciale ale ATmega32.
Reset [9]: Un nivel scăzut la acest pin mai mare ca durată decât o valoare prestabilită,
va genera o iniţializare(resetare). La resetare toți regiștrii sunt aduși la valoarea prestabilită.
Se începe execuția codului de la locația vectorului de întrerupere reset.

Figura 7. Schema bloc circuit de reset al µC

AREF[11]: Este pinul de referinţa analogica pentru Convertorul A/D. Un convertor


A/D transformă o tensiune analogică într-o valoare numerică. Valoarea numerică se reprezintă
pe un număr de biți N. Convertorul folosește o tensiune de referință între Vref și Vref+ care
determină plaja de tensiune de intrare care poate fi convertită (de obicei Vref- este 0V).
Conversia A/D se realizează prin cuantificare. Rezoluția convertorului A/D se notează cu

11
1LSB și reprezintă valoarea minimă cu care trebuie să varieze tensiunea de intrare Vin pentru
a determina modificarea cu o unitate a rezultatului conversiei.

Max232 Converter – Trimite datele primite către computer. Familia de transmițătoare


MAX220-MAX248 este pentru toate aplicațiile, în special pentru cele în care nu este
disponibilă o sursă de alimentare de 12V. Modelul MAX233 nu utilizează componente
externe și este recomandat pentru aplicații cu spațiu limitat pe placa de circuit imprimat.
Circuitul RS232 este realizat folosind: circuitul integrat MAX232 folosit pentru convertirea
semnalelor, mufă cu 9 pini specifică RS232 și 2 condensatoare de 0.1 uF.

Convetorul analogic / digital HX711 – este frecvent utilizat în aplicații destinate


măsurării greutății sau în aplicațiile industriale (în schema electrică am folosit un modul al
celui prezentat mai jos).

Figura 8. Caracterstici electrice HX711 [1]

12
Figura 9. Distribuire pini HX711[1]

Figura 10. Dimensiuni HX711[1]

13
2.3 Schema electrică

Figura 11. Schema electrică realizată în EasyEDA

2.3.1 Componente folosite în schema electrică

 U3 – modul al lui HX711 (convertor pe 24 de biți analogic / digital); distribuția de


conectare pentru pini este următoarea: E+, E-, A+, A- sunt folosiți pentru conectarea
cu cei 4 senzori SEN-10245, GND este conectat la masă, VCC la alimentare, DT și
SCK sunt conectați la pinii PB0 și PB1 ai microcontrolerului;
 4 senzori SEN-10245 (ST_JOS, ST_SUS, DR_JOS, DR_SUS) – celule de sarcină
conectate pentru a forma o punte rezistivă, fiecare având o capacitate de 50kg, astfel
cântarul având o capacitate de 200kg. În schema electrică realizată cu EasyEDA
senzorii sunt reprezenții prin gruparea a doua rezistențe fiecare având 1kΩ; fiecare
senzor are 3 pini: pinii B și W ai fiecărui senzor fac legătura între aceștia, iar pinii R se
conectează pe diagonală (ST_SUS / DR_JOS sau ST_JOS / DR_SUS);
 U2 – microcontroler ATMega32A-PU pe 8 biți;
 U5 – convertorul MAX232;
 DB1 – conector DB9 pentru MAX232;

14
 KEY1 – push Button pentru auto-calibrare;
 KEY2 – push Button pentru circuitul de reset;
 C3, C4 – condesatoare de 0.1 µF (folosite pentru a filtra curentul care intră în Max232
conform specificațiilor producătorului);
 C1, C2, C5 – condesatoare de 22 pF;
 XTAL1 – oscilator la o frecvență de 8MHz;
 R1 – rezistență de 1kΩ;
 R2 – rezistență de 10kΩ;

2.4 Cablaj imprimat

Figura 12. Schema PCB a întregului circuit

Figura 13. Schema PCB cu vedere din față

15
Figura 14. Schema PBC cu vedere din spate

Figura 15. Schema PCB cu vederea tuturor pinilor

Figura 16. Schema PCB cu componentele utilizate


16
Capitolul 3. Proiectarea Software
3.1 Organigrama codului

Figura 17. Orgranigrama codului

17
3.2 Codul sursă

;cantar digital
;citire min = 0x800000 (complement de 2)
;citire max = 0x7FFFFF (complement de 2)
;y=mx+b (ecuatia pentru masurare)
;m=(y-b)/x
.include "m32def.inc"
.equ rs=PA2
.equ e=PD6
.equ ctrl=PORTD
.equ ctrl2=PORTA
.DEF slave_reg = R17
.DEF temp = R16
.def counter1 = r0
.def counter2 = r1
.def counter3 = r2
.def counter4 = r3
.def counter5 = r4
.def counter6 = r5
.def counter7 = r6
.def zero = r25
.macro micros
ldi temp,@0
.endm
.macro poz
ldi r16,@1
mov r6,r16
ldi r16,@0
rcall pozi
.endm
.DSEG
BUF4: .byte 1
BUF3: .byte 1
BUF2: .byte 1
BUF1: .byte 1
PAD1: .byte 1
PAD: .byte 1
longword: .byte 10
.cseg
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
18
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp ADC
jmp reset
jmp reset
jmp reset
jmp reset
reset:
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
ldi r16,0xFF
out DDRB, r16 ; portul B este setat ca intrare
ldi r16,0b00000011
out DDRD,r16 ; pinii PD0 și PD1 sunt setați ca ieșire
main:
cli
ldi r16,0b00001000 ; in randurile de mai jos se configureaza
out UCSRB,r16 ;modulul USART prin registrii UCSRB si UCSRC
ldi r16,0b10101110
out UCSRC,r16
ldi r16,0x06 ;se seteaza viteza de comunicatie
out UBRRH,r16 ;avand in vedere ca frecventa ceasului
ldi r16,0x81 ;este 8MHz
out UBRRL,r16
ldi r16,0b00100001 ;setare ADC: AREF este referinta, canal ADC1
bucla:
rjmp bucla
ADC:
in r20,SREG
in r17,ADCH ;se citeste rezultatul conversiei, pastrand precizie de numai 8 biti
setup:
ldi r23 ,10
ldi r16,0b00000110
sts PORTB_DIRCLR,r16 ; PB1 si PB2 sunt configurati ca intrari
ldi r16,0b00001000
lds r16,PORTB_DIR
ORI r16,(1<<1)
sts PORTB_DIR,r16 ; PA0 setat ca iesire
masurare:
lds r16,PORTB_OUT
andi r16,0xFD
sts PORTB_OUT,r16 ;valoarea din PA0 este scauzta pentru a activa HX711 iar pinul
PDSCK al senzorului ar trb fii scazut
micros 10
rcall verifica ;verifica daca rezultatul este gata
rcall citesterez ;rezultatul in r13,r12,r11
mov r16,r13 ; copiaza rezultatul in r16
19
andi r16,0x80 ; verifica bitul 7
sbrc r16,7 ; **
rcall calcul ; routina pentru calcularea greutatii cu HX711
rcall bin32_ascii ; convertire rezultat binar in ascii
rjmp masurare
verifica:
push r16
lds r16,PORTB_IN ;copiaza valoarea din PORTB_IN in r16 pentru a verifica daca
este 'low'
sbrc r16,2 ;verifica daca valoarea copiata in r16 are al doilea bit liber
rjmp verifica
pop r16
ret
rezero:
micros 10 ;acesta rutina de instructiune se foloseste pentru asa zisa calibrare a cantarului
rcall verifica
rcall citirerez
sts BUF1,r11
sts BUF2,r12
sts BUF3,r13
ret
bin32_ascii:
mov r28,r8 ;copiaza in r28 valoarea bitului
mov r29,r9 ;copiaza in r28 valoarea bitului 2
mov r30,r10 ;copiaza in r28 valoarea bitului 3
mov r31,r11 ;copiaza in r28 valoarea bitului 4
lds r16,PORTB_IN ;copiaza statusul din PORTB (butonul de calibrare
rezero apasat sau neapasat)
andi r16,0x08
sbrc r16,3 ;daca bitul 3 este 0 sare, inchide si salveaza valorile
curente in BUF1,2,3,4
rjmp exit2 ;daca bitul 3 are o valoare sare la exit2
sts BUF1,r28 ;BUF1,2,3,4 salveaza valorile curente de greutate masurate de
senzor
sts BUF2,r29
sts BUF3,r30
sts BUF4,r31
exit2:
lds r11,BUF1 ;salveaza valorile din BUF1,2,3,4 in
r11,r12,r13,r14
lds r12,BUF2
lds r13,BUF3
lds r14,BUF4
sub r28,r11 ;imparte valoarea curenta pentru a obtine
valoarea corecta
sbc r29,r12
sbc r30,r13
sbc r31,r14 ;valoarea corecta este convertita in ASCII
si afisaza pe ecran
;liniile urm incarca 10 valori ASCII to SRAM salvate ca si "longword"
ldi ZH,high(longword) ;pointer cu adresa SRAM unde se salveaza valorile ASCII
ldi ZL,low(longword) ;pointer cu adresa SRAM unde se salveaza valorile ASCII
20
st Z+,r0 ; al 10-lea digit
st Z+,r1 ; al 9-lea digit
st Z+,r2 ; al 8-lea digit
st Z+,r3 ; al 7-lea digit
st Z+,r4 ; al 6-lea digit
st Z+,r5 ; al 5-lea digit
ldi r27,'.' ; punct pentru zecimale
st z+,r27
st Z+,r6 ; fractie
ldi r27,'k'
st Z+,r27
ldi r27,'g'
st Z+,r27
ret
calcul:
clr r2 ; elibereaza r2 pentru inmultire
clr r3 ; elibereaza r3 pentru inmultire
clr r4 ; elibereaza r4 pentru inmultire
clr r5 ; elibereaza r5 pentru inmultire
ldi r16,25 ; incarca in r16 valoarea 25, valoarea din datasheet
mov r2,r16 ; incarca 25 in r2 pentru inmultirea din setul de registri
r5:r4:r3:r2
mov r21,r11
mov r22,r12
mov r23,r13
clr r24 ; al 4-lea bit este tinut liber
rcall mult32 ; se apleaza mult32 (inmultirea propriu-zisa)
ret
;32x32 -> 64 bit
;R24:R21 x R5:R2 -> R15:R8
;88 cicluri + 4 (RET) = 92 cicluri
;urmeaza mult32 o serie de inmultire pentru calcularea greutatii
mult32:
clr R16
mul R21,R2
movw R8,R0
clr R10
clr R11
clr R12
clr R13
clr R14
clr R15
mul R22,R2
add R9,R0
adc R10,R1
mul R23,R2
add R10,R0
adc R11,R1
mul R24,R2
add R11,R0
adc R12,R1
mul R21,R3
21
add R9,R0
adc R10,R1
adc R11,R16
adc R12,R16
adc R13,R16
mul R22,R3
add R10,R0
adc R11,R1
adc R12,R16
adc R13,R16
mul R23,R3
add R11,R0
adc R12,R1
adc R13,R16
mul R24,R3
add R12,R0
adc R13,R1
mul R21,R4
add R10,R0
adc R11,R1
adc R12,R16
adc R13,R16
adc R14,R16
mul R22,R4
add R11,R0
adc R12,R1
adc R13,R16
adc R14,R16
mul R23,R4
add R12,R0
adc R13,R1
adc R14,R16
mul R24,R4
add R13,R0
adc R14,R1
mul R21,R5
add R11,R0
adc R12,R1
adc R13,R16
adc R14,R16
adc R15,R16
mul R22,R5
add R12,R0
adc R13,R1
adc R14,R16
adc R15,R16
mul R23,R5
add R13,R0
adc R14,R1
adc R15,R16
mul R24,R5
add R14,R0
22
adc R15,R1
ret
citesterez:
ldi r16,25 ;incarca contorul de pulsatii de ceas la 25
mov r10,r16
clr r11
clr r12
clr r13
citire:
rcall PDSCK_HI ;creste PDSDK
rcall PDSCK_LO ;scade PDSDK
dec r10 ;decrementeaza counter
breq exitcitire ;daca counterul = 0 se inchide citire
clc ;elibereaza SREG ('carry bit')
lds r16,PORTA_IN
sbrc r16,2 ;sare peste urmatoarea instructiune daca bitul 2 este 0
sec ;if r16 bit 2 is 1 set sreg carry bit to 1
in r16,UCSRA ;citesc starea modulului USART
sbrs r16,UDRE ;verific daca registrul de emisie/recepție e gol
rjmp wait ;registrul nu este gol, mai aștept
ret ;registrul este gol, revin din așteptare

[16][17][18][19][20][21]

23
Capitolul 4. Concluzii
În concluzie, cântarul a fost adaptat necesităților oamenlor, atât pentru cântărirea lor
cât și pentru utilizarea acesotra în diferite domenii, iar astăzi producătorii oferă o gamă variată
de produse, de la cântare mici, de foarte mare precizie, utilze bijutierilor, laboratoarelor,
bucătăriilor sau producătorilor din industria fină, la cântare ușoare și rezistente, folosite în
târguri și piețe, la cântare cu memorie, ecran tactil și imprimantă de bonuri, regăsite în
supermaketuri.
În altă ordine de idei, acest proiect oferă posbilitatea de a întelege ce se află în
spatele unui cântar, modul de funcționare, oferind o cu totul altă viziune asupra unor
dispozitive pe care le utilizăm zilnic, dar probabil, niciodata nu ne gândim, cum funcționează.
Un cântar este aproape nelipsit din caselor oamenilor, din magazinele
comerciale, din industrie și din multe domenii și are o importanță pe care majoritatea nu o
remarcă.

24
Capitolul 5. Bibliografie
[1] https://pdf1.alldatasheet.com/datasheet-pdf/view/1132222/AVIA/HX711.html
[2] https://circuitjournal.com/50kg-load-cells-with-HX711
[3] https://www.sparkfun.com/datasheets/Sensors/loadsensor.pdf
[4] https://www.iosrjournals.org/iosr-jestft/papers/vol8-issue2/Version-4/
T0824126134.pdf
[5] http://davidegironi.blogspot.com/2019/04/hx711-load-cell-amplifier-driver-
for.html#.Y5JJP3ZBy3B
[6] https://www.digikey.com/en/products/detail/sparkfun-electronics/SEN-
10245/5843757
[7] https://www.researchgate.net/figure/Block-diagram-of-the-weighing-machine-
The-block-diagram-comprises-of-the_fig1_273714734
[8] https://www.instructables.com/How-to-Interface-HX711-Balance-Module-
With-Load-Ce/
[9] https://curs.upb.ro/2022/pluginfile.php/308567/mod_resource/content/1/
MICROC_curs%203_2022.pdf
[10] https://curs.upb.ro/2022/pluginfile.php/308570/mod_resource/content/
1/MICROC_curs%202_2022.pdf
[11] https://curs.upb.ro/2022/pluginfile.php/386009/mod_resource/content/
1/MICROC_curs%205_2022.pdf
[12] https://abra-electronics.com/sensors/sensors-flex-force-en/sens-50-
weight-sensor-to-microcontroller-interface-board.html
[13] https://rlx.sk/en/pressure-flex-rpm-gas/6159-load-sensor-50kg-sf-sen-
10245.html
[14] https://forum.arduino.cc/t/pin-mapping-of-the-atmega32-16pu/233223
[15] https://proto-pic.co.uk/product/load-sensor-50kg-sen-10245
[16] https://curs.upb.ro/2022/pluginfile.php/388746/mod_resource/content/
1/microcontrole re_laborator%203_2022.pdf
[17] https://curs.upb.ro/2022/pluginfile.php/388747/mod_resource/content/
1/microcontrole re_laborator%204_2022.pdf
[18] https://curs.upb.ro/2022/pluginfile.php/388748/mod_resource/content/
1/microcontrole re_laborator%205_2022.pdf
[19] https://curs.upb.ro/2022/pluginfile.php/392396/mod_resource/content/
1/MICROC_cur s%206_2022.pdf
[20] https://curs.upb.ro/2022/pluginfile.php/405712/mod_resource/content/
1/MICROC_cur s%207_2022.pdf

25
[21] https://github.com/MicrochipTech/avrfreaksprojects/tree/
9e6bc971411a2d69374012572b3b6144f2f3f7f2/projects/hx-711attiny804-weighing-scale-
asm-assembly
[22] https://ro.wikipedia.org/wiki/C%C3%A2ntar
[23] https://pdf1.alldatasheet.com/datasheet-pdf/view/1371088/
SPARKFUN/HX711.html
[24] https://www.fiscalmag.ro/blog/cantare/cantare-electronice-comerciale/
[25] https://www.vexio.ro/cantare-corporale/aeg/249821-pw-5644-180-kg-
precizie-100-gr-negru/
[26] https://tenrandomfacts.com/weighing-scale/
[27] https://www.rasfoiesc.com/inginerie/tehnica-mecanica/Masurarea-
masei-cu-balanta43.php

26

S-ar putea să vă placă și