Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Łącznik drążka stabilizatora lewego koła

Z LABORATORIUM

MEMS i mikronapędy

Ćwiczenie Nr 5
MEMS - czujnik ciśnienia BMP180
3 ET-DI L3
22/12/2022
Rafał Niedbałowski
Paweł Stolarczyk

Kod Programu
#include <lcd.h>
#include <regaduc812.sfr>
#include <mems.h>

#define ac1 8306


#define ac2 -1001
#define ac3 -14008
#define ac4 33716
#define ac5 25912
#define ac6 24338
#define b1 6515
#define b2 32
#define mb -32768
#define mc -11786
#define md 2264
// zdefiniowano stałe kalibracyjne BMP180

unsigned long b4,b7,UP;


long x1,x2,x3,b3,b6,p;
unsigned int UT,i;
char dt,t,s,d,j;
// zdefiniowano zmienne pomocnicze do przechowywania
// wartości zwracanych przez funkcje BMP180_read_UP()
// oraz BMP_read_UT(), zmienne pomocnicze do obliczeń
// oraz zmienne przechowujące poszczególne cyfry do wypisania

void main() {
init_lcd();
bus_init();
while ( 1 ){
UT=BMP180_read_UT();
UP=BMP180_read_UP(0);

x1 = (( long ) ( UT - ac6 ) * ( long ) ac5 ) / 32768;


x2 = (( long ) mc * 2048 ) / ( x1 + ( long ) md);
b6 = ( x1+ x2 ) - 4000;
x1 = (( long ) b2 * (( b6 * b6 ) / 4096 )) / 2048;
x2 = (( long ) ac2 * b6 ) / 2048;
x3 = x1 + x2;
b3 = (((( long ) ac1 * 4 + x3 ) << 0 ) + 2) / 4;
x1 = (( long ) ac3 * b6 ) / 8192;
x2 = (( long ) b1 * (( b6 * b6 ) / 4096 )) / 65536;
x3 = (( x1 + x2 ) + 2 ) / 4;
b4 = ac4 * ( unsigned long) ( x3 + 32768 ) / 32768;
b7 = (( unsigned long ) UP - b3 ) * ( 50000 >> 0 );
if ( b7 < 80000000 )
p = ( b7 * 2 ) / b4;
else
p = ( b7 / b4 ) * 2;
x1 = ( p / 256 );
x1 = ( x1 * 3038 ) / 65536;
x2 = (( -7357 * p ) / 65536 );
p = p + (( x1 + x2 + 3791 ) / 16);

dt = p / 10000; // wyciągnięto liczbę setek


t = ( p / 1000 ) % 10; // wyciągnięto liczbę dziesiątek
s = ( p / 100 ) % 10; // wyciągnięto liczbę jedności
d = ( p / 10 ) % 10; // pierwsza liczba po przecinku
j = p % 10; // druga liczba po przecinku

cmd_wr(2);
char_wr(dt+48);
char_wr(t+48);
char_wr(s+48);
char_wr(46);
char_wr(d+48);
char_wr(j + 48 );

for (i = 0; i < 9999; i++){}


}
}
Wnioski
W ćwiczeniu zaprogramowaliśmy wyświetlanie wartości odczytanej z czujnika BMP180.
Jedyne problemy w trakcie ćwiczenia wynikły z tego, że czujnik pokazywał wartość
niepoprawną, z cyfrą tysięcy, czego nasz kod nie uwzględniał. Z racji tego że poprawnie
zmierzone ciśnienie nie przekraczało 1000 HPa w trakcie wykonywania ćwiczenia, nasz kod
od początku był poprawny.

You might also like