Правильное решение - поставить переменный резистор и получить практически серву. Такое ощущение, что мы скоро траффика на обсуждение темы потратим больше, чем стоимость сервы
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Понятное дело прилепить пружины намного легче, но в этой конструкции они не помогут, опишу ситуацию: при остановленном двигателе, я поворачиваю колёса руками (пытаюсь вернуть в среднее положн) и в редукторе шестерни не крутятся а начинают проскакивать (редуктор червячный) т.е. если в эту конструкцию поставлю пружини такой силы, колёса просто не будут поворачиватся.
Сегодня вечером попробую немного пошаманить с редуктор может и обойдётся пружинами.
Последний раз редактировалось Lema100 18 июл 2008, 16:51, всего редактировалось 1 раз.
Это хорошая новость. С червячным редуктором отклонения прст не будет (т.к. придется приложить немалую силу чтобы сдвинуть колеса). Позже напишу маленький кусочек, который управляет поворотом.
ну слоф нету просто 210 рублей стоит серва самая простая это для студента 2 раза пива попить с кальмарами
так нет же будут сидеть на форуме вторую страницу обсуждений вести как бы выкрутится
во вторых есть такие 2х позиционные выключатели в сидируме используется обычно есть 3 состояния 1. движок по середине сигнала нету 2. лоток поехал в одну сторону, движок наклонён в сторону, сигнал на одной ноге 3. лоток поехал в другую сторону, движок наклонён в другую сторону, сигнал на второй ноге
либо тупо ставим 2 микрика склеенных друг с другом ровно по центру когда руль прямо ни один не работает когда руль вправо или влево работает один из двух микриков
на самом деле нам не надо 2 микрика достаточно одного мы же знаем вправо или влево руль выкручен значит и знаем в какую сторону крутить чтоб в ноль встать а если допустим питание сбросилось и руль повернули насильно то просто рыскаем вправо влево пока не сработает микрик калибруемся так сказать на центральной точке
Простите, Мур, но обсуждение велось по поводу того, что при движении руль могло сдвинуть, но теперь, когда известно про червячный редуктор, эта возможность отпадает.
вот уж нет изначально было сказано что даже сильная пружинка не может редуктор провернуть обратно в ноль а значит при движении тем более колёса самопроизвольно не повернуться и неважно червячный или нет там редуктор =)
Добавлено спустя 1 час 21 минуту 51 секунду: Заранее прошу прощения за то, что всю ветку жестко тупил (прст когда-то делал такую же, только там необходимо было удерживать руль поворота двигателем). Итак, алгоритм. Машинка запоминает текущее положение руля. При команде свыше, она сдвигает рулевую ось. Дабы избежать использования концевых датчиков, используется задержка по времени. Т.е. считается, что двигатель сдвинет рулевую ось из центрального, допустим, положения, в любое из крайних за 300мс (используется максимально возможное). Тогда: Заголовок:
#define M_F PORTB.7 //обозначения #define M_B PORTB.6 //принятые для удобства восприятия #define T_R PORTB.5 //компилятор вместо первого слова поставит второе #define T_L PORTB.4 //т.е. вместо T_L будет PORTB.4 #define C_D PIND.6
// Declare your global variables here unsigned char this_move; //запоминаем текущее движение enum {L,R,C}; //массив видов движений
void turn(unsigned char direction) //объявляем ф-ю поворота { switch (direction) //выбор из вариантов ниже { case L: //первый вариант T_L=1; //запускаем поворотные двигатели T_R=0; if (this_move==R){delay_ms(300);}; //ждем некоторое время(измеряется опытным путем) if (this_move==C){delay_ms(150);}; T_L=0; //останавливаем двигатели T_R=0; this_move=L; //теперь мы на левой позиции break; case R: //второй вариант T_L=0; //аналогично T_R=1; if (this_move==L){delay_ms(300);}; if (this_move==C){delay_ms(150);}; T_L=0; T_R=0; this_move=R; break; case C: //третий вариат switch (this_move) //выбираем где мы находимся { case L: //если слева, то T_L=0; //запускаем поворот вправо T_R=1; while (C_D){}; //ждем пока датчик не пискнет о том, что достигли центра T_L=0;T_R=0; //останавливаем двигатель this_move=C; //теперь мы на центре break; case R: T_L=1; T_R=0; while (C_D){}; this_move=C; break; } break; } }
void init(void) { T_L=1;T_R=0; //поворачиваем влево delay_ms(300); //ждем T_L=0;T_R=1; //поворачиваем вправо while(C_D){}; //до центра T_L=0;T_R=0; //и останавливаем движок this_move=C; //теперь рулевая ось в центре }
Полный текст во вложении. Сейчас программа - это заглушка, проверяющая принцип поворота. Если тест окажется успешным, то можно будет реализовывать грамотную программу с добавлением таймеров. P.S. Спойлеры не работают?
ну слоф нету просто 210 рублей стоит серва самая простая это для студента 2 раза пива попить с кальмарами
В этом проблемы особо нету 200р я готов заплатить, но у нас в городе я незнаю, где продают сервы облазив в этот вторник весь радиорынок я таких не видел. А заказывать через интернет магазин - это плюс доставка и неизвестно скока она будет идти (все знают как у нас почта работает).
Myp писал(а): на самом деле нам не надо 2 микрика достаточно одного мы же знаем вправо или влево руль выкручен значит и знаем в какую сторону крутить чтоб в ноль встать а если допустим питание сбросилось и руль повернули насильно то просто рыскаем вправо влево пока не сработает микрик калибруемся так сказать на центральной точке
помоему про один датчик я говорил на первой странице, но идею забраковали . MiBBiM СПАСИБО за помощь.