Lutownica czy też stacja lutownicza to chyba najbardziej potrzebne narzędzie w pracowni zarówno elektronika jak i elektronika-amatora. O ile zwykłą lutownicę można mieć za przysłowiowych kilka złotych o tyle stacja lutownicza to już większy koszt a w dodatku nie zawsze spełnia nasze oczekiwania. Prosta lutownica ma wiele minusów spośród których można wymienić choćby brak kontroli nad osiąganą temperaturą. Zaprezentowana tutaj stacja lutownicza ma wiele plusów, natomiast minusów w sumie nie dopatrzyłem się. Z pewnością ktoś może wytknąć ich masę, ale przypominam że jest to amatorska stacja lutownicza i do takich zastosowań przeznaczona, więc nie ma co szukać dziury w całym. Poza wszystkimi plusami jakie posiada owa stacja, można dodać jeszcze jeden, chyba najważniejszy - cena. Koszt wykonania tej stacji nie uszczupli zbyt mocno domowego budżetu przeciętnego a nawet mniej zamożnego elektronika-amatora. Stacja nie jest moim projektem i całkowicie podpisać się pod nią nie mogę bo było by to co najmniej nie fair. Schemat i opis:Poniżej znajdziecie schemat ideowy stacji i opis który wyjaśni co, po co, dlaczego i do czego? Schemat jest dość chaotyczny bo to były moje pierwsze podrygi w programie eagle a że stacja działa i płytka jest okej to nie wprowadzałem zmian w schemacie. Zaczniemy od początku czyli sekcja zasilania. Na wejście CON1 nalezy podać napięcie zasilające cały układ. Podpinamy tam wtórne uzwojenie transformatora o napięciu 2x12V i mocy około 60VA. Transformator taki można kupić w wielu sklepach, a nie chcąc robić nikomu reklamy nie będę podawał konkretnej lokalizacji. Jako że procesor będzie zbierał dane ze swoich wejść ADC to został on wyposażony w potrzebne kondensatory filtrujące napięcie zasilania. Są to kondensatory C15, C16 oraz C17 i towarzyszący im dławik 10uH. Są to elementy niezbędne do prawidłowej pracy procesora w takiej konfiguracji jak w zaprezentowanym tu projekcie. Kostka IC1 czyli wzmacniacz LM311 pracuje tu w roli układu wykrywania przejścia napięcia sieci przez zero, choć ostatecznie samo wykrywanie realizowane jest drogą programową. Kolejnym blokiem wartym omówienia, który jest też koniecznym blokiem aby stacja mogła pełnić swoją rolę jest układ IC6 czyli kostka OP07CN. Scalak ten pracuje tu w roli wzmacniacza o wzmocnieniu wyznaczonym stosunkiem rezystancji R9 i R10, a jego wzmocnienie ustawione jest na x100. Układ ten wzmacnia niewielkie napięcie termopary i podaje na jedno z wejść ADC mikrokontrolera. Dioda zenera na wyjściu IC6 zabezpiecza przed sytuacją gdyby przypadkiem pojawiło się tam napięcie wyższe niż napięcie dopuszczalne które można podać na wejście procesora. Kilka słów muszę wspomnieć o sekcji zasilania 230V z dziwnym układem przycisków SW3, SW6, tranzystorem T1 oraz przekaźnikiem Pk1. Moduł ten wraz z odpowiednim fragmentem oprogramowania jest jedną z kilku innowacji jakie wprowadziłem w swojej wersji stacji lutowniczej. Pozwala on na:
Do złącz o nazwach SW3 i SW6 należy podłączyć włącznik chwilowy o stykach NO i z dwoma galwanicznie oddzielonymi sekcjami, ponieważ jedna z sekcji załącza zasilanie 230VAC i trzeba z tym bardzo uważać. Krótko omówię zasadę działania tego bloku. Zacznijmy od sytuacji kiedy stacja jest wyłączona i nie pobiera zupełnie żadnego ale to żadnego prądu. Tranzystor T1 nie podaje zasilania na przekaźnik Pk1 a ten nie zasila transformatora. Naciskamy włącznik który zwiera nam jednocześnie wyprowadzenia SW3 i SW6 i co dzieje się dalej? Już tłumaczę. Teraz opiszę sytuację kiedy stacja pracuje a my chcemy ją wyłączyć naciskając przycisk wł/wył. Co się dzieje? Jest to włącznik od jakiegoś odkurzacza nowszej wersji. Przerobiłem go by był to włącznik chwilowy a nie włącz/wyłącz. Przeróbka polegała na usunięciu jednej ze sprężynek odpowiedzialnych za działanie bistabilne. Wspomnieć tu należy, że zarówno podczas włączania stacji jak i podczas jej wyłączania można przycisk(i) trzymać przez dowolnie długi czas, ponieważ w każdym przypadku program czeka na stan rozwarcia SW3. Jedynymi skutkami ubocznymi będą wydłużone czasy zarówno włączania jak i wyłączania urządzenia. Obsługa: Samo użytkowanie sprowadza się do kilku czynności:
Jeśli chcemy skorzystać z przycisków szybkiego wyboru temperatury ZADANA 1, ZADANA 2 czy ZADANA 3 to należy przypisać im odpowiednie temperatury. Dokonujemy tego następująco: Na wyświetlaczu pojawi się komunikat o zapisie aktualnej temperatury pod dany przycisk a jednocześnie temperatura zapisana zostanie do nieulotnej pamięci mikrokontrolera. Postępujemy tak z wszystkimi trzema przyciskami. Od tej pory pod każdym z guziczków zapisaną mamy temperaturę do szybkiego wyboru. Gdy wciśniemy na chwilę którykolwiek z przycisków, wybrana zostanie jedna z wcześniej zapisanych temperatur. By opuścić tryb szybkiej temperatury należy wcisnąć ten sam przycisk który nacisnęliśmy wchodząc w dany tryb. Podobnie jest z trybem uśpienia, by z niego wyjść należy ponownie nacisnąć przycisk UŚPIENIE. Do odliczania czasów automatycznego usypiania, automatycznego wyłączania czy czasu automatycznego wyłączenia podświetlania wyświetlacza lcd zaprzęgnięty został timer1 który skonfigurowany został tak, że przerwanie wywoływane jest co 1 sekundę. Poszczególne czasy są ustawione na sztywno i wynoszą:
Każdorazowe naciśnięcie któregokolwiek z przycisków zeruje czas a dodatkowo każde wejście w tryb zadanej temperatury zeruje czas oraz wyłącza jego zliczanie. Podniesienie kolby lutownicy z podstawki zeruje czas i automatycznie włącza normalną pracę jeśli stacja znajdowała się w trybie uśpienia. Program jest przetestowany i już ową stacją lutowałem. Zamierzam wprowadzić jeszcze kilka poprawek o których poinformuję na bieżąco. Byłbym zapomniał o kodzie, poniżej w całej okazałości. Nadmienię tylko dwa słowa o nim. Na pierwszy rzut oka wydawać by się mogło że jest skomplikowany bo strasznie go dużo, ale tak naprawdę składa się z kilku takich samych bloków i dlatego tworzy tak długą listę. Jako że wszelkie nastawy zapisywane są w wewnętrznej pamięci EPROM procka a ta jak wiadomo ma ograniczoną żywotność to napisałem kawałek kodu który minimalizuje zapis do tejże pamięci i wykonuje go tylko wówczas kiedy zmienimy nastawę temperatury. Dajmy na to że włączamy stację i nastawa wynosi 220st.C a my nie zmienimy tej nastawy to przy wyłączaniu nie zostanie ona zapisana do epromu, ale jeśli tylko nastawa zostanie zmieniona to podczas wyłączania stacji na lcd pokaże się napis ZAPIS, wykonany zostanie zapis nowej wartości do pamięci i stacja się wyłączy. Napiszę jeszcze o jednej rzeczy którą zauważyłem i jest to według mnie mankament który w najbliższym czasie wyeliminuję. Fragment kodu: '================================================================================================ 'sprawdzamy czy kolba jest podłączona If Temp > 800 Then 'jeśli jest zbyt duże napięcie to może oznaczać niepodłączoną kolbę Gosub Spr Else 'skocz do poprogramy wyświetlenia info o tym Home Lcd "Temp:" ; Temp_lcd ; Chr(0) ; "C" ; " " 'wyświetlamy wartość temp. z pomiaru Lowerline Lcd "Nastawa:" ; Nastawa ; Chr(0) ; "C" ; " " 'a w dolnej linii pokazujemy wartość nastawy End If Niby odpowiedzialny jest za sprawdzanie czy podłączona jest kolba lutownicy, tylko że jak się ją odłączy to napięcie nie rośnie tak by wartość temperatury była wyższa niż 800. Trzeba sprawdzać czy wartość jej jest mniejsza niż 50. '******************************************************************** '*********** STACJA LUTOWNICZA STEROWANA MIKROKONTROLEREM *********** '********************* AUTOR: KAMIL SZKUTNIK ************************ '*********************** poprawki by matrix ************************* '******************************************************************** $regfile = "m8def.dat" $crystal = 8000000 '$prog &HFF , &HE4 , &HDB , &H00 'fusy dla zegara 8MHz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.0 , Rs = Portb.1 Cls Cursor Off Noblink 'Config Portb = &B10000111 ; Portb = 255 'Config Portc = &B11100000 ; PORTB = 255 'Config Portd = &B11111000 ; Portd = 255 Config Pinb.3 = Input Config Pinb.4 = Input Config Pinb.5 = Input Config Portb.6 = Output 'Config Pinb.6 = Input Config Portb.7 = Output Config Portd.0 = Output Config Pind.1 = Input Config Pind.2 = Input Config Portd.3 = Output Config Pinc.0 = Input Config Pinc.1 = Input Config Pinc.2 = Input Config Pinc.3 = Input Config Pinc.4 = Input Config Portc.5 = Output Portb = 127 'powinno wyłączyć lcd (255) Portc = 255 Portd = 255 Kolba_odlozona Alias Pind.1 Zero_fazy Alias Pind.2 Grzalka Alias Portd.3 Wlacz_lcd Alias Portb.7 'Enable_procedura Alias Pinb.6 Wentylator Alias Portd.0 Zadana_1 Alias Pinb.2 Zadana_2 Alias Pinb.3 Zadana_3 Alias Pinb.4 Uspienie Alias Pinc.1 Wiecej Alias Pinc.2 Mniej Alias Pinc.3 Wlacznik Alias Pinc.4 Przekaznik Alias Portc.5 Set Przekaznik Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Timer1 = Timer , Prescale = 256 Enable Interrupts 'Stop Timer0 Enable Timer1 Timer1 = 34286 On Timer1 Przerwanie Stop Timer1 Start Adc Dim Zm_dla_odl_kolby As Bit Dim Licz_czas As Single Dim Nastawa As Single Dim Nastawa_temp As Single Dim Temp_1 As Single Dim Temp_2 As Single Dim Temp_3 As Single Dim Wart_ac As Word Dim V As Single Dim Wart_nap As String * 2 Dim Temp As Single Dim Temp_lcd As String * 1 Dim Do_wylaczenia As Byte 'Dim T_podswietlania As Single 'Dim T_usypiania As Single 'Dim T_wylaczania As Single 'Dim Trzymany_przycisk As Word 'Trzymany_przycisk = 0 Bitwait Wlacznik , Set Waitms 500 Cls Cursor Off Noblink Waitms 250 Home Set Wlacz_lcd 'włączam podświetlanie lcd Lcd "** STACJA **" Lowerline Lcd "* LUTOWNICZA *" Wait 2 Deflcdchar 0 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32 'znaczek st C Deflcdchar 1 , 4 , 14 , 17 , 16 , 14 , 1 , 17 , 14 'literka ś Deflcdchar 2 , 4 , 14 , 31 , 32 , 4 , 14 , 31 , 32 'strzałki w górę Deflcdchar 3 , 32 , 31 , 14 , 4 , 32 , 31 , 14 , 4 'strzałki w dół Cls Zm_dla_odl_kolby = 0 Licz_czas = 0 Readeeprom Nastawa , 2 Readeeprom Temp_1 , 8 Readeeprom Temp_2 , 14 Readeeprom Temp_3 , 20 '================================================================================================ 'procedura ustawiająca 250 st.C uruchamiana tylko raz, za pierwszym razem If Nastawa < 50 Then Nastawa = 250 'nastawa wyniesie 250 Home Lcd "Nastawa=" ; Nastawa ; Chr(0) ; "C " Bitwait Wiecej , Set 'czekamy na puszczenie przycisku WIĘCEJ Cls End If '================================================================================================ Do 'tu zaczyna się pętla główna '================================================================================================ 'sprawdzanie czy chcemy wyłączyć stację If Wlacznik = 0 Then 'jeśli naciśniemy przycisk wyłączania to Bitwait Wlacznik , Set Gosub Procedura_wylaczania 'skocz do podprogramu wyłączania stacji End If '================================================================================================ '================================================================================================ 'sprawdzanie aktywności stacji 'jeśli naciśniemy jakikolwiek przycisk to If Wiecej = 0 Or Mniej = 0 Or Zadana_1 = 0 Or Zadana_2 = 0 Or Zadana_3 = 0 Then Licz_czas = 0 'czas zaczynamy liczyć od nowa Set Wlacz_lcd 'włącz podświetlanie lcd End If '================================================================================================ '================================================================================================ 'ta sekcja sprawdza czy kolba jest odłożona ? If Kolba_odlozona = 0 Then 'jeśli kolba jest położona Locate 1 , 16 Lcd Chr(3) 'powinno wyświetlić dwie strzałki w górę If Zm_dla_odl_kolby = 0 Then 'i zmienna pomocnicza =0 Start Timer1 'to rozpocznij zliczanie Zm_dla_odl_kolby = 1 'zmień stan zmiennej pomocniczej na 1 żeby timer nie był już startowany End If If Licz_czas = 900 Then Gosub Usypianie 'jeśli kolba leży 900 sekund (15 minut) default is 900 If Licz_czas > 300 Then 'default is 300 Reset Wlacz_lcd 'jeśli czas od ostatniego naciśnięcia przycisku jest > 5min. to Else 'wyłącz podświetlanie Set Wlacz_lcd End If Else Locate 1 , 16 Lcd Chr(2) 'powinno wyświetlić dwie strzałki w dół Stop Timer1 'zatrzymaj timer Zm_dla_odl_kolby = 0 'wyzeruj wartość zmiennej pomocniczej odłożenia kolby Licz_czas = 0 'i zerujemy wartość zliczania czasu End If '================================================================================================ '================================================================================================ 'tu po raz pierwszy robimy pomiar temperatury Gosub Pomiar_temp Gosub Sterowanie_grzalka '================================================================================================ '================================================================================================ 'sprawdzamy czy kolba jest podłączona If Temp > 800 Then 'jeśli jest zbyt duże napięcie to może oznaczać niepodłączoną kolbę Gosub Spr Else 'skocz do poprogramy wyświetlenia info o tym Home Lcd "Temp:" ; Temp_lcd ; Chr(0) ; "C" ; " " 'wyświetlamy wartość temp. z pomiaru Lowerline Lcd "Nastawa:" ; Nastawa ; Chr(0) ; "C" ; " " 'a w dolnej linii pokazujemy wartość nastawy End If '================================================================================================ '================================================================================================ 'tu zaczyna się sekcja sprawdzania naciskanych przycisków If Uspienie = 0 And Wiecej = 1 And Mniej = 1 And Kolba_odlozona = 0 Then 'jeśli kolba jest odłożona i wciśniemy przycisk uśpienie Waitms 150 Licz_czas = 0 'zerujemy czas Set Wlacz_lcd 'włączamy podświetlanie lcd Gosub Usypianie 'i skaczemy do podprogramu UŚPIENIE End If '================================================================================================ '================================================================================================ 'ta procedura spowoduje włączenie nawiewu jeśli wciśniemy na raz przyciski UŚPIENIE i WIĘCEJ If Uspienie = 0 And Wiecej = 0 And Mniej = 1 Then Waitms 50 Reset Wentylator End If '================================================================================================ '================================================================================================ 'ta procedura spowoduje wyłączenie nawiewu jeśli wciśniemy na raz przyciski UŚPIENIE i MNIEJ If Uspienie = 0 And Wiecej = 1 And Mniej = 0 Then Waitms 50 Set Wentylator End If '================================================================================================ '================================================================================================ 'sekcja sprawdzania czy naciskamy przycisk zwiększania porządanej temperatury If Wiecej = 0 And Temp < 800 Then 'jeśli naciśniemy przycisk WIĘCEJ Waitms 50 If Wiecej = 0 And Uspienie = 1 Then If Nastawa < 500 Then 'i jeśli wartość zmiennej NASTAWA jest mniejsza niż wymagane maximum Nastawa = Nastawa + 10 'to wartość nastawionej temp. zwiększa się o 10st. C Waitms 50 End If End If End If '================================================================================================ '================================================================================================ 'sekcja sprawdzania czy naciskamy przycisk zmniejszania porządanej temperatury If Mniej = 0 And Temp < 800 Then 'jeśli naciśniemy przycisk MNIEJ Waitms 50 If Mniej = 0 And Uspienie = 1 Then If Nastawa > 50 Then 'i jeśli wartość zmiennej NASTAWA jest większa niż wymagane minimum Nastawa = Nastawa - 10 'to zmniejszamy wartość rządanej temp. o 10st. C Waitms 50 End If End If End If '================================================================================================ '================================================================================================ 'sekcja sprawdzania czy wybierzemy którąś z temperatur szybkiego wyboru If Zadana_1 = 0 Then 'jeśli wybierzemy temp zadaną 1 i nie jest włączone uśpienie Licz_czas = 0 'czas zaczynamy liczyć od nowa Set Wlacz_lcd 'włącz podświetlanie lcd Bitwait Zadana_1 , Set Gosub Odczyt_zadana_1 End If If Zadana_2 = 0 Then 'jeśli wybierzemy temp 2 i nie jest włączone uśpienie Licz_czas = 0 'czas zaczynamy liczyć od nowa Set Wlacz_lcd 'włącz podświetlanie lcd Bitwait Zadana_2 , Set Gosub Odczyt_zadana_2 End If If Zadana_3 = 0 Then 'jeśli wybierzemy temp 3 i nie jest włączone uśpieni Licz_czas = 0 'czas zaczynamy liczyć od nowa Set Wlacz_lcd 'włącz podświetlanie lcd Bitwait Zadana_3 , Set Gosub Odczyt_zadana_3 End If Loop 'koniec pętli głownej End '================================================================================================ '*********************************** '*** podprogram usypiania stacji *** '*********************************** Usypianie: '================================================================================================ 'Reset Wlacz_lcd 'wyłączamy podświetlanie Nastawa_temp = Nastawa 'wpisujemy aktualne ustawienia do zmiennej tymczasowej Nastawa = 178 'nastawa przyjmuje wartość 60 Locate 2 , 1 Lcd "U" ; Chr(1) ; "PIENIE->178" ; Chr(0) ; "C" Bitwait Uspienie , Set 'i program czeka na puszczenie przycisku UŚPIEINIE Do Gosub Pomiar_temp Gosub Sterowanie_grzalka If Licz_czas = 1800 Then Gosub Procedura_wylaczania 'jeśli kolba leży 1800 sekund (30 minut) If Licz_czas = 60 Then Reset Wlacz_lcd 'wyłączamy podświetlanie If Temp > 800 Then 'jeśli procesor wykryje napięcie zbyt duże Gosub Spr 'sprawdź czy podłączona lutownica Else Home Lcd "Temp:" ; Temp_lcd ; Chr(0) ; "C" ; " " End If If Uspienie = 0 Or Kolba_odlozona <> 0 Then Nastawa = Nastawa_temp Licz_czas = 0 Start Timer1 Bitwait Uspienie , Set Set Wlacz_lcd 'włączamy podświetlanie Exit Do End If Loop Return '================================================================================================ '************************************* '*** podprogram sterowania grzałką *** '************************************* 'tu sterujemy grzałką Sterowanie_grzalka: Temp = Temp + 5 'temperatura po włączeniu grzałki skacze o 10 stopni w gorę 'dzięki temu załączanie grzałki odbywa się 5st. niżej niż ustawiona i skacze do 5 stopni 'wyżej niż ustawiona If Nastawa > Temp Then 'jeśli ustawiona temp. większa niż aktualna temp Bitwait Zero_fazy , Set 'program czeka aż zmienna ZERO_FAZY przyjmie wartość 1 zaraz po 0 Grzalka = 1 'i włączy grzałkę lutownicy Else Grzalka = 0 'lub jeśli nie są spełnione powyższe warunki to grzałka pozostanie wyłączona End If Return '================================================================================================ '************************************* '*** podprogram pomiaru temperaury *** '************************************* Pomiar_temp: Wart_ac = 0 Wart_ac = Getadc(0) 'pobieranie wartości napięcia (temp grzałki) Waitms 100 V = Wart_ac * 0.0049 'konwersja na temp. celsjusza Temp = V * 260 'to obliczenie wstępnie ustawia temperaturę zwiększając jej wartość Temp = Temp + 20 'o temperaturę w pokoju w lecie na poziomie około 26st 'wcześniej było 260 po zmianie 180 'powinien zostać zastosowany czujnik z jednym pomiarem podczas włączenia Temp_lcd = Fusing(temp , "#.#") Return '================================================================================================ '******************************** '*** podprogram tem zadanej 1 *** '******************************** Zapis_zadana_1: Stop Timer1 Licz_czas = 0 ' zerujemy wartość zliczania czasu Temp_1 = Nastawa 'przypisuję wartość aktualnie nastawionej temp do zadanej_1 Writeeeprom Temp_1 , 8 Home 'Waitms 100 Lcd "Zapisano Temp. 1 " 'wyświetl info o zapisie temp zadanej nr1 Bitwait Zadana_1 , Set Wait 1 Start Timer1 Return '================================================================================================ '================================================================================================ Odczyt_zadana_1: Stop Timer1 Licz_czas = 0 ' zerujemy wartość zliczania czasu Readeeprom Temp_1 , 8 'odczytuję wartość wcześniej ustawionej temp zadanej nr1 Do Gosub Pomiar_temp 'wykonuję pomiar temperatury If Temp > 800 Then 'jeśli procesor wykryje napięcie zbyt duże Gosub Spr 'skocz do podprogramu spr podłączenia grzałki Else Home Lcd "Temp:" ; Temp_lcd ; Chr(0) ; "C" ; " " Locate 2 , 1 Lcd "Zadana 1 " ; Temp_1 ; Chr(0) ; "C" ; " " 'pokazując wartość nastawy End If If Temp_1 > Temp Then 'jeśli nastawa mniejsza niż aktualna temp Bitwait Zero_fazy , Set 'program czeka aż zmienna ZERO_FAZY przyjmie wartość 1 zaraz po 0 Grzalka = 1 'i włączy grzałkę lutownicy Else Grzalka = 0 'lub jeśli nie są spełnione powyższe warunki to grzałka pozostanie wyłączona End If If Mniej = 0 And Wiecej = 0 Then 'taki zapis spowoduje od razu wyjście z podprogramu zadana Gosub Zapis_zadana_1 Exit Do End If If Zadana_1 = 0 Then 'sprawdzam czy naciśnięto przycisk temp zadanej 1 Bitwait Zadana_1 , Set Waitms 50 Exit Do 'jeśli tak to wychodzę z podprogramu temp zadanej End If Loop Start Timer1 Return '================================================================================================ '******************************** '*** podprogram tem zadanej 2 *** '******************************** Zapis_zadana_2: Stop Timer1 Licz_czas = 0 ' zerujemy wartość zliczania czasu Temp_2 = Nastawa 'przypisuję wartość aktualnie nastawionej temp do zadanej_2 Writeeeprom Temp_2 , 14 Home 'Waitms 100 Lcd "Zapisano Temp.2 " Bitwait Zadana_2 , Set Wait 1 Start Timer1 Return '================================================================================================ Odczyt_zadana_2: Stop Timer1 Licz_czas = 0 Readeeprom Temp_2 , 14 'odczytuję wartość wcześniej ustawionej temp zadanej nr2 Do Gosub Pomiar_temp 'wykonuję pomiar If Temp > 800 Then 'jeśli procesor wykryje napięcie zbyt duże Gosub Spr 'skocz do podprogramu spr podłączenia grzałki Else Home Lcd "Temp:" ; Temp_lcd ; Chr(0) ; "C" ; " " Locate 2 , 1 Lcd "Zadana 2 " ; Temp_2 ; Chr(0) ; "C" ; " " 'pokazując wartość nastawy End If If Temp_2 > Temp Then 'jeśli nastawa mniejsza niż aktualna temp Bitwait Zero_fazy , Set 'program czeka aż zmienna ZERO_FAZY przyjmie wartość 1 zaraz po 0 Grzalka = 1 'i włączy grzałkę lutownicy Else Grzalka = 0 'lub jeśli nie są spełnione powyższe warunki to grzałka pozostanie wyłączona End If If Mniej = 0 And Wiecej = 0 Then 'taki zapis spowoduje od razu wyjście z podprogramu zadana Gosub Zapis_zadana_2 Exit Do End If If Zadana_2 = 0 Then 'sprawdzam czy naciśnięto przycisk temp zadanej 2 Bitwait Zadana_2 , Set Waitms 50 Exit Do 'jeśli tak to wychodzę z podprogramu temp zadanej End If Loop Start Timer1 Return '================================================================================================ '******************************** '*** podprogram tem zadanej 3 *** '******************************** Zapis_zadana_3: Stop Timer1 Licz_czas = 0 ' zerujemy wartość zliczania czasu 'Trzymany_przycisk = 0 Temp_3 = Nastawa 'przypisuję wartość aktualnie nastawionej temp do zadanej_3 Writeeeprom Temp_3 , 20 Home 'Waitms 100 Lcd "Zapisano Temp.3 " 'wyswietlam info o tym Bitwait Zadana_3 , Set Wait 1 Start Timer1 Return '================================================================================================ Odczyt_zadana_3: Stop Timer1 Licz_czas = 0 Readeeprom Temp_3 , 20 'odczytuję wartość wcześniej ustawionej temp zadanej nr3 Do Gosub Pomiar_temp 'wykonuję pomiar If Temp > 800 Then 'jeśli procesor wykryje napięcie zbyt duże Gosub Spr 'sprawdź czy podłączona lutownica Else Home Lcd "Temp:" ; Temp_lcd ; Chr(0) ; "C" ; " " Locate 2 , 1 Lcd "Zadana 3 " ; Temp_3 ; Chr(0) ; "C" ; " " 'pokazując wartość nastawy End If If Temp_3 > Temp Then 'jeśli nastawa mniejsza niż aktualna temp Bitwait Zero_fazy , Set 'program czeka aż zmienna ZERO_FAZY przyjmie wartość 1 zaraz po 0 Grzalka = 1 'i włączy grzałkę lutownicy Else Grzalka = 0 'lub jeśli nie są spełnione powyższe warunki to grzałka pozostanie wyłączona End If If Mniej = 0 And Wiecej = 0 Then 'taki zapis spowoduje od razu wyjście z podprogramu zadana Gosub Zapis_zadana_3 Exit Do End If If Zadana_3 = 0 Then 'sprawdzam czy naciśnięto przycisk temp zadanej 3 Bitwait Zadana_3 , Set Waitms 50 Exit Do 'jeśli tak to wychodzę z podprogramu temp zadanej End If Loop Start Timer1 Return '================================================================================================ Niestety chyba strona ma ograniczenie co do ilości linii kodu więc ostatnia część kodu jest poniżej. '******************************************** '*** Procedura wyłączania, Tak dla bajeru *** '******************************************** Procedura_wylaczania: Set Wlacz_lcd Reset Grzalka '********************************************** '*** minimalizacja ilości zapisów do eeprom *** '********************************************** Nastawa_temp = Nastawa 'zmienne temp [przypisuję na chwilę wartość aktualnej nastawy Readeeprom Nastawa , 2 'odczytuję wartość nastawy z pamięci eprom If Nastawa <> Nastawa_temp Then 'porównuję czy wartość jest inna i jeśli jest inna to Nastawa = Nastawa_temp 'przepisuję z powrotem nową wartość Writeeeprom Nastawa , 2 'i zapisuję do pamięci Cls Home Lcd " Zapis " 'w górnej linii wpisuję wyraz Zapis Waitms 500 'czekamy 500 ms End If '***************************************************************** '*** Powyższy kawalek kodu zminimalizuje zapis temperatury ******* '*** do pamięci eeprom. Jeśli po włączeniu stacji lutowniczej **** '*** będziemy mieć powiedzmy 250st.C i przy wyłączaniu również *** '*** to stacja nie nadpisze temperatury do pamięci eeprom co ***** '************* powinno wydłużyć życie procesora ****************** '***************************************************************** Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 'definiuję zaciemnione pole na lcd Cls Home 'wracamy do pola nr 1 w górnej linii Lcd " Wylaczanie " 'If Enable_procedura = 0 Then 'jeśli założona zworka to 'Do_wylaczenia = 1 'zmienna potrzebna do określenia miejsca na lcd Do_wylaczenia = 16 'dla zmiennej Do_wylaczenia = od 1 do 16 Locate 2 , 1 Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0); 'Incr Do_wylaczenia 'powinno nastąpić to tak szybko że od razu zobaczymy całą linię ciemną For Do_wylaczenia = 16 To 1 Step -1 'dla zmiennej Do_wylaczenia od 16 do 1 z krokiem -1 Locate 2 , Do_wylaczenia 'znajdź w dolnej linii kolejne pola od końca Lcd " " 'i w każde wpisz pusty znak Waitms 500 Next 'End If Waitms 250 'poczekaj 350 ms Reset Przekaznik 'i wyłącz stację 'Set Przekaznik 'do testów na płytce propox Return '================================================================================================ '********************************************* '*** podprogram wyświetlania że brak kolby *** '********************************************* Spr: Home 'co znaczy że nie podłączono grzałki Lcd " Podlacz raczke " 'poprosi o jej podłaczenie Locate 2 , 1 Lcd " lutownicy! " Return '================================================================================================ Przerwanie: Stop Timer1 Incr Licz_czas 'Toggle Portd.0 Timer1 = 34286 Start Timer1 Return '================================================================================================
|
|||
Materiały do pobrania
Dzień dobry, czy można by poprosić o udostępnienie skompilowanego wsadu, ustawień fusebitów oraz użytych wzorów płytek?
Re: Materiały do pobrania
Oczywiście że tak. W wolnej chwili gdzieś wstawię i zapodam.
Moja strona w powijakach
Re: Materiały do pobrania
-> TUTAJ <- powinny być do pobrania. W załączniku plik bas, hex i kilka innych.
Po hasło proszę się zgłosić, yyy, drogą mailową ? Albo GG - 1688365
Moja strona w powijakach
Materiały do pobrania
Witam, mógłbym prosic o wysłanie hasła do paczki na adres ?
POzdrawiam