Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Moduł oświetlenia arduino - poradnik
#1
Moduł oświetlenia Arduino

Spis części które będziemy potrzebować:
- Arduino nano
- Kabel mini USB
- Oporniki 5% 2W 100R (10szt wystarczy)
- Diody led 5mm
- Kabelki (stare kable USB świetnie się nadają)
- Wtyczki/złącza (złącze JST SM 6pin 2szt powinny wystarczyć)
- Moduł mocy PWM IRF520 (tylko w przypadku jeśli chcemy zasilić listwę ledową)

Na początek przyjrzymy się samemu arduino
 
   

Na zdjęciu opisane są wszystkie piny, nas interesują te:

VIN - zasilanie arduino zalecane 7-12V (na 6V też działa)
GND - masa

A0-A7 - piny typu IN tutaj będziemy podłączać sygnały z odbiornika

D2
D4
D7
D8
D12 - Piny typu OUT które mają możliwość sterowania tylko 0-1

D3                     
D5                    
D6                     
D9
D10
D11 - Piny typu OUT które obsługują PWM (pulse width modulation) czyli możemy płynnie sterować jasnością LED.

Na wszystkich pinach OUT mamy zasilanie max 5v (niezależnie jakie mamy napięcie zasilania arduino) dlatego potrzebujemy oporniki do ledów

Zanim zaczniemy składać wszystko razem na początku musimy zastanowić się ile mamy dostępnych kanałów w aparaturze i jaki efekt chcemy uzyskać, bo mając nawet zwykłą apke 2/3 kanałową można uzyskać fajne efekty,  ale im więcej kanałów w aparaturze tym też więcej możliwości.

Na początek musimy spisać jakie chcemy mieć funkcje:

drążek gazu -  sterowanie światłami pozycyjnymi tył, światłami stop oraz wstecznym

przełącznik trzy pozycyjny - sterowanie światłami pozycyjnymi przód i światłami drogowymi plus w pozycji 0 wyłączone sterowanie drążkiem gazu (wszystko zgaszone)

drugi przełącznik trzy pozycyjny - sterowanie kierunkowskazami

przełącznik dwu pozycyjny - sterowanie awaryjnymi

drugi przełącznik dwu pozycyjny - lightbar

Pierwszym krokiem będzie spisanie jaki przełącznik jest na jakim kanale w moim przypadku wygląda to tak:

drążek gazu - Ch3
przełącznik świateł przód - Ch6
przełącznik kierunkowskazów - Ch7
przełącznik awaryjnych - Ch8
przełącznik lightbar - Ch10

Następnie przechodzimy do arduino, podłączamy zasilanie (piny VIN, GND), piny sygnałowe odpowiednich kanałów odbiornika do arduino oraz musimy pamiętać o wspólnej masie.

Ch3 - A0
Ch6 - A1
Ch7 - A2
Ch8 - A3
Ch10 - A4

Teraz bierzemy 5szt oporników 100R 2W i lutujemy je bezpośrednio w arduino. To będą nasze wyjścia sterowane plusem podłączone do ledów

D2 - wsteczny
D3 - pozycja tył/stop
D4 - kierunek lewy
D7 - kierunek prawy
D10 - pozycja przód/mijania
Poniżej prosty rysunek poglądowy, zrobiony na szybko w paincie Smile dla wzrokowców jak to wszystko podłączyć ze sobą

     

Teraz informacja dla osób używających apki 2/3 kanałowej drążek gazu zostaje wiec sterowanie pozycyjnymi tył,stop oraz wsteczny pozostaje takie samo, w pin A2 w arduino można podłączyć sygnał z serwa skrętu i kierunki będą mrugać przy skręcie kół, a światła przednie można w programie wysterować aby świeciły cały czas albo użyć drążka gazu i wtedy podczas postoju będą świecić się pozycyjne a podczas jazdy będą świecić światła mijania.

Musicie pamiętać o jeszcze jednej rzeczy mianowicie arduino nie jest w stanie przenosić dużych obciążen!!! Z kilkoma diodami led radzi sobie bez problemu ALE nie radzę zasilać listw ledowych ani innych lightbarów bezpośrednio z arduino.
Do tego celu będziemy potrzebować moduł mocy PWM IRF520 który podłączamy w następujący sposób:

   
 
Tylko pamiętajcie jakim napięciem zasilacie moduł mocy bo na wyjściu będzie takie samo, żeby lightbar nie poszedł z dymem.

Teraz pozostało "tylko" napisać program i moduł gotowy.

Pobieramy program arduino na naszego PC, uruchamiamy go.

Wchodzimy w zakładkę 'Narzędzia' następnie 'płytka' i z listy wybieramy 'Arduino Nano'

W zakładce 'Procesor' wybieramy 'ATmega328P'

W zakładce 'Port' wybieramy port USB do którego podłączymy arduino (najlepiej zobaczyć jakie mamy dostępne później podłączyć arduino poprzez USB i zobaczyć czy pojawił się nowy, to właśnie jego wybieramy.

Pamiętajcie przy pisaniu programu o wszystkich nawiasach (zwykłych i kwadratowych), o przecinkach i o dużych literach. Wszystko ma znaczenie.

Kasujemy to co jest napisane w nowym sketchu i zaczynamy.

int pin3 = A0;  
int pin7 = A1;
int pin6 = A2;
int pin8 = A3;
int pin10 = A4;
int WSTECZNY = 2;
int STOP = 3;
int KIERUNEKL = 4;
int LIGHTBAR = 5;
int KIERUNEKR = 7;
int PRZOD = 10;

//opis pinów


#define INTERVAL_1 300  
#define INTERVAL_2 300
byte led_1;
byte led_2;
unsigned long time_for_action_1;
unsigned long time_for_action_2;

//wartość 300 oznacza jak szybko będą mrugać kierunki, wartość możecie zmieniać wedle uznania

void setup ()  
  {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(10, OUTPUT);

// opis pinów typu output
  }

void loop ()
{
int ch3 = pulseIn(pin3, HIGH, 30000);  
int ch6 = pulseIn(pin6, HIGH, 30000);
int ch7 = pulseIn(pin7, HIGH, 30000);
int ch8 = pulseIn(pin8, HIGH, 30000);
int ch10 = pulseIn(pin10, HIGH, 30000);

// opis dla arduino żeby mogło czytać wartości jakie wysyła odbiornik (od 1000ms do 2000ms). Dalej zaczyna się już programowanie

   if (ch6 < 1300 and ch6 > 900)     // po if w nawiasie wpisujemy kanał i jaka wartość nas interesuje
   {
    analogWrite(3, 0);     // 3 oznacza pin D3 w naszym przypadku światło stop a po przecinku 0 ozancza światło wyłączone (wartość 255 oznacza 100% jasności a w przypadku pinów z pwm można wpisywać wartości od 0  do 255 np 50 i wtedy mamy światła pozycyjne
   }
    
   if (ch3 < 1400 and ch3 > 900 and ch6 > 1400 or ch3 > 1600 and ch6 > 1400)
   {
    analogWrite(3, 50);
   }

   if (ch3 > 1450 and ch3 < 1550 and ch6 > 1400)
   {
    analogWrite(3, 255);
   }

   if (ch3 > 1600 and ch6 > 1400)
   {
    analogWrite(2, 255);
   }

   if (ch3 < 1500 and ch3 > 900)
   {
    analogWrite(2, 0);
   }


if (ch8 > 1700 or ch7 < 1300 and ch7 > 900)
 {
  if (millis() > time_for_action_1)
  {
    time_for_action_1 = millis() + (unsigned long) INTERVAL_1;
    led_1 = !led_1;
  }
 }
 else
 {
  time_for_action_1 = 0;
  led_1 = 0;
 }


   if (ch8 > 1700 or ch7 > 1700)
 {
  if (millis() > time_for_action_2)
  {
    time_for_action_2 = millis() + (unsigned long) INTERVAL_2;
    led_2 = !led_2;
  }
 }
 else
 {
  time_for_action_2 = 0;
  led_2 = 0;
 }
   digitalWrite(4,led_1);
   digitalWrite(7,led_2);

// opis kierunkowskazów lewego, prawego i awaryjnych

if (ch6 < 1300 and ch6 > 900)
    {
     analogWrite(10, 0);
    }
    if (ch6 > 1400 and ch6 < 1600)
    {
     analogWrite(10, 50);
    }
    if (ch6 > 1700)
    {
     analogWrite(10, 255);
    }

//świtała przednie


    if (ch10 < 1300 and ch10 > 900)
    {
     analogWrite(5, 0);
    }
    if (ch10 > 1700)
    {
     analogWrite(5, 255);
    }

    // sterowanie lightbarem

 
 delay(50);       //delay oznacza częstotliwość odświeżania  
 }


I tym oto sposobem dobrnęliśmy do końca programowania klikamy ptaszka u góry w celu zweryfikowania szkicu czy nigdzie nie popełniliśmy błędu i zapisujemy.  Jeśli wszystko pójdzie pomyślnie na dole pojawi się napis 'Kompilacja zakończona' i dowiemy się że używamy jakichś 6% pamięci programu. No cóż.

Włączamy model, podpinamy arduino do USB i klikamy obok ptaszka w strzałeczkę w prawo w celu wgrania programu do arduino, program jeszcze raz zweryfikuje poprawność szkicu a następnie wgra go do naszego arduino. Odpinamy USB w celu przetestowania (mi czasami podpięte usb powodowało jakieś zakłócenia) i teoretycznie wszystko powinno działać Smile

Opis wyszedł mi cholernie długi za co przepraszam ale mam nadzieję że wszystko jest zrozumiałe jeśli jednak coś pomiąłem do dajcie znać.

Zrobienie tego modułu jest prostsze niż się wydaje oczywiście jeżeli ogarniamy lutowanie, podłączenie wszystkiego według schematu powyżej to kilka godzin mając wszystkie elementy następnie kopiujecie mój szkic do programu, wgrywacie do arduino i to wszystko.
Odpowiedz
#2
Dziekuje bardzo. Kawał dobrej roboty. Takich poradników to ze świecą szukać.

Wysłane z mojego LG-H930 przy użyciu Tapatalka
Odpowiedz
#3
Spoko projekcik.

Myślę że zamiast tego modułu mocy możemy zastosować tranzystor NPN BC337 a i na podobnej zasadzie jeśli zostały wolne piny dodać buzzer do dźwięku cofania.
Odpowiedz
#4
Super. Dziekuje że chciało Ci się to spisać. Ja napewno sprubuję zbudować taki
Odpowiedz
#5
Mistrz!
Odpowiedz
#6
Wielkie dzięki!!!

Wysłane z mojego moto g(7) power przy użyciu Tapatalka
Odpowiedz
#7
Małe sprostowanie, ostatnio zauważyłem że arduino nie widzi sygnałów z odbiornika na pinach A6 i A7 tylko teraz nie wiem czy mam uszkodzone arduino czy za dużo sygnałów albo po prostu nie nadają się do tego celu, w każdym bądź razie zwróćcie na to uwagę
Odpowiedz
#8
Wykonałem ten moduł u siebie. Dzięki pomocy kolegi Czapla, który ogarnął program i moduł działa jak sobie wymarzyłem.
na apce 3CH.

Dzieki !
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości