Anda di halaman 1dari 6

Percobaan 1

GPIO (General Purpose Input Output) Menggunakan Push Button dan Relay

I. Tujuan
 Mahasiswa dapat mengerti fungsi tentang GPIO pada ARM
 Mahasiswa dapat melakukan konfigurasi GPIO pada ARM
 Mahasiswa dapat mengoperasikan GPIO pada ARM

II. Dasar Teori


General-purpose input/output (GPIO) adalah pin generik pada sirkuit terpadu (chip) yang
perilakunya (termasuk apakah pin itu input atau output) dapat dikontrol (diprogram) oleh
pengguna saat berjalan. Pin GPIO tidak ditetapkan untuk tujuan khusus dan secara default
tidak digunakan. Ide dibalik GPIO adalah untuk memenuhi sistem integrator dalam
memperluas dan membangun sistem lengkap yang membutuhkan pin tambahan dari chip
berupa sinyal kontrol ataupun data. Adanya konektor (pin) yang tersedia dari chip dapat
menghemat kerumitan saat mengatur sirkuit tambahan.Pada hakekatnya hampir semua SBC
(single-board computer) menyediakan GPIO untuk ekspansi disambungkan ke modul atau
komponen lainnya. Software otomasi industri yang bisa berkomunikasi dengan GPIO
misalnya LabVIEW, Wonderware, Iconics, IGSS, Cimplicity ,CoDeSys dan sebagainya.
Berbagai besaran proses industri dapat dihubungkan ke modul GPIO, yaitu :
 Digital input : pressure switch, flow switch, level switch dsb.
 Digital output : relay
 Analog input : berbagai sensor dan pengukuran yang dikonversi menjadi 0-5 V
seperti pengukuran temperature, pressure, level, flow, pH dsb.
Aplikasi GPIO sangat luas. Luasnya aplikasi GPIO hanya dibatasi oleh imaginasi dan
pengalaman. GPIO dapat dipergunakan oleh berbagai kalangan untuk berbagai tujuan seperti
pendidikan atau bahan untuk membuat tugas akhir dengan fokus yang sangat beragam.
Fungsi Modbus RTU yang di support oleh GPIO adalah :
 Fungsi 01 (Read coils-baca digital output)
 Fungsi 02 (Read discrete inputs-baca digital input)
 Fungsi 04 (Read input registers-baca analog input)
 Fungsi 05 (Write single coils-tulis digital output 1 bit)
 Fungsi 15 (Write multiple coils-tulis digital output, lebih dari 1 bit)

Gambar (1). Modul ARM STM32F407VGTx


Spesikasi modul GPIO adalah:
 Protokol standar industri
 Kanal digital input 14
 Kanal digital output 14
 Kanal analog input 0 – 5 volt resolusi 10 bit
 Relay board (optional)
Software yang di PC atau Laptop bisa berupa :
 Software SCADA professional seperti Wonderware, Iconics, Cimplicity,Citect, IGSS,
VB, LabVIEW dsb.
 Software PC based Automation ,yaitu membuat PC atau Laptop, menjadi Programmable
Logic Controller (PLC) dengan memakai pemrograman yang sesuai dengan standard
IEC-61131-3

III. Peralatan
1. Modul ARM STM32F407VGTx
2. Software STM32 Cube MX
3. Software Keli uVision 5
4. Kabel ST-LINK
5. Adaptor 5 Volt dc

IV. Rangkaian Percobaan

Gambar (2). Hubungan modul GPIO dengan berbagai peralatan

Gambar (3). Rangkaian Percobaan pada Modul ARM STM32F407VGTx

V. Langkah Percobaan
1. Menyiapkan peralatan yang digunakan untuk Praktikum.
2. Membuat program pada software.
3. Memasukkan program yang telah dibuat pada modul percobaan.
4. Mengambil data percobaan.
VI. Project

INPUT OUTPUT
PUSH BUTTON RELAY
PE.8 – PE.15 PE.0 – PE.7

VII. Flowchart

START

INISIALISASI

PE.8==1?
N PE.0 = 0 PE.9==1?
N PE.1 = 0 N
PE.15==1? PE.7 = 0
? ?
Y Y Y
PE.0 = 1 PE.1 = 1 PE.7 = 1

END
VIII. Program

#include "stm32f4xx_hal.h"

void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void)
{

HAL_Init();

/* Configure the system clock */


SystemClock_Config();

/* Initialize all configured peripherals */


MX_GPIO_Init();

while (1)
{
/* USER CODE END WHILE */

if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_8)==1)
{
HAL_Delay(10);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_0,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_0,0);

if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9)==1)
{
HAL_Delay(10);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,0);

if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_10)==1)
{
HAL_Delay(10);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_2,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_2,0);

if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_11)==1)
{
HAL_Delay(10);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,0);

if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_12)==1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,0);

if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_13)==1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,0);

if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_14)==1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_6,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_6,0);

if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_15)==1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_7,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_7,0);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */

Dan seterusnya

IX. Analisa
Pada percobaan GPIO kali ini dilakukan 4 percobaan, yaitu Percobaan Relay dan Button
(Koneksi), Percobaan Relay dan Button (Operasi), Percobaan Debounching menggunakan
TooglePin, dan Aplikasi dari Relay dan Button. Relay diletakkan pada PORT E dalam PIN
0-7, sedangkan button berada pada PORT E dalam PIN 8-15.
Pada percobaan Relay dan Button (Operasi), Button difungskan sebagai input dan Relay
sebagai outputnya. Program yang dibuat yaitu apabila push button 1 ditekan maka relay 1
akan menyala, dan setelah tombol dilepas relay akan mati, dan seterusnya. Dari program
tersebut, untuk IF yang pertama, apabila push button 1 ditekan, maka relay 1 akan nyala, dan
setelah tombol dilepas, maka relay akan mati karena pada program terdapat perintah ELSE.
Untuk IF yang kedua, relay 2 akan nyala jika Push Button 2 ditekan. Dan seterusnya sesuai
dengan program yang dibuat.
Berdasarkan program yang telah dibuat, ReadPin berguna untuk memfungsikan port
tersebut sebagai input. WritePin berguna untuk memfungsikan port tersebut sebagai output,
dapat diatur sesuai keinginan dan kebutuhan yaitu 1 dan 0, dimana difungsikan logika 1
apabila output mempunyai karakteristik Active High, sedangkan logika 0 apabila output
memiliki sifat Active Low.
Pada inisialisasi ARM, pada port configuration, dapat diatur kecepatan dari frekuensi
input (push button), karena pada hardware dari push button memiliki rugi-rugi mekanik,
sehingga saat Push Button ditekan, maka ripple mekanik tersebut dapat membuat ARM
membaca bahwa Push Button ditekan beberapa kali, yang menyebabkan relay juga hidup
beberapa kali, inilah yang dinamakan efek bouncing, maka dari itu pada program perlu
ditambah delay agar pembacaan Push Button pada ARM adalah sinyal yang sudah melewati
ripple akibat rugi-rugi mekanik dari Push Button tersebut (Program debouncing). Pada
modul, push button yang masih memiliki efek bouncing yaitu push button 1 dan push button
3. Untuk menghilangkan efek bouncing, tidak lagi digunakan ReadPin ataupun WritePin,
melainkan TooglePin, yaitu apabila push button 1 ditekan sekali, relay akan menyala, dan
apabila ditekan untuk kedua kali, relay akan mati, yang merupakakan gabungan dari
ReadPin dan Write Pin.
Pada percobaan Aplikasi Button dan Relay dibuat program yang apabila pusg button 1
ditekan, maka relay 1 akan menyala, kemudian jeda 1 detik relay 2 menyala, begitu
seterusnya sampai relay 8. Setelah itu apabila push button 2 yang ditekan, maka relay 8 akan
mati, kemudian jeda 1 detik relay 7 mati, begitu seterusnya sampai relay 1.

X. Kesimpulan
 ReadPin digunakan untuk memberikan instruksi input.
 WritePin digunakan untuk memberikan instruksi output. Output dapat diatur 0 (active
low) atau 1 (active high).
 TooglePin merupakan gabungan dari ReadPin dan WritePin, yaitu apabila ditekan sekali
maka akan Active High dan apabila ditekan untuk kedua kali, akan Active Low.
 Pada Hardware dari Push button memliki rugi-rugi mekanik yang dapat memberikan
ripple (efek bouncing), sehingga untuk mengatasinya dapat menuliskan program delay
(program debouncing) atau memasang sebuah kapasitor yang diparalel dengan push
button.

Anda mungkin juga menyukai