Anda di halaman 1dari 10

PRAKTIKUM MIKROKONTROLLER

IMPLEMENTASI ANALOG DIGITAL CONVERTER (ADC)

Dibuat Oleh :
Ircham Badrus Rahmadani
2321600024
2 D4 Elektro Industri A

Dosen Pengampu :
Farid Dwi Murdianto, S.ST ., M.T

PROGRAM STUDI D4 TEKNIK ELEKTRO INDUSTRI

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

TAHUN AJARAN 2022-2023


I. TUJUAN
1. Mahasiswa mampu menggunakan software STM32 CubeMX dan Keil uVision
2. Mahasiswa mampu mengintegrasikan program STM32 dengan Hardware
3. Mahasiswa mampu memprogram dengan STM32 di keil uVision
4. Mahasiswa mampu mengimplementasikan ADC dengan menggunakan Hardware
II. ALAT DAN BAHAN

1. Laptop pribadi

2. Software STM32CubeMX

3. ARM Keil

4. Modul STM32F407

5. LCD Character

6. Kabel konektor dan kabel serial

III. LANGKAH PERCOBAAN

1. Buka software STM32 CubeMX

2. Lalu klik File dan pilih New Project


3. Pilih MCU/MPU Selector, kemudian pilih Series.

4. Muncul beberapa jenis dari package dan core yang telah dipilih lalu pilih STM32F407VG.

5. Klik Start Project.


6. Klik Pinout & Configuration, kemudian klik System Core dan pilih RCC. Lalu pada High
Speed Clock (HSE) pilih Crsytal/Ceramic Resonator

7. Lalu pada bagian kaki chip mikrokontroler tersebut, kemudian klik dan atur kaki pin.
8. Setelah kaki pin diatur maka akan tampil seperti gambar dibawah ini.

9. Kemudian isi sesuai dengan parameter berikut ini.


10. Pada menubar klik “system core” dan pilih “GPIO” dengan aturan GPIO output level High

11. Kemudian klik “Generator Code”

12. Selanjutnya klik open project


13. Setelah dialihkan pada software arm keil uVision, maka akan tampil program file main.c

14. Buat program yang diinginkan pada MX GPIO Init


15. Sambungkan USB dari laptop ke moudl mikrokontroler. Kemudian klik “Build” dan
“Load” mpodul mikrokontroler siap bekerja. Lalu tekan tombol “Reset” pada modul
untuk menampilkan hasil program di layer LCD
IV. PROGRAM
#include "main.h"

/* Private includes ----------------------------------------------------------*/


/* USER CODE BEGIN Includes */
#include "lcd_character.h"
#include "stm32f4xx_hal.h"
#include "stdio.h"

/* Private variables ---------------------------------------------------------*/


ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef hdma_adc1;

/* USER CODE BEGIN PV */


__IO uint16_t ADC_value[8];

/* Private function prototypes -----------------------------------------------*/


void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_ADC1_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/


/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
char buffer[20];
float Current;
int Voltage;
float CurrentResult;
int VoltageResult;

/* Configure the system clock */


SystemClock_Config();

/* Initialize all configured peripherals */


MX_GPIO_Init();
MX_DMA_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */
HAL_ADC_Start_DMA(&hadc1, (uint32_t*) &ADC_value,8);
lcd_init();
lcd_gotoxy(3,0);
lcd_puts("PARAMETERS");
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
Current = ADC_value[4];
CurrentResult = Current* 1.5/4095;
Voltage = ADC_value[5];
VoltageResult = Voltage*220/4095;
sprintf(buffer, "I =%0.2f V = %2d ", CurrentResult, VoltageResult);
lcd_gotoxy(0,1);
lcd_puts(buffer);
HAL_Delay(100);
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */


}
/* USER CODE END 3 */
}

V. HASIL PERCOBAAN
1. Nilai awal ketika ditekan

2. Setelah menunggu beberapa detik akan muncul nilai tiap parameter


VI. ANALISA PERCOBAAN
Pada percobaan yang telah dilakukan dapat dianalisa bahwa percobaan diatas
menggunakan software STM32 CubeMX dan juga KEIL. Dimana program yang telah
dibuat diatas merupakan contoh program yang menggunakan lcd 2x16 dan Keypad 4x4,
dimana kita aplikasikan dimana program ini bertujuan untuk menampilkan nilai tegangan
dan arus pada tampilan layar lcd 2x16 dengan menggunakan ADC dan bisa mengatur
nilai tegangan dan arus yang ditampilkan dengan menggunakan komponen pada modul
trainer sebagai fungsi berikut :
• Potensio 1 sebagai pengatur nilai tegangan sedangkan,
• Potensio 2 sebagai pengatur nilai arus.
Sebelum menampilkan nilai dari kedua potensio tersebut, pertama kita memasuki
program awal yaitu pada program while “1” akan muncul tulisan PARAMETERS pada
baris pertama dengan memanfaatkan fungsi ADC_value sebagai input awal nya. Yang
dimana fungsi ini merupakan nilai hasil konversi analog ke digital yang diberikan oleh
mikrokontroler. Nilai ini mewakili tingkat tegangan analog yang diukur oleh ADC
mikrokontroler sedangakan [4] merupakan setting GPIO potensio 1 sehingga nanti kita
bisa mengatur nilai tegangan dengan memutar potensio 1. Kemudian pada baris kedua
merupakan untuk mengatur nilai maximal tarus dan egangan yang ingin ditampilkan
sebagai berikut;

Dengan menampilkan nilai arus nya dan untuk mengatur nilai arus tersebut kita
menggunakan potensio 2 yang dimana potensio 2 ada di GPIO outup ADC1 dengan
nomor “5”. Pada baris keempat merupakan untuk mengatur nilai maximal arus yang ingin
ditampilkan pada layar lcd 2x16 dengan nilai setting 1.5A, kemudian kita bagi dengan
4096 yang dimana nilai ini merupakan jumlah diskrit yang kita gunakan pada ADC
12bitSederhana yang akan ditampilkan diawal running program. Sedangkan untuk
menampilkan nilai tegangan kita menggunakan potensio 1, dengan ini akan ditampilkan
pada layar lcd 2x16 kita setting nilai maxsimalnya sebesar 220V dengan mengikuti nilai
standar yang digunakan oleh PLN untuk tegangan listrik yang biasa diguakan di seluruh
rumah,kemudian nilai tersebut kita bagi dengan 4096 yang dimana nilai ini merupakan
jumlah diskrit yang kita gunakan pada ADC 12bit. Terdapat beberapa fungsi pada
program ini yaitu;
• Sprintf yang dimana fungsi ini untuk menampilkan program pada layar lcd.
• Buffer yang dimana fungsi Buffer merupakan fungsi yang digunakan untuk
mneyimpan hasil nilai lcd_gotoxy(0,1).
• Lcd_puts(buffer) dimana fungsi ini untuk memproses atau menyimpan data
kemudian akan ditampilkan pada lcd.
VII. KESIMPULAN
Berdasarkan hasil praktikum yang telah dilakukan dan Analisa yang telah dibuat maka
dapat disimpulkan sebagai berikut:
1. Untuk mengaktifkan fungsi LCD display diperlukan library seperti #include
“lcd_character.h” yang mana di dalam library tersebut terdapat beberapa fungsi yang
digunakan sebagai berikut :
a. lcd_init() berfungsi untuk menginisialisasi tampilan pada layar lcd supaya dapat
menampilkan text dilayarnya.
b. lcd_puts(“..”) berfungsi menampilkan karakter huruf dalam bentuk string yang
akandigunakan untuk menampilkan text pada LCD display.
c. lcd_gotoxy (a,b) berfungsi untuk mengatur posisi karakter pada LCD display. Untuk
(a) difungsikan pada kolom sedangkan (b) difungsikan pada baris. Karena LCD yang
digunakan 16x2, maka untuk memprogram LCD tersebut pada kolom (a) dimulai dari
bit 0 -15 sedangkan pada baris (b) dimulai dari 0 – 1.
2. Untuk mengaktifkan fungsi Keypad 4x4 diperlukan library seperti #include
“keypad_4x4.h” yang mana di dalam library tersebut terdapat fungsi penting yakni
keypad_get_key_value(). Fungsi tersebut menyimpan data – data character sesuai dengan
tombol digit pada keypad.
3. ADC sistem yang berfungsi untuk mengubah sinyal analog menjadi sinyal digital.
4. Sinyal digital adalah sinyal diskrit yang hanya dapat mengambil nilai-nilai tertentu.
5. Dalam program ADC ini, sinyal analog diambil sebagai input dan diukur nilainya pada
interval waktu tertentu. Nilai tersebut kemudian dikodekan menjadi format digital.

Anda mungkin juga menyukai