Witam,
jestem w trakcie budowy robota line follow'era.
Mój mikrokontroler to ATmega8, za czujniki wykorzystuję zaś trzy transoptory TCRT5000.
Schemat podłączenia:
Każde z wyjść czujników podłączam do pinów PC5, PC4 oraz PC3 mikrokontrolera (adc5, adc4, adc3).
W algorytmie wykorzystuję PWM, by sterować prędkością robota w zależności od położenia w stosunku do czarnej linii.
Poniżej przedstawiam wyniki pomiarów jakie odczytuję z czujników w danej chwili:
Wartości poniżej, zostały wyliczone z wzoru (Vin*5)/256. Napięcie odniesienia to AVCC, równy około 5V.
Kod odpowiedzialny za inicjalizację ADC, PWM oraz obsługę przerwania od ADC:
W programie sprawdzam odczyty z czujników i w zależności od tego z jakiego zakresu odczytam wyniki z odpowiednich transoptorów robot ma zachować się w konkretny sposób.
Kod prezentujący algorytm działania:
Niestety robot nie reaguje jak powinien - koła kręcą się z taką samą prędkością gdy czujniki mają pod sobą czarną linię, jak i białą. Pomiary robiłem kilka razy i przy różnym naświetleniu, wyniki za każdym razem były podobne.
Nie wiem czy problem jest w samym algorytmie, czy też chodzi o źle dobrane wartości w if'ach, a może to jeszcze coś innego?
Jest to mój pierwszy robot tego typu, stąd też nie jestem do końca przekonany, czy wszystko robię jak należy, dlatego proszę o zweryfikowanie mojego algorytmu i sposobu rozumowania.
Męczę się z tym już od kilku tygodni, więc każda rada oraz każdy pomysł będzie na wagę złota.
Pozdrawiam
jestem w trakcie budowy robota line follow'era.
Mój mikrokontroler to ATmega8, za czujniki wykorzystuję zaś trzy transoptory TCRT5000.
Schemat podłączenia:
Każde z wyjść czujników podłączam do pinów PC5, PC4 oraz PC3 mikrokontrolera (adc5, adc4, adc3).
W algorytmie wykorzystuję PWM, by sterować prędkością robota w zależności od położenia w stosunku do czarnej linii.
Poniżej przedstawiam wyniki pomiarów jakie odczytuję z czujników w danej chwili:
Wartości poniżej, zostały wyliczone z wzoru (Vin*5)/256. Napięcie odniesienia to AVCC, równy około 5V.
Kod odpowiedzialny za inicjalizację ADC, PWM oraz obsługę przerwania od ADC:
Kod: C / C++
W programie sprawdzam odczyty z czujników i w zależności od tego z jakiego zakresu odczytam wyniki z odpowiednich transoptorów robot ma zachować się w konkretny sposób.
Kod prezentujący algorytm działania:
Kod: C / C++
Niestety robot nie reaguje jak powinien - koła kręcą się z taką samą prędkością gdy czujniki mają pod sobą czarną linię, jak i białą. Pomiary robiłem kilka razy i przy różnym naświetleniu, wyniki za każdym razem były podobne.
Nie wiem czy problem jest w samym algorytmie, czy też chodzi o źle dobrane wartości w if'ach, a może to jeszcze coś innego?
Jest to mój pierwszy robot tego typu, stąd też nie jestem do końca przekonany, czy wszystko robię jak należy, dlatego proszę o zweryfikowanie mojego algorytmu i sposobu rozumowania.
Męczę się z tym już od kilku tygodni, więc każda rada oraz każdy pomysł będzie na wagę złota.
Pozdrawiam
