• <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>

    24小時(shí)聯(lián)系電話(huà):18217114652、13661815404

    中文

    您當前的位置:
    首頁(yè)>
    電子資訊>
    公司新聞>
    如何在 ESP32 中使用 ...

    公司新聞

    如何在 ESP32 中使用 PWM


    如何在 ESP32 中使用 PWM

    脈寬調制 ( PWM ) 是一種廣泛使用的電力傳輸技術(shù)。ESP32 有專(zhuān)用的 PWM 硬件。信號或電源的脈寬調制 (PWM) 是一種修改周期信號(例如正弦信號或方波信號)的占空比的技術(shù)。周期信號的占空比是其正部分相對于周期的相對寬度。

    PWM 電路的典型結構是使用具有兩個(gè)輸入和一個(gè)輸出的比較器來(lái)實(shí)現的。其中一個(gè)輸入連接到鋸齒波振蕩器,而另一個(gè)可用于調制信號。在輸出端,頻率通常等于鋸齒信號的頻率,占空比是載波的函數。PWM 電路的主要缺點(diǎn)是可能存在射頻干擾。通過(guò)將控制器靠近負載并過(guò)濾電源,可以最大限度地減少這些問(wèn)題。

    ESP32 PWM 可以驅動(dòng) LED、電機(普通直流電機、無(wú)刷電機)、智能燈等。典型的 PWM 信號具有 PWM 頻率、PWM 分辨率和 PWM 占空比。如果我們改變 PWM 的占空比參數,那么脈沖的寬度也會(huì )改變。分辨率是一種衡量標準,可讓我們了解我們可以控制多少個(gè)離散的占空比級別。PWM 分辨率 = log2(級別數)。分辨率越高,對占空比的控制就越精細。

    Arduino中我們使用該analogWrite()函數來(lái)實(shí)現PWM。但模擬寫(xiě)入功能尚未在 ESP32 Arduino 版本中實(shí)現。而是ledcWrite()引入了一個(gè)名為的新函數。使用引腳 5 連接 LED 并使用以下代碼進(jìn)行測試:

    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

    #define LED_GPIO   5

    #define PWM1_Ch    0

    #define PWM1_Res   8

    #define PWM1_Freq  1000

     

    int PWM1_DutyCycle = 0;

     

    void setup()

    {

      ledcAttachPin(LED_GPIO, PWM1_Ch);

      ledcSetup(PWM1_Ch, PWM1_Freq, PWM1_Res);

    }

     

    void loop()

    {

      while(PWM1_DutyCycle < 255)

      {

        ledcWrite(PWM1_Ch, PWM1_DutyCycle++);

        delay(10);

      }

      while(PWM1_DutyCycle > 0)

      {

        ledcWrite(PWM1_Ch, PWM1_DutyCycle--);

        delay(10);

      }

    }

    這是帶電位器的伺服電機的測試代碼:

    #include <ESP32Servo.h>

    Servo servo1; // create a servo object

    #define potWiper 36

    #define servoPin 19

    #define twoTo12th 4095

    #define delay1 150

     

    int intValue;

     

    void setup() {

     

    servo1.attach(servoPin); // attach the servo to servoPin

     

    Serial.begin(9600); // setup display monitor (work at 9600 baud) }

     

    void loop() {

    intValue = analogRead(potWiper); // read value at pin potWiper pin

    intValue = map(intValue, 0, twoTo12th, 0, 180); // convert value read to value from 0 to 180

    servo1.write(intValue); // move the servo to position intValue

    Serial.print("Servo Angle = "); // display the

    Serial.println(intValue); // servo angle on display monitor

    delay(delay1); // allow the servo time to get to position

    }

    這是一個(gè)非常短的片段/草圖,您可以將其用于直流電機和鍋:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    const byte led_pin = 15;

    const byte pot_pin = 4;

    void setup() {

    ledcAttachPin (led_pin,0);

    ledcSetup(0,5000,8); // channel 0, pwm freq 5 khz, Resolution 8 bits

    }

     

    void loop() {

    ledcWrite(0,analogRead(pot_pin);

    }

    一個(gè) L293 板/模塊可以控制 2 個(gè)直流電機并提供 500ma 電流。為控制每臺電機2組控制,提供引腳。您可以將此模塊與上述代碼一起使用來(lái)構建基本的機器人汽車(chē)。

    請輸入搜索關(guān)鍵字

    確定
    色鲁99热99re超碰精品_91精品一区二区三区无码吞精_亚洲国产欧洲综合997久久_一级a性色生活片久久无
  • <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>