Memprogram STM32 Nucleo dengan STM32CubeIDE Bagian 3: ADC Single Mode
Kembali lagi, di tutorial kali ini saya ingin menulis bagaimana menggunakan peripheral ADC pada mikrokontroller STM32, baik itu konfigurasi single mode atau multi mode. Untuk penjelasan ADC sendiri mungkin di lain waktu untuk penulis menjelaskan, atau kalian bisa cari sendiri, banyak tulisan tentang ADC dari yang sederhana hingga rumit, hehe
Berbeda dengan board Arduino, pada STM32 Nucleo-F446RE dengan menggunakan CubeIDE ini mungkin sedikit rumit, karena kita mengkonfigurasikan sendiri beberapa pengaturan agar fitur ADC dapat berjalan.
Pada STM32, resolusi ADC dapat diatur (sama seperti arduino, dengan mengakses AVR register) dengan pilihan 6-bit, 8-bit, 10-bit, dan 12-bit. Saat ADC memiliki output 8-bit, berarti sinyal input dapat dinyatakan sebesar 256 nilai diskrit, sedangkan ketika resolusi ADC diset sebesar 12-bit, nilai maksimalnya pembacaannya sebesar 4096.
ADC pada STM32 mempunyai tegangan referensi sebesar 3.3V, ini berarti ketika input tegangan analog sebesar 3.3V maka mikrokontroller akan membaca nilai dengan besar 4096 (ADC 12-bit). sehingga 1 nilai diskrit/resolusinya sebesar
berdasarkan hasil perhitungan diatas, ADC 12 bit resolusinya sebesar 0.805 mV, sehingga 1 diskritnya mewakili tegangan sebesar 0.805 mV. Jika kita ubah ADC menjadi 8 bit (256) maka
Terlihat perbedaan resolusinya, pada ADC 8 bit resoulsi per 1 diskritnya sebesar 12.89mV dibanding ketika ADC 12 bit sebesar 0.805mV. Kelebihannya ADC 12 bit pembacaan nilai tegangannya lebih akurat. Namun kekurangannya membutuhkan waktu lebih lama (+4 cycle) dalam membaca dan memproses sinyal analog.
Konfigurasi Single Mode
Kembali ke bahasan utama, kita buat project baru kemudian beri nama sesuai keinginan, akan munculcul konfigurasi pin, pada kategori pilih ANALOG, kemudian ADC1, pada adc mode pilih IN0, secara otomatis akan dipilih pin yang digunakan adalah PA0, seperti gambar dibawah

Generate code dengan menekan icon gear pada toolbar diatas, lalu masuk ke file main.c
Untuk memulai menggunakan periferal ADC, kita harus memulai mengaktifkan fitur agar melakukan konversi dengan menggunakan fungsi berikut :
1 |
HAL_ADC_Start(&hadc1); |
Sedangkan untuk membaca nilai ADC, menggunakan fungsi berikut :
1 |
AnalogVal = HAL_ADC_GetValue(&hadc1); |
Disini hal yang perlu diingat, karena kita men disable fitur Continuous Conversion Mode (dapat dilihat pada gambar pertama bagian configuration), maka ADC hanya akan melakukan konversi sekali saja, untuk melakukan konversi kembali, harus memanggil fungsi HAL_ADC_Start(). Contohnya seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
int main(void) { /* USER CODE BEGIN 1 */ // ADC Init Value uint16_t AnalogVal; /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ // ADC Start Conversion HAL_ADC_Start(&hadc1); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ // Read ADC Value AnalogVal = HAL_ADC_GetValue(&hadc1); /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ |
Program diatas memperlihatkan fungsi HAL_ADC_Start() berada diluar while loop yang berarti hanya dieksekusi sekali tiap mikrokontroller dihidupkan, yang terjadi adalah nilai HAL_ADC_GetValue() akan tetap tidak berubah karena ADC tidak melakukan konversi dan yang muncul adalah nilai terakhir konversi. Dibandingkan program dibawah :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
int main(void) { /* USER CODE BEGIN 1 */ // ADC Init Value uint16_t AnalogVal; /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ // ADC Start Conversion HAL_ADC_Start(&hadc1); // Read ADC Value AnalogVal = HAL_ADC_GetValue(&hadc1); /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ |
Diperlihatkan bahwa fungsi HAL_ADC_Start() berada di dalam while loop sehingga nilai dari HAL_ADC_GetValue() akan terus di update sesuai tegangan yang diterima pin PA0.
I manage a vape shop web directory and we have had a posting from a vape shop in the USA that also advertises CBD items. A Month later on, PayPal has written to use to claim that our account has been restricted and have asked us to get rid of PayPal as a payment solution from our vape shop web directory. We do not offer CBD items such as CBD oil. We merely offer advertising and marketing solutions to CBD firms. I have had a look at Holland & Barrett– the UK’s Major Health and wellness Retailer and if you take a close look, you will witness that they offer for sale a relatively substantial range of CBD product lines, primarily CBD oil and they also happen to accept PayPal as a payment solution. It emerges that PayPal is applying contradictory standards to different firms. As a result of this limitation, I can no longer accept PayPal on my CBD-related online site. This has constricted my payment possibilities and presently, I am seriously reliant on Cryptocurrency payments and straightforward bank transfers. I have consulted with a barrister from a Magic Circle law office in London and they stated that what PayPal is doing is definitely illegal and inequitable as it ought to be applying an uniform criterion to all companies. I am still to consult with one more lawyer from a US law firm in London to see what PayPal’s legal position is in the United States. Meanwhile, I would be very appreciative if anybody here at targetdomain could offer me with alternative payment processors/merchants that deal with CBD companies.
how much thc is in cbd oil from hemp
Can anyone in a position to recommend quality Renal Department Lead Generation Company? Thank you 😀