Assalamu'alaikum...
Hi teman2, hari ini saya akan memaparkan bagaimana kelanjutan cara membuat alat pengontrollan kecepatan tetes infus,.
Alat ini sudah saya buat pada tahun 2010. yah sudah lama sih...
Alat ini akan bekerja seperti berikut...
Ketika kita tekan angka 3 pada keypad, maka kecepatan tetes infus akan menjadi 3 tetes/detik. system yang di buat ini akan terus mempertahankan agar kecepatan tetes infus sesuai dengan angka yang kita tekan di keypad. Sebagai pengongtrol kecepatan tetes infusnya, saya gunakan motor stepper untuk menutup dan membuka selang infus, cara kerjanya adalah membengkokkan selang infus.
Ketika air infus habis, maka buzzer akan berbunyi...
heheh sederhana kan.... ops... hampir lupa,.. Untuk membaca tetes infus, saya gunakan transistor photo dan infrared super...
Yuk kita lihat rangkainnya di bawah ini:
Programnya adalah sebagai berikut:
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
#define ir PIND.7
unsigned char keypad();
void baca_keypad(void);
unsigned char data;
void baca_tetes(void);
void kiri (void);
void kanan (void);
void buzer (void);
int data1,ulang;
long int hitung;
void main(void)
{
// Declare your local variables here
PORTA=0xff;
DDRA=0x0F;
PORTB = 0X03;
DDRB = 0X8F;
PORTD.7 = 1;
DDRD.7 = 0;
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("test keypad");
ulang =0;
while (1)
{
// Place your code here
baca_keypad();
if ( data1 == 1 ) kiri();
if ( data1 == 2 ) kanan();
if (data1 == 3 ) baca_tetes();
};
}
flash unsigned char keypad()
{
PORTA = 0b11111110; //aktifkan baris1 (memberi logika 0 ke baris1)
delay_ms(10);
if(PINA.7==0) return (10);
if(PINA.6==0) return (11);
if(PINA.5==0) return (12);
if(PINA.4==0) return (13);
//========================
PORTA = 0b11111101; //aktifkan baris2
delay_ms(10);
if(PINA.7==0) return (3);
if(PINA.6==0) return (6);
if(PINA.5==0) return (9);
if(PINA.4==0) return (15);
//========================
PORTA = 0b11111011; //aktifkan baris3
delay_ms(10);
if(PINA.7==0) return (2);
if(PINA.6==0) return (5);
if(PINA.5==0) return (8);
if(PINA.4==0) return (0);
//========================
PORTA = 0b11110111; //aktifkan baris4
delay_ms(10);
if(PINA.7==0) return (1);
if(PINA.6==0) return (4);
if(PINA.5==0) return (7);
if(PINA.4==0) return (14);
}
void baca_keypad(void)
{
unsigned char buf[16];
data = keypad();
if ( data != 0)
{
buzer();
data1 = data;
sprintf(buf,"%-i",data1);
lcd_gotoxy(14,1);
lcd_puts(buf);
}
}
void kiri (void)
{
PORTB = 0X01; delay_ms(5);
PORTB = 0X03; delay_ms(5);
PORTB = 0X02; delay_ms(5);
PORTB = 0X06; delay_ms(5);
PORTB = 0X04; delay_ms(5);
PORTB = 0X0C; delay_ms(5);
PORTB = 0X08; delay_ms(5);
PORTB = 0X09; delay_ms(5);
PORTB = 0X01; delay_ms(5);
}
void kanan (void)
{
PORTB = 0X01; delay_ms(5);
PORTB = 0X09; delay_ms(5);
PORTB = 0X08; delay_ms(5);
PORTB = 0X0C; delay_ms(5);
PORTB = 0X04; delay_ms(5);
PORTB = 0X06; delay_ms(5);
PORTB = 0X02; delay_ms(5);
PORTB = 0X03; delay_ms(5);
PORTB = 0X01; delay_ms(5);
}
void buzer (void)
{
PORTB.7 = 1;
delay_ms(100);
PORTB.7 = 0;
}
void baca_tetes(void)
{
int i;
unsigned char buf[16];
for ( i = 0; i <= 200; i++)
{
if (ir == 1 && ulang ==0)
{
ulang = 1;
hitung ++;
}
if ( ir == 0)ulang = 0;
delay_ms(5);
}
sprintf(buf,"data: %-i Tts/S",hitung);
lcd_gotoxy(0,1);
lcd_puts(buf);
hitung = 0;
}
Silahkan kembangkan ya system ini;
Semoga Bermanfaat.....
Hi teman2, hari ini saya akan memaparkan bagaimana kelanjutan cara membuat alat pengontrollan kecepatan tetes infus,.
Alat ini sudah saya buat pada tahun 2010. yah sudah lama sih...
Alat ini akan bekerja seperti berikut...
Ketika kita tekan angka 3 pada keypad, maka kecepatan tetes infus akan menjadi 3 tetes/detik. system yang di buat ini akan terus mempertahankan agar kecepatan tetes infus sesuai dengan angka yang kita tekan di keypad. Sebagai pengongtrol kecepatan tetes infusnya, saya gunakan motor stepper untuk menutup dan membuka selang infus, cara kerjanya adalah membengkokkan selang infus.
Ketika air infus habis, maka buzzer akan berbunyi...
heheh sederhana kan.... ops... hampir lupa,.. Untuk membaca tetes infus, saya gunakan transistor photo dan infrared super...
Yuk kita lihat rangkainnya di bawah ini:
Programnya adalah sebagai berikut:
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
#define ir PIND.7
unsigned char keypad();
void baca_keypad(void);
unsigned char data;
void baca_tetes(void);
void kiri (void);
void kanan (void);
void buzer (void);
int data1,ulang;
long int hitung;
void main(void)
{
// Declare your local variables here
PORTA=0xff;
DDRA=0x0F;
PORTB = 0X03;
DDRB = 0X8F;
PORTD.7 = 1;
DDRD.7 = 0;
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("test keypad");
ulang =0;
while (1)
{
// Place your code here
baca_keypad();
if ( data1 == 1 ) kiri();
if ( data1 == 2 ) kanan();
if (data1 == 3 ) baca_tetes();
};
}
flash unsigned char keypad()
{
PORTA = 0b11111110; //aktifkan baris1 (memberi logika 0 ke baris1)
delay_ms(10);
if(PINA.7==0) return (10);
if(PINA.6==0) return (11);
if(PINA.5==0) return (12);
if(PINA.4==0) return (13);
//========================
PORTA = 0b11111101; //aktifkan baris2
delay_ms(10);
if(PINA.7==0) return (3);
if(PINA.6==0) return (6);
if(PINA.5==0) return (9);
if(PINA.4==0) return (15);
//========================
PORTA = 0b11111011; //aktifkan baris3
delay_ms(10);
if(PINA.7==0) return (2);
if(PINA.6==0) return (5);
if(PINA.5==0) return (8);
if(PINA.4==0) return (0);
//========================
PORTA = 0b11110111; //aktifkan baris4
delay_ms(10);
if(PINA.7==0) return (1);
if(PINA.6==0) return (4);
if(PINA.5==0) return (7);
if(PINA.4==0) return (14);
}
void baca_keypad(void)
{
unsigned char buf[16];
data = keypad();
if ( data != 0)
{
buzer();
data1 = data;
sprintf(buf,"%-i",data1);
lcd_gotoxy(14,1);
lcd_puts(buf);
}
}
void kiri (void)
{
PORTB = 0X01; delay_ms(5);
PORTB = 0X03; delay_ms(5);
PORTB = 0X02; delay_ms(5);
PORTB = 0X06; delay_ms(5);
PORTB = 0X04; delay_ms(5);
PORTB = 0X0C; delay_ms(5);
PORTB = 0X08; delay_ms(5);
PORTB = 0X09; delay_ms(5);
PORTB = 0X01; delay_ms(5);
}
void kanan (void)
{
PORTB = 0X01; delay_ms(5);
PORTB = 0X09; delay_ms(5);
PORTB = 0X08; delay_ms(5);
PORTB = 0X0C; delay_ms(5);
PORTB = 0X04; delay_ms(5);
PORTB = 0X06; delay_ms(5);
PORTB = 0X02; delay_ms(5);
PORTB = 0X03; delay_ms(5);
PORTB = 0X01; delay_ms(5);
}
void buzer (void)
{
PORTB.7 = 1;
delay_ms(100);
PORTB.7 = 0;
}
void baca_tetes(void)
{
int i;
unsigned char buf[16];
for ( i = 0; i <= 200; i++)
{
if (ir == 1 && ulang ==0)
{
ulang = 1;
hitung ++;
}
if ( ir == 0)ulang = 0;
delay_ms(5);
}
sprintf(buf,"data: %-i Tts/S",hitung);
lcd_gotoxy(0,1);
lcd_puts(buf);
hitung = 0;
}
Silahkan kembangkan ya system ini;
Semoga Bermanfaat.....