Автор Тема: Моят сумо робот  (Прочетена 43741 пъти)

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #15 -: Февруари 03, 2011, 02:52:32 pm »
Здравейте отново!
След няколко часа опити да програмирам микроконтролера се оказа че на другия ми компютър става а на този не...сигурно му има нещо на лпт порта.
Така, записах програмата но сега има друг проблем:
При подаване на сигнал към L293D за задвижване и на двете сервота се случва нещо странно...трепват много за малко, после спират за 3секунди и пак.
Когато откача едното серво, другото тръгва нормално. Като го свържа пак, и то тръгва (двете работят). От това излиза че двете сервота едновременно не могат да тръгнат, но защо?
Иван Петров 16г
skype: slayer_kolyo

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #16 -: Февруари 03, 2011, 03:11:23 pm »
Имам много добри новини  :D
Алгоритъмът работи  :clap: тествах го като към крачетата за сигналите към драйвера свързах светодиоди  :)
Сега остава да се оправи задвижването на моторите и да се сглобява робота  :-D

Ето кодът преработен за WinAVR с коментари на български
#include <avr/io.h>
#include <avr/delay.h>
#define F_CPU 8000000UL  // 8 MHz

int main(void) // Главна функция
{
DDRC=0x00; // Конфигуриране на всички пинове на порт С като входове
DDRD=0xFF; // Конфигуриране на всички пинове на порт С като изходи
PORTC=0xFF; // Активиране на pull-up резисторите на порт С
TCCR0A=(1<<COM0B1)|(1<<WGM01)|(1<<WGM00); // настройки на таймер 0
TCNT0=0; //
OCR0A=210;   //Настройване на 38 килохерца
OCR0B=105; // 50% коефициент на запълване
TCCR0B=(1<<WGM02)|(1<<CS00); // още настройки на таймер 0

_delay_ms(5000); // Начално забавяне 5 секунди

PORTD=0x5; // И двата мотора напред

while(1) // Основен безкраен цикъл
{
while((PINC&(1<<PC3))&&(PINC&(1<<PC2))) // Докато роботът не е на линията
{
if((PINC&(1<<PC5))&&(PINC&(1<<PC4))) PORTD=0x5; // Ако и двата инфрачервени сензора са неактивни, давай напред
else if((PINC&(1<<PC5))&&(!(PINC&(1<<PC4)))) PORTD=0x9; // Ако левият инфрачервен сензор е неактивен, а десният активен - завивай надясно
else if((!(PINC&(1<<PC5)))&&(PINC&(1<<PC4))) PORTD=0x6; // Ако левият инфрачервен сензор е активен, а десният неактивен - завивай наляво
else PORTD=0x5; // Ако и двата са активни - напред
}

if(!(PINC&(1<<PC3))) // Ако десният сензор за линия е активен
{
while(!(PINC&(1<<PC3))) // Давай назад докато е активен
{
PORTD=0xA;
}
PORTD=0x2;          // Завърти само левият мотор назад
_delay_ms(1500);   // за 1500ms
}

else // Ако левият сензор за линия е активен
{
while(!(PINC&(1<<PC2))) // Давай назад докато е активен
{
PORTD=0xA;
}
PORTD=0x8;          // Завърти само десният мотор назад
_delay_ms(1500);   // за 1500ms
}
}
}


Има две промени: времето за завъртане след дръпването от линията съм увеличил на 1,5 секунди, защото 300мс е твърде малко, а сервотата са бавни.
Тук няма отделни функции за движението, защото май само се усложнява кода.
Иван Петров 16г
skype: slayer_kolyo

sv_shady

  • Administrator
  • *****
  • Публикации: 636
    • Профил
Моят сумо робот
« Отговор #17 -: Февруари 03, 2011, 07:36:19 pm »
Ами най-вероятно тока не стига за двете сервота на куп. Каква батерия ползваш? Другия вариант е да внасят прекалено много смущения и да рестартират контролера. Сложи на всяко серво по успоредно, близко до сервото, по 100 микрофарада и кажи какви са резултатите.
Imagination is the only limit.......

Светлин Пенков
София / Рединг, Великобритания

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #18 -: Февруари 03, 2011, 08:58:24 pm »
Ползвам 9 волта от адаптор 1А, проблемът се оправи като вместо да подавам и към двата пина Enable по 9v (захранващо напрежение), подадох 5 волта от стабилизираното за микроконтролера. Може би 9 му е идвало в повече...

Имам един друг въпрос:
В кода, когато отначало включвам pull-up резисторите, през цялото време ли ще са включени? Ако външно се промени нивото (примерно стане 0), после крачето като се остави висящо все още ли ще има пул-уп резистори?
Иван Петров 16г
skype: slayer_kolyo

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #19 -: Февруари 04, 2011, 03:29:03 pm »
Ъпдейт  :)
Изглежда че съм изгорил двата таймера на Atmega88, и този с  PWM на Atmega8....причините: всеки опит го правих със свързване директно на NPN транзистор без резистор ( :? напълно забравих за това), та вече не излиза никаква честота...
Имам Attiny2313, който смятам че ще свърши работа, даже ще заема по-малко място. Проектът продължава с него. Ето я обновената схема:



Скоро ще пиша какви са резултатите  :)
Иван Петров 16г
skype: slayer_kolyo

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #20 -: Февруари 04, 2011, 07:20:57 pm »
Резултатите не са обнадеждаващи  :(
Имам 3 нови Attiny2313, и трите пробвах да прочета, всеки път изписва че няма устройство или не го разпознава...
Всичко по кабела е добре, с другите микроконтролери става, но точно с тези не!?
Някой срещал ли е такъв проблем?
Иван Петров 16г
skype: slayer_kolyo

zoro1

  • Global Moderator
  • *****
  • Публикации: 610
    • Профил
    • http://www.zoro1.com
Моят сумо робот
« Отговор #21 -: Февруари 05, 2011, 04:31:47 pm »
С каквъв програматор си?Да си объркал крачета?


...Великите нации  се държат като гангстери,а малките като проститутки...
И.Несторов
Skype:Zorro1430

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #22 -: Февруари 05, 2011, 04:52:22 pm »
Пробвах с два програматора:
-5 кабела
- Комбиниран програматор за микроконтролери и памети (от Млад Конструктор)
И при двата ми казва че не разпознава устройството
Пробвах с ponyprog, sinaprog, icprog - едно и също
Сигурно вече 50 пъти проверявам връзките - всичко е наред, но не иска да се програмира  :(
Иван Петров 16г
skype: slayer_kolyo

kotaraka

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
Моят сумо робот
« Отговор #23 -: Февруари 05, 2011, 08:58:58 pm »
Може 100 пъти да пробваш да записваш но няма да стане при положение че не намира контролера.
Прегледах набързо горната схема и ми се струва че свързването е правелно.
Ако си сигурен във връзката със програматора провери настройката на софтуера с който програмираш.
Дано да стане.
Радостин Киров   26г.     Бургас

http://vbox7.com/play:c8b99132
http://vbox7.com/play:c627c6b9

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #24 -: Февруари 06, 2011, 09:00:40 pm »
Проверих настройките - всичко е наред...
Пробвах и с BASCOM AVR, нищо не стана.
Утре ще взема един атмега88 и ще се реши проблема
Иван Петров 16г
skype: slayer_kolyo

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #25 -: Февруари 07, 2011, 01:47:54 pm »
Здравейте!
Имам няколко въпроса към хората които са се ползвали инфрачервени сензори на робот:
Ако това е основния дизайн на робота:



Къде е по добре да са светодиодите - отвътре или отвън?
На една линия ли трябва да са или едното да е по-напред?
Какъв е най-добрият ъгъл спрямо червената линия - 90, 60, 45?
Добре ли е да светят силно светодиодите?
Да ги облепям ли с нещо непрозрачно отстрани за да не светят в приемника?

Сега отивам до няколко магазина за електроника и тази вечер ще се занимавам с робота :D
Иван Петров 16г
skype: slayer_kolyo

zoro1

  • Global Moderator
  • *****
  • Публикации: 610
    • Профил
    • http://www.zoro1.com
Моят сумо робот
« Отговор #26 -: Февруари 07, 2011, 02:25:05 pm »
Това зависи от светодиодите който ползваш ,както и от приемниците.Трябва да експериментираш до постигане на задоволителен резултат.


...Великите нации  се държат като гангстери,а малките като проститутки...
И.Несторов
Skype:Zorro1430

mivr

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 118
    • Профил
Моят сумо робот
« Отговор #27 -: Февруари 07, 2011, 07:55:24 pm »
Малко не разбрах за кои сензори говириш за тези за линия или за разстояние?


Но все пак ще отговоря и на двата варианта:)
1.Ако говорим за сензори за линия е най-добре да си вземеш готови от роботев понеже всякакви други сензори не са много надежни за състезание и отнемат много повече време за подкарване(а както знаем времето е пари:))(не си струва да си спестиш 50ст. и да работиш 3 часа повече:))
2.Ако става на въпрос за сензори за разстояние е най-добре изобщо да не правиш сензори за разстояние от личен опит голяма гад са за подкарване и най-често се заглушават честотите на светодиодите и сензорите изобщо не работят на състезанието(така се случи с мен на последното състезание)
Затова ако искаш надежни сензори за разстояние просто си купи едни сензори SHARP от роботев работят перфектно и са много по-трудни за заглушаване (почти невъзможно)


Надявам се съветите ми да са ти от полза!:-D
Михаил Врачaнски 19год. В ТУ-София Автоматика

Skype: mivrmmm

email: [email protected]

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Моят сумо робот
« Отговор #28 -: Февруари 07, 2011, 09:47:59 pm »
По миналия ми пост: говоря за сензорите за разстояние.
Благодаря за съветите  :)  Все пак ще пробвам с това което имам, а ако не стане ще взема тези от роботев.

Вече имам работещ микроконтролер  :clap:
Успях да запоя TQFP корпуса на атмега8 (много дълго и мъчително беше  :roll: ) и утре вече започва работата по платката на робота    :-D
Очаквайте добри новини!
Иван Петров 16г
skype: slayer_kolyo

sv_shady

  • Administrator
  • *****
  • Публикации: 636
    • Профил
Моят сумо робот
« Отговор #29 -: Февруари 07, 2011, 10:03:37 pm »
Щом говориш за сензорите за разстояние, ето ти няколко съвета от личен опит.
Хубаво е за всеки сензор да имаш 2 излъчвателя и един приемник, разположен между тях. Така независимо от ъгъла на опонента ще можеш да го засечеш. Най - добрия вариант е да ползваш TSOP-и защото те държат ниско ниво докато попада инфрачервена светлина върху тях, което улеснява четенето има. Ако ползваш RPR-и тогава трябва да ги следиш с прекъсване на контролера. Също така ще е хубаво да сложиш по един тример/потенциометър, който да регулира тока през светодиодите, така че да можеш да регулираш разстоянието, на което "виждат" сензорите. Хубаво е също така да сложиш например черен термосвиваем шлаух върху диодите, така ще ограничиш ъгъла на разпространение на светлината. Също така, тъй като управляваш честотно диодите можеш да си позволиш им пускаш дори 1А, но за много кратко. Това изключително много увеличава чуствителността на сенозора, както и обхвата. И разбира се най-важното е да си настроиш точно честота, с която модулираш светлината.

Без лоши чуства към Мишо, но зависи как си направиш сенозрите. На последното състезание победих със сензори, които аз съм си правил.

Така, че просто трябва търпение и мислене. :)
Imagination is the only limit.......

Светлин Пенков
София / Рединг, Великобритания