This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| en:iot-open:practical:hardware:sut:esp32:emb1a_1 [2024/04/09 15:52] – [Steps] pczekalski | en:iot-open:practical:hardware:sut:esp32:emb1a_1 [2024/04/09 15:55] (current) – [FAQ] pczekalski | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== EMB1A: Controlling a FAN with PWM ===== | ||
| + | This scenario presents how to handle the rotation speed of the fan. It is done using a PWM signal, as presented in this tutorial. The fan pumps the air into the yellow pressure chamber with a pressure sensor inside. Because it is pretty hard to monitor rotation speed with the camera, this scenario should be run along with scenario following scenario [[en: | ||
| + | ===== Prerequisites ===== | ||
| + | A good understanding of the PWM signal and duty cycle is necessary. We also use built-in timers to control the ESP32 chip's PWM hardware channels. In this case, we do not use an external library; instead, we use built-in tools in the Arduino framework for ESP32, so no additional libraries will be included in the project. | ||
| + | |||
| + | ===== Suggested Readings and Knowledge Resources ===== | ||
| + | * [[en: | ||
| + | * [[en: | ||
| + | * [[en: | ||
| + | * [[en: | ||
| + | ===== Hands-on Lab Scenario ===== | ||
| + | |||
| + | ==== Task to be implemented ==== | ||
| + | Implement a program that will spin the fan using a PWM signal. | ||
| + | <note important> | ||
| + | |||
| + | ==== Start ==== | ||
| + | Assuming you will use 8-bit PWM resolution, the minimum value is 0, and the max (full speed) is 255. | ||
| + | |||
| + | ==== Steps ==== | ||
| + | To use PWM in ESP32, it is best to use built-in '' | ||
| + | The " | ||
| + | === Step 1 === | ||
| + | Define some parameters, including channel numbers, PWM resolution (here 8-bit) and PWM frequency (1000Hz): | ||
| + | <code c> | ||
| + | #define FAN_PIN 35 | ||
| + | #define FAN_PWM_Ch 0 | ||
| + | #define FAN_PWM_FREQ 1000 | ||
| + | #define FAN_PWM_RESOLUTION 8 | ||
| + | </ | ||
| + | GPIO pins controlling the fan is 35. | ||
| + | |||
| + | === Step 2 === | ||
| + | Initialise fan PWM channel and make it to stop (duty cycle 0): | ||
| + | <code c> | ||
| + | ledcSetup(FAN_PWM_Ch, | ||
| + | ledcAttachPin(FAN_PIN, | ||
| + | delay(100); | ||
| + | ledcWrite(FAN_PWM_Ch, | ||
| + | </ | ||
| + | |||
| + | === Step 3 === | ||
| + | To control the fan rotation speed (via PWM), use '' | ||
| + | <note tip>Note you write to **channel**, | ||
| + | A common source code mistake causes the fan not to operate correctly.</ | ||
| + | A '' | ||
| + | The maximum '' | ||
| + | |||
| + | < | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | </ | ||
| + | ==== Result validation ==== | ||
| + | You can observe rotation change by measuring air pressure in the chamber only. To distinguish whether the fan is stopped or rotating, you can observe it via the video stream. | ||
| + | |||
| + | ===== FAQ ===== | ||
| + | |||
| + | **The fan rotates itself. Why?**: It is connected via the MOS FET transistor that tends to saturate when the GPIO (35) is not controlling it. So, to ensure the fan is stopped, bind a PWM channel to it and force the duty cycle set to 0. | ||
| + | |||
| + | **The fan is not rotating? | ||
| + | \\ | ||
| + | **What is the maximum number of channels? | ||
| + | \\ | ||
| + | **What is the maximum bit resolution for PWM?**: In this particular MCU, it is between 1 and 14 bits. | ||
| + | \\ | ||
| + | **What PWM frequency should I use?**: there is no straightforward answer to this question, but setting too low a frequency will cause the inability to control the fan: 1000Hz (1kHz) seems reasonable and has been tested with this configuration. | ||
| + | |||
| + | <WRAP noprint> | ||
| + | ===== Project information ===== | ||
| + | {{: | ||
| + | This Intellectual Output was implemented under the Erasmus+ KA2.\\ | ||
| + | Project IOT-OPEN.EU Reloaded – Education-based strengthening of the European universities, | ||
| + | Project number: 2022-1-PL01-KA220-HED-000085090. | ||
| + | |||
| + | **__Erasmus+ Disclaimer__**\\ | ||
| + | This project has been funded with support from the European Commission. \\ | ||
| + | This publication reflects the views of only the author, and the Commission cannot be held responsible for any use that may be made of the information contained therein. | ||
| + | |||
| + | **__Copyright Notice__**\\ | ||
| + | This content was created by the IOT-OPEN.EU Reloaded consortium, 2022, | ||
| + | The content is Copyrighted and distributed under CC BY-NC [[https:// | ||
| + | <figure label> | ||
| + | {{: | ||
| + | </ | ||
| + | </ | ||