Witam,
Chciałbym przedstawić projekt własnego sterownika PLC, opartego o mikrokontroler ATmega1284P. Jest to ATmega o największej ilości pamięci flash (128kB), dostępna w obudowie DIP, jaką udało mi się znaleźć. Sterownik składa się z pięciu modułów montowanych na wspólnej płycie głównej. Poniżej przedstawiam grafiki poszczególnych modułów.
Sterownik charakteryzuje się następującymi parametrami:
- 64kB pamięci programu
- zasilanie 24VDC
- 8 wejść cyfrowych 24VDC, izolowanych galwanicznie
- 8 wyjść cyfrowych 24VDC, 500mA, izolowanych galwanicznie
- 4 wejścia analogowe 0-10V
- 4 wyjścia analogowe 0-10V
- zegar czasu rzeczywistego RTC
- interfejs komunikacyjny RS232
Sercem jednostki CPU, jak już wcześniej wspomniałem, jest 8-bitowy mikrokontroler ATmega1284P. Oprócz niego moduł posiada także podtrzymywany bateryjnie układ RTC, dzięki któremu możliwe jest tworzenie funkcji uzależnionych od czasu. Do programowania sterownika wykorzystałem interfejs RS232. Moduł wejść cyfrowych składa się z 8 izolowanych galwanicznie wejść. Każde z nich wyposażone jest w diodę LED i zabezpieczone przed obciążeniem indukcyjnym. Podobnie jest w przypadku wyjść cyfrowych. Wejścia analogowe wykorzystują 10-bitowy przetwornik ADC ATmegi. Każde z nich zabezpieczone jest przeciwprzepięciowo za pomocą transila. W związku z tym, że użyty mikrokontroler nie został wyposażony w przetwornik DAC, budowa wyjścia analogowego opiera się o sygnał PWM, który filtrowany jest dolnoprzepustowo, a następnie wzmacniany. Dzięki temu na wyjściu otrzymujemy sygnał 0-10V zależny od wypełnienia PWM. Każde z wyjść również zabezpieczone jest transilem. W załączniku wstawiam PDF-y ze schematami (schematic.zip) i wydrukami płytek PCB (pcb.zip) oraz wsad mikrokontrolera i ustawienia fusebitów (atmega.zip). Wszystkie płytki oprócz płyty głównej (MB101) są dwustronne.
Jeśli chodzi o koszty to za wszystkie elementy zapłaciłem ok. 100 zł. Najdroższa wyszła ATmega bo kosztowała aż 40 zł. Pracuję aktualnie nad kolejnym projektem PLC opartym o 32-bitowy STM32. Dla porównania cena takiego układu to ok. 15 zł. a możliwości o wiele większe. W załączniku wstawiam spis elementów (partlist.zip).
Do programowania sterownika stworzyłem niezależne środowisko programistyczne napisane w języku C#. Jego najważniejsze funkcje to:
- tworzenie oprogramowania PLC w języku FBD
- zapisywanie i odczytywanie stworzonych projektów
- możliwość dodawania wielu urządzeń w ramach jednego projektu
- możliwość podziału programu na bloki
- wgrywanie i pobieranie programu ze sterownika
- wbudowany symulator
- możliwość podglądu online
- programowanie RTC czasem systemowym komputera
Aplikację stworzyłem w języku angielskim, bo wydaje mi się, że jest bardziej uniwersalny. Aktualnie pracuję nad kolejną wersją, w której planuję dodać język polski. Starałem się aby obsługa środowiska była intuicyjna. W celu utworzenia nowego projektu wystarczy kliknąć przycisk „New Project”. Pojawi się kreator, gdzie będziemy mogli określić parametry projektu. Jeśli nie chcemy nic zmieniać wystarczy potwierdzać przyciskiem „OK”. Po utworzeniu projektu można już dodawać poszczególne funkcje z drzewka „Library”. Niestety aplikacja nie posiada żadnej pomocy. Zabrakło też czasu na stworzenie porządnej instrukcji, dlatego w razie pytań chętnie pomogę. Poniżej wstawiam przykładowy rzut z działania środowiska w trybie online a w załączniku jego instalkę (setup.exe).
Na zakończenie powiem, że projekt powstał w celach edukacyjnych ale ze względu na to, że nie lubię tworzyć sam dla siebie postanowiłem podzielić się nim z innymi. Może komuś z Was się przyda i będzie z niego jakiś pożytek. Pozdrawiam i czekam na opinie.
Fajne? Ranking DIY
.