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.