Na geruime tijd toch maar weer eens naar dit type dimmer gekeken.
uiteindelijk een goed werkend schema gekregen, de aansturing van de back 2 back mosfets gebeurt door een VOM.
Ivm een flikkerende verlichting, wat achteraf kwam doordat de interupts foutief waren.
2x een schmitt trigger toegepast, hierdoor een mooie stijle vlak waar de interupt op reageert.
Al met al zeer teveden, middels de ESP32 kan je gebruik maken van de hardware pwm, hiervoor maak ik gebruik van de MCPWM, door deze goed in te stellen kan je met 1 code regel de duty aanpassen.
Ik vind het zelf goed gelukt, misschien dat jullie er anders tegen aan kijken, dan hoor ik het graag.
Voor de liefhebbers hier is ook de test code
c code:
#include "driver/mcpwm.h"
#define GPIO_SYNC0_IN 22
#define MOSFET 23
void setup() {
Serial.begin(115200);
mcpwm_pin_config_t pin_config;
pin_config.mcpwm_sync0_in_num = GPIO_SYNC0_IN;
mcpwm_config_t pwm_config;
pwm_config.frequency = 100;
pwm_config.cmpr_a = 100;
pwm_config.counter_mode = MCPWM_UP_COUNTER;
pwm_config.duty_mode = MCPWM_DUTY_MODE_0;
mcpwm_set_pin(MCPWM_UNIT_0, &pin_config);
mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0A, MOSFET);
mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config);
mcpwm_set_duty_type(MCPWM_UNIT_0, MCPWM_TIMER_0, MCPWM_OPR_A, MCPWM_DUTY_MODE_0);
mcpwm_start(MCPWM_UNIT_0, MCPWM_TIMER_0);
mcpwm_sync_enable(MCPWM_UNIT_0, MCPWM_TIMER_0, MCPWM_SELECT_SYNC0, 990);
}
void loop() {
mcpwm_set_duty(MCPWM_UNIT_0, MCPWM_TIMER_0, MCPWM_OPR_A,35);
delay(1000);
Serial.println("fire");
}
[Bericht gewijzigd door
arnold geurtse
op vrijdag 6 september 2019 14:46:14
(48%)