5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (12) ADCを使ってみよう

Posted at

STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版の続きです。
今回は、ADCです。
初めにDigiKey社のYoutubeと記事があるのでこちらをお勧めします。
https://www.digikey.com/en/maker/projects/getting-started-with-stm32-working-with-adc-and-dma/f5009db3a3ed4370acaf545a3370c30c

**投稿準備していたのですが、月刊トランジスタ技術2020年3月号にSTM32特集が組まれSTM32CubeIDEのプログラミングガイドブックもついていましたので、こちらを踏まえて修正しています。
(特集の話は昨年の夏ごろから聞いていただけにやっと・・・)

ADCとは

まずは、ADCとは何かです
今までSTM32においてスイッチなどの値を1か0として扱ってきました。
しかし、世の中にはアナログの値というものが存在します。
例えば、照度などです。
これらを電圧に変換し一定の分解能において、デジタルデータとして見える化します。
これがアナログデジタルコンバート ADCです

なお、分解能を上げることで細かい値を知る事も可能です。
今回は12bit 4096段階とします。

マイコンでは、アナログ⇒デジタル変換できるポートは限られています
仕様を見てみましょう。

STM32F401REの仕様から抜粋しました。
image.png

  1. FT = 5 V tolerant except when in analog mode or oscillator mode (for PC14, PC15, PH0 and PH1)

PC14, PC15, PH0、PH1以外は5V入力でも使えるようです
マイコンは3.3Vなので、5Vを入れても最大値の4096などになりますが、5V対応ならば、0~5Vまで計測可能です。

##配線
今回は可変抵抗を使用します。
左右のピンを3.3vとGND、真ん中のピンをA0につなぎます。
image.png

前回の続きの場合は、こうなります。
image.png

##Pinout&Configuration
それでは、設定しましょう。

まずは、ピンマップからPA0にADC1_IN0を設定します。
左のADC1 Mode and ConfigurationのIN0にチェックを入れても同じです、
image.png
これでコード生成をします。

##コード追加
追加するのは以下です

float adcval;
uint8_t adcout[12];

adcvalとadcoutという二つの値を用意します。

image.png

HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 100);
HAL_ADC_Stop(&hadc1);
adcval= HAL_ADC_GetValue(&hadc1);

最初にADCをスタートします。
ADCの変換をします。
*Timeの100は適宜変更しましょう。
そして、ADCをストップします。
*これも無くても良いと思います。
最後に、値を出力します。

sprintf((char*)adcout,"ADCVAL %u \n\r",
  (unsigned int)adcval);
printf(adcout);
HAL_Delay(500);

image.png

最後に、値をシリアル出力します。

この状態でコンパイルします。
すると、温度や湿度は変化しますが、ADCの値が変化しません。
これは、While分の中にADCを読み取る機能がないからです。
それでは、Whileの中に追加してみましょう。

すると、
無事変化しますね。

##OLEDへ表示しよう
次はOLEDに表示させてみましょう。

/*ADC VAL*/
ssd1306_SetCursor(5,45);
ssd1306_WriteString(adcout,Font_11x18,Black);

image.png

これで完成です。
image.png

一定周期で温度湿度、ADCの値を表示するようになりましたね。

5
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?