Inhoudsopgave:
- Stap 1: Demonstratie
- Stap 2: PWM-motorbesturing
- Stap 3: Gebruikte bronnen
- Stap 4: ESP 32 Dev Kit - Pinout
- Stap 5: Turbinemontage
- Stap 6: Circuit - Aansluitingen
- Stap 7: Meting op oscilloscoop
- Stap 8: Broncode
- Stap 9: Download de bestanden
Video: Elektrische turbine met ESP32 - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Vandaag bespreek ik een elektrische turbine met ESP32. De assembly heeft een onderdeel dat in 3D is geprint. Ik zal een PWM-functie van de ESP32 presenteren die geschikt is voor het aansturen van elektromotoren. Dit wordt gebruikt in een gelijkstroommotor. Ook zal ik de werking van deze MCPWM (Motor Control PWM) in een praktische toepassing demonstreren.
Ik heb ESP32 LoRa in dit project gebruikt en ik denk dat het belangrijk is om hier op te merken dat deze microcontroller twee blokken bevat. Deze blokken kunnen elk drie motoren aansturen. Zo is het mogelijk om tot zes motoren met PWM te besturen, allemaal onafhankelijk. Dit betekent dat de besturing die ik hier zal gebruiken niet de standaard is (wat vergelijkbaar is met de Arduino). In plaats daarvan is de besturing de chip zelf, die de ESP32 veel flexibiliteit garandeert met betrekking tot motorbesturing.
Stap 1: Demonstratie
Stap 2: PWM-motorbesturing
Algemeen schema:
• De MCPWM-functie van de ESP32 kan worden gebruikt om verschillende typen elektromotoren aan te sturen. Het heeft twee eenheden.
• Elke unit heeft drie PWM-uitgangsparen.
• Elk output A/B-paar kan worden gesynchroniseerd met een van de drie synchronisatietimers 0, 1 of 2.
• Eén timer kan worden gebruikt om meer dan één PWM-uitgangspaar te synchroniseren
Volledig schema:
• Elke unit is ook in staat om ingangssignalen te verzamelen als SYNCHRONISATIESTEKENS;
• STORINGSTEKENS detecteren voor overstroom of motoroverspanning;
• Verkrijg feedback met CAPTURE SIGNALS, zoals de positie van de motor
Stap 3: Gebruikte bronnen
• Jumpers voor verbinding
• Heltec Wifi LoRa 32
• Gemeenschappelijke DC-motor
• Brug H - L298N
• USB-kabel
• Protobord
• Stroomvoorziening
Stap 4: ESP 32 Dev Kit - Pinout
Stap 5: Turbinemontage
Stap 6: Circuit - Aansluitingen
Stap 7: Meting op oscilloscoop
Stap 8: Broncode
kop
#include //No é necessário caso use Arduino IDE#include "driver/mcpwm.h" //inclui a biblioteca "Motor Control PWM" nativa do ESP32 #include // Necessário apenas para o Arduino 1.6.5 en posterior #include " SSD1306.h" // o mesmo que #include "SSD1306Wire.h" //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 SSD1306 display (0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "display" #define GPIO_PWM0A_OUT 12 //Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 //Declara GPIO 14 como PWM0B
Opstelling
void setup() { Serial.begin(115200); weergave.init(); //display.flipScreenVertical(); //Vira een tela verticalmente display.clear(); // ajusta of alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); //ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); //mcpwm_gpio_init (enkele PWM 0, zei A, porta GPIO) => Instancia of MCPWM0A geen pino GPIO_PWM0A_OUT declarado geen começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWPW0A_GPIOOUT_WMP0A_) //mcpwm_gpio_init (enkele PWM 0, genoemde B, porta GPIO) => Instancia of MCPWM0B geen pino GPIO_PWM0B_OUT declarado geen começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWMP0B_GPIOOUT_WMP0B_GPIO); mcpwm_config_t pwm_config; pwm_config.frequentie = 1000; // frequentie = 500Hz, pwm_config.cmpr_a = 0; //Ciclo de trabalho (duty cycle) do PWMxA = 0 pwm_config.cmpr_b = 0; //Ciclo de trabalho (duty cycle) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; //Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; //Definieer een ciclo de trabalho em nivel alto //Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); // Definieer PWM0A & PWM0B com als configuraties }
Functies
//Função que configura o MCPWM operador A (Unidade, Timer, Porcentagem (ciclo de trabalho))static void brushed_motor_forward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) {//mcsignalpwm_set_unis_timer (0, 1 of 2), Operador (A of B)); => Desliga of sinal do MCPWM no Operador B (Definieer of sinal em Baixo) mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //mcpwm_set_duty (unidade PWM (0 of 1), Número do timer (0, 1 of 2), Operador (A of B), Ciclo de trabalho (% van PWM)); => Configureer een porcentagem do PWM no Operador A (Ciclo de trabalho) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); //mcpwm_set_duty_tyoe (unidade PWM (0 of 1), Número do timer (0, 1 of 2), Operador (A of B), Nivel do ciclo de trabalho (alto of baixo)); => definieer een nieuw begin (alto of baixo) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Nota: Chame essa função toda vez que for chamado "mcpwm_set_signal_low" of "mcpwm_set_signal_high" para manter o ciclo de trabalho configurado anteriormente} //Função que configura o MCPWM Do operador B () statische leegte brushed_motor_backward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) { mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_A); // Desliga o sinal do MCPWM no Operador A (Definieer o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); //Configura a porcentagem do PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); //define o nivel do ciclo de trabalho (alto of baixo)} //Função que para o MCPWM de ambos os Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) {mcpwm_timer_t timer_num) {mcpwm_timer_t timer_num) {mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) {mcpwm_timer_t timer_num) {mcpwm_timer_t timer_num) { // Desliga of sinal do MCPWM no Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); //Desliga of sinal do MCPWM geen Operador B}
Lus
void loop () {// Move o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled("50"); vertraging (2000); //Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); vertraging (2000); // Verplaats de motor geen sentido antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled("25"); vertraging (2000); //Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); vertraging (2000); // Aceleracao i de 1 a 100 for (int i=10;i<=100;i++){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(String(i)); vertraging (200); } // Desaceleração i de 100 een 1 vertraging (5000); for(int i=100;i>=10;i--){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(String(i)); vertraging (100); } vertraging (5000); }
Stap 9: Download de bestanden
INO
TEKENING
Aanbevolen:
Elektrische boot: 4 stappen
Elektrische boot: Benodigdheden -Kleine plastic doos 2x gelijkstroommotoren Draden 1x schakelaar 2x propellers 2x 9V batterijen Heetlijmpistool
Mijn elektrische verwarming met Shelly: 13 stappen
Mijn elektrische verwarming met Shelly: ik wilde mijn ervaring met domotica van mijn elektrische vloerverwarming delen met de Shelly1pm-modules en de Jeedom Thermostat-plug-in. Deze installatie heeft tot doel mijn elektriciteitsverbruik te verminderen door de verwarming te beperken als we niet thuis zijn
Hoe u uw hond kunt trainen met een elektrische halsband: 3 stappen
Hoe u uw hond kunt trainen met behulp van een elektrische halsband: Beschrijving: In deze instructie leer ik u hoe u uw hond kunt trainen met behulp van een elektrische halsband. Een elektrische halsband is een geweldige manier om een hond te trainen, omdat je alleen de basistraining kunt volgen. Het uiteindelijke doel is om te kunnen beschikken over
Hoe maak je een thermo-elektrische generator thuis plannen: 6 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe een thermo-elektrische generator thuis te maken Plannen: Hoe een thermo-elektrische generator thuis te maken plannen Het thermo-elektrische effect is de directe omzetting van temperatuurverschillen in elektrische spanning en vice versa via een thermokoppel. Een thermo-elektrisch apparaat wekt een spanning op wanneer er een verschil
Bedien elektrische dingen met uw computer: 10 stappen (met afbeeldingen)
Bedien elektrische dingen met uw computer: bedien lichten (of elk ander elektrisch apparaat) met uw toetsenbordverlichting. zonder irritante microcontroller!!!! Eerst wil ik zeggen dat dit mijn eerste instructable is en dat ik niet veel foto's heb gemaakt. Ook kreeg ik het idee van: USB-gestuurde mini