SSブログ

ESP32 で高周波クロックをPWMで生成してみた! [Arduino]

ESP32 で 1MHz の高周波クロックが生成できるか試してました。波形はオシロスコープで確認しました。

DSC04871.JPG


最初に試してみたのは、サーボモーターをコントロールした方法。スケッチを以下に示します。

#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() {
}



観測した波形がこちら。


ESP32_pwm_simple.png


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() {

}



波形を確認してみます。


ESP32_pwm_complex.png


比較的安定した波形が得られました。オシロスコープが MHz の信号を観測するには性能不足なので、少し誤差が出ていますが、ほぼ 1MHz のクロックが得られたようです。

ESP32はまだ出たばかりなので、使いこなすのはちょっと面倒ですね。
σ(^_^;





waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

waves ESP32-DevKitC ESP-WROOM-32 ESP32 DevKitC V2 WiFi BLE 技適取得済 国内発送

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: エレクトロニクス



waves ESP32 ESPDuino-32 (ESP-WROOM-32) 技適取得品

waves ESP32 ESPDuino-32 (ESP-WROOM-32) 技適取得品

  • 出版社/メーカー: waves(ウェイブス)
  • メディア: おもちゃ&ホビー



SparkFun ESP32 Thing Development Workshop (English Edition)

SparkFun ESP32 Thing Development Workshop (English Edition)

  • 出版社/メーカー: PE Press
  • 発売日: 2017/04/09
  • メディア: Kindle版




nice!(31)  コメント(2) 
共通テーマ:趣味・カルチャー

nice! 31

コメント 2

ワンモア

Amazonで見たら意外とお手軽な価格ですね。
電子工作も楽しそう(^^)

by ワンモア (2017-12-05 09:06) 

ys_oota

ESP32は安くて多機能でお勧めです。でもまだノウハウがあまりなく使いにくいのが玉にきず。(><)
by ys_oota (2017-12-06 01:26) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。