Skocz do zawartości

[Dla początkujących] Przepis na robota - w pełni programowalny Line Follower


Nawyk

Pomocna odpowiedź

trolu96, a więc tak, w przypadku punktów 1 oraz 2 wszystko zależy od tego jak go zaprogramujesz, zrobi to co mu skażesz zrobić. Do punktu 3, ogólnie do Line Follower'ów stosuje się jak najszybsze silniki, aby uzyskać jak najlepsze rezultaty, lecz w przypadku tej konstrukcji lepiej zastosować silniki z wolniejszymi przekładniami, chodź ten silnik też się nada.

Link do komentarza
Share on other sites

Witam.

Mam problem z robotem;/

Lewy silnik sie ciagle kreci,a gdy zaslonie wszystkie czujniki to sie zatrzymuje natomiast prawy ani drgnie. (na nozkach L293D od prawego silnika nie ma napiecia, program wgralem z tematu)

__________

Komentarz dodany przez: Sabre

Link do komentarza
Share on other sites

Witaj,

1. schemat to podstawa.

2. jak już go narysujesz na bazie zbudowanego przez Ciebie układu, to przeczytasz dokładnie artykuły z działu Zasilanie i zakłócenia z poniższego linku i naniesiesz poprawki zarówno na schemacie jak i w projekcie.

3. Dopiero wtedy, gdy po tych poprawkach nie będzie Ci działać, wkleisz schemat i program.

Link: http://mikrokontrolery.blogspot.com/p/spis-tresci.html#dzial_zasilanie_zaklocenia

Jeżeli tego nie zrobisz, będziesz następnym początkującym w statystykach piekielnych (niektórzy już wiedzą o co chodzi).

Link do komentarza
Share on other sites

dondu, czemu piszesz Deez123 zanim narysuje schemat, żeby naniósł poprawki? Przeczytaj sobie to samemu i wtedy może zauważysz, że wysunąłeś na siłę argument, żeby tylko wpakować tu link do swojej strony.

Moja rada: musisz oczywiście narysować schemat, a żeby uniknąć błędów, a nie je poprawiać, przejrzyj na forbocie tematy z prośbami o sprawdzenie schematu. Tam jest dużo typowych błędów i informacji jak powinno to być poprawione. Tych tematów jest masa.

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

dondu, czemu piszesz Deez123 zanim narysuje schemat, żeby naniósł poprawki?

Przeczytaj post jeszcze raz i postaraj się zrozumieć tekst pisany, z wyszczególnionymi punktami i interpunkcją ... dla uproszczenia zrozumienia:

schemat to podstawa ... jak już go narysujesz na bazie zbudowanego przez Ciebie układu ... to przeczytasz dokładnie artykuły z działu Zasilanie i zakłócenia z poniższego linku i naniesiesz poprawki zarówno na schemacie jak i w projekcie.

"Polska języka, trudna języka" - Mugabe Mutoja.

Link do komentarza
Share on other sites

Deez123, przede wszystkim nie testuj robota w powietrzu, tylko połóż go na kartce z linią, albo chociaż trzymaj trochę nad. Kod daleki jest od ideału, dlatego zawsze "faworyzuje" jeden z czujników (ten, który sprawdza pierwszy).

Po drugie - ile prądu pobierają silniki? Sprawdzałeś sam silnik, czy jest sprawny?

Po trzecie - sprawdź połączenia. Przede wszystkim spójrz przez aparat np. w komórce na czujniki włączonego robota; wszystkie powinny świecić się na fioletowo (albo coś w okolicach tego koloru).

Zakłócenia to ulubiony temat dondu, ale w tym układzie, przy zastosowaniu silników pobierających kilkaset mA i zasilaniu z akumulatora są pomijalnie małe.

Link do komentarza
Share on other sites

... ale w tym układzie, przy zastosowaniu silników pobierających kilkaset mA i zasilaniu z akumulatora są pomijalnie małe.

Nie doceniasz silników i generowanych przez nie zakłóceń, niezależnie czy to malutka wibracja w telefonie, czy silnik napędzający robota.

Patrząc na te niewyraźne zdjęcia można zauważyć, że autor tematu nie ma ani jednego kondensatora filtrującego, ani nawet resetu podciągniętego do Vcc.

Więc jeżeli autor nie chce biadolić (jak wielu wcześniej), czemu znowu coś nie działa jak trzeba, nie działa wcale lub co gorsza dlaczego ten Atmel znowu padł, to niech stosuje się do praw fizyki, o których producenci przypominają w datasheetach, a nauczyciele na lekcjach.

Zakłócenia to ulubiony temat dondu, ...

Tak to prawda, ale to dzięki temu, że początkujący nie wiedzą jak bardzo jest to istotne (to naturalne), ale też dlatego, że w sieci znajdują podpowiedzi, które delikatnie mówiąc - są niewłaściwe 🙂

A przecież tak niewiele kosztuje spokój - kilkadziesiąt groszy: http://mikrokontrolery.blogspot.com/2010/11/lekcewazyc-czy-nie.html

Link do komentarza
Share on other sites

że w sieci znajdują podpowiedzi, które delikatnie mówiąc - są niewłaściwe 🙂

I właśnie dlatego zawsze warto korzystać z wiarygodnych informacji:

http://www.atmel.com/

O ile angielski techniczny nie każdy musi znać, to schematy są uniwersalną formą przekazu i znajdują się w każdej nocie katalogowej procesorów AVR.

  • Lubię! 1
Link do komentarza
Share on other sites

Witam. Stworzyłem line followera korzystając ze schematu na pierwszej stronie tego tematu, jako że to mój pierwszy robot, zrobilem wszystko dokladnie tak jak opisal to autor. Chciałem oprogramować go w C, wiec staralem się stworzyć dla niego kod, jednak mam problemy w czasie kompilacji. Podczas pisania, korzystalem z rozwiazania z tej strony:

https://www.forbot.pl/forum/topics49/c-problemy-z-programem-do-line-follower-na-atmega8-i-l293d-vt2698.htm

jednakze tam autor podpial wyjscia pod inne porty, wiec staralem sie zrobić to zgodnie ze schematem z 1 strony:

//lf.c - program do obslugi linefollowera
#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>                


void skret_lewo(){
PORTD |= _DV(0);	 
PORTD &= ~_DV(1);
PORTD &= ~_DV(3);
PORTD &= ~_DV(4);

PORTB &= ~_BV(1);	
PORTB &= ~_BV(2);
}

void skret_prawo(){
PORTD &= ~_DV(0);	 
PORTD &= ~_DV(1);
PORTD |= _DV(3);
PORTD &= ~_DV(4);

PORTB &= ~_BV(1);	
PORTB &= ~_BV(2);
}

void prosto(){
PORTD |= _DV(0);	 
PORTD &= ~_DV(1);
PORTD |= _DV(3);
PORTD &= ~_DV(4);

PORTB &= ~_BV(1);	
PORTB &= ~_BV(2);
}

int main(void)
{	
while(1){
	//wykrywanie linii w czujniku 
	if(!(PINC & 0x01)) skret_lewo();
	else if(!(PINC & 0x02)) prosto();
	else if(!(PINC & 0x04)) skret_prawo();
	else prosto();
}

}

W czasie kompilacji program wyrzuca mi bledem:

undefined reference to `_DV'

Po lekturze datasheeta oraz powyzszego przykladu, bylem pewien ze piny B programujemy poprzez _BV, natomiast D (pod ktore na schemacie podpiety jest mostek H, a przez to i silniki) jako _DV. Gdzie się mylę?

Link do komentarza
Share on other sites

W czasie kompilacji program wyrzuca mi bledem:

undefined reference to `_DV'

Po lekturze datasheeta oraz powyzszego przykladu, bylem pewien ze piny B programujemy poprzez _BV, natomiast D (pod ktore na schemacie podpiety jest mostek H, a przez to i silniki) jako _DV. Gdzie się mylę?

_BV() to nazwa funkcji ustawiającej bit i nie ma nic wspólnego z nazwą portu B.

Zamien wszystkie _DV na _BV i będzie OK.

A najlepiej nie stosuj _BV() tylko przesuwanie bitowe zapisane tak:

//zamiast tak:
PORTB &= ~_BV(2); 
if(!(PINC & 0x01)) skret_lewo(); 

//stosuj tak:
PORTB &= ~(1<<PB2);
PORTD |= (1<<PD1) | (1<<PD0); 
if(!(PINC & (1<<PC0))) skret_lewo(); 
... itd. 

To zwiększy przejrzystość Twojego kodu. Więcej informacji tutaj: http://mikrokontrolery.blogspot.com/2011/04/problemy-c-ustawianie-i-zerowanie-bitow.html

Link do komentarza
Share on other sites

Witam

na schemacie zamieszczonym w załączniku przez Nawyka są kondensatory, a na liście rzeczy do kupienia ich nie ma. Czy mam je uwzględnić czy ominąć?

Link do komentarza
Share on other sites

Czy mi się wydaje, czy inaczej jest podłączona Atmega8 na obrazku, a inaczej na schemacie

Nie wydaje Ci się. Schemat związany z obrazkiem niedawno podmieniłem, bo ludzie kopiowali do innych swoich konstrukcji rozwiązania...dalekie od ideału (czyt. maksymalnie uproszczone). Aktualny schemat jest w 100% zgodny ze sztuką i "elegancki", natomiast złożenie robota na podstawie obrazków z instrukcji jest jak najbardziej ok i jeszcze nie spotkałem się z tym, żeby komuś robot z artykułu nie działał przez wzgląd na przyjęte w nim uproszczenia. Zawsze były to błędy w połączeniach lub zbyt prądożerne silniki.

W przyszłości spróbuję artykuł "odświeżyć", ale na razie musi niestety zostać tak jak jest.

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.