Страница 8 из 16

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 03 авг 2011 16:36
kredovit
проще :-)

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 03 авг 2011 17:45
Casper_pro
Вот если так все выражения сокращать то в микрик мона и по 2 функции запихивать))))

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 18 авг 2011 17:13
tiptop_a
Здравствуйте,
тема заинтересовала так, что захотелось самому попробовать .
Я начинающий, поэтому, всё что смог это промоделировать схему в протэусе :oops:
Заметил, одну особенность, когда кнопка "старт" не замкнута, проц всё равно посылает короткие импульсы большой скважности на транзистор.
Подозреваю, что исправить это не сложно, где-то прописать sleep? но сам пока разобраться :dontknow: я не могу...
спасиб

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 18 авг 2011 17:14
hardlock
tiptop_a, в реале этого нету.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 19 авг 2011 22:58
tiptop_a
Может, это потому, что выход нагружаю на светодиод, а в реале ёмкость полевика...
Не подскажешь алгоритм, как организовать плавный старт? :sorry:

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 19 авг 2011 23:00
hardlock
tiptop_a, включаем на минимум, а потом по таймеру добавляем до установленного значения.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 03 дек 2011 22:35
valmaks
Всем привет.Собрал я этот регулятор,работает нормально. hardlock болшое спасибо.
Такой вопрос.Максимальное напряжение на моем моторчике 6v.
Что изменить,добавить,что-бы регулировка была до 6v.
Спасибо.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 03 дек 2011 22:44
hardlock
valmaks писал(а):Что изменить,добавить,что-бы регулировка была до 6v.

ничего - просто питайте мотор не от 12-ти, а от 6-ти вольт, но тогда надо отдельно организовать питание тиньки, т.к. 7805 не сможет работать при входном напряжении 6 вольт.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 08 фев 2012 17:55
yura-gn
hardlock, очень нужна твоя помощь, что нужно дописать в прошивке чтобы был плавный пуск? Помоги, очень надо!

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 08 фев 2012 17:57
hardlock
yura-gn,
стартовать с минимального значения и через промежутки времени добавлять значение ШИМа. Постараюсь найти исходник.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 08 фев 2012 18:01
yura-gn
hardlock писал(а):yura-gn,
стартовать с минимального значения и через промежутки времени добавлять значение ШИМа. Постараюсь найти исходник.

Я еще в етом совсем ничего не понимаю. Очень, Очень прошу, постарайтесь найти исходник!

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 10 фев 2012 20:56
yura-gn
hardlock писал(а):yura-gn,
стартовать с минимального значения и через промежутки времени добавлять значение ШИМа. Постараюсь найти исходник.

hardlock, как там дела с поиском исходника, нашли?

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 10 фев 2012 21:03
hardlock
yura-gn писал(а): нашли?

ещё не добрался до того компьютера.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 11 фев 2012 11:12
yura-gn
hardlock, подскажи что делать, когда я меняю код:
Код: Выделить всё
вместо
pwm = 110 + read_adc(2) / 7;

эти строчки
pwm = read_adc(2);
pwm = pwm >> 2 ;

регулировка получается от 0, но регулируется только до половины положения потенциометра, а дальше скорость не меняется.
Как это исправить?

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 11 фев 2012 14:45
hardlock
yura-gn, так у вас получается если АДЦ больше "00111111" (63), то уже ничего не поменяется, т.к. "pwm = pwm >> 2" убивает два старших разряда.

ЗЫ: Не, не правильно... Что-то с утра голова не варит... но думаю проблема где-то тут. И зачем от нуля? Всё равно двигатель от нуля работать не будет.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 11 фев 2012 15:19
yura-gn
hardlock, я методом тыка зделал вот так:
Код: Выделить всё
pwm = 0 + read_adc(2) / 6;

стало работать нормально, но не знаю почему двигатель работает только процентов на 95.
Можете обьяснить как спецыалист что я этими изминениями сделал, и можно сделать чтоб работало на 100%?

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 11 фев 2012 20:45
hardlock
yura-gn писал(а):Я методом тыка зделал вот так:

надо не тыкать, а разбираться. АЦП 10-ти битный (1023 максимум), ШИМ - 8-ми битный (255 максимум).

Отсюда получаем:
Код: Выделить всё
pwm = read_adc(2) / 4;

Хотя эта конструкция тоже должна была работать:
Код: Выделить всё
pwm = read_adc(2);
pwm = pwm >> 2 ;

может опробовать прямо так:
Код: Выделить всё
pwm = read_adc(2) >> 2 ;


Что-то я сам запутался.
Для проверки, что двигатель работает на 100% поставьте pwm = 255 и прошейте МК. Двигатель должен работать в полную мощь. Лучше всего проверить осциллографом, что творится на выходе МК.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 11 фев 2012 21:15
yura-gn
hardlock, только что побробовал и выяснилось следующие:
что так
Код: Выделить всё
pwm = read_adc(2);
pwm = pwm >> 2 ;

что так
Код: Выделить всё
pwm = read_adc(2) >> 2 ;

работает отлично, но когда повышаю частоту
Код: Выделить всё
TCCR0A=0x83;
TCCR0B=0x01;

плавная регулировка исчезает.
Что теперь посоветуете?

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 11 фев 2012 21:47
hardlock
yura-gn писал(а):TCCR0A=0x83;
TCCR0B=0x01;

соответствует работе таймера на частоте самого камня, т.е. 9,6Мгц. Зачем такая частота? - это раз. МК может не успевать всё обработать, да и не успевает, т.к. каждый такт возникает новое прерывание - это два.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 11 фев 2012 22:27
yura-gn
hardlock писал(а):
fantom писал(а):Блин мне надо чтобы маторчик крутился на малых оборотах без писка как это сделать.

Блин, а мне надо машину отремонтировать!
Разберитесь немного в коде - там ничего нет сложного... Подсказка - копать в эту сторону:
Код: Выделить всё
TCCR0A=0x83;
TCCR0B=0x02;


Сделать так:
Код: Выделить всё
TCCR0A=0x83;
TCCR0B=0x01;

Только это уже не подсказка, а решение... Будет вместо 18,75 кГц - 37,5кГц


hardlock, скажите пожалуйста, можно выбрать что-нибудь среднее между 18,75 кГц и 37,5кГц, так как 18,75 кГц мало, а 37,5кГц много?

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 12 фев 2012 21:29
hardlock
yura-gn писал(а):скажите пожалуйста, можно выбрать что-нибудь среднее между 18,75 кГц и 37,5кГц, так как 18,75 кГц мало, а 37,5кГц много?

надо поднимать частоту генератора, не меняя настроек (что невозможно), или опускать, меняя (TCCR0B), что тоже невозможно, т.к. ноги для кварца заняты.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 12 фев 2012 21:52
yura-gn
hardlock писал(а):
yura-gn писал(а):скажите пожалуйста, можно выбрать что-нибудь среднее между 18,75 кГц и 37,5кГц, так как 18,75 кГц мало, а 37,5кГц много?

надо поднимать частоту генератора, не меняя настроек (что невозможно), или опускать, меняя (TCCR0B), что тоже невозможно, т.к. ноги для кварца заняты.


Понятно. Ну а что там с поиском исходника плавного пуска, еще не искали?

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 12 фев 2012 21:53
hardlock
yura-gn писал(а):а что там с поиском исходника плавного пуска, еще не искали?

может быть завтра на работе посмотрю.

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 15 фев 2012 09:28
yura-gn
hardlock, ну как там дела с поиском?

Re: Регулятор оборотов двигателя постоянного тока.

СообщениеДобавлено: 15 фев 2012 10:20
hardlock
yura-gn писал(а):hardlock, ну как там дела с поиском?

Исхоник не нашёл. Поэтому попробуем так. Заменить процедуру таймера:
Код: Выделить всё
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
  // Place your code here
  if (++c > 500)
  {
    c = 0;
    pwm = 110 + read_adc(2) / 7;
    if (pwm > 255) pwm = 255;
 
    if (!PINB.3)
    {
      switch (Working)
      {
        case 0:  //старт на минимальных оборотах
          OCR0A = 110;
          Working = 1;
        break;   
        case 1: //плавно наращиваем до установленного значения
          if (OCR0A < (pwm - 20))
          {
            OCR0A += 20;
          }
          else
          {
            OCR0A = pwm;
            Working = 2;       
          }
        break;
        case 2:  //работаем на установленном значении
          OCR0A = pwm;
        break;
      };
    }
    else
    {
      OCR0A = 0;     
      Working = 0;
    }
  } 
}


В самом верху описываем переменную:
Код: Выделить всё
unsigned char Working;

и перед #asm("sei") вставляем:
Код: Выделить всё
Working = 0;