Strona Główna
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy RegulaminRegulamin  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj




H-bridge!

Przyszłość jest w naszych rękach...
...bo przyszłość to robotyka.





Poprzedni temat «» Następny temat
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].
Postaw piwo autorowi tego posta
 
 
Wyświetl szczegóły
misiek1994 



Pomógł: 2 razy
Posty: 191
Otrzymał 13 piw(a)
Skąd: z Sędziszowa
Ostrzeżeń:
 1/3/4
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).
Postaw piwo autorowi tego posta
 
 
 
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
Postaw piwo autorowi tego posta
 
 
misiek1994 



Pomógł: 2 razy
Posty: 191
Otrzymał 13 piw(a)
Skąd: z Sędziszowa
Ostrzeżeń:
 1/3/4
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??
Postaw piwo autorowi tego posta
 
 
 
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
Postaw piwo autorowi tego posta
 
 
misiek1994 



Pomógł: 2 razy
Posty: 191
Otrzymał 13 piw(a)
Skąd: z Sędziszowa
Ostrzeżeń:
 1/3/4
Wysłany: 28 Lip 08 01:50   

Pokaż screen z programowania.
Postaw piwo autorowi tego posta
 
 
 
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
Postaw piwo autorowi tego posta
 
 
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.
Postaw piwo autorowi tego posta
 
 
 
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 ?
Postaw piwo autorowi tego posta
 
 
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.
Postaw piwo autorowi tego posta
 
 
 
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
Postaw piwo autorowi tego posta
 
 
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)
Postaw piwo autorowi tego posta
 
 
 
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 ?
Postaw piwo autorowi tego posta
 
 
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.
Postaw piwo autorowi tego posta
 
 
 
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
Postaw piwo autorowi tego posta
 
 
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ł.
Postaw piwo autorowi tego posta
 
 
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.
Postaw piwo autorowi tego posta
 
 
 
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?
Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


website uptime

Powered by phpBB modified by Przemo © 2003 phpBB Group
REKLAMAPorównywarka cen elektronikiLove and Lighttaniec z gwiazdamitaniec nowoczesny Warszawakredyt przez internetneroBearShare