1
0

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.

エレキ素人が何か考える(その3:オシロスコープ)

Posted at

シロートがオシロスコープを使う

マイコンから出力される正弦波と矩形波をオシロスコープで観測。

オシロスコープ

Amazonで購入した安価なオシロスコープ(購入時6999円、執筆時点で売り切れ、入荷待ち)を使う。

マイコン

正弦波を作るため、DAコンバーターを持つM5Stackを利用した。

正弦波(Sin wave)

M5StackでDAコンバーターを使うサンプルコードを利用した。ESP32でのDAコンバーターの利用方法詳細は、Espressifの本家サイトに記載がある。小生の環境では、ArduinoフレームワークではこれらAPI群を使ったコードを利用できず、ESP-IDFフレームワークをPlatformIO環境下で利用しBuild。

ソースコード

# include "driver/dac.h"

void app_main() {
    dac_cw_config_t config;
    config.en_ch = DAC_CHANNEL_1;
    config.freq = 2000; // Set frequency of cosine wave generator output. Range: 130(130Hz) ~ 55000(100KHz).
    config.scale = DAC_CW_SCALE_8;
    config.phase = DAC_CW_PHASE_0;
    config.offset = 1;

    dac_cw_generator_config(&config);
    dac_cw_generator_enable();

    dac_output_enable(DAC_CHANNEL_1);    
}

本家サイトによると、130Hzから100KHz(?)の周波数を設定できるようだ。また、DAC_CHANNEL_1は、GPIO25に相当する。

環境ファイル(platformio.ini)

platformio.ini
[env:m5stack-core2]
platform = espressif32
board = m5stack-core2
framework = espidf

結果

2kHz


「1.92kHz」と表示されている。

50kHz


「50.2kHz」と表示。以降、同様。

何故か低い周波数(例:200Hz)は、正しく表示されなかった。

矩形波(PWM)

こちらは、Arduinoフレームワークの利用。M5Stack(ESP32)には、analogWrite()が存在しない。ESP32をArduinoフレームワークで利用する際のPWM用のAPIが別途用意されているのでこれを利用。

ソースコード

int PIN = 2;
int PWMCH = 0;
 
void setup() { 
  pinMode(PIN, OUTPUT);
  ledcSetup(PWMCH, 2000000, 8); // Hz, 8Bit
  ledcAttachPin(PIN, PWMCH);
  ledcWrite(PWMCH, 128);  //  50%
}
 
void loop() {
}

ledcSetup()で周波数、ledcWrite()でデューティ比(例:128 -> 128/256: 50%)を指定する。

結果

20Hz, 25%

10KHz, 50%

200KHz, 75%

あまり高い周波数では正しく表示されず(オシロスコープの能力不足)。

まずはOK。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?