INHOUDSOPGAWE:
- Stap 1: Demonstrasie
- Stap 2: PWM -motorbeheer
- Stap 3: Hulpbronne gebruik
- Stap 4: ESP 32 Dev Kit - Pinout
- Stap 5: Turbine -montering
- Stap 6: stroombaan - verbindings
- Stap 7: Meting op die oscilloskoop
- Stap 8: Bronkode
- Stap 9: Laai die lêers af
Video: Elektriese turbine met ESP32: 9 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Vandag bespreek ek 'n elektriese turbine met ESP32. Die samestelling bevat 'n deel wat in 3D gedruk is. Ek bied 'n PWM -funksie van die ESP32 aan wat geskik is vir die bestuur van elektriese motors. Dit sal in 'n GS -motor gebruik word. Ek sal ook die werking van hierdie MCPWM (Motor Control PWM) demonstreer in 'n praktiese toepassing.
Ek het ESP32 LoRa in hierdie projek gebruik, en ek dink dit is belangrik om hier op te let dat hierdie mikrobeheerder twee blokke daarin het. Hierdie blokke kan drie motors elk beheer. Dit is dus moontlik om tot ses motors met PWM te bestuur, almal onafhanklik. Dit beteken dat die beheer wat ek hier sal gebruik nie die standaard is nie (wat soortgelyk is aan die Arduino). Die beheer is in plaas daarvan die chip self, wat die ESP32 baie buigsaamheid ten opsigte van motorbeheer waarborg.
Stap 1: Demonstrasie
Stap 2: PWM -motorbeheer
Algemene diagram:
• Die MCPWM -funksie van die ESP32 kan gebruik word om verskillende tipes elektriese motors te beheer. Dit het twee eenhede.
• Elke eenheid het drie PWM -uitsetpare.
• Elke uitvoer A / B -paar kan gesinchroniseer word met een van drie sinchronisasie -tydtellers 0, 1 of 2.
• Een timer kan gebruik word om meer as een PWM -uitsetpaar te sinchroniseer
Volledige diagram:
• Elke eenheid is ook in staat om insetseine te versamel as sinchroniseringstekens;
• Ontdek foutiewe tekens vir oorstroom of motoroorspanning;
• Verkry terugvoer met CAPTURE SIGNALS, soos die posisie van die enjin
Stap 3: Hulpbronne gebruik
• Springers vir verbinding
• Heltec Wifi LoRa 32
• Algemene DC -motor
• Brug H - L298N
• USB -kabel
• Protoboard
• Kragtoevoer
Stap 4: ESP 32 Dev Kit - Pinout
Stap 5: Turbine -montering
Stap 6: stroombaan - verbindings
Stap 7: Meting op die oscilloskoop
Stap 8: Bronkode
Koptekst
#include // Noodsaaklik om Arduino IDE te gebruik #sluit in "driver/mcpwm.h" // inclui a biblioteca "Motor Control PWM" nativa do ESP32 #include // Necessário apenas para o Arduino 1.6.5 e 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); // Instansies en aanpassings vir die "vertoon" #definieer GPIO_PWM0A_OUT 12 // Declara GPIO 12 van PWM0A #definieer GPIO_PWM0B_OUT 14 // Declara GPIO 14 van PWM0B
Stel op
ongeldige opstelling () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); // mcpwm_gpio_init (unidade PWM 0, saida A, porta GPIO) => Instance of MCPWM0A no pino GPIO_PWM0A_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0A, // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instance of MCPWM0B no pino GPIO_PWM0B_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0, MCPWM0 mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frequência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (dienssiklus) tot PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (dienssiklus) tot PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Vir MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Definieer die ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Definieer PWM0A & PWM0B com as configurações acima}
Funksies
// 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) {// mcpwal_ (0, 1 ou 2), Operador (A ou B)); => Desliga o sinal to MCPWM no Operador B (Define o sinal em Baixo) mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (unidade PWM (0 ou 1), Número do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% do PWM)); => Configura a porcentagem to 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 ou 1), Número do timer (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (alto baixo)); => definieer 'n nuwe taak (alto ou 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" ou "mcpwm_set_signal_high" para manter o ciclo de trabalho configurado anteriormente} // Função que configura o MCPWM Do operador B (Unidade), Timo statiese leemte geborsel_motor_ agteruit (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 (Define o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Configura a porcentagem to PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // definieer o nível do ciclo de trabalho (alto ou 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) // Desliga o sinal to MCPWM no Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Desliga o sinal of MCPWM no Operador B}
Lus
leegte -lus () {// Skuif na motor sonder sentido horário geborsel_motor_ vorentoe (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); // Skuif na motor sonder sentido antihorário geborsel_motor_ agteruit (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 a 1 vertraging (5000); vir (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: Laai die lêers af
EK NEE
TEKENING
Aanbeveel:
N 3D -gedrukte versterker met elektriese musiekinstrumente: 11 stappe (met foto's)
N Elektriese musiekinstrument 3D -gedrukte versterker: projekdefinisie. Ek hoop om 'n drukbare versterker te maak vir gebruik met 'n elektriese viool of enige ander elektriese instrument. Spesifikasie. Ontwerp soveel dele as moontlik om 3D -drukbaar te wees, maak dit stereo, gebruik 'n aktiewe versterker en hou dit klein
3D-gedrukte elektriese skyfskakelaar (slegs met 'n skuifspeld): 7 stappe (met foto's)
3D-gedrukte elektriese skyfskakelaar (slegs met 'n skuifspeld): ek het oor die jare heen my eie klein elektriese projekte saamgevoeg, meestal in die vorm van skuifspelde, aluminiumfoelie en karton wat met warm gom saamgewerk is. Ek het onlangs 'n 3D -drukker (die Creality Ender 3) gekoop en gaan soek
Maak u eie langbord met elektriese motors: 8 stappe (met foto's)
Maak u eie elektriese gemotoriseerde langbord: in hierdie projek sal ek u wys hoe u 'n elektries gemotoriseerde langbord van nuuts af kan bou. Dit kan snelhede tot 34 km/h bereik en met 'n enkele lading tot 20 km ry. Die beraamde koste is ongeveer $ 300, wat dit 'n goeie alternatief maak vir kommersiële
Elektriese deurslot met vingerafdrukskandeerder en RFID -leser: 11 stappe (met foto's)
Elektriese deurslot met vingerafdrukskandeerder en RFID -leser: die projek is ontwerp om die noodsaaklikheid van die gebruik van sleutels te vermy; om ons doel te bereik, gebruik ons 'n optiese vingerafdruksensor en 'n Arduino. Daar is egter mense met 'n onleesbare vingerafdruk en die sensor herken dit nie. Dan dink 'n
Hoe om 'n elektriese bromponie vir elektriese onderdele uitmekaar te haal: 6 stappe
Hoe om 'n elektriese bromponie vir elektriese onderdele uitmekaar te skei: dit is die manier waarop ek 'n tweedehandse elektriese bromponie uitmekaar haal vir onderdele wat nodig is vir die bou van 'n elektriese bergplank. (Idee kom van > > https: // www .instructables.com/id/Electric-Mountain-Board/) Die rede waarom ek 'n tweedehandse een gekoop het, is