Skocz do zawartości

Kłopot z czujnikami dohio lub programem


zuba1

Pomocna odpowiedź

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

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

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

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

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

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

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

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

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

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

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

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ę »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.