Spisu treści:

Wiele świec elektronicznych: 3 kroki
Wiele świec elektronicznych: 3 kroki

Wideo: Wiele świec elektronicznych: 3 kroki

Wideo: Wiele świec elektronicznych: 3 kroki
Wideo: Diox / The Returners feat. Pelson - Kroki 2024, Listopad
Anonim
Wiele świec elektronicznych
Wiele świec elektronicznych

Świece elektroniczne były wielokrotnie publikowane w Instructables, więc dlaczego ta?

W domu mam te małe półprzezroczyste domki bożonarodzeniowe z wejściem LED i małą baterią. Niektóre domy mają diody LED z efektem świecy, a niektóre mają diody LED, które są po prostu włączone. Małe baterie rozładowują się stosunkowo szybko, a ponieważ chciałem uzyskać efekt świecy we wszystkich domach, postanowiłem zrobić z tego projekt PIC. Oczywiście możesz też przekształcić go w projekt Arduino.

Więc co sprawia, że ta elektroniczna świeca jest wyjątkowa? PIC i Arduino mają na pokładzie sprzęt z modulacją szerokości impulsu (PWM), który może być użyty do stworzenia efektu świecy za pomocą diody LED, ale w moim przypadku chciałem mieć 5 niezależnych świec elektronicznych za pomocą jednego kontrolera i to nie jest obecne, a przynajmniej nie że wiem. Rozwiązanie, którego użyłem, to wykonanie tych pięciu niezależnych sygnałów PWM całkowicie w oprogramowaniu.

Krok 1: Modulacja szerokości impulsu w oprogramowaniu

Modulacja szerokości impulsu została opisana kilkakrotnie, m.in. w tym artykule Arduino:

PIC i Arduino mają na pokładzie specjalny sprzęt PWM, który ułatwia generowanie tego sygnału PWM. Jeśli chcemy wykonać jeden lub więcej sygnałów PWM w oprogramowaniu, potrzebujemy dwóch timerów:

  1. Jeden zegar używany do generowania częstotliwości PWM
  2. Jeden zegar używany do generowania cyklu pracy PWM

Oba timery generują i przerywają po zakończeniu, więc obsługa sygnału PWM jest w pełni sterowana przerwaniami. Do częstotliwości PWM używam timera 0 PIC i niech się przepełni. Przy wewnętrznym zegarze oscylatora 8 MHz i preskalowaniu 64 formuła jest następująca: Fosc/4/256/64 = 2.000.000/256/64 = 122 Hz lub 8,2 ms. Częstotliwość musi być wystarczająco wysoka, aby ludzkie oko nie mogło jej wykryć. Wystarczy do tego częstotliwość 122 Hz. Jedyną rzeczą, jaką robi ta procedura przerwania czasowego, jest skopiowanie cyklu pracy dla nowego cyklu PWM i włączenie wszystkich diod LED. Robi to niezależnie dla wszystkich 5 diod LED.

Wartość timera do obsługi cyklu pracy PWM zależy od tego, w jaki sposób wykonamy efekt świecy. W moim podejściu symuluję ten efekt, zwiększając współczynnik wypełnienia o wartość 3, aby zwiększyć jasność diody LED i zmniejszając go o wartość 25, aby zmniejszyć jasność diody LED. W ten sposób uzyskasz efekt świeczki. Ponieważ używam minimalnej wartości 3, liczba kroków do kontrolowania pełnego cyklu pracy jednym bajtem wynosi 255/3 = 85. Oznacza to, że zegar cyklu pracy PWM musi działać z częstotliwością 85 razy większą od częstotliwości Zegar częstotliwości PWM, który wynosi 85 * 122 = 10,370 Hz.

Do cyklu pracy PWM używam timera 2 PIC. Jest to timer z automatycznym przeładowaniem i używa następującego wzoru: Okres = (Przeładowanie + 1) * 4 * Tosc * Wartość przeskalowania Timera2. Przy przeładowaniu 191 i preskalowaniu 1 otrzymujemy okres (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us lub 10,416 Hz. Procedura przerwania cyklu pracy PWM sprawdza, czy cykl pracy minął i wyłącza diodę LED, dla której cykl pracy został zakończony. Jeśli cykl pracy nie zostanie ukończony, zmniejsza licznik cykli pracy o 3 i kończy procedurę. Robi to niezależnie dla wszystkich diod LED. W moim przypadku ta procedura przerwania zajmuje około 25 us, a ponieważ jest wywoływana co 96 us, już 26% procesora jest używane do zarządzania cyklem pracy PWM w oprogramowaniu.

Krok 2: Sprzęt i wymagane komponenty

Sprzęt i wymagane komponenty
Sprzęt i wymagane komponenty

Schemat ideowy przedstawia wynik końcowy. Chociaż kontroluję tylko 5 diod LED niezależnie, dodałem szóstą diodę, która działa razem z jedną z 5 innych diod LED. Ponieważ PIC nie może sterować dwiema diodami LED na jednym pinie portu, dodałem tranzystor. Elektronika jest zasilana przez zasilacz 6 V / 100 mA DC i wykorzystuje regulator niskiego napięcia, aby uzyskać stabilne napięcie 5 V.

Do tego projektu potrzebne są następujące komponenty:

  • 1 mikrokontroler PIC 12F615
  • 2 kondensatory ceramiczne: 2*100nF
  • Rezystory: 1*33k, 6*120 Ohm, 1*4k7
  • 6 pomarańczowych lub żółtych diod LED, wysoka jasność
  • 1 tranzystor BC557 lub odpowiednik
  • 1 Kondensator elektrolityczny 100 uF / 16 V
  • 1 regulator niskiego spadku napięcia LP2950Z

Układ można zbudować na płytce stykowej i nie zajmuje dużo miejsca, co widać na zdjęciu.

Krok 3: Pozostałe oprogramowanie i wyniki

Pozostała część oprogramowania to główna pętla. Pętla główna zwiększa lub zmniejsza jasność diod LED poprzez losową regulację cyklu pracy. Ponieważ inkrementujemy tylko o wartość 3, a dekrementujemy o wartość 25, musimy upewnić się, że dekrementy nie zdarzają się tak często, jak inkrementy.

Ponieważ nie korzystałem z żadnych bibliotek, musiałem zrobić generator losowy za pomocą rejestru przesuwnego z liniowym sprzężeniem zwrotnym, patrz:

en.wikipedia.org/wiki/Linear-feedback_shif…

Na efekt świecy wpływa szybkość zmiany współczynnika wypełnienia PWM, więc pętla główna wykorzystuje opóźnienie około 10 ms. Możesz dostosować ten czas, aby dostosować efekt świecy do swoich potrzeb.

Załączony film pokazuje efekt końcowy, w którym użyłem nasadki nad diodą LED, aby poprawić efekt.

Użyłem JAL jako języka programowania dla tego projektu i załączyłem plik źródłowy.

Baw się dobrze, czyniąc to Instruktażowym i oczekując na twoje reakcje i wyniki.

Zalecana: