Translate

Membuat Alat Monitor Tekanan Paru-Paru Menggunakan Sensor MPX5700 dan Mikrokontroller - Bascom AVR

Membuat Alat Monitor Tekanan Paru-Paru Menggunakan Sensor MPX5700 dan Mikrokontroller - Bascom AVR


        Pada malam menjelang pagi kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang berfungsi untuk mengetahui tekanan paru-paru seseorang dengan menggunakan sensor tekanan MPX dan mikrokontroller, alat ini sebenarnya sangatlah sederhana namun yang harus diperhatikan adalah kalibrasi sensor agar sesuai dengan satuan tekanan paru-paru, pada contoh kali ini saya akan mencontohkan alat yang dibuat dengan menggunakan mikrokontroller dengan interface delphi 7. untuk lebih jelasnya berikut adalah program dan skemanya. untuk mengetahui parameter tekanan paru-paru lebih jelas silahkan download artikel berikut





a. Minimum System ATMega16





b. Sensor MPX5700AP





c. Modul RS232






d. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 11059200
$baud = 9600


Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Dataadc As Word


Start Adc


Do

Dataadc = Getadc(0)

Print Dataadc ;

Waitms 1000

Loop






e. Program Interface Delphi 7



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, TeEngine, Series, TeeProcs, Chart, CPort,StrUtils;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    ComPort1: TComPort;
    Chart1: TChart;
    Series1: TFastLineSeries;
    Edit1: TEdit;
    Label1: TLabel;
    Button5: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    ComboBox1: TComboBox;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Series2: TFastLineSeries;
    Series3: TFastLineSeries;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Timer1: TTimer;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Timer2: TTimer;
    Timer3: TTimer;
    Timer4: TTimer;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

 serin:string;
 pefl:double;
 pefp:double;

implementation

{$R *.dfm}


procedure TForm1.Button4Click(Sender: TObject);
begin
  application.Terminate;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 comport1.ShowSetupDialog;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 comport1.Connected:=True;
 button2.Enabled:=False;
 button3.Enabled:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 comport1.Connected:=false;
 button3.Enabled:=False;
 button2.Enabled:=true;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  F: TextFile;
begin
  AssignFile(F, 'D:\hasil.txt');
  Append(F);
  WriteLn(F, '========================');
  WriteLn(F, '=========Record=========');
  WriteLn(F, '========================');
  WriteLn(F, 'Nama: ',Edit2.Text);
  WriteLn(F, 'No.ID: ',Edit3.Text);
  WriteLn(F, 'Jeni Kelamin: ',ComboBox1.Text);
  WriteLn(F, 'Umur: ',Edit4.Text);
  WriteLn(F, 'Tinggi Badan: ',Edit5.Text);
  WriteLn(F, 'Nilai PEF Normal: ',Edit6.Text);
  WriteLn(F, 'Nilai PEF Rata2: ',Edit7.Text);
  WriteLn(F, 'Kategori: ',Edit8.Text);
  WriteLn(F, '');
  WriteLn(F, '');
  CloseFile(F);
end;




procedure TForm1.Timer1Timer(Sender: TObject);
var umur:integer;
    tb:integer;
    rata:double;
    nmaxval1:integer;
    nmaxval2:integer;
    nmaxval3:integer;
    btatasPEFL:double;
    btbawahPEFL:double;
    btatasPEFP:double;
    btbawahPEFP:double;

begin

if (Edit9.Text <> '') and (Edit10.Text <> '') and (Edit11.Text <> '') then
begin
nmaxval1 := strtoint(Edit9.Text);
nmaxval2 := strtoint(Edit10.Text);
nmaxval3 := strtoint(Edit11.Text);
rata:= (nmaxval1 + nmaxval2 + nmaxval3 ) / 3;
Edit7.Text:= floattostr(rata);
end;


if (ComboBox1.Text <> '') and (Edit4.Text <> '') and (Edit5.Text <> '') then
begin

umur:=strtoint(Edit4.text);
tb:=strtoint(Edit5.text);


pefl := (-10.86040 + 0.12766 * umur + 0.11169 * tb - 0.0000319344 * umur * umur * umur) * 60;
pefp := (-5.12502 + 0.09006 * umur + 0.06980 * tb - 0.00145669 * umur * umur) * 60;

btatasPEFL := pefl + 1.70935;
btbawahPEFL := pefl - 1.70935;
btatasPEFP := pefp + 1.77692;
btbawahPEFP := pefp - 1.77692;

if ComboBox1.Text = 'L' then
begin
Edit6.Text:=floattostr(pefl);
end;

if ComboBox1.Text = 'P' then
begin
Edit6.Text:=floattostr(pefp);
end;

end;


if (Edit7.Text <> '') and (Edit6.Text <> '') then
begin
if (ComboBox1.Text = 'L') and (rata > btatasPEFL) then
begin
Edit8.Text:='diatas PEF';
end;

if (ComboBox1.Text = 'L') and (rata < btbawahPEFL) then
begin
Edit8.Text:='dibawah PEF';
end;

if (ComboBox1.Text = 'L') and (rata >= btbawahPEFL) and (rata <= btatasPEFL) then
begin
Edit8.Text:='NORMAL';
end;



if (ComboBox1.Text = 'P') and (rata > btatasPEFP) then
begin
Edit8.Text:='diatas PEF';
end;

if (ComboBox1.Text = 'P') and (rata < btbawahPEFP) then
begin
Edit8.Text:='dibawah PEF';
end;

if (ComboBox1.Text = 'P') and (rata >= btbawahPEFP) and (rata <= btatasPEFP) then
begin
Edit8.Text:='NORMAL';
end;


end;

end;





procedure TForm1.Timer2Timer(Sender: TObject);
var
  Str: String;
  suhu:integer;
  Count:integer;
  nmax1:double;

begin
  ComPort1.ReadStr(Str,Count);
  Edit1.Text:=Str;
  suhu:=strToint(str);
  chart1.Series[0].Add(suhu,'',clgreen);

  nmax1:=chart1.Series[0].MaxYValue;

  Edit9.Text := floattostr(nmax1);

end;



procedure TForm1.Timer3Timer(Sender: TObject);
var
  Str: String;
  suhu:integer;
  Count:integer;
  nmax2:double;

begin
  ComPort1.ReadStr(Str,Count);
  Edit1.Text:=Str;
  suhu:=strToint(str);
  chart1.Series[1].Add(suhu,'',clgreen);

  nmax2:=chart1.Series[1].MaxYValue;

  Edit10.Text := floattostr(nmax2);

end;

procedure TForm1.Timer4Timer(Sender: TObject);
var
  Str: String;
  suhu:integer;
  Count:integer;
  nmax3:double;

begin
  ComPort1.ReadStr(Str,Count);
  Edit1.Text:=Str;
  suhu:=strToint(str);
  chart1.Series[2].Add(suhu,'',clgreen);

  nmax3:=chart1.Series[2].MaxYValue;

  Edit11.Text := floattostr(nmax3);

end;




procedure TForm1.Button6Click(Sender: TObject);
begin
Timer2.Enabled := True;
Timer3.Enabled := False;
Timer4.Enabled := False;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Timer2.Enabled := False;
Timer3.Enabled := True;
Timer4.Enabled := False;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Timer2.Enabled := False;
Timer3.Enabled := False;
Timer4.Enabled := True;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
  chart1.Series[0].Clear;
  Edit9.Text := '';

end;

procedure TForm1.Button10Click(Sender: TObject);
begin
  chart1.Series[1].Clear;
  Edit10.Text := '';

end;

procedure TForm1.Button11Click(Sender: TObject);
begin
  chart1.Series[2].Clear;
  Edit11.Text := '';

end;

end.







f. Cara Menggunakan Alat

       Cara menggunakan alat ini yang pertama adalah harus tau bagaimana cara mendapatkan nilai tekanan paru sesuai standart dari input nilai umur dan tinggi badan baik itu laki-laki maupun perempuan karena pada interface didapat sebuah rumus yang datanya diambil dari lampiran

untuk pria
pefl := (-10.86040 + 0.12766 * umur + 0.11169 * tb - 0.0000319344 * umur * umur * umur) * 60;

untuk wanita
pefp := (-5.12502 + 0.09006 * umur + 0.06980 * tb - 0.00145669 * umur * umur) * 60;


       Jadi pada interface delphi 7 akan dilakukan 3 kali pengambilan data secara berurutan, kemudian pasien disuruh untuk meniup pada sensor, jika tekanan diantara ambang normal dari PEF tersebut maka dapat dikatakan paru-paru dalam kondisi normal, jika tidak maka akan dikategorikan menjadi sebuah penyakit, jadi ke 3 pengambilan data tertinggi dari tiap-tiap grafik yang ditampilkan kemudian dibagi 3 atau dilakukan rata2, jadi prinsip kerja interface grafik adalah menampilkan secara realtime nilai sensor, saat ditiup, sensor akan otomatis mengeluarkan tegangan sehingga grafik akan naik dan ketika naik mendapatkan nilai puncak atau nilai tertinggi kemudian akan disimpan ke sebuah variabel yang setelahnya akan dilakukan hal yang sama sebanyak 2 kali pengambilan, jika sudah mendapatkan 3 grafik sample maka akan dirata-rata dan di bandingkan dengan nilai PEF berdasarkan perhitngan. lalu data yang didapat bisa disimpan menggunakan tombol save.  












No comments:

Post a Comment