Автор Тема: Регулиране на обороти на постояннотоков двигател  (Прочетена 31671 пъти)

yasko

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

importante

  • Зомбиран Роботостроител
  • *****
  • Публикации: 178
    • Профил
Те нещата без няколко опита няма да станат, така е доста принципно, но веднъж да хвана логиката и ще ги променям според условията, но ако е според моята постановка, напълно принципно, нямам представа дали тази скорост на въртене ще е удачна, но опитно ще се установи, нещата идват така - за честота на импулса около 4Hz трябва да имаме време между два съседни магнита около 30ms. F=1/(8*0.03) = 4.16Hz.Това ако е минималното, всяко време над 30ms ще значи F=0
Мартин Костадинов
Skype - Optixam

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Малко да уточним за честотите и времената- с 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;
}
« Последна редакция: Март 18, 2015, 10:43:41 pm от yasko »
Ясен Паунски,  гр.София, 39 г.

importante

  • Зомбиран Роботостроител
  • *****
  • Публикации: 178
    • Профил
Тука се разминаваме нещо.. Мисля, че сега е по-правилно:

Fp (min) 4Hz - 1 оборот на педалите за 2 секунди(20000ms и 8 регистрирани импулса от датчика), 250ms време между магнитите.
Tp(max) 250ms

Fp (max) 16Hz - 2 оборота на педалите за 1 секунда (500ms и 8 регистрирани импулса от датчика), 62.5ms време между магнитите.
Tp (min) 62.5ms
Където Fp - честота на импулсите от датчика и Tp - времето за преминаване на два съседни магнита покрай датчика

Мартин Костадинов
Skype - Optixam

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Да попитам какво стана с проекта? Активен ли е още? Напоследък не ми остава много време за форума, но тествах един алгоритъм за измерване честота на въртене. Ако те интересува още мога да го кача.
Ясен Паунски,  гр.София, 39 г.

importante

  • Зомбиран Роботостроител
  • *****
  • Публикации: 178
    • Профил
Да, разбира се, пробвам разни начини, но никак не съм добър в програмирането, но трудно се отказвам!!Ще съм ти благодарен да качиш програмката да я тествам.
Мартин Костадинов
Skype - Optixam

importante

  • Зомбиран Роботостроител
  • *****
  • Публикации: 178
    • Профил
Схемата с драйвера IR2104 е добра, пробвам я на празен ход няма ядове и е коректна, обаче на ниски обороти като запъна двигателя и спира, тока на консумация се вдига много.Когато го монтирам страшно голям ток ще тече докато не се развърти мотора на високи обороти, а точно при потегляне ще бъде най-трудно за мотора, а ще се изискват ниски обороти.Не разбирам каква е разликата с реостат, така ли работи схемата или аз съм насмел нещо?Аз мога да въртя потенциометъра докато не тръгне, но ме притесняват токовете когато потегля и е ''напънат''
Мартин Костадинов
Skype - Optixam

yasko

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

importante

  • Зомбиран Роботостроител
  • *****
  • Публикации: 178
    • Профил
С ограничение по ток и аз го мислих, но нещата не вървят напред, а просто не отиват назад, в смисъл ползата е че няма да издумкам нещо.Трябва да се ориентирам към схема предвидена за електро скутер или велосипед, но все още не намирам подходяща
Мартин Костадинов
Skype - Optixam