Witam! '****Program na ATtiny2313****' '*** Program pod pilot RC5****' $regfile = "attiny2313.dat" $crystal = 8000000 Config Portd = Input : Portd = 0 Config Portb.3 = Output : Portb.3 = 0 Dim Togbit As Byte , Command As Byte , Address As Byte Do Debounce Pind.0 , 1 , P1 , Sub Debounce Pind.1 , 1 , P2 , Sub Debounce Pind.2 , 1 , P3 , Sub Debounce Pind.3 , 1 , P4 , Sub Debounce Pind.4 , 1 , P5 , Sub Loop P1: Command = 1 Togbit = 0 Address = 1 Do Rc5send Togbit , Address , Command Waitms 300 Loop Until Pind.0 = 0 Return P2: Command = 2 Togbit = 0 Address = 1 Do Rc5send Togbit , Address , Command Waitms 300 Loop Until Pind.1 = 0 Return P3: Command = 3 Togbit = 0 Address = 1 Do Rc5send Togbit , Address , Command Waitms 300 Loop Until Pind.2 = 0 Return P4: Command = 4 Togbit = 0 Address = 1 Do Rc5send Togbit , Address , Command Waitms 300 Loop Until Pind.3 = 0 Return P5: Command = 5 Togbit = 0 Address = 1 Do Rc5send Togbit , Address , Command Waitms 300 Loop Until Pind.4 = 0 Return Z góry dziękuję za pomoc!
|
|||
Re: Proszę o pomoc
Nie analizowałem całości, ale zacząć trzeba od tego że już na początku softu masz błąd. Masz tak:
A powinno być tak:
a na schemacie przyciski powinny być podpięte do masy, diody odwrócone a zasilanie może być podawane przez tranzystor PNP. Choć według mnie to w ogóle zły pomysł, bo procesor zawsze startuje z opóźnieniem. Powinna być użyta funkcja powerdown lub iddle.
Moja strona w powijakach
Kolego matrixie przeciez sa
Kolego matrixie przeciez sa tam rezystory sciagajace do masy(te 68R) a port jest ustawiony w stan wysokiej impedencjii (wejście, i 0 wpisane do rejestru PORTD).
Największą rzeczą jaka razi to te debunce wstawione do do...loop (ale debunce same w sobie rażą :D)
Więc mówiąc krótko debunce przed do...loop a do do...loop wstaw na wszelki wypadek nop(poprostu napisz nop).
Re: Proszę o pomoc
Tak, tylko czy nie lepiej zrobić to jak Bóg przykazał?
Moja strona w powijakach
Zaprogramowałem procesor tak
Zaprogramowałem procesor tak i dalej nic :(
A co jest najgorsze to że działało z tym programem :(
Quote:Tak, tylko czy nie
Jeśli płytka jeszcze nie zrobiona to oczywiście.
Działało i przestało czy działało ale z innym programem?
Jeśli z innym to go zapodaj.
P.s.
Może zobacz najpierw czy te debonce ci we właściwe miejsca skaczą, i zamist rcsend wstaw może do każdego naprzemiennie(czyli p1 zapala p2 gasi itd.) gaszenie i zapalanie tej diody.
P.s. 2
Te nazwy p1, p2... zamień może na p1a, p2a... na 100% to nie jest problem ale te nazwy to w 51 nazwy portów więc dla świętego spokoju.
To jest oryginalne
To jest oryginalne oprogramowanie jakie wgrałem do procka. Wtedy stworzyłem projekt, który jest widoczny w pierwszym poście jako pierwszy.
Co to znaczy?:
To czy jak naciśniesz switch2
To czy jak naciśniesz switch2 to wskoczy do p2 i wykona kod spod p2.
W jaki sposób mam to
W jaki sposób mam to sprawdzić??
Jak naciskam P2 to na nóżce do której jest podpięty pojawia się napięcie 2,65V jednocześnie procesor zostaje zasilony 2,03V. Natomiast na nóżce PB.3 pojawia się napięcie 2,03V, na bazie tranzystora napięcie wzrasta z 1,94V na 2,14V, a na kolektorze napięcie spada z 1,41V na 1,04V.
Tak się zachowuję przy zaprogramowaniu go oryginalnym programem.
Jeżeli tylko włączę zasilanie to procesor zasilany jest 0,94V i takie same napięcie panuję na nóżce PB.3
Boże, widzisz a nie
Boże, widzisz a nie grzmisz.
Jakim prawem procesor zasilany z 0.94V może działać, z czego bierzesz to napięcie?
Może do testów podłącz zza 7805 albo z ATX'a.
Co do sprawdzenia programu po prostu pod każdym podprogramem do którego skacze program (p1-p5) napisz na przemian pod p1:
pod p2:
i znowu pod p3:
Itd...itd...
P.s. Dodam tylko że przy zasilaniu z 5v przez te R=68 popłynie 70mA!
Przy odpowiednio niższym napięciu odpowiednio niższy ale to i tak dużo, skoro sam attiny pobiera z 10 razy mniej, może zmień na jakieś większe ale to tylko tak ot i napewno to nie powód.
P.s. 2
Zrób jeszcze jedno:
Zmierz napięcie przy którymkolwiek pinie wejściowym (tym od swicza) przed naciśnięciem i po danego swicza(oczywiście po włączeniu zasilania).
No widzę że nie
No widzę że nie przeanalizowałeś schematu.
Według niego na procesorze nie powinno być tego napięcia, więc stąd taki temat postu. Napięcie powinno być zasilane dopiero po naciśnięciu switcha, po czym wysłać komendę do odbiornika i tyle. To działało i tutaj jest problem dlaczego nie działa?? Może źle jest zaprojektowana płytka??
Wszystko jest zasilane z baterii 2xAA dlatego do tego celu kupiłem procesor Attiny2313V który odpala przy mniejszym zasilaniu :)
Co do P.S.2
To zasilanie przed naciśnięciem switcha na pinie wynosi 0V po naciśnięciu 2,65V
Mnie się wydaję że ten Twój test nie wyjdzie ponieważ procesor nie jest zasilany non stop dlatego powstał taki schemat :)
Zastanawiam się czy nie lepiej będzie jak przerobię płytkę gdzie procesor cały czas jest zasilany ale nie wiem jak zaprogramować procka aby go uśpić :(
Re: procesor
Zasilasz procesor przez diody więc spadek napięcia okolo 0.6V.... czyli 2,03V na vcc to normalne działanie. Zwieksz te rezystory 68R bo prawdopodobnie one ubijają baterię. trzeba tez zastanowić się czy tranzystor napewno jest zatkany gdy procesor nie pracuje, bo prad płynący przez rezystor 10R napewno spali diodę
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.
R=10 raczej nie spali bo to
R=10 raczej nie spali bo to zapewne dioda ir więc ma wyższe nap. przewodzenia.
Baze tranzystora ściągnij przez rezystor do Vcc, bo rzeczywiście może się nie zatykać.
Co do usypiania... procek możesz np. po wysłaniu komendy wprowadzać w powerdown i zastosować jakiś jeden dodatkowy guzik podłaczony do zewnętrznego przerwania i nim go budzić.
Czyli naciskasz swicz włączający potem ten od komendy procek wysyła dane i idzie spać.
To jakie rezystory najlepiej
To jakie rezystory najlepiej zastosować??
Tranzystor na emiterze posiada 2,65V to rozumiem ponieważ jest bezpośrednio podłączony do zasilania, ale dlaczego na bazie i kolektorze jest napięcie?? Troszkę nie rozumiem pracy tego tranzystora :(
Z tego co wiem to jeżeli podam napięcie na bazę tranzystora to będzie przewodzenie pomiędzy emiterem a kolektorem ale skąd sie bierze napięcie jak go nie podaje?? Poniewaz procesor nie jest zasilany?? co mnie zastanawia dlaczego po włożeniu baterii procesor posiada napięcie, jak to jest możliwe??
P.S.
Jeszcze zrobiłem taki test że wylutowałem tranzystor i podłączyłem napięcie, wtedy procesor nie był zasilany chyba że nacisnąłem jakiegos switcha.
Co do tego usypiania czy nie można wzbudzić switchem który pózniej wyślemy komendę czy muszę użyć dodatkowego przycisku?
Rezystory tak ok.
Rezystory tak ok. 400-600Ohm.
Tranzystor jest po to, ponieważ dioda ir żre duże prądu i mikrokontroler jej nie wysteruje, a działą tak że jeśli na bazie jest napięcie ok. vcc to jest zatkany, kiedy przyjdzie stan niski to go otwiera ale kiedy procek nie jest zasilany to jego wejścia nie są anie w H ani w L i napięcie na bazie jest takie jakie chce(czyli może być 0v może być vcc a może być coś po środku) dlatego trzeba by było dać jakiś rezystor co go do plusa ściągnie.
Właśnie ten tranzystor może być winien że na procku jest napięcie, dużo lepiej sprawdziłby się tutaj mosfet który ma izolowaną bramkę ale nie wiem czy procek da go radę wysterować(jego pojemnośc) ale tu niech lepiej się mirek wypowie.
Co do usypiania to może dał by radę taki patent aby wszystkie wejścia przez diody podłączyć i zrobić jeden wspólny punkt który podłączyć do inta ale też niech lepiej się mirek wypowie.
tranzystor
To jakim rezystorem podciągnąć bazę tranzystora??
A jakbym zastosował tranzystor NPN 547??
Pomoc
NPN się absolutnie nie nadaje - potrzebujesz dołączyć diodę do zasilania, więc tranzystor musi być PNP.
Niestety masz pewien duży błąd ideowy:
Aby "otworzyć" tranzystor bipolarny potrzeba około 0.6-0.7V (spadek napięcia na diodzie) na złączu baza-emiter. Procesor dołączasz do 2.65V przez diodę, co daje Ci około 2V zasilania. Stąd na pinie wyjściowym masz dwa stany: 0V (niski) i 2V (wysoki). Problem w tym, że stan niski (0V) na pinie procesora wprowadza tranzystor w "idealny" stan przewodzenia (bo 2.65 zasilania minus 0V na pinie = 2.65 na złączu baza-emiter), zaś stan wysoki (2V), który powinien całkowicie odciąć tranzystor nadal wprowadza go w stan przewodzenia bo 2.65-2=0.65V ...
Pomiędzy emiter tranzystora a linię zasilającą daj diodę 1N4007 (w kierunku przewodzenia - katodą do emitera). Podciągnij bazę tranzystora przez 10k do emitera (nie do zasilania!).
Używasz ATTtiny2313 (myślę że 23113 to po prosty literówka)? Według karty katalogowej na zasilaniu 2V może nie zadziałać (minimum 2.7V)...
Powinieneś użyć ATTinny2313V (min. power supply 1.8V).
Zepsuje się wszystko, co tylko może.
Zawsze tak, żeby uczynić najwięcej szkód w najmniej spodziewanym momencie.
zmiany
Dziękuję za propozycję zmian jakie mogę wprowadzić, później to przetestuje i dam znać co z tego wyszło :)
Jeżeli chodzi o procesor to chyba coś sobie pomyliłeś jedyny post, w którym wspominałem jakiego procka wykorzystuję to #10. Tam właśnie wspomniałem o ATtiny2313V który właśnie działa na niższym napięciu :)
Ale dzięki za zwrócenie uwagi i w tym przypadku :)
Pozdrawiam!
Wprowadziłem zmiany jakie kolega Kuba proponował, i troszkę się pozmieniało. Po pierwsze dioda po włączeniu zasilania nie świeci ale gdy nacisnę jakiś przycisk to zaczyna mrugać a jak zwolnię przycisk to nie wygasza się do końca i jest na niej napięcie 1V (bardzo słabo świeci, w porównaniu do poprzedniego stanu przed zmianami). Procesor dalej jest zasilany napięciem 1V i dalej nie rozumiem skąd to się wzięło.Oczywiście tranzystor jest PNP. Czasem się zdarza sytuacja tego typu, że gdy nacisnę przycisk np. P1 to dioda mruga, gdy go zwolnię słabiutko świeci po tym nacisnę P2 to dioda się wygasza, muszę ponownie nacisnąć ten sam przycisk aby mrugała, czasem kilkakrotnie :(
Podłączyłem także odbiornik. Poniżej jego schemat oraz oprogramowanie ale niestety nie chce współpracować z pilotem.
Oprogramowanie:
Może coś w oprogramowaniu jest źle?
Z góry dziękuję za pomoc!
Pozdrawiam!
Podpowiem tylko że tu NPN się
Podpowiem tylko że tu NPN się super nadaje ponieważ 0v-0.7v go zamknie a wszystko większe od 0.7 go otworzy więc nie rozumiem co kolega kuba ma na myśli pisząc:
Przecież diodę można załączyć "drugą stroną"
Ten program z jakimkolwiek innym pilotem działa?
Chodzi o to że by potem nie było tak że nadajnik sprawny a odbiornik niedziałający.
NPN
No właśnie się zastanawiałem nad tranzystorem bc547b jak dobrze zrozumiałem filozofię ich działania to nawet lepszy by był niż PNP.
Trudno mi stwierdzić czy działa z innym pilotem ponieważ mam tylko jeden. Na pewno działał w starej wersji (wszystko w pierwszym poście) z zaprojektowanym przez Mirka odbiornikiem RC5. Zauważyłem że jak celuje pilotem w odbiornik to na nóżce gdzie jest podpięty TSOP (dokładnie jego wyjście out) przy każdym naciśnięciu switcha jest spadek napięcia o jakieś 0,25V.
Pozdrawiam!
TYlko miernikowi się tak
TYlko miernikowi się tak zdaje ponieważ jest tam modulowany sygnał 36kHz więc miernik z supermarketu tego nie wymierzy chyba że masz oscyloskop albo super miernik za 800zł.
miernik
miernik mam dużo dużo tańszy :P oscyloskopu też nie mam :(
kurde i jak rozwiązać sprawę tego pilota?? może łatwiej będzie go zaprojektować od nowa?? Ale właśnie chodzi o to abym nie musiał baterii wymieniać co 2 dni :( dlatego tak są zaprojektowane przyciski :)
NPN
Zamieniłem tranzystor PNP na NPN BC547B. Teraz dioda w ogóle nie świeci się, na procesorze także nie ma napięcia, jeżeli nacisnę jakiś przycisk to procesor jest zasilany odpowiednim napięciem, natomiast na bazie tranzystora pojawia się napięcie 1,6V a na emiterze 0,97V i dioda bardzo słabo świeci :(
Sprawdzałem z odbiornikiem nie działa:( może problem tkwi w tym że TSOP przylutowałem na kablach o długości 30cm??
Pozdrawiam!
Re; Odbiornik
Najpierw zajmij się odbiornikiem, żeby dobrze dzialał z fabrycznym pilotem, dopiero potem nadajnik, żebyś miał na czym go testować
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.
pilot
Czy program powyżej dotyczący odbiornika aby mógł odbierać sygnały w adresie 1, musze zmienić tą linijkę:
A także druga sprawa, jeżeli chciałbym aby po odebraniu komendy stan pinu ustawiał na niski, coś muszę pozmieniać??
Pozdrawiam!
Ten program widze mieli
Ten program widze mieli ciagle w do loop getrc5, wg. mnie może to powodować błędy więc lepiej daj to jak z góry przykazano do intx i w przerwaniu odbieraj dane za chwile podeślę ci kod.
program
Program został napisany dla mnie przez Mirley'a jakiś czas temu i cały czas na nim bazuję. Jeżeli proponujesz coś innego to jestem bardzo wdzięczny i jakbym mógł prosić o dość obszerne komentarze co się z czego wzięło i jaką ma funkcję :)
Jeszcze jeden sposób na sprawdzanie odbioru RC5
Jest jeszcze jeden sposób na sprawdzanie odbioru RC5. Do pinu gdzie mamy podpięty odbiornik RC5 należy podpiąć się z takim kodem:
Moja strona w powijakach