Translate

Membuat Lampu DIMMER Menggunakan Solid State Relay (SSR) dengan Penampil OLED LCD128x64 dan Kendali SLIDER POTENSIO ARDUINO

Membuat Lampu DIMMER Menggunakan Solid State Relay (SSR) dengan Penampil OLED LCD 128x64 dan Kendali SLIDER POTENSIO ARDUINO


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang digunakan untuk DIMMER lampu menggunakan ARDUINO dan PWM. device kendali tegangan AC yang digunakan adalah solid stste relay (SSR) maksimal arus 2A dan pengatur PWM menggunakan analog slider potensio yang mana cara kerja slider potensio ini sama seperti potensio putar namun yang membedakan yaitu jika potensio biasa itu diputar untuk merubah resistansinya, kalau slider potensio dengan digeser ke atas atau ke bawah untuk merubah resistansinya. mikrokontroller yang digunakan adalah Arduino. penampil nilai PWM dan ADC nya menggunakan LCD OLED 128x64. pada percobaan kali ini menggunakan frekuensi PWM 20 KHz. untuk lebih jelasnya berikut skema dan programnya.




a. Arduino UNO





b. Solid State Relay (SSR)






c. Analog Slider Potensio





d. LCD OLED 128x64






e. Program Arduino IDE

#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);  
#include <PWM.h>

//use pin 11 on the Mega instead, otherwise there is a frequency cap at 31 Hz
int led = 9;                // the pin that the LED is attached to
//int brightness = 0;         // how bright the LED is
//int fadeAmount = 125;         // duty cycle
int32_t frequency = 20000; //frequency (in Hz)

int x;
char tmp_string1[8];
char tmp_string2[8];
int dataadc;
int z;


void draw(void) {

  //float dua angka dibelakang koma
  itoa(z, tmp_string1, 8);
  itoa(dataadc, tmp_string2, 8);
 
  // graphic commands to redraw the complete screen should be placed here
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr(0, 22, "Intensitas= ");
  u8g.drawStr(0, 50, tmp_string1);
  u8g.drawStr(60, 50, tmp_string2);

}

void setup(void) {
 
  //initialize all timers except for 0, to save time keeping functions
  InitTimersSafe();
  Serial.begin(9600);
  //sets the frequency for the specified pin
  bool success = SetPinFrequencySafe(led, frequency);

  //if the pin frequency was set successfully, turn pin 13 on
  if(success) {
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);  
  }


  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }
}

void loop(void) {
 
 dataadc = analogRead(A0);

// nilai 1777 maks adc sensor, nilai 0 min adc sensor 
// akan dirubah ke range 0 - 255 , min 0 dan maks 255
 z = map(dataadc, 0, 1777, 0, 255);
     
 pwmWrite(led, z);

  // picture loop
  u8g.firstPage();
  do {
    draw();
  } while( u8g.nextPage() );

  // rebuild the picture after some delay
  delay(500);
}




f. VIDEO HASILNYA













No comments:

Post a Comment