R9 63k out HPF J5 supply 1 2 3 v cc-LA R2 1655.555 1 3 2 output RL RL + C8 1u + C1 1u output + C4 1u v cc-RA buf f er R8 1k J10 out 1 2 J1 RL 1 2 RA J2 LA 1 2 LA J8 drl 1 2 3 4 8 7 6 5 + C7 1u + C2 1u v cc+ + C5 1u + C3 1u v cc-C10 56n J6 ke PS 1 2 3 J4 INA114 1 2 3 4 8 7 6 5 v cc-+ C6 1u R6 3.3M R4 390k out bio v cc+ J3 RA 1 2 R7 3.3M v cc+ + C9 1u v cc+ R3 10k v cc+ J7 buf f er 1 2 3 4 8 7 6 5 out bio v cc-R5 390k J9 LPF 1 2 3 4 8 7 6 5 out HPF buf f er R1 3.9K <Doc> < R e v C o Title = ECG A 1 1 Tuesday , May 08, 2012 Title
Size Document Number Rev
Date: Sheet of
LAMPIRAN A
RANGKAIAN ELEKTRONIKA LENGKAP
vcc+ J6 cek notch 1 2 J3 LF2 1 2 3 4 8 7 6 5 vcc-C1 1.5n C6 1u J4 LF356 1 2 3 4 8 7 6 5 C7 1u R3 1M C2 1.5n C8 1u R4 5k C9 1u R1 2.2M C4 22u R5 10k C10 1u C3 2.7n R2 2.2M J2 LF1 1 2 3 4 8 7 6 5 vcc+ vcc-J7 out 1 2 vcc-J5 in 1 2 C5 22u vcc+ J1 supply 1 2 3 vcc-C11 1u vcc+
<Doc> <Rev Code>
Title = HPF&NOTCH
A
1 1
Tuesday , May 08, 2012 Title
Size Document Number Rev
Date: Sheet of
L1 10uH VCC J3 Tx_Rx 1 2 VCC C4 33pF VCC D3 ind download BTN RESET JP5 Header Downloader 1 2 3 4 5 6 7 8 9 10 JDR2A CONN DSUB 9-R/9-R_0 1 6 2 7 3 8 4 9 5 R1 330 VCC R3 390 C2 100nF J1 ATmega8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 J1_Kristal 1 2 VCC J2 Tx-Rx 1 2 VCC JP2_Supply 1 2 C6 10uF R2 1K C9 10uF VCC C1 100nF VCC JP2 input 1 2 MOSI D4 ind supply C7 10uF RESET C3 33pF MISO VCC SCK SCK JP1 sisa ADC 1 2 3 4 5 C5 10uF MOSI U1 MAX232 13 8 11 10 1 3 4 5 2 6 12 9 14 7 16 15 R1IN R2IN T1IN T2IN C+ C1-C2+ C2-V+ V-R1OUT R2OUT T1OUT T2OUT VC C GN D MISO C8 10uF RESET VCC
<Doc> <Rev Code>
Title = ATMEGA 8 & MAX232
A
1 1
Tuesday , May 08, 2012 Title
Size Document Number Rev
Date: Sheet of
LAMPIRAN B
LISTING PROGRAM
1. Listing program mikrokontroler
#include <mega8.h> #include <stdio.h> #include <delay.h>
#define ADC_VREF_TYPE 0x60
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion ADCSRA|=0x40;
// Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10; return ADCH; } int ecg; float y[3]; float x[3]; float z; void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00;
UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x67;
// Analog Comparator initialization // Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80; SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 250,000 kHz // ADC Voltage Reference: AVCC pin // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86; while (1)
{awal} ecg = read_adc(0); putchar(ecg);
delay_us(7750); {akhir}
// Place your code here };
}
2. Listing program Form A (BORLAND DELPHI)
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, MPlayer; type TForm1 = class(TForm) Label1: TLabel; Image1: TImage; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Image2: TImage; Image3: TImage; Image4: TImage; Label7: TLabel; Label8: TLabel; Label9: TLabel; Button1: TButton; Button2: TButton; Timer1: TTimer; Label10: TLabel;
procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private
{ Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2, Unit3; {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); begin Form2.Show; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Label10.Caption:=formatdatetime('"Tanggal : "dd/mm/yyyy',now)+chr(13)+formatdatetime('"Pu kul : "hh:nn:ss',now); end;
procedure TForm1.FormCreate(Sender: TObject); begin
end; end.
3. Listing program Form B (BORLAND DELPHI)
unit Unit2; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CPort, CPortCtl, ExtCtrls, TeEngine, Series, TeeProcs, Chart, jpeg, MMSystem;
TForm2 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Chart1: TChart; Series1: TFastLineSeries; ComPort1: TComPort; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; Image8: TImage; Image9: TImage; Image10: TImage; Timer1: TTimer; Image13: TImage; Image19: TImage; Image20: TImage; Timer2: TTimer; Timer3: TTimer; Timer4: TTimer; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure ComPort1RxChar(Sender: TObject; Count: Integer);
procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure Timer3Timer(Sender: TObject); procedure Timer5Timer(Sender: TObject); procedure Timer4Timer(Sender: TObject); private
{ Private declarations } public { Public declarations } end; var Form2: TForm2; x : integer; y : integer; z : integer; risingEdge : boolean; implementation uses Unit3; {$R *.dfm} {$R cut.res} procedure TForm2.Button1Click(Sender: TObject); begin Comport1.Close; close; end; procedure TForm2.Button3Click(Sender: TObject); begin Comport1.ShowSetupDialog; end; procedure TForm2.Button2Click(Sender: TObject); begin comport1.Open; x := 0; series1.Clear; end ; procedure TForm2.Button4Click(Sender: TObject); begin //timer1.Enabled := false; Comport1.Close; end; procedure TForm2.Button5Click(Sender: TObject); begin //timer4.Enabled := true;
end;
procedure TForm2.ComPort1RxChar(Sender: TObject; Count: Integer);
var dataterima,index,m,datakedua,idx : integer;
begin
for index:=1 to Count do begin comport1.read(dataterima,1); x := x+1; if (x>500) then begin for idx:=1 to 499 do begin chart1.Series[0].YValue[idx-1] := chart1.Series[0].YValue[idx]; end; chart1.Series[0].YValue[499] := dataterima; x := 500; end else begin with chart1 do with series1 do addxy(x,dataterima); end; {} m := datakedua - dataterima; datakedua := dataterima +1 ;
if ((m = 0) AND ( dataterima = 0 ) AND ( dataterima = 0 )) then begin image1.Visible := true; image2.Visible := false; image3.Visible := false; image4.Visible := false; image5.Visible := false;
image6.visible := false; image7.visible := false; image8.visible := false; image9.Visible := false; image10.Visible := false; risingEdge := true; end
else if ((m > 0) AND ( dataterima >= 0 ) AND ( dataterima <= 3 ))then
begin image1.visible := false; image2.visible := true; image3.visible := false; image4.Visible := false; image5.Visible := false; image6.visible := false; image7.visible := false; image8.visible := false; image9.Visible := false; image10.Visible := false; risingEdge := true; end
else if ((m > 0) AND( dataterima >= 3 ) AND ( dataterima <= 5 ))then
begin
if (risingEdge =True) then begin z := z+1; risingEdge := False; timer1.enabled := true; end; end
else if ( (m > 0) AND ( dataterima >= 5 ) AND ( dataterima <= 8 ))then
begin image1.visible := false; image2.visible := false; image3.visible := false; image4.Visible := true; image5.Visible := false; image6.visible := false; image7.visible := false;
image8.visible := false; image9.Visible := false; image10.Visible := false; end
else if ( (m > 0) AND ( dataterima >= 8 ) AND ( dataterima <= 12 ))then
begin image1.visible := false; image2.visible := false; image3.visible := false; image4.Visible := false; image5.Visible := true; image6.visible := false; image7.visible := false; image8.visible := false; image9.Visible := false; image10.Visible := false; end
else if ( (m > 0) AND ( dataterima >= 12) AND ( dataterima <= 16 ))then
begin image1.visible := false; image2.visible := false; image3.visible := false; image4.Visible := false; image5.Visible := false; image6.visible := true; image7.visible := false; image8.visible := false; image9.Visible := false; image10.Visible := false; risingEdge := true; end
else if ( (m > 0) AND ( dataterima >= 16 ) AND ( dataterima <= 18 ))then
begin image1.visible := false; image2.visible := false; image3.visible := false; image4.Visible := false; image5.Visible := false; image6.visible := false;
image7.visible := true; image8.visible := false; image9.Visible := false; image10.Visible := false; risingEdge := true; end
else if ( (m < 0) AND ( dataterima >= 18 ) AND ( dataterima <= 15 ))then
begin image1.visible := false; image2.visible := false; image3.visible := false; image4.Visible := false; image5.Visible := false; image6.visible := false; image7.visible := false; image8.visible := true; image9.Visible := false; image10.Visible := false; risingEdge := true; end
else if ( (m < 0) AND ( dataterima >= 16 ) AND ( dataterima <= 14 ))then
begin image1.visible := false; image2.visible := false; image3.visible := false; image4.Visible := false; image5.Visible := false; image6.visible := false; image7.visible := false; image8.visible := false; image9.Visible := true; image10.Visible := false; risingEdge := True; end
else if ( (m < 0) AND ( dataterima >= 14 ) AND ( dataterima <= 10 ))then
begin
image1.visible := false; image2.visible := false; image3.visible := false;
image4.Visible := false; image5.Visible := false; image6.visible := false; image7.visible := false; image8.visible := false; image9.Visible := false; image10.Visible := true; risingEdge := true; end ; end; //for end; procedure TForm2.Timer1Timer(Sender: TObject); begin timer1.enabled :=false ; image13.Visible := true ; image19.Visible := false; image20.Visible := false; timer2.Enabled := true; edit2.Text := inttostr(z); timer4.Enabled := true; PlaySound(PChar(1),HInstance, snd_ASync or snd_Memory or snd_Resource); end; procedure TForm2.Timer2Timer(Sender: TObject); begin timer2.Enabled := false ; image13.Visible := false; image19.Visible := true; image20.Visible := false; timer3.Enabled := true; end; procedure TForm2.Timer3Timer(Sender: TObject); begin timer3.Enabled := false ; image13.Visible := false; image19.Visible := false; image20.Visible := true;
sndPlaySound(nil, 0); // Stops the sound end;
procedure TForm2.Timer4Timer(Sender: TObject); begin edit1.text := inttostr(z); z := 0; end; end.
LAMPIRAN C
PENGATURAN SETTING ADC DAN UART
Berikut adalah langkah dalam melakukan pengaturan mikrokontroler dengan menggunakan software bantu code vision:
1. Buka software code vision
3. Pilih Project
5. Setelah itu, atur chip pada ATMEGA 8 dan clock pada 16MHZ
7. Aktifkan check bar ADC enabled, use 8 bits, dan atur clock
pada 500KHZ
9. Pilih pada menu bar : file →save, generate, and exit
LAMPIRAN D GAMBAR ANIMASI
Berikut adalah gambar – gambar yang digunakan dalam pembuatan animasi:
Gambar 1:
Gambar 2:
Gambar 3:
Gambar 4:
Gambar 5:
Gambar 7:
Gambar 8:
Gambar 10:
Gambar 12:
Gambar 13:
BIODATA PENULIS
Nama : Caresa Juwana
NRP : 5103008003
Tempat, tgl.lahir : Surabaya, 13 Oktober 1989
Agama : Katolik
Alamat : Manyar Jaya 7/28
Surabaya 60226
Riwayat Pendidikan :
Tahun 2002, Lulus SD YPPI I, Surabaya Tahun 2003, Lulus SMP YPPI II, Surabaya Tahun 2006, Lulus SMA YPPI I, Surabaya