witam Chciałem zapytać czy ma kto doświadczenia praktyczne w wykorzystaniu tej funkcji. jestem w trakcie wykonania inteligentnego sterowania wentylatora. układ "sprawdza" wilgotność za pomocą prostego (rezystancyjnego) czujnika wilgoci i na tej podstawie wylicza czas wietrzenia i steruje wentylatorem. Praktycznie na sam koniec budowy zaczęły się dziać cuda. Wentylator zaczyna się załączać "kiedy chce" (i nie wiem czym to jest spowodowane). Jak wiadomo getrc (bascom 2051) wykorzystuje timer0, a do odmierzania czasu wykorzystałem timer1, i zastanawiam się czy z tego tytułu czegoś nie sknociłem. Zauważyłem że jeśli getrc było często wykorzystywane cuda występowały równie często, jeśli getrc wywoływane jest rzadziej problemy występują z mniejszą częstotliwością. Jeśli ktoś doświadczony będzie zainteresowany problemem proszę dać znać.
|
|||
Re: Wentylator
Przedstaw jakiś kod do tego twojego projektu, żeby można było zerknąć
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
oczywiście $regfile =
oczywiście
i teraz esencja
"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".
schemat układu i płytka czujnika wilgoci który zmajstrowałem
schemat nie jest w 100% spójny z listingiem, gdy powstał problem program ewaluował, w opublikowanym listingu brakuje kawałka z odczytem dip switch-a i przesunięcia wyniku na środek 15-sto punktowej skali, bo taką rozpoznaje uP (co widać na listingu), wyświetlacz jest tylko i wyłącznie do celów diagnostycznych, gdy uda się rozwiązać problem wyświetlacz będzie zbędny i kod zmieści się wtedy do 2051.
no i czujnik który wykonałem na PCB,
problem dokładnie polega na tym, że (przykład):
próg załączenia wynosi np 6, uP rozpoznaje wilgotność na poziomie 1, a wiatrak jakimś czarodziejskim sposobem zostaje uaktywniony
"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".
Re: Wentylator
A po wywaleniu getRc i wstawieniu np wynik = jakaś stała wszystko jest ok? nie ma przypadkowego włączenia? Czemu wszystko masz bezpośrednio w do loop, może cały kod wykonuje się za szybko. Może się okazać że wynik będzie jednorazowo błędny, np masz rezultaty 1, 1,1,1,15,1,1,1.... i nawet nie zauważysz że coś jest nie tak.... zrób na timerze opóźnienie, albo chociaż jakiegos waita dodaj
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
problem rozwiązany
przed dodaniem getrc było ok, ale dla testu wywaliłem ponownie i wszystko działało jak zaplanowałem
no i tu myśleliśmy podobnie z tym że nowicjusz jestem, (doświadczenie dopiero zdobywam, to mój drugi projekt) owocem mojego myślenia było:
seku to licznik sekund
z tym że dzięki koledze uświadomiłem sobie ze sekunda to cała wieczność dla uC - heheheeee
bo zacietrzewiłem się tym że po dodaniu leda który mrygał przy wykonywaniu pomiaru i jego klasyfikacji, obserwowałem lcd z wynikami i zastanawiałem się czemu to tyle trwa (pomiar), wyszło na to te w sekundowym okienku pomiar był wykonywany wielokrotnie i tak jak sugerowałeś przy błędnym pomiarze nawet go nie zauważyłem na LCD.
Problem został definitywnie rozwiązany po doświadczalnym dobraniu parametru Config Getrc, co mnie trochu zdziwiło ze przy kondensatorze 2n2 mój układ stabilnie działa przy wartości 30 (domyślnie ta wartość ustawiona jest na 10 bądź 20 - różne źródła różnie podają, a kondensator dobrany na 10n, jest to stała czasowa na naładowanie się kondensatora).
Stabilną pracę i prawidłowe wyniki otrzymywałem jeśli pomiar nie był wykonywany częściej niż co 1 sek.
W chwili obecnej dopracowuję dodatkową funkcję: załączanie zewn. przyciskiem/załącznikiem, z wyborem praca czasowa, lub tryb "ręczny",
powinno się dać upchnąć w 2KB po wywaleniu wyświetlacza, a jak starczy miejsca to wsadzę drugi dip switch do wyboru czasu przy pracy czasowej. Wyjdzie całkiem niezły kombajn ((-; .
Na czas obecny układ potrafi odczytać z ośmiopunktową precyzją nastawienia usera, i odpowiednio zareagować przekładając je na piętnastostopniową skalę wilgotności jaką zmierzy, po czym po dwuminutowym wentylowaniu sprawdza ponownie wilgotność i wylicza czas pracy wentylatora bazując znowu na piętnastopunktowej skali, podstawą w tej chwili jest pięć minut. Wiatrak zostaje wyłączony po upłynięciu wyliczonego czasu, bądź opadnięciu wilgotności poniżej ostawień usera, z jednopunktową histerezą.
Nastawy te muszę potestować w praktyce i odnieść choć orientacyjnie do higrometru.
Podziękowania za poświęcenie swojego czasu dla mnie, dla Panów mirley z tego forum oraz browar z poza forum.
może się moje uwagi komuś przydadzą w przyszłości - kaktus
"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".