Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 22 lut 2025, o 19:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
 Tytuł: Driver LED
PostNapisane: 11 sty 2015, o 13:54 
Offline
Nowy

Dołączył(a): 14 gru 2014
Posty: 3
Pomógł: 0

Witam wszystkich serdecznie.
Jest to mój pierwszy post na tym forum, całą moją wiedzę o elektronice gromadzę może od pół roku, i jeszcze miesiąc temu o mikrokontrolerach wiedziałem tylko tyle, że istnieją. Temat mnie bardzo wciągnął, a zaczęło się z powodu czysto praktycznego.
Otóż, w nowo budowanym domu wymyśliłem sobie automatykę posuniętą tak daleko jak się da (i dopóki będzie miało to sens), a wszystko będzie sterowane ze sterownika PLC Wago 750-880. Chciałbym m.in. sterować intensywnością oświetlenia w całym domu, ale niestety profesjonalne drivery oparte o DMX512 lub DALI nie są na moją kieszeń i szukałem alternatywnych rozwiązań. W ten sposób dotarłem do uC, postanowiłem zgłębić wiedzę i sam sobie taki driver zmontować.

Założenia są następujące:
-Oświetlenie, którym chcę sterować to ledy różnej maści,
-Sterownik dostaje sygnał z PLC i na jego podstawie świeci sterowanym ledem z odpowiednią jasnością.

Sygnał z PLC może być wysłany na dwa sposoby, które rozważam:
1. po RS485 wysyła do konkretnego sterownika led wartość od 0 do 255, a ta zostanie już bezpośrednio podstawiona do rejestru OCRx, co pozwoli na ustawienie wypełnienia sygnału PWM,
2. poprzez wysyłanie sygnału prostokątnego o określonej częstotliwości - czas pomiędzy zboczami narastającymi będzie podstawą do ustawienia wartości rejestru OCRx. (Trzeba wspomnieć, że niestety, nie można wysyłać sygnału PWM bezpośrednio z PLC, bo jego maksymalna częstotliwość przełączania to 2kHz, więc do sterowania ledem się nie nadaje.)

Docelowo będę starał się wykorzystać pierwszy sposób, ale stan wiedzy jeszcze nie pozwala mi się za to zabrać, dlatego wałkuję drugi sposób i po tak długim wstępie, właśnie z tym chciałbym się zwrócić o pomoc.

No to teraz konkrety :).
Zmontowałem układ na płytce stykowej, gdzie led podłączyłem anodą do pinu PB3 Atmegi 8, a katodę poprzez rezystor do masy. Pin PC0 jest natomiast zwierany do masy poprzez tranzystor w zależności od sygnału podawanego na bazę z PLC. Tak więc układ banalnie prosty. PLC wysyła sygnał o okresie od 2 do 100 ms.

Poniżej kod programu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Problem polega na tym, że impulsy z PLC są podawane ze stałą częstotliwością, a dioda zmienia jasność w sposób przypadkowy, a powinna świecić tak samo. Jak zwiększam częstotliwość impulsów, to dioda przygasa, jak zmniejszam, to dioda się rozjaśnia, ale nigdy nie świeci równomiernie tylko raz jaśniej a raz ciemniej.
Prawdopodobnie mam gdzieś błąd w programie, ale siedzę drugi dzień i nie mogę go znaleźć. Generalnie jestem przyzwyczajony do pisania programów na PC, gdzie mogę sobie podejrzeć wartości zmiennych, wykonywać program krok po kroku, więc przy programowaniu uC jest mi trudniej.

Bardzo proszę o pomoc. A może ktoś widzi inny sposób wysterowania mojego driverka z PLC to chętnie posłucham.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Driver LED
PostNapisane: 14 sty 2015, o 06:43 
Offline
Nowy

Dołączył(a): 14 gru 2014
Posty: 3
Pomógł: 0

Niestety, nadal nie wiem, dlaczego zliczanie czasu trwania impulsów nie jest dokładne.Zmienna "liczba_impulsów" tak jakby "drży", to znaczy mniej więcej pokazuje prawdę, ale są pewne (zdecydowanie za duże) wahania. Oczywiście PLC cały czas podaje taki sam sygnał. Wydaje mi się jednak, że ma to związek z tym, że czas trwania impulsu jest liczony nie w przerwaniu, a w głównej pętli programu i stąd te niedokładności.

Poradziłem sobie z problemem w ten sposób, że teraz program sprawdza i zapisuje w przerwaniu wyzwalanym pojawieniem się zbocza, czas między zboczem opadającym a rosnącym. Jest to o wiele dokładniejsze. Dla potomności wklejam poprawiony kod:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO