ESP32 で高周波クロックをPWMで生成してみた! [Arduino]
ESP32 で 1MHz の高周波クロックが生成できるか試してました。波形はオシロスコープで確認しました。
最初に試してみたのは、サーボモーターをコントロールした方法。スケッチを以下に示します。
観測した波形がこちら。
1MHz にはほど遠いだいたい310kHz程度の上、波形をよくよく見るとパルス幅が不揃いで、安定した波形が得られていません。
で、いろいろと調べてみたら、ESP32 の PWM で高周波クロックを出力するには、HIGH_SPEED モードに設定する必要があるようです。スケッチを以下に示します。
波形を確認してみます。
比較的安定した波形が得られました。オシロスコープが MHz の信号を観測するには性能不足なので、少し誤差が出ていますが、ほぼ 1MHz のクロックが得られたようです。
ESP32はまだ出たばかりなので、使いこなすのはちょっと面倒ですね。
σ(^_^;
最初に試してみたのは、サーボモーターをコントロールした方法。スケッチを以下に示します。
#include "esp_system.h" void setup() { ledcSetup(0, 1000000, 8); // 0ch, 1MHz, 8bit ledcAttachPin(15, 0); // 15pin 0ch ledcWrite(0, 128); // 0ch, duty 50% (128/256) } void loop() { }
観測した波形がこちら。
1MHz にはほど遠いだいたい310kHz程度の上、波形をよくよく見るとパルス幅が不揃いで、安定した波形が得られていません。
で、いろいろと調べてみたら、ESP32 の PWM で高周波クロックを出力するには、HIGH_SPEED モードに設定する必要があるようです。スケッチを以下に示します。
#include "esp_system.h" #include "driver/ledc.h" void setup() { ledc_timer_bit_t bit_num = (ledc_timer_bit_t) 3; // duty range = 2^3 = 8 // Enable LEDC PWM peripheral periph_module_enable(PERIPH_LEDC_MODULE); // Set Duty int duty = pow(2, (int) bit_num) / 2; // (2^3) /2 = 4 : 50% // setup the timer ledc_timer_config_t clk_timer; clk_timer.bit_num = bit_num; // 3 clk_timer.freq_hz = 1000000; // 1MHz clk_timer.speed_mode = LEDC_HIGH_SPEED_MODE; clk_timer.timer_num = LEDC_TIMER_0; ledc_timer_config(&clk_timer); // setup the pwm channel ledc_channel_config_t pwm_channel; pwm_channel.channel = LEDC_CHANNEL_0; pwm_channel.duty = duty; pwm_channel.gpio_num = GPIO_NUM_15; pwm_channel.intr_type = LEDC_INTR_DISABLE; pwm_channel.speed_mode = LEDC_HIGH_SPEED_MODE; pwm_channel.timer_sel = LEDC_TIMER_0; ledc_channel_config(&pwm_channel); // Set the PWM to the duty specified ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, duty); ledc_update_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0); } void loop() { }
波形を確認してみます。
比較的安定した波形が得られました。オシロスコープが MHz の信号を観測するには性能不足なので、少し誤差が出ていますが、ほぼ 1MHz のクロックが得られたようです。
ESP32はまだ出たばかりなので、使いこなすのはちょっと面倒ですね。
σ(^_^;
waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送
- 出版社/メーカー: waves(ウェイブス)
- メディア: エレクトロニクス
waves ESP32 ESPDuino-32 (ESP-WROOM-32) 技適取得品
- 出版社/メーカー: waves(ウェイブス)
- メディア: おもちゃ&ホビー
SparkFun ESP32 Thing Development Workshop (English Edition)
- 出版社/メーカー: PE Press
- 発売日: 2017/04/09
- メディア: Kindle版
Amazonで見たら意外とお手軽な価格ですね。
電子工作も楽しそう(^^)
by ワンモア (2017-12-05 09:06)
ESP32は安くて多機能でお勧めです。でもまだノウハウがあまりなく使いにくいのが玉にきず。(><)
by ys_oota (2017-12-06 01:26)