Skocz do zawartości

program do linefollowera, prosze o sprawdzenie


mietek041

Pomocna odpowiedź

Witam

Buduje linefollowera. Robot zbudowany jest na atmedze8 i 5 czujnikach CNY70. Problem tkwi chyba w oprogramowaniu. Zaprogramowałem 5 ledów, które informują o stanie czujników. Po podłączeniu wszystkie diody świeca, ale silniki nie reagują. może problem tkwi w samych czujnikach, które nie reagują na linie. Oto kod.

$regfile = "m8def.dat"
$crystal = 16000000



Config Pinb.1 = Output
Config Pinb.2 = Output
Config Servos = 2 , Servo1 = Portb.1 , Servo2 = Portb.2 , Reload = 10
Enable Interrupts

Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Dioda1 Alias Portd.0
Dioda2 Alias Portd.1
Dioda3 Alias Portd.2
Dioda4 Alias Portd.3
Dioda5 Alias Portd.4


Config Pinb.0 = Input
Przycisk Alias Pinb.0

Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
Config Pinc.5 = Input
Czujnik1 Alias Pinc.5
Czujnik2 Alias Pinc.4
Czujnik3 Alias Pinc.3
Czujnik4 Alias Pinc.2
Czujnik5 Alias Pinc.1

Dioda1 = 1
Dioda2 = 1
Dioda3 = 1
Dioda4 = 1
Dioda5 = 1

Set Portb.0

Dim Aktywny As Bit
Aktywny = 0

Dim I As Integer
I = 10

Do
Gosub Sygnalizuj_czujniki
Debounce Przycisk , 0 , Startuj , Sub

If Aktywny = 1 Then
 Gosub Wysteruj
Else
 Servo(1) = 20
 Servo(2) = 20
End If
Loop
'-----------------

'---Przod
Wysteruj:
If Czujnik1 = 0 And Czujnik2 = 0 And Czujnik3 = 1 And Czujnik4 = 0 And Czujnik5 = 0 Then
 Servo(1) = 20 + I
 Servo(2) = 20 - I
End If

'---W prawo
If Czujnik1 = 0 And Czujnik2 = 0 And Czujnik3 = 0 And Czujnik4 = 0 And Czujnik5 = 1 Then
 Servo(1) = 20 + I
 Servo(2) = 20
End If

If Czujnik1 = 0 And Czujnik2 = 0 And Czujnik3 = 0 And Czujnik4 = 1 And Czujnik5 = 1 Then
 Servo(1) = 20 + I
 Servo(2) = 20
End If

If Czujnik1 = 0 And Czujnik2 = 0 And Czujnik3 = 1 And Czujnik4 = 1 And Czujnik5 = 1 Then
 Servo(1) = 20 + I
 Servo(2) = 20
End If

If Czujnik1 = 0 And Czujnik2 = 0 And Czujnik3 = 1 And Czujnik4 = 1 And Czujnik5 = 0 Then
 Servo(1) = 20 + I
 Servo(2) = 20
End If


If Czujnik1 = 0 And Czujnik2 = 0 And Czujnik3 = 0 And Czujnik4 = 1 And Czujnik5 = 0 Then
 Servo(1) = 20 + I
 Servo(2) = 20
End If

'---W lewo
If Czujnik1 = 1 And Czujnik2 = 0 And Czujnik3 = 0 And Czujnik4 = 0 And Czujnik5 = 0 Then
 Servo(1) = 20
 Servo(2) = 20 - I
End If

If Czujnik1 = 1 And Czujnik2 = 1 And Czujnik3 = 0 And Czujnik4 = 0 And Czujnik5 = 0 Then
 Servo(1) = 20
 Servo(2) = 20 - I
End If

If Czujnik1 = 1 And Czujnik2 = 1 And Czujnik3 = 1 And Czujnik4 = 0 And Czujnik5 = 0 Then
 Servo(1) = 20
 Servo(2) = 20 - I
End If

If Czujnik1 = 0 And Czujnik2 = 1 And Czujnik3 = 1 And Czujnik4 = 0 And Czujnik5 = 0 Then
 Servo(1) = 20
 Servo(2) = 20 - I
End If

If Czujnik1 = 0 And Czujnik2 = 1 And Czujnik3 = 0 And Czujnik4 = 0 And Czujnik5 = 0 Then
 Servo(1) = 20
 Servo(2) = 20 - I
End If



Return

Startuj:
Toggle Aktywny
I = I + 1
Return

Sygnalizuj_czujniki:
If Czujnik1 = 1 Then
 Dioda1 = 0
Else
 Dioda1 = 1
End If
If Czujnik2 = 1 Then
 Dioda2 = 0
Else
 Dioda2 = 1
End If
If Czujnik3 = 1 Then
 Dioda3 = 0
Else
 Dioda3 = 1
End If
If Czujnik4 = 1 Then
 Dioda4 = 0
Else
 Dioda4 = 1
End If
If Czujnik5 = 1 Then
 Dioda5 = 0
Else
 Dioda5 = 1
End If
Return
Link do komentarza
Share on other sites

nie rozumie pytania, chodzi o napiecia na czujniku ? na diodzie jest 1.15V, na tranzystorze 2,5V, calosc zasilam 3V

[ Dodano: 31 Sty 10 01:54 ]

udalo mi sie uruchomic wszyskie czujniki, kazdy z nich reaguje na zmiane podloza, o czym sygnalizuja diody, program zostal napisany ze wzoru, z ktorego wynika, ze musze zastosowac serwomechanizmy o ciaglej rotacji. Co to znaczy ? Sa to narmalne silniczki pradu stalego, czy przerobione serwomechanizmy, czy jeszcze cos innego ?

Link do komentarza
Share on other sites

ze wzoru, z ktorego wynika, ze musze zastosowac serwomechanizmy o ciaglej rotacji. Co to znaczy ?

Przerobione serwomechanizmy, ale zamiast nich możesz użyć silników DC z przekładnią

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

problem polega na tym, ze silniki nie reaguja, diody od czujnikow sygnalizuja wykrycie lini, ale silniki nie ruszaja, zauwazylem, ze gdy odwrotnie przyloze polaryzacje napiecia jeden z silnikow kreci sie,

Link do komentarza
Share on other sites

z mojej dedukcji wynika, ze mostek H jest zbedny, robot mial w zalozeniu skrecac w sposob jeden silnik stop, drugi start, a mozliwe jest dolaczenie do ukladu mostka H ? jezeli to niezbedne moge do dolutowac "na pajaka" i zmodernizowac program

Link do komentarza
Share on other sites

z mojej dedukcji wynika, ze mostek H jest zedny, robot mial w zalozeniu skrecac w sposob jeden silnik stop, drugi start

I co, zamierzasz zasilać silniki bezpośrednio z pinów procesora? Nie widzę nawet jednego tranzystora na tym schemacie.

Link do komentarza
Share on other sites

zasilanie do serw jest wyrowadzone zaraz przy tranzystorze na wejsciu, sygnal do serw chcialem pociagna z atmegi z pinow 15 i 16 (wg. mojego schematu),

Link do komentarza
Share on other sites

Wybacz, nie czytałem całego tematu, tylko odpowiedziałem na Twoje ostatnie pytanie. Skoro sterujesz serwami, to mostka nie trzeba.

Link do komentarza
Share on other sites

mam zapytanie, mianowicie z tego co wiem bede musial przerobic serwa modelarski (pozbyc sie ogranicznika na zebatce) ale czy serwo mege sterowac sygnalem PWN aby obracalo sie o wielokrotnosc kata 360 stopni ? mam problem z programem, serwa nie reaguja w ogole, bardzo prosze o przeanalizowanie programu przez jakas tega glowe, pisalem go ze wzorcow z internetu, nie jestem w tym mistrzem, moglem sie gdzis pomyslic, a z tego co mi sie wydaje o raczej wina programu, z strony elektroniki nie widze zadnych usterekt

[ Dodano: 03 Lut 10 11:34 ]

przed chwila, udalo mi sie uruchomic serwomechanizm, ale pojawily sie nowe problemy, pierwszy polega na tym, ze serwo przesowa sie o bardzo maly kat i zatrzymuje sie, dopiero kilkakrotne podlaczenia i odlaczenie napiecia powoduje dalszy ruch, drugim jest problem ogranicznika na kole zebatym, czy po jego usunieciu serwo bedzie krecic wielokrotnosc kata 360 stopni ?

Link do komentarza
Share on other sites

Po usunięciu blokady mechanicznej, będziesz miał jeszcze problem z potencjometrem. Skoro upierasz się na sterowanie takim serwem w sposób "tradycyjny", to przeczytaj mój temat, gdzie takie rozwiązanie wykorzystałem:

https://www.forbot.pl/forum/topics7/prototyp-robota-edukacyjnego-na-wakacyjne-zajecia-w-gimnazju-vt2157.htm

Możesz wykorzystać funkcję "servo" z bascoma, choć osobiście za nią nie przepadam z kilku opisanych już na forum względów...

Link do komentarza
Share on other sites

Zastanawiam się nad potencjometrem, w linku który został zamieszczony. W przerobionym serwie został "oryginalny" potencjometr czy był wlutowany nowy ? Na moje oko chyba był wlutowany nowy. Na ogół w serwach są montowane malutkie potencjometry sprzężone z półosią silnika w serwie. Moim drugim problemem jest to czy po obrocie serwa nie nastąpi zatrzymanie, a wznowienie obrotu będzie możliwe tylko przez ponowne podłączenie zasilania (mam taki problem przy moim obecnym programie), jestem ciekawy dlaczego tak się dzieje, może mi ktoś wytłumaczy zachowanie serwa na podstawie w/w program ?

(przepraszam za błędy, za dużo pośpiechu)

__________

Komentarz dodany przez: Sabre

Spodziewasz się pomocy od innych? To pisz tak aby każdy mógł cię zrozumieć!

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.