Tylko że powinieneś przyspieszyć, a nie opóźnić moment odczytu. http://obrazki.elektroda.pl/7392689500_1... Chodziło mi raczej o coś takiego: [syntax=c]// zczytanie bit z magistralii unsigned char read(void) { unsigned char PRESENCE = 0; CLEAR_1Wire; // ustawienie w stan niski DQ _delay_us(2); // odczekanie 2us SET_1Wire; // zwolnienie magistralii...
Witam ! Program nie zależy od sposobu podłączenia. http://obrazki.elektroda.net/19_12582693... Pozdrawiam. Stefan
http://obrazki.elektroda.net/95_12974457... Witam Chciałbym zaprezentować zgrabny termometr panelowy na znanym układzie DS18b20. Sercem układu jest Atmega8 SMD. Oprogramowanie napisane w WinAVR. Termometr dodatkowo posiada funkcję termostat. Niestety z powodu chęci jak największej minimalizacji płytki zrezygnowałem z przycisków do zmian nastawy...
a po co ci takie duże zmienne uint16_t decicelsius; uint16_t subzero, cel, cel_frac_bits; tam zdaje sie powinny być unsigned char no i tu hd44780_putInt((decicelsius/100), 10,0); chyba powinno być (decicelsius/10) - jak sama nazwa wskazuje decicelsius zwraca wartość w dziesątych stopnia np. 26.5°C -> 265
problem tkwi w tym, że program masz do obsługi układu DS1820, a podpięty masz DS18 B 20 (różnią się one rozdzielczością i sposobem zapisu temperatury w rejestrach). W internecie znajdziesz masę programów pod BASCOM i nie tylko obsługujących ten termometr.
Myślę, że błąd będzie tu: unsigned char read_byte(void) { unsigned char i; unsigned char wartosc = 0; for(i=0; i<8; i++) { if(read()) wartosc |= 0x01 << 1; //błędna linijka _delay_us(15); } return (wartosc); } Za każdym razem wykonujesz or na tym samym bicie. Zmień tą linie...
ee no musiało pomóc, sprawdzałem u siebie i kod się zmniejszał o kilka kB pokaż jakim poleceniem ze wszystkimi flagami jakie używasz kompilujesz kod dla tych zmiennych równych 134 i 1: LS Byte: 10000110 MS Byte: 00000001 w MS Byte pięć najważniejszych bitów wskazuje na znak - zera to dodatnia, a jedynki to ujemna trzy najmłodsze bity z MS Byte i cztery...
Na dobry początek, zastanów się nad tymi dwoma makrami: #define CLEAR_1WIRE DDRD&=~_BV(WE) #define SET_1WIRE DDRD|=_BV(WE)
Masz podciąganie linii danych?
Poniżej przykład. Zwróć uwagę, że w tym przykładzie komenda konwersji temperatury występuje na końcu, a nie na początku. Odczytana temperatura będzie zatem tą która została konwertowana po poprzednim odczycie. To oczywiście nie ma znaczenia dla tego jak adresować czujniki. Powodzenia ! PL Config 1wire = Portd.6 Dim Adresy(16) As Byte Dim T1 As Byte...
Ja miałem podobne problemy i okazało się, że to z powodu funkcji czasowej delay_us. Zastąpiłem ją inną i wszystko zaczęło chodzić OK. Zastosuj tą: void delayus(unsigned char t) //parametr t od 0 do 255. { do{asm("nop");}while(--t); } W miejscu gdzie masz zdefiniowaną częstotliwość oscylatora wpisz też: #define F_CPU 8000000ul
Najpewniej w tabeli masz złe wartości. Przykładowo 0 ma tu kod 3=00000011B czyli na pewno portb.0 = 1 i portb.1 = 1 jeśli portb.1 jest podpięty pod segment A to jest błędnie.
- reset procka podłączony do DB6 lcd, po co ? Oraz brak podciągnięcia do plusa. - PD5 uc ma zewnętrznego pull-upa, po co jeśli masz wewnętrzne rezystory?? Chyba że to miało być do resetu. Z drugiej strony wyczytałem, że przy zasilaniu pasożytniczym, jeśli procek ma wewn. rezystory pull up to musisz zastosować klucz zwierający linię danych do plusa bo...
Schemat, długość kabla do DS'a?
Opis magistrali 1Wire masz w helpie. Poniżej kod na obsługę dallasa DS18B20. Config 1wire = P1.0 'konfiguracja magistrali 1wire Config Lcd = 16 * 1a 'konfiguracja wyswietlacza Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia Dim T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String...
Ten kod napisałem na podstawie dokumentacji temometru i dokumentu opisującego interface 1 wire od atmela: A do dokumentacji AVR-ka zaglądałeś :?: Zastanów się, czy można uzyskać niski stan na magistrali 1wire, jeżeli pin do niej podłączony jest ustawiony jako wejście :?: [syntax=c]unsigned char _DS18B20_ReadByte() { _DATA_DDR &= ~(1 << _DATA_WIRE);//...
Polecam lm75 - ma 3 bitowy adres (8 układów na jednej magistrali), programowane parametry: rozdzielczość, alarm przekroczenia parametru, histereza. Niska cena. Oczywiście trzeba się liczyć z parametrami elektrycznymi I2C.
Ale jak pisałem ten projekt Duch ma błędy i forumowicze mają same problemy. W Twoim przypadku było kilka błędów które się na siebie nałożyły. 1. to nadpisywanie zmiennej ss string as 6(za krótka) powinna być 7 lub 8 2. złe pozycjonowanie napisów na LCD 3. złe podłączenie DSów (zasilanie) to że u innych działa to nie znaczy że jest dobrze) jeśli miałbyś...
... To teraz jestem w kropce :) Co mogłem zrobić źle w układzie z mikrokontrolerem?... Nie ma co panikować :wink: Spróbujmy inaczej.W załaczniku masz 2 gotowce.Załaduj do proca i ... zobaczymy czy którykolwiek zadziała :) Pozdrawiam Piotrek
Biblioteka której użyłeś nie ma możliwości dowolnej konfiguracji pinów. W załączniku masz bibliotekę prosto z Rosji :D Chiński wyświetlacz sam mi się uszkodził ale coś tam wyświetla :D http://obrazki.elektroda.pl/6257086800_1... Kod którego użyłem do zrobienia tego zdjęcia [syntax=vbnet] $regfile = "m8def.dat" ' specify the used micro...
Jasne, że się da :) np tak: If Pind.1 = 1 And Pind.2 = 1 Then Waitms 500 'oczekiwanie żeby odrazu nie wyjść z pętli Do 'nieskończona pętla Lowerline 'ustawienie kursora Lcd "Histereza:" ; H ; Chr(0) ; "C" 'wyświetlenie histerezy If Pind.1 = 1 Then 'jeśli guzik wciśnięty to zwiększ H = H + 1 Waitms 200 'odczekaj chwile,...
Nie kojarzę już przy jakiej okazji otrzymywałem ten błąd. Ale zaproponować Ci mogę skorzystanie z tych kodów:[url=http://www.stsystem.elektroda... czujnik, [url=http://www.stsystem.elektroda.eu/pr... czujników. Kody działają w 100%, pochodzą z wdrożonego rozwiązania. Przyjrzyj...
Witam. A przestawiłeś mikrokontroler do pracy z wewnętrznym oscylatorem RC?
Masz błąd w "wait_us", po dekrementacji sprawdzasz czy zero,jeśli tak to skocz do loon, jeśli nie to ret (powinno być odwrotnie). Poprawiony kod: [syntax=asm]wait_us: loon: nop nop nop nop nop dec r16 brne loon ;<- ;-) ret [/syntax]
Ech te komercyjne programiki podszywające się pod darmowe narzędzia... ;))) Na szczęście w świecie zepsutym przez komercję jest jeszcze coś W PEŁNI DARMOWEGO i w PEŁNI FUNKCJONALNEGO - taaaadaaaaa... Khazama Programmer - wujek Google podpowie Ci resztę. Powodzenia.
Problem jest taki, że możesz "odwrócić" wielomian i wtedy trzeba zmienić kierunek przesuwania bitów. Każdy wielomian można zapisać w HEX aż na 6 sposóbów: http://en.wikipedia.org/wiki/Mathematics... Żeby móc sprawdzić poprawność implementacji musisz wiedzieć: jaki jest sposób zapisu wielomianu,...
Zainstaluj sobie odpowiednie środowisko i zapomnij o makefile i problemach z nim związanych: http://mikrokontrolery.blogspot.com/2011... Poza tym pokaż schemat - może tam też są jakieś krzaczki :-)
Chyba już wiem co może być, tylko nie wiem gdzie jest źródło problemu. Doczytałem się, że po zerowaniu po włączeniu zasilania bajty odczytu temperatury są ustawiane na wartość 85.00 stopni i tę wartość udaje ci się odczytać z rejestrów DS18b20 (co świadczy, że procedury odczytu działają poprawnie). Doczytałem się jednak też, że w układzie zasilania...
1. Po odłączeniu zasilania zegar rtc skasowany 2. PCB potraktowane autorouterem ? Kwarce za daleko od układów. Kondensator od 32.768kHz możesz połączyć z masa. Masa powinna być masą (na jednostronnej płytce problematyczne) Kondensatory odsprzęgające zasilanie jak najbliżej układów. Ale jeśli to ma "tylko działać" to pewnie będzie i z tak kiepsko zaprojektowanym...
A w jaki sposób wyszukujesz te czujniki? Należy to zrobić przez SEARCHROM, zapisać gdzieś wszystkie adresy, a przy odczycie temperatury wywoływać kolejno te adresy. Wyszukiwanie wszystkich układów: unsigned char ow_search_address() { uint8_t conf_mask[8]={0}; uint8_t i, j, retcode; unsigned char dev_num; for(j=0;j<3;j++)...
Poza tym warto się zastanowić czy konieczne jest korzystanie z typów float do tak prostych celów??? Przecież w 100% można się obejść bez nich robiąc proste działania na liczbach całkowitych. W zależności od tego ile masz miejsc po przecinku w temperaturze to przez tyle pomnożyć liczby składowe w tym działaniu. Np jeśli będą dwa miejsca po przecinku...
Witam Nie wiem czy trzeba zmieniać coś jeszcze w Fusebit, czy porostu problem jest po stronie wyświetlacza? Pozdrawiam Wyświetlacz powinien pracować zupełnie dobrze także przy 1 Mhz taktowaniu processora. W zależności od deklarowanej F(clk), Bascom kalkuluje odpowiednio timingi do stadardu HD44780 display controlera. Przy błednej konfiguracji (lub...
Zła struktura, nieskończona rekurencja. Funkcje powinny zwracać wartość int. int tempok() { while(1) { if (xxx) { tempmax(); } } } int tempmax() { while(1) { if (xxx) { tempok(); } } } int main() { tempok();...
Przepraszam, że dopiero teraz ale jestem w delegacji. Minęły dwa dni a Twój termometr nie działa... Możesz słuchać każdego. Ja proponuję takie rozwiązanie które zajmuje dosłownie dwie minuty jeśli robiło się to wczesniej. Sprawa jest w pełni odwracalna. To nie ślub z kobietą :D Więc co szkodzi spróbować? Kiedyś może sam komuś pomożesz. Należy zacząć...
Masz rezystor podciągający? Niektórzy o nim zapominają.
No i teraz zasilanko że "mucha nie siada" ;) Ale dopiero teraz zauważyłem :( .... zastanów się co robisz z nie używanymi liniami LCD .... może zerknij tutaj a potem zrób jak uważasz: http://mirekk36.blogspot.com/2012/04/lcd... Dodano po 7 A to po to żeby uniknąć niszczenia styków przez prądy zwarciowe z kondensatora podczas wciskania...
Moim zdaniem nie jest według datasheetu. GND w datasheet jest na 1 nóżce patrząc na stronę wypukłą. Czyż nie? Nie. Takie jest poprawne podłączenie wg. wklejonego parę postów wyżej fragmentu datasheetu i tak też ty masz podłączone. http://obrazki.elektroda.pl/1299047500_1...
Witam ponownie. Ze względu na częstą potrzebę wykonywania pomiarów temperatury w dość długich procesach postanowiłem ulżyć sobie i stworzyć coś co zrobi to za mnie. Efektem moich przemyśleń jest urządzenie oparte o mikrokontroler Atmega8 i czujnik temperatury DS18b20. Dodatkowo urządzenie wyposażone jest w wyświetlacz, na którym można odczytywać mierzoną...
Można wyświetlać temperaturę w podmenu "wybór_Ds" ale trzeba zmienić cały program. Chyba nie jest tak trudno zapisać sobie cztery ID czujników i wiedzieć później który gdzie przypisać. Najlepiej osobno podłączać każdy czujnik i na naklejce na kablu przy czujniki zapisać jego ID. Wiedząc gdzie jakie jest ID czujnika można już mu w podmenu przypisać odpowiednią...
http://obrazki.elektroda.net/22_12752238... Witam. Dzisiaj chciałbym zaprezentować mój projekt zegara VFD na lampie IW-18. Jest to kontynuacja wątku kolegi Pier -> http://obrazki.elektroda.net/95_12752233... Wszystko tak szybko się odbywa że wyświetlacz w ogóle nie miga :D Program został napisany w BASCOMie - zajmuje ~64% pamięci Flash....
Co prawda w temacie kolega umieścił wątek o termometrze wykorzystującym jako czujnik LM35, ale może "malutka sugestia": Brałeś pod uwagę scalony cyfrowy czujnik typu np DS18B20 ? Ja np w aucie zbudowałem termometr (na ATMEGA8) przy użyciu dwóch czujników DS18B20 (temperatura silnika i w kabinie) oraz DHT22 (zamiennik to AM2302) w nawiewie, który oprócz...
http://obrazki.elektroda.pl/5851782000_1... Jako że sezon na kąpiele w ogródku się rozpoczyna, to być może ktoś skorzysta z mojego opisu podgrzewania wody w basenie ogrodowym. Ogrzewanie skończyłem w zasadzie w maju i pod jego koniec i jakieś trzy dni po zalaniu 13-stopniową wodą miałem temperaturę 26 stopni, ale od początku... Na opis...
Witajcie, W oparciu o Atmegę8 zrobiłem sobie prosty sterownik. Odczytuję temp. z dwóch czujników ds18b20 i na jej podstawie steruje elektrozaworem. Chciałbym dodatkowo wprowadzić obsługę 3 przycisków. Problem w tym, że sam odczyt temp. z czujek powoduje pewne opóźnienia np. czas konwersji jest dosyć spory bo 750ms w związku z tym reakcja na przyciśnięcie...
Jesli twierdzisz, ze biblioteka byla pisana tylko pod wersje 'S' to ciekaw jestem dlaczego w kodzie znajduje sie to: /* DS18X20 specific values (see datasheet) */ #define DS18S20_ID 0x10 #define DS18B20_ID 0x28 {...} #define DS18B20_9_BIT_UNDF ((1<<0)|(1<<... #define DS18B20_10_BIT_UNDF...
Ja kupuje za 19 zł wyświetlacz 2*16 w sklepie elektronicznym razem z pozostałymi elementami. Podam Ci spis elementów: LCD 2*16 Atmega8 DS18B20 lub DS1820 - czujnik temp stabilizator 7805 rezystor 10k rezystor 4k3 potencjometr montażowy 10k kwarc 8MHz kondensator 100n x3 kondensator 100uF x1 kondensator 220uF x2 goldpiny ok 30 Programator: http://obrazki.elektroda.net/42_12074908...
Jak długie mogą być przewody łączące czujniki DS18B20 z procesorem? Powiem szczerze, że najdalszy miałby ok. 50m. Poczytaj - http://www.elektroda.pl/rtvforum/topic14...
Tutaj masz gotowy projekt. Co prawda na jeden termometr, ale może jednak być przydatny. Są w nim procedury obsługi 1-Wire, LCD i DS18B20 (termometr cyfrowy). http://www.elektroda.pl/rtvforum/viewtop...
Ja bym się nie bawił w analogówke ... Sam zrobiłem stację meteo podłączoną do serwera , dane zbierane były do bazy danych mysql a stronka z odpowiednimi skryptami wyświetlała wyniki w postaci wykresów ( gnuplot ) oraz wskaźniki we flaszu bieżącą pogode. Zastosowałem mikrokontroler atmega8 pomiary temp czujnik DS18B20 pomiar wilgotności czujnik analogowy...
Mam problem z programem. Wydaje się ,że wszystko jest dobrze, LCD samo działa. Poprawnie raczej podłączyłam. Jednak po uruchomieniu na LCD wyświetlają sie tylko kwadraty.. bez temperatury. załączam plik z programem.
http://obrazki.elektroda.pl/2929008000_1... Witam. Po raz pierwszy zdecydowałem się przedstawić na łamach forum swoją konstrukcję. Chciałbym zaprezentować swój pomysł na Termometr Samochodowy. Podczas upalnego lata zauważyłem że po zainstalowaniu instalacji gazowej moje auto ma bardzo duże wahania mocy silnika w zależności od temperatury...
Cześć. Wielokrotnie już elektroda ratowała mnie pomocną ręką, mam nadzieje, że i tak dziś będzie. Staram sie napisać własną obsługę dla ds18b20 dla atmega8. Sporządziłem wstępny kod "biblioteki" (gdy zacznie działać zrefaktoryzuje kod celem jej uogólnienia). Jak narazie jedyna funkcja która mi działa to reset i presence pulse. Dalej w zasadzie odczytuje...
$regfile = "m8def.dat". $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.6 , Db5 = Portb.7 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0 Config 1wire = Portc.0 Declare Sub Odcz_temp Dim Temperatura(2) As Byte Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32, Do Call Odcz_temp Cls If Temperatura(2)...
Witam. Postanowiłem zrobić stację pogodową. Miała by ona podawać temperaturę na zewnątrz i w pomieszczeniu (2 czujniki). Całość postanowiłem zrobić na atmega8 ponieważ taką posiadałem (z zajęć szkolnych) oraz czujnikach DS18B20 (takie były w sklepie). Do wyświetlania temperatury służą dwa mniej więcej takie wyświetlacze http://www.micros.pl/images/Image/obrazy...
Witam Podczas sczytywania temperatur od 0-33 stopni wszystko jest ok. Po przekroczeniu 33 stopni diody sygnalizujące temperaturę zaczynają szalec. Zastosowałem rezytor zewnętrzny podciągający 4k7. Program: [syntax=asm].include"m8def.inc" #define DQ_PORT DDRC #define DQ 5 #define SET_DQ cbi DQ_PORT, DQ #define CLR_DQ sbi DQ_PORT, DQ #define IN_DQ PINC...
Witam koledzy! Mam problem z pomiarem temperatury, przeszukałem forum i internet n razy w poszukiwaniu odpowiedzi ale nie natrafiłem na żaden trop. Sądzę, że błąd leży gdzieś w kodzie. Wynik pomiaru docelowo jest prezentowany na LCD 2x16. Pomiędzy VCC a DQ mam rezystor 4,7k zgodnie z notą DS'a (nie w trybie pasożytniczym) Atmega podłączona zgodnie z...
Szanowni Forumowicze, od pewnego czasu interesuję się programowaniem mikroprocesorów. Wykonałem już kilka bardzo prostych projektów jak woltomierz cyfrowy czy termometr analogowy (mcp9700) z wyświetlaniem wyniku na LCD (HD44780). Problem mam jednak ze zrozumieniem sterowania elementami cyfrowymi. O ile w przypadku np. termometru mcp9700 sprawa jest...
Witam i prosze o pomoc bo nie wiem co robic. DS milczy. Pr u bowalem na trzech sztukach i nic zadna nie odpowiada. Podlaczenie na 100% dobre do PORTD 4. Program: //*** Port #define PORT(x) XPORT(x) #define XPORT(x) (PORT##x) //*** Pin #define PIN(x) XPIN(x) #define XPIN(x) (PIN##x) //***...
Wiem ze bylo juz mase postow na forum o ds18b20, przeczytalem chyba wszystkie i nawet zarzekalem sie ze nie napisze kolejnego, ale po kilku dniach walki rece mi opadaja. Chce zczytac temp. atmega8 z tego ukladu. Zczytuje ladnie ale tylko do 23,9 stopni jezeli bardziej ogrzeje czujnik wyswietlacz wskazuje mi temperature -7, -6 cos kolo tego. Oto moj...
Witam, Posiadam Atmega8 + DS18B20 + wyswietlacz LCD. 3ci wieczor nie umiem znalezc bledu w mym kodzie odczytajacym temperature. Caly czas pojawia sie 170. Inicjacje przechodzi poprawnie, odczyty niby tez ale pokazuje zla temperatura, naprawde nie mam juz pomyslow co jest nie tak... Prosze o sugestie co mzoe byc nietak. Dziekuje //KONFIGURACJA PORTOW:...
termometr atmega8 ds18b20 odczyt ds18b20 atmega8 atmega8 ds18b20 termostat
regulacja głośności audio potencjometr drukarka zmienia kolor epson plcc32 podstawka
sterowanie roletami zewnętrznymi schematy zafira
Jaki laser zapali zapałkę z 200 metrów? Jak połączyć ORION TV32LB1000 z telefonem przez USB?