Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 9 kwi 2026, o 04:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 9 gru 2013, o 20:40 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Witam

Z powodu małej ilosci czasu dopeiro teraz mocniej przysiadłem do swojego projektu systemu kontorli wilgotnosci gleby w kwiatkach. Zdecydowałem na Attiny13 zasilany bateryjni, mierzacy rezystancje gleby a następnie wynik wysyłajacy za pomocą iR do centralki.

Usypianie uC, budzenie, pomiar ADC już zrealizowany oto kod:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


teraz przyszedł czas na zorganizowanie wysłania pomiaru 10 bitowego do centralki. I tutaj mam problem. Z kodu z niebieskiej książki który był pisany na Atmege32 wynika że potrzebuję dwóch liczników, tymczasem w attiny13 do dyspozycji mam tylko jeden. Moze mógłby ktoś pomóc jak zorganizować taka wysyłkę po IR potrzebuje wysłać 3 bity jako adres urządzenia no i 10 bitów pomiaru.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 20:50 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

A gdzie kolega wyczytał o dwóch licznikach do nadawania IR w bluebooku ? :) na której stronie ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 20:53 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

To cytat z programu na płytce dołączonej do niebieskiej książki (program Pilot_IR)

Cytuj:
// TIMER0
// - używany do generowania fali nośnej dla IR
// załadowanie OCR0A wartością do generowania nośnej ok 36kHz = 110

// Timer1 - służy do odmierzania opóźnień (z dokładnością wielokrotności 1us)
// jego preskaler ustawiany jest na 8 podczas załączania
// używana jest wtedy jeo flaga OCF0A
// nie korzystamy z przerwań
// ustawiamy Timer1 w tryb = 4 - CTC




Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 20:55 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

ok - zapomniałem o nośnej ;) ... sorki

ale do opóźnień możesz zastosować spokojnie _delay_us() bo i tak nic innego w międzyczasie nie będziesz robił.

Albo programowo generować nośną - no wyjść jest kilka jak widać ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 21:02 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

No niby tak mogę użyć delaya. Pozostaje jeszcze kwestia ilości przesyłanych danych bo będzie tego więcej niż w standardzie RC5 2bity startu, 1 bit TOG, 3 bity adresu, 10 bitów pomiaru. Ale z tego co widzę chyba nei wiele trzeba będzie przebudować tą twoją bibliotekę Mirku aby pracowała na 16bitach? Czy lepiej zostawić w spokoju libsy i zrobić pomiar 8 bitowy? Znowu aż takiej precyzji nie potrzebuje ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 21:05 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

no dokładnie przesyłać można i 16 bitów po lekkiej modyfikacji to już wg uznania.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 21:31 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Rozumiem że aby skorzystać z 8 bitowego przetwornika wystarczy w funkcji pomiar zrobić:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Chyba jednak nei tylko wygląda na to że jeszcze
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a później returnować ADCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 21:43 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Przyszedł czas na zabawy z wysyłąneim pomiaru po RC5 no i neistety lipa :/ Bazowąłem na kodzie z blue book'a gdzie Mirek przedstawiał Pilot IR. Schemat postaram sie jutro wrzucić tak na szybko połączenie IR wygląda tak: do Pinu PB0 mam podłączony rezystor 2.2K który jest poprowadzony do bazy BC547B, Emiter podłączony do GND natomiast Collector przez rezystor 56R do katody diody IR a anoda do VCC (5V)

Kod wygląda tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Efekt jest taki że dioda IR co minute coś tam zamiga, ale zestaw ATB w którym mam odpalony program do odczytu kodów z RC5 milczy, dla pewności sprawdzałem na pilocie i z neigo wszystko ładnie odczytuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2013, o 19:48 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Miałby ktoś jakiś pomysł. Może to źle dobrany tranzystor?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2013, o 20:07 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Wilu88 napisał(a):
// TIMER0
// - używany do generowania fali nośnej dla IR
// załadowanie OCR0A wartością do generowania nośnej ok 36kHz = 110
OCR0A =  110;

To są obliczenia dla taktowania 8MHz, a z tego co widzę w specyfikacji to Attiny13A pracuje na 9,6MHz (1,2MHz z fabryki). Druga sprawa to zmiana F_CPU w opcjach, bo bez tego _delay_us będzie działać inaczej niż zakładasz.

Do testów z IR polecam program MkDekoder i uruchomienie lekcji 3 - analizator IR z zielonej książki Mirka. Od razu wyłapałbyś co nie gra. Nośna nie ma dużego znaczenia, ale szerokości bitów odgrywają kluczową rolę.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2013, o 21:18 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Właśnie teraz uruchomiłem Dekoder i analizator IR wyniki sa bardzo różne raz 19 impulsów raz 21 raz 25 czy 29.

ObrazekObrazek

Taktowanie w properties to: 1Mhz
teraz pytanie jak mam ustawić? na 9.6 Mhz czy 1.2Mhz bo CKDIV mam załączone. Domyślam się że muszę zmienić na 1.2Mhz apóźnie jzostaje wyliczenie OCR0A

------------------------ [ Dodano po: 7 minutach ]

naniosłem poprawk ido kodu:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Taktowanie w ustawieniach projektu ustawione na 1.2Mhz

A oto wynik z Dekodera:
Obrazek

Jednak dalej nie rozpoznaje prawidłowo ramek RC5 :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2013, o 18:46 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Hmm kod wygląda OK. Wydaje się że problemem jest dioda. Ma bardzo słaby zasięg i tylko pod pewnym kątem otrzymuje prawidłowe dane, wystarczy lekko odgiać i juz ramki nei docierają w całości :/ A nadajnik jest od odbiornik jakieś 15 cm :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2013, o 21:03 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Ograniczenie zasięgu może być też związane z częstotliwością nośnej. Odbiornik ma największą czułość dla 36kHz. Jakbyś przeszedł na 9,6MHz wtedy wartością OCR0A można by dokładniej regulować. Zauważ też, że jeśli OCR0A = 1,2MHz/72kHz - 1 = 15,(6). Bliżej jest 16 niż 15. To sprawdź w pierwszej kolejności.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2013, o 22:04 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Ok sprawdzę. z tym 9.6 będzie o tyle problem że docelowo Attiny13 będzie działać na baterii 3V i ogólnie układ ma pobierać jak najmniej prądu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2013, o 23:01 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

To oddzielny temat. Na razie proponuję skupić się na problemie. Nie każdy wie, że można sobie zmieniać taktowanie w trakcie działania programu i to niżej niż 1,2MHz. Jest specjalny rejestr o nazwie CLKPR, a fusebit CKDIV8 służy do ustalenia taktowania po resecie. Inny wart uwagi rejestr to PRR, który pozwala wyłączyć taktowanie nieużywanych peryferii i ACSR, gdzie można wyłączyć komparator i DIDR0 w którym warto wyłączyć bufor wejść cyfrowych dla wejść, które używane są jako analogowe.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2013, o 11:41 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Zmieniłem na 16 i 1 ramka przyszła cała a następne już jakieś tylko części. Robie sobie podgląd wartości IRData na wyświetlaczu i raz to wartości rzędu 100 innym razem ponad 3000. Może wina diody? Aktualnie do testów zasilam jaz 5V czy moze to powodować takie problemy? Jeszcze spróbuję diodę przylutować to płytki i wyprowadzić kable aby wyeliminować płytkę stykową.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2013, o 17:43 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Dioda IR przylutowana do płytki na stałe dwie ramki doszły prawidłowo a następnie kaszana. Zasięg nadal tragiczny. Z ciekawości zamieniłem an takie diody:

http://www.ebay.com/itm/400529215817?ss ... 1439.l2649

Ale efekt był taki ze kompletnie nic nie doszło do uC, podłączyłem PD6 do diody aby zobacz czy cokolwiek dochodzi do odbiornika IR i kompletnie nic. Diodę już zasilam z 5V. Moze zamienić tranzystor na jakiś inny?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2013, o 21:26 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Wilu88 napisał(a):
Z ciekawości zamieniłem an takie diody:

http://www.ebay.com/itm/400529215817?ss ... 1439.l2649

To jest dioda odbiorcza.

Możliwe, że źle wpiąłeś tranzystor, albo rezystory nie mają takiej wartości jak myślisz.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2013, o 21:38 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Zastosowałem taki oto tranzystor

Obrazek

Do 1 podłączone GND
Do 2 Sygnał z uC poprzez rezystor 10K
Do 3 dioda IR poprzez rezystor 56R

I nadal to samo gdy odbiornik od nadajnika jeta oddalony o maks 15cm jest Ok. Gdy oddale zestaw lub ustawie nadajnik pod katem to neistety do ATB dociera tylko część ramki.

------------------------ [ Dodano po: 40 minutach ]

Postanowiłem zrobić testy na wiekszej odległości no i sytuacja wygląda następująco. Nie wydaje ię że problemem jest zasięg bo raz na jakis czas ramka zostaje odebrana nawet gdy nadajnik jest oddalony o kilka metrów. wydaje się że winny jest kod i jakieś przesunięcia opóźnień lub nośnej. Może posiada ktoś jakiś prostszy kod do wysyłania 8 lub 10 bitowych zmiennych? tak aby można było przetestować czy winne jest tu RC5 czy coś innego :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2013, o 22:32 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Po prostu w odbiorniku zwiększ sobie tolerancje.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO