• Tidak ada hasil yang ditemukan

Perancangan Alat Pengisi Cairan Dalam Gelas Secara Otomatis Menggunakan Sensor Ultrasonik & Sensor Hambatan Geser Berbasis Atmega8535

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perancangan Alat Pengisi Cairan Dalam Gelas Secara Otomatis Menggunakan Sensor Ultrasonik & Sensor Hambatan Geser Berbasis Atmega8535"

Copied!
7
0
0

Teks penuh

(1)

LISTING PROGRAM

#include <mega8535.h> #include <delay.h>

// Alphanumeric LCD functions #include <alcd.h>

#include <stdio.h>

// Declare your global variables here unsigned char x,buflcd[16];

unsigned int nilai_ADC,counter,set;

float nilai_total, nilai_hasil, nilai_rata,jarak,nilai_jarak,jarak_rata; int frekuensi=0;

float pulsa,vol,flowrate;

bit mode_auto,mode_volume,tbl_set; #define ADC_samp 25

#define triger PORTC.6 #define pin_triger DDRC.6 #define echo PINC.7 #define pin_echo DDRC.7 #define switch1 PIND.7 #define tombol1 PINB.7 #define tombol3 PINC.4 #define tombol2 PINC.3 #define pompa_aktif PORTC.5

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void) {

// Place your code here frekuensi++;

}

// Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) {

// Reinitialize Timer1 value TCNT1H=0x85EE >> 8; TCNT1L=0x85EE & 0xff; // Place your code here pulsa=frekuensi; frekuensi=0; flowrate=pulsa/7.5; vol=vol+pulsa; }

(2)

lcd_gotoxy(x,y); lcd_putsf(teks); //lcd_clear(); }

// Voltage Reference: AVCC pin

#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))

// Read the AD conversion result

unsigned int read_adc(unsigned char adc_input) {

ADMUX=adc_input | ADC_VREF_TYPE;

// Delay needed for the stabilization of the ADC input voltage delay_us(10);

// Start the AD conversion ADCSRA|=(1<<ADSC);

// Wait for the AD conversion to complete while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF);

return ADCW; }

void main(void) {

// Declare your local variables here

// Input/Output Ports initialization // Port A initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=P PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);

// Port C initialization

// Function: Bit7=In Bit6=In Bit5=Out Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRC=(0<<DDC7) | (0<<DDC6) | (1<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

(3)

// Port D initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

// State: Bit7=T Bit6=P Bit5=P Bit4=P Bit3=P Bit2=T Bit1=P Bit0=P PORTD=(1<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (1<<PORTD3) | (0<<PORTD2) | (1<<PORTD1) | (1<<PORTD0);

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 31,250 kHz // Mode: Normal top=0xFFFF // OC1A output: Disconnected // OC1B output: Disconnected // Noise Canceler: Off

// Input Capture on Falling Edge // Timer Period: 1 s

// Timer1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off

TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (1<<CS12) | (0<<CS11) | (0<<CS10);

TCNT1H=0x85;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (1<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);

// External Interrupt(s) initialization // INT0: On

// INT0 Mode: Any change // INT1: Off

// INT2: Off

GICR|=(0<<INT1) | (1<<INT0) | (0<<INT2);

MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (1<<ISC00); MCUCSR=(0<<ISC2);

GIFR=(0<<INTF1) | (1<<INTF0) | (0<<INTF2);

// ADC initialization

(4)

// ADC High Speed Mode: Off

// ADC Auto Trigger Source: ADC Stopped ADMUX=ADC_VREF_TYPE;

ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

SFIOR=(1<<ADHSM) | (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

lcd_init(16);

if(tombol1==0) {lcd_clear();tampil_lcd(0,0,"mode"); tampil_lcd(7,0,"auto");

(5)

while (echo==1) {

counter++;

if ( counter > 13000) break; }

nilai_jarak=nilai_jarak + counter; }

nilai_rata = (float)nilai_hasil / ADC_samp; // nilai rata-rata nilai_total =(nilai_rata * 4.8825125);

jarak_rata=nilai_jarak/ADC_samp; jarak=(jarak_rata/34);

lcd_clear();

sprintf(buflcd,"nl:%2.2f mV",nilai_total); lcd_gotoxy(0,0);lcd_puts(buflcd);

sprintf(buflcd,"jrk:%2.2f cm",jarak); lcd_gotoxy(0,1);lcd_puts(buflcd);

if(switch1==0 & ((jarak+0.5)<nilai_total)){delay_ms(200);pompa_aktif=1;} if ((jarak+0.5)>=nilai_total){pompa_aktif=0;}

if(tombol1==0) tbl_set=1; }

while(mode_volume==1 & tbl_set==0){

if(tombol2==0) {set=set+50;delay_ms(250);} if(tombol3==0) {set=set-50;delay_ms(250);} if (set<50) set=3000;

if (set>3000) set=50;

sprintf(buflcd,"set vol:%2d ml",set); lcd_gotoxy(0,0);lcd_puts(buflcd); if(tombol1==0) {tbl_set=1;vol=0;} while(switch1==0 && vol<set){ #asm("sei");

pompa_aktif=1;

lcd_clear();sprintf(buflcd,"vol: %.2f ml",vol); lcd_gotoxy(0,0);lcd_puts(buflcd); }

pompa_aktif=0;#asm("cli");

(6)

FOTOPERANCANGAN ALAT PENGISI CAIRAN OTOMATIS MENGGUNAKAN SENSOR HAMBATAN GESER BERDASARKAN

(7)

S

KE

M

ATIK

RA

NGKAIAN

PERAN

CA

NG

AN

ALAT

PENGI

S

I CA

IRA

N OT

OMA

T

IS

M

E

NGGUNA

KAN SE

NSO

R HAM

B

ATAN

GE

S

E

R BE

RD

ASARKA

N A

T

M

E

Referensi

Dokumen terkait

Soal fleksibel terserah guru mapel, yang penting sudah disesuaikan dengan silabus!. AKU TAHU...AKU MAMPU...AKU BISA

Lalu setelah dilakukan penurunan kecepatan alir lumpur, maka nilai efektifitas pengangkatan cutting dengan menggunakan cutting transport ratio pada bagian casing drillpipe

(1) Bidang Perlindungan Masyarakat dan Pemadam Kebakaran mempunyai tugas mengoordinasikan, membina, mengatur dan mengendalikan pengembangan dan peningkatan kemampuan

telah berlaku di Pertamina EP apabila terjadi pipa terjepit, dimulai dengan dilakukan work on pipe, sirkulasi dengan hi – vis dan low – vis, dimana fungsi dari low – vis

Pada saat Peraturan Gubernur ini mulai berlaku, maka Peraturan Gubernur Kalimantan Selatan Nomor 029 Tahun 2008 tentang Tugas Pokok, Fungsi dan Uraian Tugas

Secara historis, arus pendidikan Islam Indonesia pada awal abad ke- 20 mengalami diferensiasi dan pembelahan yang tajam, yaitu dengan kehadiran gerakan modern Islam

dalam huruf a, perlu menetapkan Peraturan Gubernur tentang Standar Operasional Prosedur Monitoring dan Evaluasi serta Penetapan Penerima Hibah Daerah Pada Biro

Hal ini dapat dilihat dari hasil penelitian yang dilakukan oleh Situmorang (2013) mengenai Pengembangan Buku Ajar Kimia SMA Melalui Inovasi Pembelajaran Dan