Passa al contenuto

Benvenuto!

Condividi e parla dei contenuti migliori e di nuove idee di marketing, costruisci il tuo profilo professionale e diventa un venditore megliore.

Registrati

È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
779 Visualizzazioni

Hi all,

I have an 8A RBDimmer that I'm using with an Arduino Nano clone board (ATMega328p with a CH340g USB-serial chip). I have a sketch running to gradually brighten a tungsten/incandescent bulb (not an LED, which I know can cause problems), and it is exhibiting weird behavior:


From 1% to 13% power, the bulb is lit at a constant brightness of about 60% (the brightness does not change between 1% and 14% power).

Then from 14% to 16% power, the bulb flickers at a high frequency (maybe 50 Hz or so).

Then from 16% to 17% power, the bulb turns on and off at a much lower frequency (maybe 5 Hz).


Again, this is a tungsten/incandescent bulb I'm using, not an LED.


It is also behaving weirdly above that (at 100% power it is not lighting LED bulbs at all), but I have a harder time deciphering that behavior.


The code I am running is pasted below. Can anyone possibly explain (and/or provide a fix for) the weird behavior I'm seeing?


Thank you.


#include <RBDdimmer.h> // RobotDyn AC Dimmer library


#define AC_LOAD 3 // DIM/PWM pin connected to the RobotDyn module

#define ZC_PIN 2 // Zero-cross pin from the RobotDyn module (wired to D2, but handled internally)


// Create dimmer object (older library: only takes 1 argument)

dimmerLamp dimmer(AC_LOAD);


void setup() {

Serial.begin(9600);


// Initialize dimmer (older library handles ZC internally)

dimmer.begin(NORMAL_MODE, OFF);

dimmer.setPower(0);


Serial.println("Starting 30-minute gradual brightening...");

}


void loop() {

const int startBrightness = 0; // Start at 18% because below 18% it flickers.

const int endBrightness = 100; // End at 100%

const unsigned long totalTime = 1UL * 30UL * 1000UL; // calculating total time in milliseconds of fadeup; minutes, seconds per minute, milliseconds per second

const int steps = 100; // 1% increments

unsigned long delayPerStep = totalTime / steps; // calculating milliseconds per step


// Gradually brighten

for (int brightness = startBrightness; brightness <= endBrightness; brightness++) {

dimmer.setState(ON);

dimmer.setPower(brightness); // Set brightness (0–100%)

Serial.print("Brightness: ");

Serial.print(brightness);

Serial.println("%");

delay(delayPerStep);

}


// Hold full brightness indefinitely

Serial.println("Reached full brightness. Holding...");

dimmer.setPower(100);

dimmer.setState(ON);


while (true) {

delay(1000); // keep AC dimmer timing active

}

}


Avatar
Abbandona

Risposta

Prova a fornire una risposta sostanziale. Se fosse necessario commentare la domanda o la risposta, usa lo strumento per i commenti. Ricorda che puoi sempre rivedere le risposte - non è necessario rispondere due volte alla stessa domanda. Inoltre, non dimenticarti di votare - selezionare le migliori domande e risposte aiuta molto!