Skocz do zawartości

System wyrownywania poziomu wody w akwarium


Maks22

Pomocna odpowiedź

Ja bym zaś proponował sobie najpierw czujnik wyskalować, czyli zdjąć jego charakterystykę. Z tego co widzę to bardzo proste urządzonko, które zwraca... no właśnie co? Napięcie. prąd ? w jakim zakresie? 

Jak zdejmiesz sobie charakterystykę, to przynajmniej nie będziesz zgadywał wartości, no i będziesz wiedział jak, się to zachowuje, w warunkach eksploatacji.

Edytowano przez BlackJack
Link do komentarza
Share on other sites

43 minuty temu, ethanak napisał:

Będzie. Ten z pierwszego posta też będzie.

Oba będą działać źle (Twój lepiej, ale nie całkiem dobrze).

Zacznijmy jeszcze inaczej: pokazujesz początkującemu użytkownikowi kod, informując go że coś tam robi (w tym przypadku, że powyżej 200 pompka jest wyłączona). Pokaż dokładnie miejsce w kodzie, gdzie jest to sprawdzane.

Bo faktycznie, powyżej 200 pompka jest wyłączona. Powyżej 175 też. A nawet powyżej 1020.

Mamy IF, które będzie załączać pompkę jeśli poziom spadnie poniżej 150. I teraz zauważyłem błąd, że zamiast dać jakieś sprawdzanie czy jest 200 to będzie cały czas oscylować wokół 150, a co za tym idzie pompka dostanie szału z włączaniem się i wyłączaniem. ZGADZA SIĘ?

czyli histerezy tak naprawdę nie ma

zaraz poprawię

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

void setup(){
	pinMode(11, OUTPUT);
}
void loop(){
	while(analogRead(A1) > 150);
	digitalWrite(11, HIGH);
	while(analogRead(A1) < 200);
	digitalWrite(11, LOW); 
}

podpowiem że średniki za while są istotne 😉

Edytowano przez Chumanista
Link do komentarza
Share on other sites

@ethanakcieszę się że mogłem poprawić Twój dzień 😉

pinMode tylko ustawia DDRX w trochę dookoła sposób a PORTX na ATmegach jest domyślnie wyzerowany.

Fakt, można lepiej ale chciałem minimum linijek 😉

void setup(){
	pinMode(11, OUTPUT);
	digitalWrite(11, LOW); 
}
void loop(){
	if (digitalRead(11) && analogRead(A1) > 200){
		digitalWrite(11, LOW); 
	else if (!digitalRead(11) && analogRead(A1) < 150){
		digitalWrite(11, HIGH);
	}
	//cokolwiek innego tutaj
}

Jeszcze lepiej byłoby sprawdzać stan w przerwaniu żeby nie nalać za dużo jakby jakiś inny kod wykonywał się za długo ale to powinno działać 😉

@macizet teoretycznie tak, ale i tak lepiej sprawdzić na sucho jakie powinny być limity.

Edytowano przez Chumanista
Link do komentarza
Share on other sites

6 minut temu, Chumanista napisał:

cieszę się że mogłem poprawić Twój dzień 😉

Przynajmniej chwila uśmiechu w czasie czekania od szóstej rano, aż Imć Pan Kurier raczy wrzucić mi paczuszkę z Botlandu do paczkomatu 🙂  Ciekawe, czy dzisiaj jeszcze to dostanę...

Link do komentarza
Share on other sites

@Chumanistaczy tak jest w każdym mikrokontrolerze? Jeśli w dokumentacji biblioteki (w tym przypadku Wiringa/Arduino) nie mam wyraźnie napisane, że po resecie jest zero na wyjściu to zakładam, że jest hgw co i włos mi z głowy nie spadnie, jak wrzucę jedną instrukcję zerującą wyjście. Mała redundancja nikomu jeszcze nie zaszkodziła 🙂

 

Link do komentarza
Share on other sites

Akurat w AVR tak jest, że rejestry DRR i PORT są zerowane przez sygnał RESET a kombinacja DDRn=0 i PORTn=0 daje konfigurację pinu jako wejście bez pullup. To się wydaje bezpieczne, ale nie jest to regułą. Są mikrokontrolery które włączają sobie na pinach pullup (więc widzisz de facto słabą jedynkę) albo takie w których pin co prawda jest wejściem, ale rejestr portu jest nieokreślony więc jeśli przełączysz tylko kierunek na wyjście bez zapisu do rejestru "danych" to dostaniesz stan przypadkowy. Podejrzewam, że na przestrzeni historii i w mnogości układów zrobiono i wykorzystano już wszystkie możliwości jakie tylko mogą nam przyjść do głowy. I dlatego zawsze warto.. RTFM 😉

 

  • Lubię! 1
Link do komentarza
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!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.