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ą) użyto następujących materiałów:

  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 zostały podpięte w miejsce w którym zwykle znajduje się klawiatura (środkowe nóżki). Lewa i prawa nóżka potencjometru to odpowiednio piny 5V oraz pin GND. W momencie kiedy używamy potencjometry zamiast klawiatury potencjometry nie zostały wlutowane.

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.

Film z budowy sterownika zamkniętego w obudowie Z1W. W filmie zastosowałem płytkę  Bella Compact w wersji 1.1. Sterownik został wykonany w taki sposób, aby przy użyciu niewielkich zmian można było zrobić z niego w pełni automatyczny sterownik Bella albo Luna.