zuba1 Napisano Grudzień 18, 2011 Udostępnij Napisano Grudzień 18, 2011 Witam.Mam kłopot z czujnikami dohio. Mianowicie,postanowiłem zrobić robota minisumo. Nie mam na razie dalmierzy więc zająłem się czujnikami dochio. Cały czujnik jest zrobiony na układzielm358 i zasilany napięciem 5v podłączony jest pod atmegę8 która steruje silnikami. Tu pojawia się problem ponieważ sam czujnik podłączony pod diodę led działa ale po podłączeniu pod robota już nie.Zrobiłem program który ma za zadanie zapalić diodę po postawieniu robota na białym podłożu ale atmega nie reaguje (w ogóle nie reaguje na żadnym wejściu mimo że po wgraniu programu dioda działa i silniki się kręcą). W robocie zastosowałem kondensatory filtrujące 100nf podpięte do masy (są one podpięte do wszystkich wejść) program: 'Robot szaman v.4 procesor atmega8(L) rok2011 by zuba1 $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Input Config Portc = Output Led Alias Portc.0 'silniki Spiker Alias Portc.1 Lewoprzud Alias Portc.2 Lewotyl Alias Portc.3 Prawoprzud Alias Portc.4 Prawotyl Alias Portc.5 'czujniki przednie Czpod Alias Portd.2 Czpodt Alias Portd.3 Cznac Alias Portd.4 'czujniki dohio Pp Alias Portd.1 'to pierwszy czujnik dohio a ten na dole to drugi Pl Alias Portd.0 Do If Pp = 1 Then Led = 1 Loop End Stopp: Lewoprzud = 0 Lewotyl = 0 Prawoprzud = 0 Prawotyl = 0 Return Go: Lewoprzud = 1 Lewotyl = 0 Prawoprzud = 1 Prawotyl = 0 Return Tyl: Lewoprzud = 0 Lewotyl = 1 Prawoprzud = 0 Prawotyl = 1 Return Lewo: Lewoprzud = 0 Lewotyl = 1 Prawoprzud = 1 Prawotyl = 0 Return Prawo: Lewoprzud = 1 Lewotyl = 0 Prawoprzud = 0 Prawotyl = 1 Return Link do komentarza Share on other sites More sharing options...
dondu Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 Pokaż schemat. Link do komentarza Share on other sites More sharing options...
KD93 Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 dohio dochio A poprawnie jest: dohyo (w ogóle nie reaguje na żadnym wejściu mimo że po wgraniu programu dioda działa i silniki się kręcą) Na tym programie silniki się kręcą? A za sprawą których linijek kodu? Po obejrzeniu tego programu robot powinien działać tak: -stoi w miejscu -jeśli czujnik znajdzie się nad linią (przesuniesz tam robota), to zaświeci się dioda -jeśli czujnik będzie znowu nad czarnym to dioda zgaśnie Jakiej reakcji oczekujesz od robota? Bo masz sprawdzanie stanu czujnika w pętli, i robot nie będzie robił nic innego, niż sprawdzanie tego czujnika. Więc zasygnalizuje ci linię, ale żadnej innej reakcji nie wykona. Masz napisane procedury do sterowania silnikami, ale są one poza ciągle wykonująca się pętlą i program nigdy do nich nie trafi. Troche zagmatwałem, mam nadzieję że zrozumiałeś coś z tego. [ Dodano: 18-12-2011, 12:19 ] OK, przeczytałem jeszcze raz i chyba wiem OCB. Zmień: If Pp = 1 Then Led = 1 Na: Led1 = Pp Ewentualnie żeby "odwrócić" działanie diody: Led1 = Not Pp Link do komentarza Share on other sites More sharing options...
zuba1 Grudzień 18, 2011 Autor tematu Udostępnij Grudzień 18, 2011 szczerze to go nie mam ale czujniki są zrobione wg tego schematu https://www.forbot.pl/forum/upload_img/obrazki/IMG_490183ca1ee7a1270.gif różnica jest jedna że nie mam tam sonaru i mostek h jest podpięty pod wyjście c wszystkie czujniki mają być wpięte w port d a port b ma podpięte swiche połączone z masą tyle że robot z żadnego portu nie odbiera sygnału a atmega jest nowa 1-waiście a czujniki dochio 2-wejście na inne 3-dalmierz cyfrowy 4-2 gniazda zasilania 5-zasilanie robota 6-zasilanie mostka h 7-wtyk na spiker filtrowany kondensatorem 100nf spiętym do masy oraz rezystor do diody led 8-gniazdo sterowania silników z nim nie miałem kłopotu 1-2-3 w ogóle nie szczytują sygnałów i nie wiem co się dzieje. [ Dodano: 18-12-2011, 12:22 ] rozumiem ale to jest tylko urywek testowy do skalibrowania czujników [ Dodano: 18-12-2011, 12:23 ] a co do reakcji to masz rację ale i tag nie działa 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
KD93 Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 A zamieniłeś ta linijkę w programie? Bo szczerze mówiąc dopiero jak 2 raz przeczytałem Twojego posta, to zrozumiałem w czym problem i to co pisałem powyżej to były brednie (oprócz nazwy dohyo 😉). Powinnio zadziałać, już tłumacze dlaczego. W obecnym programie masz tak, że jak czujnik zobaczy 1, to wystawiasz na diodę 1 i koniec. Jednak gdy na czujniku będzie znowu 0, to nie zrobi on nic, bo nie ma takiego warunku. Dalej na diodzie zostanie 1 i będziesz miał cały czas 1. Link do komentarza Share on other sites More sharing options...
dondu Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 Pokazałeś link do schematu oraz zdjęcie projektu. Jak sądzę (choć mogę się mylić) schemat nie odpowiada temu co faktycznie masz na płytce. Jeżeli tak jest, to pokaż jak wygląda Twój aktualny schemat. Link do komentarza Share on other sites More sharing options...
Robomaniak Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 nie wiem czy wiesz ale jeśli raz czujnik wystawi stan wysoki to dioda sie zaświeci i już nie zgaśnie nawet jeśli dasz czujnik nad czarna linie musisz zmienić If Pp = 1 Then Led = 1 na If Pp = 1 Then Led = 1 else Led = 0 end if i napisz czy działa jeśli nie to raczej wina jest sprzętowa Link do komentarza Share on other sites More sharing options...
KD93 Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 I zorbiłem w dodatku błąd, bo masz Led, a nie Led1 (już taki nawyk z programu z mojego robota). Zamień na: Led = Pp Lub Led = not Pp [ Dodano: 18-12-2011, 12:34 ] Robomaniak, w sumie to jest to samo tylko trochę dłużej 🙂 Ale właśnie tu tkwi błąd. [ Dodano: 18-12-2011, 12:36 ] dondu, nie znasz się na Bascomie, nie możesz sprawdzić tego programu, to po co się dopytujesz o schemat? zuba1 wyraźnie napisał, że osobno czujnik działa, nie działa podłączony do procka, więc ewidentnie wina leży po stronie programu. [ Dodano: 18-12-2011, 12:38 ] Lewoprzud OMG Link do komentarza Share on other sites More sharing options...
Robomaniak Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 Weź jeszcze miernik w łapki i zmierz jakie napięcie daje komparator na czarnym i na białym bo led nie potrzebuje aż 5v do świecenia 😃 Link do komentarza Share on other sites More sharing options...
zuba1 Grudzień 18, 2011 Autor tematu Udostępnij Grudzień 18, 2011 I nie działa .Co do schematu to podałem różnice pomiędzy tym a tym i podałem zdjęcia robot nadal nie działa sprawdziłem czujnik i sam podpięty do diody działa więc z nim niema problemu ale coś musi siedzieć w kodzie bo wszystko dobrze podpoiłem.wg mię to wina jednej z dwóch rzeczy 1-kodu 2-kądensatorów filtrujących [ Dodano: 18-12-2011, 15:18 ] prawdo podobnie tu jest problem tylko nie wiem gdzie $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Input Config Portc = Output Led Alias Portc.0 'silniki Spiker Alias Portc.1 Lewoprzud Alias Portc.2 Lewotyl Alias Portc.3 Prawoprzud Alias Portc.4 Prawotyl Alias Portc.5 'czujniki przednie Czpod Alias Portd.2 Czpodt Alias Portd.3 Cznac Alias Portd.4 'czujniki dohio Pp Alias Portd.1 'to pierwszy czujnik dohio a ten na dole to drugi Pl Alias Portd.0 [ Dodano: 18-12-2011, 15:56 ] Już działa.Uszkodzony był wtyk na procesor(podstawka) a poza tym czujnik nadawał stan 0 gdy coś wykrywał i odwrotnie a teraz mam pytanie co do tego kawałka kodu czy to będzie działać? 'Robot szaman v.4 procesor atmega8(L) rok2011 by zuba1 $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Input Config Portc = Output 'silniki Spiker Alias Portc.1 Led Alias Portc.0 Lewoprzud Alias Portc.2 Lewotyl Alias Portc.3 Prawoprzud Alias Portc.4 Prawotyl Alias Portc.5 'czujniki przednie Czpod Alias Portd.2 Czpodt Alias Portd.3 Cznac Alias Portd.4 'czujniki dohio Pp Alias Pind.1 Pl Alias Pind.0 Do If Pp = 0 Then Gosub Tyl Wait 1 Gosub Lewo Wait 1 End If If Pl = 0 Then Gosub Tyl Wait 1 Gosub Prawo Wait 1 End If If Pp = 0 And Pl = 0 Then Gosub Tyl Wait 1 Gosub Lewo Wait 1 End If Loop End Stopp: Lewoprzud = 0 Lewotyl = 0 Prawoprzud = 0 Prawotyl = 0 Return Go: Lewoprzud = 1 Lewotyl = 0 Prawoprzud = 1 Prawotyl = 0 Return Tyl: Lewoprzud = 0 Lewotyl = 1 Prawoprzud = 0 Prawotyl = 1 Return Lewo: Lewoprzud = 0 Lewotyl = 1 Prawoprzud = 1 Prawotyl = 0 Return Prawo: Lewoprzud = 1 Lewotyl = 0 Prawoprzud = 0 Prawotyl = 1 Return Link do komentarza Share on other sites More sharing options...
KD93 Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 Wgraj i sprawdź 😉 Link do komentarza Share on other sites More sharing options...
dondu Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 Co do schematu to podałem różnice pomiędzy tym a tym i podałem zdjęcia robot nadal nie działa sprawdziłem czujnik i sam podpięty do diody działa więc z nim niema problemu ale coś musi siedzieć w kodzie bo wszystko dobrze podpoiłem.wg mię to wina jednej z dwóch rzeczy 1-kodu 2-kądensatorów filtrujących ... Już działa. Ze zdjęć wynika, że schemat Twojego robota, znacznie odbiega od schematu, który pokazałeś. Za parę dni będziesz pisał nowy temat i szukał wyjaśnienia, dlaczego ten skubany robot nie działa tak jak chcesz, albo co gorsza padnie Ci mostek tuż przed zawodami, jak niektórym niedoszłym zawodnikom. Dopóki nie zaczniesz poważnie podchodzić do swojego projektu, dopóty będziesz siedział na 1 stopniu Piekielnych schodów A przyczyn nie działania projektu może być wiele - nie tylko programowe, o czym sam się właśnie przekonałeś. Zastanów się czy warto? Link do komentarza Share on other sites More sharing options...
KD93 Grudzień 18, 2011 Udostępnij Grudzień 18, 2011 No, dondu, muszę zwrócić honor, jednak okazało się że to błąd połączenia, jednakże nie jesteś go w stanie wskazać nawet mając schemat. zuba1, co miałeś na myśli pisząc że to może być wina kondensatorów filtrujących? Nie mów że ich nie dałeś. Link do komentarza Share on other sites More sharing options...
zuba1 Grudzień 18, 2011 Autor tematu Udostępnij Grudzień 18, 2011 oczywiście że dałem ale miałęm co do nich wątpliwości a drugi błąd leżał tutaj Pp Alias Portd.1 powinno być Pp Alias Pind.1 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »