Покажи участието

От тук може да видиш всички публикации на този потребител.


Публикации - yasko

Страници: 1 2 3 [4] 5 6 ... 31
46
Съгласен съм, че няма универсални неща. Реших все пак да направя прототип на идеята за кръгла платформа. С помощта на моя млад колега Иван, който ми съдейства за направа на чертежите се получи платформата от снимката. Изработена от 3mm плкесиглас чрез лазерно рязне. Диаметър 150mm, колелата са 60mm, редукторите с планките за закрепяне са от Олимекс. Третата опора е изработка на Слави (spp), още от предните платформи. Все още не съм тествал динамиката на платформата с малко електроника, но първо трябва да се подобри сцеплението на колелата с някакъв вид ластик или гума.

47
Електроника / Re: Схема на зарядно.
« -: Август 02, 2015, 10:37:48 am »
Здравей,
Мислил ли си за варианта да ползваш NiMH АА батерии като алтернатива? По-достъпни са и има готово зарядни.
Литиевите батерии не са толерантни към грешки и ако ги презаредиш има опасност да се запалят. Като цяло мисля че не са подходяши за начинаещи.
Може да видиш тази тема  за информация: http://www.robotics-bg.com/discussion/index.php?topic=431.0
Ако все пак искаш да слагаш литиеви батерии ще трябва повече информация. Какво е максималното работно напрежение на този джип, т.е може ли да издържи 2 Li-Ion батери последователно (Umax=8,4V)? Какъв е максималния консумиран ток?


48
Здравей.
Мисля че е добре да погледнеш първо тази тема: http://www.robotics-bg.com/discussion/index.php?topic=1826.0
Там има полезна информация относно дефиницията на въртящия момент. За това което искаш да направиш ти трябват минимум 2.5Nm мотор, това е еквивалентно на 25kg*cm. Така че 4.4kg*cm е доста далече от това, което ти трябва. Тук е нужен по сериозен мотор.
Не си казал за този въртящ момент дали е на удържане или искаш да има движение при тези стойности.  И защо си избрал стъпков мотор? Серво машинка не ти ли върши работа?
Потърси в нета за стъпкови мотoри. Може да погледнеш тук: http://www.exoror.com/motor_stp.htm или тук:  http://tinel.com/page/main/stupkovi , за да добиеш представа.

50
Здравей,
Има различни прични за този проблем.  Много е важно как са разположени модулите, особено при тези с вградена антена. Тези модули работят на 2.4GHz, а там обхвата е доста пренаслен.  Друг възможен проблем са електромагнитни смущения от другата електроника. Моя съвет е да пробваш втория модел с външни антени. Потърси в каталога на Комета за "RPSMA" антени.  Имат такива модели. Антени от безжичен рутер на 2.4GHz също вършат работа.
Преди време ползвах Xbee  модули за един мобилен робот. Бяха с външни антени (u.fl антена) и мисля че постигаше 50-100 м.  После минахме на управление през wi-fi.  При него с външни антени и стандартен wireless  мисля, че правеше не повече от 100м. Проблем е че при 2.4GHz и най-малкото препядствие оказва влияние, особено когато антените са разположени ниско.

51
Здравей,
Нещата, които набюдаваш са нормални. При ниските обороти очевидно тока през мотора е малък и съответно няма въртящ момент и може да го спреш с ръка. Мотора все пак се опитва да компесира ситуацията и тока нараства. При DC моторите  тока при блокиран ротор (stall current) е много по-голям от номиналния ток. Затова е най-добре DC моторите да се управляват по ток особено когато се ползват като тягови двигатели. Схемата в момемта регулира само изходното напрежение и трябва да тестваш дали е подходяща за твойто приложение.Може да се помисли и да се въведе ограничение по ток, но ще трябва допълнителна електроника.

52
Здравейте,
Обикновена тази задача в роботиката се решава с ротационен енкодер подобен на тези, които се използват в CNC машините. Има инкрементални и абсолютни енкодери. При абсолютните енкодери няма нужда от начално нулиране.  Обикновено работят на оптичен или магнитен принцип, оптичните са по-прецизни, но и доста по-скъпи. Магнитните енкодери (Magnetic Rotary Encoder) са по достъпни, като има и готови схеми (примерно AS5040), с които лесно може да се направи магнитен енкодер при наличие на механика.
Мисля че със жироскопа е загубена казуа, преди време съм пробвал и имах подобни проблеми. Каква скорост и  точност се търси за Вашата задача?

53
Да попитам какво стана с проекта? Активен ли е още? Напоследък не ми остава много време за форума, но тествах един алгоритъм за измерване честота на въртене. Ако те интересува още мога да го кача.

54
Здравей и добре дошъл във форума!
За да може да захраниш Raspberry Pi 2 е необходимо да понижиш напрежението на батериите 9V (6x1.5V) до 5V.   Най-добре е това да стане с импулсен регулатор на напрежние (DC-DC  конвертор), тъй като те имат висока ефективност. За да може да избереш подходящ регулатор трябва да знаеш няколко параметъра - изх. напрежение, максмален изх. ток, максимално вх. напрежение.  Каква е очакваната консумация от Raspberry?
Регулатора от Роботев изглежда подходящ, изходен ток от 3А трябва да е достатъчен.  Преди време бях попаднал на този сайт тук има доста модули, но нямам конкретни впечатления.
Като цяло няма проблем да захраниш и Raspberry от батериите. Въпроса е каква автономност ще имаш в този случай.
Проекта е интересен, ще се радвам да разкажеш повеч за него.

55
Не четеш внимателно.  Функцията  delay_ms не е вградена и  трябва да я добавиш към кода, за да може да я ползваш.
//функция генерираща закъснение в диапазона 1 -65535 ms
void delay_ms(unsigned int ms)
{
while (ms>0){
_delay_ms(1);
ms--;
}

}

56
Прочети внимателно темата. В линка по-долу съм обяснявал защо не може да се ползвава _delay_ms() за големи закъснения.
http://www.robotics-bg.com/discussion/index.php?topic=33.msg1675#msg1675

57
Малко да уточним за честотите и времената- с F съм  означил честотта на въртене на педлалите. Нека означим с Fp честота на импулсите от датчика. При 8 магнита следва че Fp=8*F, съответно Tp=T/8.  Ти си написал че Fp(min) = 4Hz, оттук следва че Тp(max)=250ms, а не 30ms както си написал. Тези стойност съответстват на едно завъртане на педалите за  2 сек. Ще те помоля да доутчним нещата.
Сега относно алгоритъма за мерене на време съсвесм набързо тествах:
//датчика е свързан на цифров пин 3
#define LED            13
#define INT1_PIN3       1     //прекъсване на пин 3

volatile int flag;
volatile int  t_old = 0, t_new, period;


void setup()
{
  pinMode(LED,OUTPUT);
  Serial.begin(38400);
  attachInterrupt(INT1_PIN3, int1_thandler, RISING);
}

void loop()
{
  if (flag) {
      flag = 0;
      Serial.println(period);
     
  }
}

void int1_thandler() //обработка на прекъсването на пин 3
{
 
  t_new = millis();
  period = t_new-t_old;
  t_old = t_new;
  flag = 1;
}

58
Всъщност предлагам да измерваме времето между две прекъсвания, т.е времето за преминаване на два съседни магнита  покрай сензора, което ще отговаря на звъртане на 1/8 от окръжността (45 deg) Ако означим това време с Тp, тогава F = 1/(8*Tp). Пример: ако измерим време 100ms, тогава F = 1/(8*0.1) = 1.25Hz.
Възниква въпроса колко да бъде максималното време между 2 импулса над което да приемем че, няма въртене т.е F = 0.
Стойността на PWM ще бъде пропорционална на честота на въртене на педалите - PWM[%]=k*F. Това е най-простия случай на линейна предвателна функция, но ще трябва да се провери дали е удачна.

59
Много добре изглежда.
Някои насоки за следващите стъпки по софтуера, както писах в предните постове ще мерим период, което значи, че ще измерваме времето между два фронта на постъпващите импулси. Един от вариантите е да вържеш входа на датчика на пин 3  и да закачиш прекъсване на този пин  (примерно по преден фронт). Вътре в прекъсването четеш текущата стойност на времето с помощта на функците millis() или micros(). Периода на импулса ще в равен на разликата в стойностите прочетени в две последователни прекъсвания.
Трябва да уточним диапaзонa на измерваните импулси за да може да се сложат граници на валидните стойности за измервания период.

60
Аз също не съм сигурен дали такъв сензор е подходящ, но смятам да направя някой друг реален опит. Ще пусна отделна тема където да обсъдим подобни системи за поливане.
А сега да се върна на кода за измерване на честота. Сигнала от таймер 555 го подавам на пин 3 на Ардуино. Измерването на честота става като се броят постъпилите  импулси за фиксиран  интервал от време (250ms). За да мога да броя импулсите на пин 3 съм закачил прекъсване по преден фронт. В него чрез променливата  pulsecount броя импулсите. Като измине зададения период, копирам получената стойност, нулирам брояча и почвам нов цикъл. Измерването на времето става чрез вградената функция millis(). Измерването не е супер точно, но за целите на експеримента  върши работа. Получения резултат го изкарвам на серийния монитор. Има реализиран прост прагов детектор с който управлявам светодиод на пин 13.
 
//сензора е свързан на цифров пин 3
#define LED            13
#define MainPeriod     250 // 4 измервания за секунда
#define F_TH           15000 //праг на сработване в Hz
#define F_MIN          5000  //минимална защитна честота
#define INT_PIN3       1     //прекъсване на пин 3

long t_start = 0; //
volatile unsigned int pulsecount=0;

void setup()
{
  pinMode(LED,OUTPUT);
  Serial.begin(9600);
  attachInterrupt(INT_PIN3, myinthandler, RISING);
}

void loop()
{
  unsigned long t_end = millis();
  if (t_end - t_start >= MainPeriod) {
      t_start = t_end;   
      unsigned long pcount = pulsecount*4;
      pulsecount = 0;
      Serial.print(" ");
      Serial.println(pcount);
      if (pcount < F_TH && pcount > F_MIN){
        digitalWrite(LED,HIGH);
      }
      else {
        digitalWrite(LED,LOW);
      }
  }
}

void myinthandler() // interrupt handler
{
  pulsecount++;
}

Страници: 1 2 3 [4] 5 6 ... 31