Skocz do zawartości

Rekomendowane odpowiedzi

Super. Mnie zależy tylko na "mrugających" pozycyjnych. Dwie-trzy diody. Czy będziesz wykonywał układy na zamówienie ?

Okazało się, że zainteresowanie jest większe niż przypuszczałem. Jednak nie podejmę się produkcji. Poszukuję osoby chętnej aby się tego podjąć. 

Dlatego też, postaram się najdokładniej jak to będzie możliwe, przedstawić sposób samodzielnego przygotowania takiego układu.

Odnośnik do komentarza
Udostępnij na innych stronach

Poniżej dwie wersje do wykonania samodzielnie prototypu 1.0.
 
Wersja SMD na płytce jednostronnej. Eagle
UWAGA: podstawkę ATTiny należy wlutować od strony druku wraz z pozostałymi elementami smd!

Mimo umieszczenia podstawki mikroprocesora po stronie druku, polecam nawiercenie otworów i wstawienie podstawki w nie, przed przylutowaniem.
ctnmKuX.png  ghiDztR.png  xBGQFRC.png  cZMU09x.png
 
Schemat dla wersji SMD (poglądowy)
izkn9SG.png

Materiały:

1x ATTiny 45 w podstawce

3x IRF 7341

6x rezystor 1,5k 0,125W

6x rezystor 330R1W

 

 



Wersja na płytce uniwersalnej (lub jak kto woli na bakielicie, tekturze itp.) Fritzing
Q7tq7bS.png
Schemat dla płytki uniwersalnej
uYCrOsk.png
Przykładowe zestawienie podzespołów do wersji "drutowej" ;-)
Lp.	Nazwa					cena	ilość	razem	Link
1	Płytka uniwersalny PI22Z 30x70		2,50	1	2,50	http://bns.com.pl/os,23381,Plytka-uniwersalny-PI22Z-30x70-dwustrona-
2	ATTINY 45-20PU mikrokontroler AVR DIP8	4,00	1	4,00	http://bns.com.pl/os,25166,ATTINY-45-20PU-mikrokontroler-AVR--DIP8
3	 DIL 8 podstawka			0,15	1	0,15	http://bns.com.pl/os,3975,DIL-8-podstawka-
4	 1W 330R 1% Rezystor			0,50	6	3,00	http://bns.com.pl/os,1000,1W-330R-1---Rezystor-
5	0,125W 1,7K Rezystor			0,05	6	0,30	http://bns.com.pl/os,11,0-125W-1-7K--Rezystor-
6	IRLML 0060TR N-MOSFET tranzystor SOT23	1,00	6	6,00	http://bns.com.pl/os,20378,IRLML-0060TR--N-MOSFET--tranzystor-SOT23
7	 PH 80DRA 2x40 listwa kątowa r=2,00	2,50	1	2,50	http://bns.com.pl/os,8524,PH-80DRA-2x40-listwa-katowa-r-2-00
					
RAZEM	18,45	


Przykładowy program dla środowiska Arduino.

/*
  Oświetlenie modelu RC
  Program steruje układem diod 6-ciu LED 
  w oparciu o sygnał uzbrajania silników ze złącza A7 Ardupilot APM 2.6
 
  Program udostępniany jest na licencji OpenSource.
  Autor: warp[3][r]
  Utworzony w 2014
 */
 
/* wyłącznie dla ATTiny 45 */
// LED czerwony błyskowe
// spód i górna część kadłuba
int led_AntiCollision_Beacon = 1;  
// LED białe błyskowe na skrzydłach
// skierowane do tyłu pod kątem 45st
int led_WingStrobe = 3;
// LED białe błyskowe, może być ew. zapalane wraz z obrysowymi
// umieszczane w części ogonowej w kierunku świecenia do tyłu
int led_TailStrobe = 0;
// LED czerwone i zielone, stałe światło ew. z błyskami
// czerwone na lewe skrzydło, zielone na prawe
int led_Position = 4;
// Wejście sygnału z odbiornika RC
// ew. zwierane z masą jeśli pełne oświetlenie ma być aktywowane podczas załączania 
int input_SignalArming = 2;

/* Stan diod */
// wartość dla wyłączonej diody
const int LEDOFF = 0;
// wartość PWM dla diody "przygaszonej"
const int LEDON = 64;
// wartość PWM dla pełnego oświetlenia
const int LEDBLINK = 255;

/* pomocnicze */
int input_SignalArmingState = 0;
boolean goArmingState = false;

// Ustawienia po uruchomieniu układu
void setup() {    
  pinMode(led_AntiCollision_Beacon, OUTPUT);     
  pinMode(led_WingStrobe, OUTPUT);     
  pinMode(led_TailStrobe, OUTPUT);     
  pinMode(led_Position, OUTPUT);     
  pinMode(input_SignalArming, INPUT); 
  digitalWrite(input_SignalArming, LOW);  
  LEDS_On();
}

/* Aktywacja wyłącznie świateł obrysowych - pozycyjne */
void LEDS_On() {
  analogWrite(led_AntiCollision_Beacon, LEDOFF);  
  analogWrite(led_TailStrobe, LEDON);
  analogWrite(led_WingStrobe, LEDOFF);
  analogWrite(led_Position, LEDON);
}

/* Aktywacja pełnego cyklu oświetlenia */
void LEDS_Arming() {
  analogWrite(led_TailStrobe, LEDBLINK); analogWrite(led_WingStrobe, LEDBLINK);
  delay(40);
  analogWrite(led_TailStrobe, LEDOFF); analogWrite(led_WingStrobe, LEDOFF);  
  delay(120);
  
  analogWrite(led_WingStrobe, LEDBLINK); analogWrite(led_Position, LEDBLINK); 
  delay(40);
  analogWrite(led_WingStrobe, LEDOFF); analogWrite(led_Position, LEDON); 
  delay(100);

  analogWrite(led_AntiCollision_Beacon, LEDBLINK); analogWrite(led_Position, LEDBLINK); 
  delay(50);
  analogWrite(led_AntiCollision_Beacon, LEDOFF); analogWrite(led_Position, LEDON);  
  delay(40);
  analogWrite(led_AntiCollision_Beacon, LEDBLINK); delay(40);analogWrite(led_AntiCollision_Beacon, LEDOFF);  

  delay(40);
}

/* w tej pętli, program wykonuje się w nieskończoność */
void loop() {
  goArmingState = true;
  // oczekiwanie 600ms na sygnał z wyjścia A7 Ardupilot APM 2.6
  // pomijany jest sygnał BLINK 500ms
  for (int i=0; i<7; i++) {
    input_SignalArmingState = digitalRead(input_SignalArming);
    if (input_SignalArmingState != HIGH) goArmingState = false;
    delay(100);
  }
  // w zależności od wykrycia aktywowania uzbrojenia silników, zapalny jest odpowiedni zestaw oświetlenia
  if ( goArmingState == true) {
    LEDS_Arming();
  } else {
    LEDS_On();
  }
}
/* a tu jest koniec kodu */

Program jest na tyle trywialny, że nie będzie komentowany dalej.

 

Programowanie ATTiny45

http://highlowtech.org/?p=1695

 

Układ w tej wersji, nie będzie już dalej rozwijany.

Podzespoły a w szczególności rezystory zabezpieczające, mogą zostać użyte o innych wartościach, jednakże warto uwzględnić uwagi zawarte w uzasadnieniu.
 

 

EDIT.

Przetestowałem tańsze diody, spisują się całkiem nieźle, a są prawie trzykrotnie tańsze od wcześniej zamówionych.

Biała - http://bns.com.pl/os,15902,OLBHP3-E--LED-3W-biala-emiter-180lm--800mA

Czerwona - http://bns.com.pl/os,16272,LED-Hi-Power-3W-0-7A-80lm-625nm-czerwona

Zielona - http://bns.com.pl/os,25802,OLZHP3W-E--LED-3W-zielony-emiter-100lm--800mA

Odnośnik do komentarza
Udostępnij na innych stronach

Obiecany kosztorys wersji 1.2 - wyłącznie moduł.

Lp.	Nazwa					cena jd.ilość	razem
--------------------------------------------------------------------------------------------
1	Płytka jednostronna – laminat 45x25mm	14,00	0,12	1,66
2	ATTINY 45-20PU mikrokontroler AVR DIP8	4,00	1	4,00
3	DIL 8 podstawka				0,15	1	0,15
4	2512 5% 1W Rezystor             	0,20	6	1,20
5	0,125W 1,7K Rezystor			0,05	8	0,40
6	IRF 7341 dual N-MOSFET tranzystor SO8	2,00	3	6,00
7	PH 80DRA 2x40 listwa kątowa r=2,00	2,50	0,15	0,38
8	listwa kątowa pojedyncza		2,00	0,08	0,15
9	Dioda 3mm				0,50	2	1,00
10	Wtyk 2x6				2,50	0,15	0,38
11	Nadsiarczan sodu B327 100g		4,00	0,1	0,40
12	Przewody LED LgY 0,35mm 500V przewód	0,45	3	1,35
13	Przewód 20cm 2x 0,5mm			1,00	0,2	0,20
14	Koszulka termokurczliwa			1,00	0,5	0,50
15	Naklejka				0,50	1	0,50
17	Topnik RF-800 do SMD			5,00	0,06	0,30
18	Spoiwo lutnicze LC60 SW25-5		3,50	0,08	0,28
19	Lakier zabezieczający			6,00	0,05	0,30
--------------------------------------------------------------------------------------------
ŁĄCZNIE	19,14

Powyższe zestawienie nie obejmuje diod LED 3W a jedynie złącze do płytki i 6x przewód.

Największy koszt w ww zestawie to tranzystory MOSFET, niestety na razie nie udało mi się znaleźć tańszych dostępnych(!) odpowiedników.

 

Fotografia gotowych układów wieczorem.

Prowadzę rozmowy z firmą, która mogła by się podjąć produkcji, na razie jednak nie przedstawiła jeszcze kosztorysu.

 

Dla osób, które chcą zakupić te egzemplarze: proszę przemyśleć sekwencje dla trybu 1 i 2 świecenia, zaprogramuję indywidualnie. Kod programu jest dostępny, więc można będzie samodzielnie wgrywać własne sekwencje oświetlenia. Tryb 2gi można załączyć na stałe odpowiednią zworką na J1.

Sposób programowania ATTiny45 z użyciem środowiska Arduino, zostanie tu zamieszczony jesli będzie taka potrzeba.

Odnośnik do komentarza
Udostępnij na innych stronach

Pierwszy z modułów v1.2 gotowy.

MNj3qY9.jpg

Ten jest w wersji "mocniejszej" z rezystorami 100R1W. Z bliska pozornie bez różnicy. Jednak w dzień, znacznie lepiej widać światła.

 

EDIT

Otrzymałem informacje z firmy profesjonalnie zajmującej się produkcją płytek dla 10szt.:

"płytki z jednostronną soldermaską i jednostronnym opisem - 1.45 PLN/szt + 30.00 PLN/koszt uruchomienia produkcji."

Jednak podrożyło by to samą płytkę prawie o 3zł.

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

 (...) i dzięki, że podzieliłeś się schematami i kodem ;)

Taki był zamiar od początku :)

 

Jednakże po zmianie diod na tańsze 3W (link powyżej) i zmianie rezystorów na 100R1W, pojawił się problem z diodą czerwoną. Jej czas reakcji na impulsy jest zbyt duży, co powoduje, że przy sterowaniu PWM o wypełnieniu 25% ledwie widoczny jest impuls PWM 100%. Cóż... tanie diody ;)

Zwiększyła się także temperatura na rezystorach do ~26stC.

No i wzrosła waga, z 8gr do ~9gr  ;)  z pewnością to za sprawą dołożenia dwu led do płytki (wskaźnik zasilania z pakietu i odbiornika) oraz zmiana typu procesora z SMD na DIP8.

Odnośnik do komentarza
Udostępnij na innych stronach

Przykładowe rozmieszczenie świateł dla modułu v1.2

 

gCZ0qES.png

 

 

 

Sekwencja załączania świateł

 

MpQyLsZ.png

Tryb 1 załączany jest z chwilą włączenia zasilania. Tryb 2 załączany jest automatycznie po uzbrojeniu silników z Ardupilot APM 2.6.

W module 1.2 można włączyć Tryb 2 na stałe, zwierając styki "S" i "+" w złączu J1.

Moduł zasilany jest ze złącza J1, dlatego należy podpiąć je do złącza A7 w APM 2.6 lub bezpośrednio pod zasilanie +5V z BEC.

Zasilanie układu diod należy podłączyć pod główny pakiet zasilania modelu.

 

W aktualnej wersji modułu, nie ma sterowania światłami lądowania. Do tego celu polecam RC Switch z innego wątku.

 

D1yQMiN.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Zaciekawił mnie temat oświetlenia nawigacyjnego dla MIG-29.

W internecie niewiele można znaleźć rzetelnych informacji. W zasadzie co kraj w którym jest ten samolot, to inne oświetlenie. Natknąłem się jednak na informacje o modernizacji polskich MIGów, i na podstawie zdjęć i filmów z YT, udało mi się zrobić coś poniższego:

 

Thh3QvX.png

 

Jednakże wciąż nie znam dokładnej sekwencji załączania oświetlenia w tym samolocie i nie wiem jakie znaczenie ma światło umieszczone w ww rysunku ze znakiem zapytania.

 

Z tego co wiem na już:

- beacon w kolorze czerwonym, błyski 60-80/min, górny lekko przygaszone, spód kadłuba bardzo intensywne światło,

- obrysowe lekko przygaszone, zielone i czerwone na skrzydłach, białe na stateczniku pionowym prawym w kierunku tył, czerwone na lewym stateczniku pionowym w tył,

- białe lądowania, z prawej i lewej strony osłony wlotu powietrza do silników bardzo mocne światło oraz górna goleń przedniego podwozia.

 

Na filmach z YT zauważyłem, że światła na statecznikach pionowych są dość "swobodnie" zapalane przez pilotów. Raz świecą oba, czasem jedno a czasem żadne z nich.

 

Wysłałem pytanie o światła nawigacyjne w MIG29 do Wojskowych Zakładów Lotniczych w Bydgoszczy, gdzie przeprowadzane są modernizacje "polskich" MIGów, jednak nie wiem czy i kiedy otrzymam odpowiedź.

Czy ma Ktoś z Was więcej informacji o oświetleniu nawigacyjnym w MIG29 ?

  • Lubię to 2
Odnośnik do komentarza
Udostępnij na innych stronach

Kod programu dla modułu 1.2.

/*
  Oświetlenie modelu RC
  Program steruje układem diod 6-ciu LED 
  w oparciu o sygnał uzbrajania silników ze złącza A7 Ardupilot APM 2.6
 
  Program przeznaczony dla Arduino, udostępniany jest na licencji OpenSource.
  @autor: warp3r[at]wp.pl
  @date 2014
  @version 1.3
 */

/*
LED 1 - ZIELONY - PRAWE RAMIĘ/SKRZYDŁO
LED 2 - CZERWONY - LEWE RAMIĘ/SKRZYDŁO
LED 3 - BIAŁY - PRAWE RAMIĘ/SKRZYDŁO
LED 4 - BIAŁY - LEWE RAMIĘ/SKRZYDŁO
LED 5 - CZERWONY - BEACON
LED 6 - BIAŁY - OGON/STATECZNIK PIONOWY/GIMBAL TYŁ
*/

/* dla ATTiny 45 1MHz i 8MHz*/

// LED czerwone i zielone, stałe światło ew. z błyskami
// czerwone na lewe skrzydło, zielone na prawe
int led_Position = 4; // PIN 3 - LED 1-2

// LED białe błyskowe na skrzydłach
// skierowane do tyłu pod kątem 45st
int led_WingStrobe = 3; // PIN 2 - LED 3-4

// LED czerwony błyskowe
// spód i górna część kadłuba
int led_AntiCollision_Beacon = 1; // PIN 6 - LED 5

// LED białe błyskowe, może być ew. zapalane wraz z obrysowymi
// umieszczane w części ogonowej w kierunku świecenia do tyłu
int led_TailStrobe = 0; // PIN 5 - LED 6

// Wejście sygnału A7 z APM 2.6
// ew. zwierane z "+5V" z BEC/RC jeśli pełne oświetlenie ma być aktywowane podczas załączania 
int input_SignalArming = 2; // PIN 7

/* Stan diod */
// wartość dla wyłączonej diody
const int LEDOFF = 0;
// wartość PWM dla diody "przygaszonej"
const int LEDON = 64;
// wartość PWM dla pełnego oświetlenia
const int LEDBLINK = 255;

/* pomocnicze */
int input_SignalArmingState = 0;
boolean goArmingState = false;
boolean wait_state = true;

// Ustawienia po uruchomieniu układu
void setup() {    
  pinMode(led_AntiCollision_Beacon, OUTPUT);     
  pinMode(led_WingStrobe, OUTPUT);     
  pinMode(led_TailStrobe, OUTPUT);     
  pinMode(led_Position, OUTPUT);     
  pinMode(input_SignalArming, INPUT); 
  digitalWrite(input_SignalArming, LOW);  
  LEDS_Mode1();
}

/* Aktywacja wyłącznie świateł obrysowych - pozycyjne */
void LEDS_Mode1() {
  analogWrite(led_AntiCollision_Beacon, LEDOFF);  
  analogWrite(led_TailStrobe, LEDOFF);
  analogWrite(led_WingStrobe, LEDOFF);
  analogWrite(led_Position, LEDON);
}

/* Aktywacja pełnego cyklu oświetlenia */
void LEDS_Mode2() {
  analogWrite(led_TailStrobe, LEDBLINK); 
  analogWrite(led_WingStrobe, LEDBLINK); 
  delay(50);
  analogWrite(led_TailStrobe, LEDOFF); 
  analogWrite(led_WingStrobe, LEDOFF); 
  delay(50);
  // 100ms
  analogWrite(led_TailStrobe, LEDOFF); 
  analogWrite(led_WingStrobe, LEDBLINK); 
  delay(50);
  analogWrite(led_TailStrobe, LEDOFF); 
  analogWrite(led_WingStrobe, LEDOFF); 
  delay(50);
  //200ms

  analogWrite(led_Position, LEDBLINK);
  delay(50);
  analogWrite(led_Position, LEDON);
  delay(50);
  // 300ms
  analogWrite(led_Position, LEDBLINK);
  delay(50);
  analogWrite(led_Position, LEDON);
  delay(50);
  // 400ms
  analogWrite(led_AntiCollision_Beacon, LEDBLINK);
  delay(50);
  analogWrite(led_AntiCollision_Beacon, LEDOFF);
  // 450ms
  CheckA7();
  delay(550);
}

void CheckA7(){
  input_SignalArmingState = digitalRead(input_SignalArming);
  delay(1);        // delay in between reads for stability
  if ((input_SignalArmingState != HIGH)) {
    wait_state = true; 
    goArmingState = false;
    LEDS_Mode1(); 
  } 
}

/* w tej pętli, program wykonuje się w nieskończoność */
void loop() {
  // oczekiwanie na sygnał z wyjścia A7 Ardupilot APM 2.6
  // pomijany jest sygnał BLINK 500ms
  CheckA7(); 
  
  if (wait_state != false) {
    wait_state = false;
    goArmingState = true;
    for (int i=0; i<11; i++) {
      input_SignalArmingState = digitalRead(input_SignalArming);
      delay(1);        // delay in between reads for stability
      if (input_SignalArmingState != HIGH) { goArmingState = false; wait_state = true; break;}
      delay(120);
    }
  }
  /**/// w zależności od wykrycia aktywowania uzbrojenia silników, zapalny jest odpowiedni zestaw oświetlenia
  if ( goArmingState != false) {
    LEDS_Mode2();
  } else {
    LEDS_Mode1();
  }
  /**/
}
/* a tu jest koniec kodu v1.3 */

Kod programu jest dla bezpłatnego środowiska Arduino http://arduino.cc/en/Main/Software

Sposób programowania ATTiny45 opisany jest np. tu http://www.instructables.com/id/Program-an-ATtiny-with-Arduino/

Odnośnik do komentarza
Udostępnij na innych stronach

Po dokładnym zapoznaniu się z bibliotekami funkcji dla środowiska Arduino okazało się, że dla ATTiny45 dostępna jest funkcja pulseIn.

A to oznacza, że wystarczy zmienić oprogramowanie, aby uzyskać całkowicie nowe możliwości.

Dostępne jest więc sterowanie załączaniem trybami oświetlenia bezpośrednio z aparatury poprzez wolny kanał.

 

Moduł z układem zastępczym LED, do wyjścia modułu podłączone zostały diody 5mm z rezystorami 470R.

W testowym programie dla modułu, dostępne są cztery tryby oświetlenia dla przełącznika trójpozycyjnego:

- brak podłączonej aparatury lub ew. zanik zasięgu - włącza się funkcja led_Failsafe (światła obrysowe błyskają jak beacon)

- włączona aparatura, przełącznik w pozycji 0 - włącza się funkcja led_Mode1 (światła obrysowe jednolite światło)

- włączona aparatura, przełącznik w pozycji 1 - włącza się funkcja led_mode2 (światła obrysowe z błyskiem, beacon)

- włączona aparatura, przełącznik w pozycji 2 - j.w. oraz włącza się oświetlenie do lądowania.

 

https://www.youtube.com/watch?v=5Fw3Xbs7dbY

 

Nasunęło mi to pewien pomysł na obsługę funkcji Failsafe. Ale to chyba będzie w innym wątku :)

 

Poniżej fragment kodu pętli głównej w której odczytywana jest wartość duration dla której to załączane są odpowiednie tryby oświetlenia.

/* w tej pętli, program wykonuje się w nieskończoność */
void loop() {
  // oczekiwanie na sygnał z odbiornika RC
  duration = pulseIn(input_SignalArming, HIGH);
  if ((duration >900)and(duration < 1401)) {
    LEDS_Mode1(); // jest sygnał z aparatury w odbiorniku RC, przełącznik poz.0
  } else if ((duration >1400)and(duration < 1701)){
    analogWrite(led_LandingLigths, LEDOFF);
    LEDS_Mode2(); // przełącznik w aparaturze na poz. 1
  } else if (duration >1700) {
    analogWrite(led_LandingLigths, LEDON);
    LEDS_Mode2(); // przełącznik w aparaturze na poz. 2
  } else {    
    LEDS_Failsafe(); // gdy brak sygnału PWM z odbiornika RC
  }  
  /**/
}
/* a tu jest koniec kodu v1.4 MIG-29 */

Zdecydowałem się także zamówić płytki przygotowane w profesjonalnej firmie.

Odnośnik do komentarza
Udostępnij na innych stronach

Moduł został przygotowany do sterowania 4-ma liniami wyjściowymi z czego dwie są podwójne co daje 6 wyjść. Niestety jest tylko jedno wejście sterujące.
W zasadzie można było by dodać taki "efekt" dla Jet-ów, pozostawiając światła obrysowe, beacon i światła lądowania.

 

poniżej schemat dla wersji 1.4

IHFML9t.png

Odnośnik do komentarza
Udostępnij na innych stronach

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.