Dimmable LED bulb

Pencahayaan merupakan aspek kebutuhan yang bisa di optimasi sehingga memberikan kenyamanan, ketelitian, keakuratan dan seterusnya. Bola lampu (bulb) merupakan sumber cahaya yang disediakan pabrikan dalam bermacam ukuran, secara awam diberikan dalam satuan Watt. Namun dalam pencahayaan, dibutuhkan besaran lumen yang mampu di hasilkan oleh titik bola lampu. Apabila bola lampu digunakan untuk menerangi bisang di depannya, maka rata-rata kecerahan bidang tersebut adalah jumlah lumen di bagi luas area yang terpapar dalam satuan lux.

Standar pencahayaan menetapkan beberapa ukuran yang diperlukan untuk menerangi area, diantaranya :

Ruangan Tingkat Pencahayaan
Teras 60
Ruang tamu 120 ̴ 150
Ruang makan 120 ̴ 250
Ruang kerja 120 ̴ 250
Kamar tidur 120 ̴ 250
Kamar mandi 250
Dapur 250
Garasi 60

Dalam beberapa aplikasi pencahayaan diperlukan kecerahan yang akurat, untuk keperluan itu dibutuhkan bola lampu yang bisa diatur keluaran intensitas cahaya/lumen-nya. Selain itu keuntungan lainnya menggunakan dimmer seperti bisa diatur tingkat kesilauan, rendering warna, panas, daya.

Projek kali ini akan mencoba membuat bola lampu LED yang bisa diredupkan. Karena jenis bola lampu ini tidak banyak dijual atau jarang tersedia di toko listrik, kita bisa memodifikasi bola lampu led biasa menjadi bola lampu yang bisa di redupkan/dimmable.

Komponen yang diperlukan adalah :

  • Bola lampu LED yang punya cukup ruang bebas di dalamnya
  • Transformator, ukuran ampere dan tegangannya disesuaikan
  • Dioda bridge
  • kapasitor

rakit komponen tersebut menurut skema berikut:

Rangkaian ini berupa penyearah pada umumnya yang dihubungkan dengan led pada bola lampu. Pada percobaan ini led-led dikelompokkan dalam 3 led seri dan dihubungkan dengan sumber tegangan dari trafo 12v–6v (~18v ac) disesuaikan dengan spesifikasi komponen yang digunakan.

berikut adalah contoh pemasangan lampu led dimmable:

 

Dimmer LED bulb ini bisa di kontrol dengan arduino menggunakan skema berikut:

 

Gunakan koding dimmer bola lampu led ini untuk menguji modifikasi lampu led yang dapat diredupkan:

#define pinPWM          3
#define pinZCD          2
#define frekuensi       50 //50 Hz
#define inputSerial     false

#define fCPU            16e6
#define prescaler       1024
#define lebarZCD        500e-6//s
#define freqDutyCycle   (fCPU / (1.0 * prescaler * 2 * frekuensi))
#define minTrigger      ((lebarZCD/2) / (prescaler / fCPU)) + 1
#define maxTrigger      (freqDutyCycle * 0.85)

volatile uint16_t dutyCycle;
volatile intptr_t *portPWM;
volatile byte bitPWM;

void setup() {
  Serial.begin(9600);
  Serial.println("Dimmer LED arduino");
  Serial.println("https://www.project.semesin.com/");
  Serial.println();

  pinMode(pinPWM, OUTPUT);

  dutyCycle = setDutyCycle(0);

  TCCR2A = _BV(WGM21);
  TCCR2B = _BV(CS22) | _BV(CS21) | _BV(CS20);// clk/1024
  OCR2A = maxTrigger - 1;
  OCR2B = dutyCycle;
  TIMSK2 = _BV(OCIE2B);

  portPWM = (volatile intptr_t *) portOutputRegister(digitalPinToPort(pinPWM));
  bitPWM = digitalPinToBitMask(pinPWM);

  attachInterrupt(digitalPinToInterrupt(pinZCD), zcdChange, RISING);

  Serial.print("minTrigger=");
  Serial.println((int)minTrigger);
  Serial.print("maxTrigger=");
  Serial.println((int)maxTrigger);
}

void loop() {
#if inputSerial

  if (Serial.available())
  {
    int data = Serial.parseInt();
    dutyCycle = setDutyCycle(data);

    while (Serial.available())
    {
      Serial.read();
      delay(2);
    }
  }

#else

  for (byte i = 1; i <= 100; i++)
  {
    dutyCycle = setDutyCycle(i);
    delay(20);
  }
  for (int8_t i = 99; i >= 0; i--)
  {
    dutyCycle = setDutyCycle(i);
    delay(20);
  }
  delay(1000);

#endif

}
uint16_t setDutyCycle(uint8_t dutyCycle)
{
  uint8_t trigger = map(dutyCycle, 0, 100, maxTrigger, minTrigger);

  //  Serial.print("dutyCycle=");
  //  Serial.print(dutyCycle);
  //  Serial.print(" trigger=");
  //  Serial.println(trigger);

  return trigger;
}

void zcdChange()
{
  TCNT2 = 0;
  OCR2B = dutyCycle;
}

ISR (TIMER2_COMPB_vect)
{
  *portPWM |= bitPWM;
  delayMicroseconds(10);
  *portPWM &= ~bitPWM;
}

Leave a Reply

Your email address will not be published. Required fields are marked *