Przesunięty przez: daniel93 31 Sie 08 07:35 |
Line follkower - problemy |
| Autor |
Wiadomość |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 28 Lip 08 12:44 Line follkower - problemy
|
|
|
Mam pewne problemy z moim robocikiem mianowicie jeszcze go nie skonczyłem, a tu problemy. Wyjąłem silniczki z jakis samochodzików no wszystko fajnie jednak jak podłączam pod zwyczajną baterie 4,5 V i sie kręcą jak szalone jak zmniejszyć ich prędkość obrotową? Nawet w nieskonczonym robociku musze nieraz pomóc silniczkowi zeby zaczął sie kręcic jak moge zmniejszyc prędkośc obrotową lub regulować ? Niechce zeby wyskoczył poza linie widziałem jakiegoś uzytkownika robocik
http://pl.youtube.com/watch?v=e9kYTq1hIPM
Po co są te diody z przodu i po bokach ? I jest tez problem jak ustawic tą fotodiode i ten foto tranzystor ile od kreski , a pod jakim kątem bo nieraz wogule nie łapie .
Więc pomyslałem zeby zrobic wersje drugą tą dokoncze i zbuduje cos lepszego
skorzystam z takich schematów
A program bedzie taki ktoś go napisał z tego forum
| Kod: | $regfile = "2313def.dat"
$crystal = 10000000
'$noramclear
Config Portb = Output
Config Portd = Input
Portb = &B00000000
Portd = &B00000000
Motor_pp Alias Portb.0 'wyprowadzenia dla silników
Motor_pt Alias Portb.1
Motor_lp Alias Portb.3
Motor_lt Alias Portb.2
Sensor_p Alias Pind.2 'prawy czujnik lini
Sensor_s Alias Pind.4 'srodkowy czujnik lini
Sensor_l Alias Pind.3 'lewy czujnik lini
Sensor_o Alias Pind.1 'przedni czujnik zderzeniowy
Do
If Sensor_o = 0 And Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 1 Then 'jedz prosto
Gosub Go
Elseif Sensor_o = 0 And Sensor_l = 0 And Sensor_s = 1 And Sensor_p = 1 Then 'skrec w lewo
Gosub Lewt
Elseif Sensor_o = 0 And Sensor_l = 0 And Sensor_s = 0 And Sensor_p = 1 Then 'skrec w lewo
Gosub Lewt
Elseif Sensor_o = 0 And Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 0 Then 'skrec w prawo
Gosub Righ
Elseif Sensor_o = 0 And Sensor_l = 1 And Sensor_s = 1 And Sensor_p = 0 Then 'skrec w prawo
Gosub Righ
Elseif Sensor_o = 1 And Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 1 Then 'stoj pomimo stanow
Gosub Stoj
Elseif Sensor_o = 1 And Sensor_l = 0 And Sensor_s = 1 And Sensor_p = 1 Then 'stoj pomimo stanow
Gosub Stoj
Elseif Sensor_o = 1 And Sensor_l = 0 And Sensor_s = 0 And Sensor_p = 1 Then 'stoj pomimo stanow
Gosub Stoj
Elseif Sensor_o = 1 And Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 0 Then 'stoj pomimo stanow
Gosub Stoj
Elseif Sensor_o = 1 And Sensor_l = 1 And Sensor_s = 1 And Sensor_p = 0 Then 'stoj pomimo stanow
Gosub Stoj
End If
Loop
Go: 'polecenia dla silnikow
Motor_lt = 1
Motor_pt = 1
Return
Lewt:
Motor_lt = 1
Motor_pt = 0
Return
Righ:
Motor_lt = 0
Motor_pt = 1
Return
Stoj:
Motor_lt = 0
Motor_pt = 0
Return |
Co będe potrzebował jeszcze do zbudowania takiego porządnego linka ? Bardziej sie opłaca kupic w całosci ten czujnik czy pojedyńczo bo z tego co mam i widze to raczej w całości , a czy potrzebne jest oświetlenie "pod robocikiem" ???.
Proszę o pomoc przy doborze elementów tak zeby silniczki nie kręciły sie jak głupie, żeby wykrywał porządnie tą linie
Komentarz dodany przez: treker:
Program umieszczamy w tagach [ code][/ code]. |
|
|
|
|
 |
| Wyświetl szczegóły |
 |
misiek1994


Pomógł: 2 razy Posty: 190 Otrzymał 13 piw(a) Skąd: z Sędziszowa
|
Wysłany: 28 Lip 08 01:00
|
|
|
| Ja wole czujniki odbiciowe zrobić ręcznie z diody IR oraz fototranzystora. Co do silniczków to powinieneś zastosować przekładnię (szybkość przełoży na moment) lub zastosować (w ostateczności) jak najmniejsze kółka (prędkość bedzie mniejsza - większy moment). narazie możesz zbudować line'a moejego autorstwa, którego nie trzeba programować, a daje przyblizone osiągi, jak z tym twoim programikiem (zero pwm'a). |
|
|
|
|
 |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 28 Lip 08 01:17
|
|
|
Wolałbym sie czegoś nauczyc więc prosze o więcej wypowiedzi jednak na scalaku moze być lepszy tak mi sie zdaje |
|
|
|
|
 |
misiek1994


Pomógł: 2 razy Posty: 190 Otrzymał 13 piw(a) Skąd: z Sędziszowa
|
Wysłany: 28 Lip 08 01:24
|
|
|
| będzie lepszy, jak sie podszkolisz. Mówię ci, że na potkach i tranzystorach, w porównaniu z tą wersją programu będzie lepszy. A tak wogóle to masz scalak i programator?? |
|
|
|
|
 |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 28 Lip 08 01:46
|
|
|
| jasne ze mam wszystko przygotowane tylko ze coś niechce działać ja kombinuje z ustawieniami diód i nadal nic raz sie włączy jeden silniczek raz drugi albo jeden cały czas sie kręci chociaz kartką macham i macham |
|
|
|
|
 |
misiek1994


Pomógł: 2 razy Posty: 190 Otrzymał 13 piw(a) Skąd: z Sędziszowa
|
Wysłany: 28 Lip 08 01:50
|
|
|
| Pokaż screen z programowania. |
|
|
|
|
 |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 28 Lip 08 01:52
|
|
|
| Kod: | $regfile = "2313def.dat"
$crystal = 4000000
'$noramclear
Config Portb = Output
Config Portd = Input
Portb = &B00000000
Portd = &B00000000
Motor_lp Alias Portb.0
Motor_lt Alias Portb.1
Motor_pp Alias Portb.3
Motor_pt Alias Portb.2
Sensor_p Alias Pind.2
Sensor_s Alias Pind.5
Sensor_l Alias Pind.4
Do
If Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 1 Then 'go along
Gosub Go
Elseif Sensor_l = 0 And Sensor_s = 1 And Sensor_p = 1 Then 'turn left
Gosub Lewt
Elseif Sensor_l = 0 And Sensor_s = 0 And Sensor_p = 1 Then 'turn left
Gosub Lewt
Elseif Sensor_l = 1 And Sensor_s = 1 And Sensor_p = 0 Then 'turn right
Gosub Righ
Elseif Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 0 Then 'turn right
Gosub Righ
End If
Loop
Go:
Motor_lt = 1
Motor_pt = 1
Return
Lewt:
Motor_lt = 0
Motor_pt = 1
Return
Righ:
Motor_lt = 1
Motor_pt = 0
Return |
taki programik wręcz powiedziałbym ze standardowy prosze poprawic jesli coś bedzie zle
[ Dodano: 28 Lip 08 03:02 ]
Juz wypatrzyłem błąd |
|
|
|
|
 |
Kaytec

Pomógł: 2 razy Posty: 51 Otrzymał 3 piw(a) Skąd: Olsztyn
|
Wysłany: 28 Lip 08 04:58
|
|
|
Po pierwsze w pierwszym poście schemat nie pasuje do programu.
Po drugie, mój film i mój schemat, program też pisałem ja
Po trzecie z powyższym programem musisz jeżeli robisz według tego schematu (standardowe fusy attiny2313 musisz wpisać że $crystal = 1000000
Po czwarte dokładnie przeanalizuj który czujnik jest który i uwzględnij to w w schemacie i w programie bo z tego co podałeś jest trochę namieszane. Ja to wpisywałem dla swoich połączeń i z jednym czujnikiem z przodu a trzema na dole.
Po piąte, zaraz zapodam jakiś poukładany schemat i program.
[ Dodano: 28 Lip 08 06:30 ]
Ok, mam zrób to tak:
| Kod: | $regfile = "2313def.dat" 'określenie uC
$crystal = 1000000
'$noramclear
'Stan początkowy portów
Config Portb = Output
Config Portd = Input
Portb = &B00000000
Portd = &B00000000
'Określenie wyjść"
Motor_pp Alias Portb.2 'prawy silnik do przodu
Motor_pt Alias Portb.3 'prawy silnik do tyłu
Motor_lp Alias Portb.4 'lewy silnik do przodu
Motor_lt Alias Portb.5 'lewy silnik do tyłu
Sensor_p Alias Pind.3 'czujnik prawy
Sensor_s Alias Pind.4 'czujnik środkowy
Sensor_l Alias Pind.5 'czujnik lewy
'Polecenia wydawane na podstawie stanów wejściowych:
Do
If Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 1 Then
Gosub Go
Elseif Sensor_l = 0 And Sensor_s = 1 And Sensor_p = 1 Then 'Skręć w lewo
Gosub Lewt
Elseif Sensor_l = 0 And Sensor_s = 0 And Sensor_p = 1 Then 'Skręć w lewo
Gosub Lewt
Elseif Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 0 Then 'Skręć w prawo
Gosub Righ
Elseif Sensor_l = 1 And Sensor_s = 1 And Sensor_p = 0 Then 'Skręć w prawo
Gosub Righ
End If
Loop
'Tryby pracy silników dla poszczególnych ruchów:
Go: 'Przód
Motor_lt = 1
Motor_pt = 1
Return 'Lewo
Lewt:
Motor_lt = 0
Motor_pt = 1
Return
Righ: 'Prawo
Motor_lt = 1
Motor_pt = 0
Return
|
//daniel93
Poprawiłem błąd: attiny2313 ma 1Mhz na standardowych fusach, a nie 10Mhz.
|
|
|
|
|
 |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 28 Lip 08 06:51
|
|
|
Ja mam tak jesli chodzi o kod
| Kod: |
$regfile = "2313def.dat"
$crystal = 4000000
'$noramclear
Config Portb = Output
Config Portd = Input
Portb = &B00000000
Portd = &B00000000
Czujnik_p Alias Pind.3
Czujnik_s Alias Pind.4
Czujnik_l Alias Pind.5
Silnik_lp Alias Portb.0
Silnik_lt Alias Portb.1
Silnik_pp Alias Portb.3
Silnik_pt Alias Portb.2
Do
If Czujnik_l = 0 And Czujnik_s = 1 And Czujnik_p = 0 Then 'jedzie prosto
Gosub Jedz
Elseif Czujnik_l = 1 And Czujnik_s = 0 And Czujnik_p = 0 Then 'skreca w lewo
Gosub Lewo
Elseif Czujnik_l = 0 And Czujnik_s = 0 And Czujnik_p = 1 Then 'skreca w prawo
Gosub Prawo
Elseif Czujnik_l = 1 And Czujnik_s = 1 And Czujnik_p = 0 Then 'skrecaj w lewo
Gosub Lewo
Elseif Czujnik_l = 0 And Czujnik_s = 1 And Czujnik_p = 1 Then 'skrecaj w prawo
Gosub Prawo
End If
Loop
Jedz:
Silnik_lp = 1
Silnik_pp = 1
Return
Lewo:
Silnik_lp = 0
Silnik_pp = 1
Return
Prawo:
Silnik_lp = 1
Silnik_pp = 0
Return
Stuj:
Silnik_lp = 0
Silnik_pp = 0
Return
|
A robocik zbudował z takiego schematu
Fusy mam tak ustawione
CKDIV8=bez ptaszka
CKOUT=bez ptaszka
SUTy niepamiętam
CKSEL3=ptaszek
CKSEL2=ptaszek
CKSEL1= bez ptaszka
CKSEL0=ptaszek
Poradzcie mi bo własnie wczytałem prawidłowy HEX i działa ale nie dokonca to musi byc jakoś oswietlone ? |
|
|
|
|
 |
Kaytec

Pomógł: 2 razy Posty: 51 Otrzymał 3 piw(a) Skąd: Olsztyn
|
Wysłany: 28 Lip 08 07:12
|
|
|
| Wydaje mi się że problem tkwi w czujnikach, brakuje układu komparatora (pierwszy post jest na schemacie), przy tym programie i schemacie podstawą działania jest to żeby mikrokontroler dostawał idealne zera i jedynki, a nie analizował wartość napięcia na fototranzystorze . Słowem: zrób komprator. |
|
|
|
|
 |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 28 Lip 08 07:26
|
|
|
| Powiedzcie mi jak ustawić CKSELy zeby było 1 Mhz CKDIV8 juz zaptaszkowałem |
|
|
|
|
 |
Kaytec

Pomógł: 2 razy Posty: 51 Otrzymał 3 piw(a) Skąd: Olsztyn
|
Wysłany: 28 Lip 08 09:36
|
|
|
W pony prog:
CKDIV8 - zaznaczony
SUTO - zaznaczony
CKSEL3 - zaznaczony
CKSEL1 - zaznaczony
CKSEL0 - zaznaczony
reszta odznaczona, w programie dajesz $crystal = 1000000 (załaduj i podłącz tak jak pokazałem na schemacie w moim poprzednim poście) |
|
|
|
|
 |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 29 Lip 08 12:27
|
|
|
| Ok tak mam a powiedz mi do czego jest ten 4 sensor ? |
|
|
|
|
 |
Kaytec

Pomógł: 2 razy Posty: 51 Otrzymał 3 piw(a) Skąd: Olsztyn
|
Wysłany: 29 Lip 08 05:14
|
|
|
| No ten układ może obsługiwać max 4 czujniki, jak nie chcesz czwartego to go nie rób/ nie podłączaj. |
|
|
|
|
 |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 29 Lip 08 06:44
|
|
|
Jasne ze zrobie jakby coś to poprostu go odłącze i już to teraz na zakupy
[ Dodano: 29 Lip 08 07:51 ]
Jeszcze jedno pytanie ten kod co go podałem napoczątku zmiescił ci sie na attiny ? bo po przekomplikowaniu wazy 4 Kb
[ Dodano: 29 Lip 08 08:05 ]
A wpadłem na taki pomysł ze gdy robocik wyjedzie poza linie zeby zaczął się kręcic wkoło jeden silnik w jedną strone, a drugi w drugą widziałem gdzies taki scalak to tego chyba sie nazywa BAL6686 |
|
|
|
|
 |
Kshaq

Pomógł: 1 raz Posty: 87 Otrzymał 29 piw(a) Skąd: Sosnowiec
II miejsce w konkursie na najlepszy artykuł.
|
Wysłany: 29 Lip 08 07:53
|
|
|
| Black Rider napisał/a: |
A wpadłem na taki pomysł ze gdy robocik wyjedzie poza linie zeby zaczął się kręcic wkoło jeden silnik w jedną strone, a drugi w drugą widziałem gdzies taki scalak to tego chyba sie nazywa BAL6686 |
Jest więcej takich scalaków. Najpopularniejsze tutaj to chyba L293D i L298. Zresztą L293 masz w schemacie w pierwszym poscie. Równoczesne obracanie silników w różne strony to tylko kwestia podania odpowiednich sygnałów na sterownik, w przypadku L293D podajesz 5V na nóżki 2 i 10 a 0 na 7 i 15, lub odwrotnie. |
|
_________________ Pozdrawiam,
Rafał. |
|
|
|
 |
Kaytec

Pomógł: 2 razy Posty: 51 Otrzymał 3 piw(a) Skąd: Olsztyn
|
Wysłany: 29 Lip 08 10:36
|
|
|
Widzę że nie chciało ci się nawet czytać/analizować programu który podałeś. Przecież to dokładnie tak działa, z tym że jeden silnik zatrzymuje się w miejscu (l293d łączy jego bieguny). Zrób po prostu układ według schematu i zaprogramuj go tak jak ci podałem.
Pozdro. |
|
|
|
|
 |
Black Rider


Posty: 11 Otrzymał 1 piw(a) Skąd: Łask
|
Wysłany: 30 Lip 08 09:38
|
|
|
No ale jak ten sygnał odwrócić? powiedzcie mi ja dopiero zaczynam i lubie sobie robić problemy
[ Dodano: 30 Lip 08 10:44 ]
I zle mnie zrozumieliscie mi chodzi o to ze gdyby robocik wypadł poza linie to zeby zaczął się kręcic w koło jednen silnik w tą drugi odwrotnie jak to programowo zrobić?
[ Dodano: 30 Lip 08 10:56 ]
http://www.tme.eu/pl/kata...9016390a227caac
Ten L298 wygląda jak TDA2005 więc jak to zrobić programowo?
[ Dodano: 30 Lip 08 11:22 ]
Hmm jak popatrzyłem sobie na kod to czemu wszystko jest do tyłu przeciez silniczki powinny jechac do przodu więc powinno byc tak ze np lewy silnik tył 1 i prawy silnik przód 1 tak? |
|
|
|
|
 |
|
|