Skocz do zawartości
dkradke

Sterownik pieca CO

Pomocna odpowiedź

Napisano (edytowany)

Kolega modernizując u siebie w mieszkaniu system ogrzewania poprosił mnie o wykonanie jakiegoś sterownika do pieca CO wraz ze sterowaniem dmuchawy. Tak powstał niewielki regulator, który miał mieć na celu prostotę i czytelność.

P1300006.thumb.JPG.849c11b1077b6603b08ad70ebc5ec9fe.JPG

Główne elementy użyte do budowy sterownika to:

Głównym zadaniem jest uruchamianie pompy obiegowej na podstawie zadanej temperatury na piecu. Dodatkową funkcją jest tryb rozpalania, który w początkowej fazie uruchamia dmuchawę. Jest to bardzo przydatna opcja, przyspieszająca proces rozpalania w piecu.

Sterowanie jest bardzo proste, odbywa się z wykorzystaniem tylko trzech przycisków. W podstawowym widoku regulujemy zadaną temperaturę na piecu, która decyduje o tym czy pompa ma zacząć pracować czy nie. Regulator jest prostą nastawą z histerezą.

Po wejściu w menu możemy dodatkowo zmienić:

  • temperaturę wyłączenia dmuchawy. Jeżeli piec jest zimny i włączymy opcję rozpalania to po osiągnięciu już stosunkowo niewielkiej temperatury dmuchawa zostanie wyłączona
  • histerezę pracy regulatora
  • maksymalne czasy pracy pompy i dmuchawy

Wszystko zostało zamknięte w obudowie natynkowej, a sterownik umieszczony obok pieca w pomieszczeniu gospodarczym.

Układ składa się z dwóch płytek rozdzielając część wysokiego napięcia i sterowania.

P1290003.thumb.JPG.1f61494bbf7820c458c8c04e915a35c3.JPGP1290002.thumb.JPG.c4a22d088c7f67745bf1cff71572b4dd.JPGP1290004.thumb.JPG.4a6e1d8c6a3ca2071d9804091220f4a6.JPG

Zdecydowałem się na umieszczenie kompletnego zasilania w urządzeniu, transformator, bezpiecznik i kilka dodatkowych elementów. Powodem tego było to, że sterownik jest używany przez kogoś innego a dołączany zasilacz może się zgubić i wtedy nie mam kontroli na tym jaki zamiennik zostanie użyty.

Tutaj jest pokazany schemat i wzór płytki:

sterownikCO.thumb.png.2291c5f5ebffcfdb2a3fbd17ae6e7dc8.pngsterownikCObrd.thumb.png.1cabcee771f16ea5c24d50f81ca58217.png

Płytka została wykonana w domowych warunkach metodą żelazkową. Dla poprawy czytelności wykorzystałem możliwość definiowania własnych znaków co pozwoliło uzyskać duże cyfry widoczne z daleka. Niżej pokazuje jak uzyskać takie efekt.

- najpierw musimy zdefiniować poszczególne elementy cyfr i ładujemy je do pamięci wyświetlacza

uint8_t BigDigitDefChar[][8] = {
                {15,7,32,32,32,32,3,7},
                {32,32,32,32,32,32,7,15},
                {28,30,30,30,30,30,30,28},
                {7,15,15,15,15,15,15,7},
                {31,31,32,32,32,32,32,32},
                {32,32,32,32,32,32,31,31},
                {31,31,32,32,32,32,31,31},
                {30,28,32,32,32,32,24,28}
};

for(uint8_t i=0;i<8;i++) lcd_defchar(i,BigDigitDefChar[i]);

- następnie tworzymy tablicę która poskleja nam te segmenty w cyfry

char* BigDigit[][2]={
                {"\x83\x84\x82","\x83\x85\x82"},        //0
                {"  \x82","  \x82"},                    //1
                {"\x80\x86\x82","\x83\x85\x85"},        //2
                {"\x80\x86\x82","\x81\x85\x82"},        //3
                {"\x83\x85\x82","  \x82"},              //4
                {"\x83\x86\x87","\x81\x85\x82"},        //5
                {"\x83\x86\x87","\x83\x85\x82"},        //6
                {"\x83\x84\x82","  \x82"},              //7
                {"\x83\x86\x82","\x83\x85\x82"},        //8
                {"\x83\x86\x82","\x81\x85\x82"}         //9
 
};

- teraz już tylko wystarczy użyć odpowiedniej funkcji do wyświetlania. Funkcja ta korzysta z obsługi R/W i odczytuje stan busy flag co pozwala na odczytanie pozycji kursora. Jeśli ktoś będzie chciał podłączyć R/W do GND to musi przerobić tą funkcję tak aby przekazać do niej pozycję kursora

void lcd_big_int(int val)
{
        uint8_t pp,x,y;
 
        char bufor[17];
        char *wsk=itoa(val, bufor, 10);  //zamieniamy całą liczbę na pojedyncze znaki ACSII np. 1234 -> '1','2','3','4'
 
        register uint8_t znak;
        while ( (znak=*(wsk++)) )    //pętla jest powtarzana po wszystkich indeksach tablicy bufor, aż napotka '\0'
        {
                pp = check_BF() & 0b01111111;  //odczytujemy aktualną pozycję kursora - busy flag wyświetlacza
 
                y = pp & 0xF0;    //wyodrębniamy nr wiersza
                x = pp & 0x0F;    //wyodrębniamy pozycję x
 
                znak -= 0x30;    //zamieniamy kod ascii na rzeczywistą wartość dziesiętną np '7' -> 7; będzie to nasz indeks do tablicy
                lcd_str(BigDigit[znak][0]);     //ładujemy na wyświetlacz górną część cyfry
                lcd_write_cmd( (0x80 + y + 0x40 + x) );   //wracamy kursorem na domyślną pozycję x, ale o jeden wiersz niżej
               
                lcd_str(BigDigit[znak][1]);   //ładujemy na wyświetlacz dolną część cyfry
                lcd_write_cmd( (0x80 + y + x + 0x03) );  //ustawiamy kursor zaraz za cyfrą w wierszu domyślnym, czyli takim w którym wywołano funkcję
        }
}

uint8_t check_BF(void)
{
        CLR_RS;
        return _lcd_read_byte();
}

Jest to prosty sposób na bardzo fajne wyświetlanie liczb, które są widoczne z daleka.

Edytowano przez Treker
Poprawiłem formatowanie.
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

@dkradke, właśnie zaakceptowałem opis. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum  😉

Udostępnij ten post


Link to post
Share on other sites

Bardzo fajne rozwiązanie z tymi dużymi cyframi. A jak przymocowałeś płytkę z wyświetlaczem do przedniego panelu? Czy jest przykręcona? I jeszcze mam pytanie o ten nadruk na frontowym panelu - na czym to jest zrobione - bo pewnie musi być nieco sztywne?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Na zdjęciu gdzie jest LCD widać wystające śruby M3, przykleiłem je do przedniego panelu jakimś mocniejszym klejem. Płytkę można zdemontować odkręcając nakrętki. Wszystko jest w pełni rozbieralne. Przedni panel to zwykły wydruk na papierze i zalaminowane, przyciski wystają minimalnie ponad plastik obudowy, tak że ten nadruk fajnie się opiera o nie, efekt trochę jak przy membranowych przyciskach.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...