Komentator Napisano Luty 9, 2017 Udostępnij Napisano Luty 9, 2017 Podczas tej części kursu Arduino porównamy dwa podejścia do czujników. Sprawdzimy w praktyce termometry w wersji analogowej i cyfrowej!W tym celu skorzystamy z bardzo popularnych czujników LM35 oraz DS18B20. Połączenie tych układów z poznanymi diodami programowalnymi pozwoli zbudować ciekawy termometr domowy! UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.Przeczytaj całość »Poniżej znajdują się komentarze powiązane z tym wpisem. Cytuj Link do komentarza Share on other sites More sharing options...
Wrona Luty 10, 2017 Udostępnij Luty 10, 2017 Trzeba sprawdzić jeszcze raz czy opis wyprowadzeń LM35 jest zgodny z późniejszym jego podłączeniem. Cytuj Link do komentarza Share on other sites More sharing options...
Jarzyn Luty 10, 2017 Udostępnij Luty 10, 2017 Wrona wydaje mi się, że jest zgodny. Tylko, że to rzut z dołu (bottom), wtedy +Vs i masa będzie na odwrót. Też podłączyłem na odwrót i chwilę zajęło mi dostrzeżenie słowa bottom. Dzięki Treker za artykuł. W ostatnich dniach ciągle sprawdzałem, czy już się pojawił 🙄 Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Luty 10, 2017 Udostępnij Luty 10, 2017 Nie czytałem artykułu o diodach RGB, ale 1-Wire to nazwa bardzo konkretnego protokołu (dawnej) f-my Dallas Semiconductors. O ile DS18B20 rzeczywiście się nim posługuje, o tyle diodki WS2812 i ich pochodne już nie, bo nie każdy jeden drucik to 1-Wire. Z artykułu można wyciągnąć wniosek (takie jest moje wrażenie), że czujniki analogowe mają problem z temperaturami ujemnymi a to nieprawda. Wiele z nich ma dodany pewien offset (przesunięcie) napięcia wyjściowego i dla 0°C oddaje np. 500mV. Wtedy spokojnie pracują od -40 do +125. Ja często używam dużo tańszego niż oryginalny LM35 czujnika Microchipa produkowanego w wielu obudowach: www.tme.eu/pl/katalog/#search=mcp9700 Zabrakło mi czegoś o zwykłych termistorach. Popularne KTY81/82 są w cenach porównywalnych z 9700 a perełki NTC jeszcze tańsze: http://www.tme.eu/pl/details/ntcm-hp-100k-1%25/termistory-ntc-pomiarowe-tht/sr-passives/ Było kilka zapytań jak tego używać a myślę, że pomiary i linearyzacja NTC to fajny temat na kolejny artykuł 🙂 Przy okazji "termometrów", z kronikarskiego obowiązku warto było chociaż wspomnieć o istnieniu PT100 i jemu podobnych czy o termoparach. Chociażby wymienienie tego w punktach + jedno zdanie o każdym dawałoby jakiś przegląd. Wszystko powyższe absolutnie nie jest krytyką. To tylko kilka rzeczy których mi zabrakło po dotarciu do końca fajnego tekstu 🙂 Acha, film z podgrzewaniem czujnika półprzewodnikowego zapalniczką jednak bym zmienił. Ludzie biorą dziś wszystko dosłownie... Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Wrona Luty 10, 2017 Udostępnij Luty 10, 2017 Jarzyn, Taki ze mnie "anglistyk" 😉 a generalnie gamoń jestem więc wyłapuje wszystkie takie punkty gdzie gamoń się gubi. Ale żeby na całkowitego głupka mnie wyjść to wskazuje poniżej miejsce do poprawki. To tylko mały drobiazg i kosmetyka ale ... linijka.setPixelColor(i, linijka.Color(0, 0, 255)); //Dioda nr i świeci na czerwono ma być na niebiesko Tak czy inaczej fajny odcinek i z niecierpliwością czekam na kolejne oraz etap III 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 10, 2017 Udostępnij Luty 10, 2017 Wrona, wszystko się zgadza, tak jak zostało już wspomniane - widok w dokumentacji jest "od dołu" 🙂 Dzięki za uwagę, co do komentarza - już poprawiam! Jarzyn, zachęcam w takim razie do czytania i programowania 🙂 marek1707, dziękuję za słuszną uwagę na temat 1-wire. Nie wiem dlaczego, ale miałem w głowie zakodowane teraz, że diody korzystają również z tego konkretnego "1-wire". Sam złapałem się w pułapkę korzystania z gotowych bibliotek Arduino... Już nanoszę poprawki na blogu. Jeśli chodzi o pozostałe temat, to pomyślę co z tym zrobić. Oczywiście moje uwagi o ujemnych temperaturach nie odnosiły się do ogółu. Po prostu najwięcej osób chwytających za LM35 podpina go w podstawowej konfiguracji i chciałem tylko wszystkich uprzedzić o braku wartości ujemnych w takiej wersji 😉 O termistorach było trochę w kursie elektroniki i (Kurs elektroniki II – #11 – czujniki analogowe) jakoś dużo osób nie podejmowało tego tematu, więc skupiłem się na LM'ie. Acha, film z podgrzewaniem czujnika półprzewodnikowego zapalniczką jednak bym zmienił. Ludzie biorą dziś wszystko dosłownie... Ale od razu wiadomo przynajmniej, że chodzi o podgrzewanie 😃 Cytuj Link do komentarza Share on other sites More sharing options...
leepa79 Luty 13, 2017 Udostępnij Luty 13, 2017 To i ja wrzucę coś od siebie. Zadanie 7.1 widzę tak: #define LM35 A3 #define LM35_1 A2 void setup(){ Serial.begin(9600); } void loop(){ //Przeliczenie odczytu ADC na temperaturę zgodnie z opisem z kursu float temperatura = ((analogRead(LM35) * 5.0) / 1023.0) * 100; float temperatura1 = ((analogRead(LM35_1) * 5.0) / 1023.0) * 100; float roznica = 0.0; if(temperatura - temperatura1 > 0){ roznica = temperatura - temperatura1; }else{ roznica = temperatura1 - temperatura; } //Wyslanie przez UART aktualnej temperatury Serial.print("Temp 1: "); Serial.print(temperatura); Serial.print("*C \t"); Serial.print("Temp 2: "); Serial.print(temperatura1); Serial.print("*C \t"); Serial.print("Roznica: "); Serial.print(roznica); Serial.println("*C"); delay(3000); } No i jeszcze termometr z funkcją MIN/MAX. Na płytce mam jeszcze wyświetlacz 7 seg z poprzedniej lekcji więc wykorzystałem go 🙂 Millis to już mi po nocach się śni - strasznie słabo z przykładami w tym temacie po polskiej stronie internetów, a słabo się czegoś uczy nie znając eng od technicznej strony. No więc mamy kod - może komuś się przyda jakaś jego część: #include "SevSeg.h" SevSeg sevseg; //Instantiate a seven segment controller object #define LM35 A3 #define przMIN 9 #define przMAX 10 float tempMAX = 0; //Aktualna temperatura maksymalna float tempMIN = 150; //Aktualna temperatura minimalna int tempMAXI; int tempMINI; void setup(){ Serial.begin(9600); byte numDigits = 2; //Ilosc wyswietlaczy byte digitPins[] = {A5, A4}; //Piny sterujace wyswiet ---> tranzystory byte segmentPins[] = {7, 5, 2, 4, 3, 8, 6}; //Piny <---> segmenty bool resistorsOnSegments = true; // Use 'true' if on digit pins byte hardwareConfig = N_TRANSISTORS; // See README.md for options sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments); //Konfiguracja przyciskow pinMode(przMIN, INPUT_PULLUP); pinMode(przMAX, INPUT_PULLUP); } void loop(){ //Przeliczenie odczytu ADC na temperaturę zgodnie z opisem z kursu float temperatura = ((analogRead(LM35) * 5.0) / 1024.0) * 100; if (temperatura > tempMAX) { //Jesli aktualna temperatura jest wyzsza od maksymalnej tempMAX = temperatura; //to ustaw aktualną, jako maksymalną. //Wyslanie przez UART temperatury maksymalnej Serial.print("Nowa wartosc max: "); Serial.print(tempMAX); Serial.println("*C"); } if (temperatura < tempMIN) { //Jesli aktualna temperatura jest niższa od minimalnej tempMIN = temperatura; //to ustaw aktualną, jako minimalną. //Wyslanie przez UART temperatury minimalnej Serial.print("Nowa wartosc min: "); Serial.print(tempMIN); Serial.println("*C"); } // Wyswietl na 7 segmentowym if(digitalRead(przMAX) == LOW){//Podglad tem przy wcisnietym przycisku tempMAXI=tempMAX; sevseg.setNumber(tempMAXI, 2); //Wyswietl temp MAX, korzystając z dwóch wyswietlaczy sevseg.refreshDisplay(); }else{ //Przyklad uzycia millis w wyswietlaczach 7 segm (bez delay) --> DEMO static unsigned long timer = millis(); static int deciSeconds = 0; if (millis() >= timer + 1000) { deciSeconds++; timer = millis(); if (deciSeconds == 60) { //Prawie jak minuta ;) deciSeconds = 0; } sevseg.setNumber(deciSeconds, 1); } sevseg.refreshDisplay(); } if(digitalRead(przMIN) == LOW){ tempMINI=tempMIN; sevseg.setNumber(tempMINI, 2); //Wyswietl temp MIN, korzystając z dwóch wyswietlaczy sevseg.refreshDisplay(); } } CDN. Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Grudzień 8, 2017 Udostępnij Grudzień 8, 2017 Dzięki Treker za wszystkie odpowiedzi i pomoc. W związku z tym odcinkiem o termometrach zastanawia mnie co miałeś na myśli pisząc "Podczas tego testu omawiam tylko jedną z kilku możliwości wykorzystania czujnika DS18B20!" i dając to w ramkę. Jak inaczej niż do pomiaru temperatury można wykorzystać czujniki temperatury? 😋 pytanie do czujnika cyfrowego, wyświetla ciągle -127 stopni... Uszkodzony? Możliwe, że puściłem na niego przez chwilę 12V, to mogło go uszkodzić... Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Grudzień 10, 2017 Udostępnij Grudzień 10, 2017 SOYER, DS18B20 w kursie był wykorzystany w podstawowej konfiguracji. Tak jak napisałem w artykule możliwe jest przykładowo regulowanie rozdzielczości pomiaru temperatury. Można są również inne sposoby podłączania czujników np. z użyciem tylko dwóch przewodów. Zachęcam do "przewertowania" dokumentacji 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Grudzień 18, 2017 Udostępnij Grudzień 18, 2017 Cześć, temperaturę zapisuję jako float, jak ograniczyć wyświetlanie np. na LCD do tylko jednego miejsca po przecinku? Cytuj Link do komentarza Share on other sites More sharing options...
WRata Czerwiec 27, 2018 Udostępnij Czerwiec 27, 2018 W kursie jest pewien błąd. W pierwszym przykładzie dla LM35 temperaturę obliczasz ze wzoru "float temperatura = ((analogRead(LM35) * 5.0) / 1023.0) * 100;" i jest to poprawna formuła. Natomiast w kolejnych przykładach do wzoru wkradła się wartość 1024: "float temperatura = ((analogRead(LM35) * 5.0) / 1024.0) * 100;" i to jest błędne. Niestety jest to powielane przez wiele stron. Ogólnie kurs jest super 🙂 1 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Lipiec 1, 2018 Udostępnij Lipiec 1, 2018 WRata, dziękuję za zgłoszenie błędu wzory zostały ujednolicone w całym kursie do wersji z dzieleniem przez 1024. Więcej informacji na ten temat znaleźć można w postach wydzielonych do osobnego tematu: Przeliczanie ADC na V - dzielenie przez 1023 czy 1024?. Cytuj Link do komentarza Share on other sites More sharing options...
Philip Lipiec 19, 2018 Udostępnij Lipiec 19, 2018 Chciałbym poinformować i również ostrzec, że przy złym połączeniu pinów czujnika LM35 temperatura bardzo rośnie do wysokiej wartości 80-500 *C! Przez co można się oparzyć dotykając samego czujnika. 😳 Poniżej zdjęcia pomiarów jakie zobaczyłem w porcie szereg. 🤣 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Lipiec 20, 2018 Udostępnij Lipiec 20, 2018 Philip, słuszna uwaga, na szczęście to po prostu błąd pomiaru, bo 500* to ten czujnik by sam z siebie nie wytrzymał 😉 Ale fakt, faktem, że elementy elektroniczne nie lubią jak się je odwrotnie podłącza. Cytuj Link do komentarza Share on other sites More sharing options...
D3binski Listopad 10, 2018 Udostępnij Listopad 10, 2018 Pomocy, czujnik analogowy z przyzwyczajenia podłączyłem jak tranzystor używany w kursie i podłączyłem zasilanie. Po poprawieniu podłączeń czujnik zaczął się grzać, stwierdziłem, że się przepalił więc się z nim pożegnałem. Czujnik cyfrowy podłączyłem już dobrze, a mimo to pokazywał -127*C, a gdy go dotknąłem, to myślałem, że moje palce zamieniły się w pieczeń i ułyszałem syczenie (chyba czujnik, a nie płytka). Wolę zaczerpnąć opinii profesjonalisty przed kolejnym podłączeniem arudino, czy mogło dojść do uszkodzenia płytki, czy czujnik cyfowy był uszkodzony fabrycznie itd. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!