4 kanałowy sterownik PWM – sterowanie potencjometrami

Oświetlenie (czy to warsztatowe czy tez akwariowe) powinno być przede wszystkim praktyczne. O ile jeśli chodzi o oświetlenie do akwarium stabilizacja parametrów (mocy) jest ważna o tyle jeśli chodzi o oświetlenie warsztatu łatwość zmiany mocy jest jednym z głównych czynników.

Postanowiłem więc wykonać przykładowe oświetlenie oparte o 4 drivery LDD-600L oraz Arduino Nano. Wszystkie moduły umieściłem na płytce prototypowej i podłączone do zasilacz 12V 3A. Dzięki takiemu rozwiązaniu do zasilenia zarówno belki jak i wszystkich modułów wystarcza jeden zasilacz oraz przetwornica step-down zamontowana na płytce.

Schemat nie wymaga większych wyjaśnień. Całość oparłem o płytkę prototypową Bella Compact która została opisana tutaj.

Do budowy (poza samą lampą) zostaly użyte następujące materiały:

  1. obudowa Z1W
  2. front pod wyświetlacz LCD 20x4znaki (opcjonalne) – do samych potencjometrów wystarczy standardowy front i wywiercone otwory)
  3. płytka prototypowa Bella Compact
  4. 4 drivery LDD-600L
  5. Arduino Nano
  6. Przetwornica step down (aby nie używać drugiego zasilacza)
  7. gniazdo keystone do podłączenia lampy
  8. gniazdo zasilania do podłączenia zasilacza
  9. zasilacz 12V 3A

Potencjometry są podpięte w miejsce w którym zwykle znajduje się klawiatura (środkowe nóżki). Lewa i prawa nóżka potencjometru podpięte zostały odpowiednio pod piny 5V oraz pin GND. Rezystory używane w przypadku klawiatury zostały usunięte.

Skrypt pod arduino do sterowania oświetleniem:

int Led1 = 5; 
int Led2 = 6; 
int Led3 = 10; 
int Led4 = 11;

void setup() 
   { 
      pinMode(Led1, OUTPUT);
      pinMode(Led2, OUTPUT);
      pinMode(Led3, OUTPUT);
      pinMode(Led4, OUTPUT);
      Serial.begin(9600); 
      Serial.println(); 
      Serial.println("Odwiedz strone www.mn-tech.pl");
      Serial.println(); 
      delay(5000);
   }
void loop() 
   { 
      int analog0 = analogRead(A0);
      int analog1 = analogRead(A1); 
      int analog2 = analogRead(A2); 
      int analog3 = analogRead(A3); 

      static int D1; 
      static int D2;
      static int D3;
      static int D4; 

      D1 = (analog0/4);
      D2 = (analog1/4); 
      D3 = (analog2/4); 
      D4 = (analog3/4);

      analogWrite(Led1, D1);
      analogWrite(Led2, D2);
      analogWrite(Led3, D3); 
      analogWrite(Led4, D4); 

      Serial.print(" LED1: "); 
      Serial.print((D1*100)/255);
      Serial.print("% LED2: ");
      Serial.print((D2*100)/255);
      Serial.print("% LED3: ");
      Serial.print((D3*100)/255);
      Serial.print("% LED4: ");
      Serial.print((D4*100)/255);
      Serial.print("%");
      Serial.println(" www.mn-tech.pl"); 
      delay(500); 
   } 

Jak widać powyższy skrypt skróciłem prawie do minimum. Można oczywiście usunąć dodatkowe linijki (serial.print) i wtedy uzyskamy totalne minimum. Jednak nie będziemy w stanie sprawdzić działania skryptu bez podpięcia belki.

Poniżej znajduje się film opisujący budowę oraz sposób działania sterownika.