Page 7 of 16

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

Posted: 29 Jun 2011 13:18
by vasilievich
Добрый день. Спасибо за Вашу отзывчивость. Хочу уточнить задачу. Ощутимого изменения в регулировке не наблюдается не в диапазоне от 4 до 10, а приблизительно от 7 до 10 (с положения переменного резистора от 3/4 и до конца, а не от 1/4 и до конца). Вы пишете, что не сильны в языке С, тогда уж что говорить обо мне. Буду вникать в представленную информацию. Транзисторы ставил BUZ102, два в параллель с развязкой резисторами по затвору. Насчет замены транзисторов была мысль, думал, что начального старта при минимальных положениях резистора не происходит именно из-за них, пробовал IRFZ3205, почему-то один вышибло при первом же включении. По току IRFZ3205 не меньше BUZ102, по напряжению управления тоже разницы нет, больше экспериментировать не стал и оставил BUZ102. Ток моторчик потребляет солидный, радиатор порядком греется, да и не зря он стоит под улиткой, работает по принципу: сам регулирую, сам себя и охлаждаю.

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

Posted: 29 Jun 2011 14:15
by hardlock
vasilievich wrote:с положения переменного резистора от 3/4 и до конца, а не от 1/4 и до конца
а резистор линейный? А то может лучше с напряжениями играться? У Вас же на выходе блока управления напряжения от 0 до 5 вольт...
vasilievich wrote:Транзисторы ставил BUZ102, два в параллель с развязкой резисторами по затвору.
тогда уж надо управлять затворами не просто выходом МК, а каким-нибудь драйвером, хотябы двумя биполярными транзисторами.

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

Posted: 29 Jun 2011 18:46
by vasilievich
Пробовал драйвер, собранный на ВС548 и ВС558 - мало что менялось, насчет зависимости резистора - откровенно говоря смотрел только на номинал сопротивления, на букву не обращал внимания, но пробовал не один, а несколько и все они ведут себя одинаково. Сегодня посмотрю на букву, будет очень смешно, если все они окажутся с экспоненциальной зависимостью. Вариант устройства я уже собрал и он полностью готов к установке на автомобиль, посмотрим как он будет себя вести при управлении от блока климы. Но все равно чего-то, но не хватает, хочется довести устройство до конца.

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

Posted: 29 Jun 2011 22:33
by hardlock
vasilievich wrote:мало что менялось
транзистор должен меньше греться - меньше переходной процесс.
vasilievich wrote:Но все равно чего-то, но не хватает, хочется довести устройство до конца.
Запишите напряжения с климата при разных положениях, потом снимайте двигло и пробуйте на столе запускать его от резистора, замеряя напругу на входе. И смотрите результат. А потом в программе можно будет подкорректировать.

Скажу только что зависимость мощности двигла от "процентов" ШИМ очень нелинейная. Поэтому подбирать придётся и не один раз. С резистором всё проще - надо чуть добавил/убавил, с климатом сложнее - там всего 10 дискретов.

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

Posted: 30 Jun 2011 11:02
by vasilievich
Понял, уже разработал печатку под управление полевиками с помощью драйвера. Резисторы оказались с линейной зависимостью. На автомобиле работает как я описывал выше: в начальных положениях регулировка происходит, в конце - максимальные обороты двигателя. Все бы устроило и в таком варианте, но при включении зажигания и соответственно подаче питания на регулятор (в положение min оборотов) двигатель хочет запуститься, но ему не хватает силы, а это напрягает слух. Вопрос отключения ШИМ при минимальном управляющем напряжении пока остается открытым. По поводу ступенчатой регулировки: я думаю не стоит править программу, ведь с блока климы и так подается ступенчатое напряжение, а контроллеру по барабану чем оно изначально регулируется, какой-то схемой или обычным переменным резистором.

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

Posted: 30 Jun 2011 20:55
by hardlock
vasilievich wrote:а контроллеру по барабану чем оно изначально регулируется, какой-то схемой или обычным переменным резистором.
нда... все мои слова в пустоту.

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

Posted: 01 Jul 2011 16:18
by kredovit
Вот это я и насчитал :oops:

Спасть хотел :-)

Пересчитаю сейчас...

В связи с тем, что 3/4 оборота реостата - это положении 7, то верхний предел X будет 228 [((255-165)/10) *7+165], думаю формула объяснит ход мыслей, почему я решил, что будет 228 :-)

Меняем шаг перестройки
228-165=63
63/10=6.3 грубо 6 (можно попробовать поэкспериментировать - подставить 7 :-) )

в итоге получаем значения Х для каждого положения:
0=0
1=165+6=171
2=177
...
9=219
и 10=255


Далее считаем дискретность для АЦП:
т.к. OCR0A равен 8 битам(255), то
255/10=25,5 грубо 25

теперь листинг

после строчки
// Place your code here

вставить
x=0

далее нужно вместо
pwm = pwm + 165 ;
if (pwm > 255) pwm = 255;


записать для всех положений регуляторя значения Х
if (pwm < 5) x= 0; // положение 0
if (pwm = 25) x = 171; //положение 1
if (pwm = 50) x = 177; //положение 2
...
if (pwm = 225) x = 228;//положение 9
if (pwm > 250) x = 255;//положение 10
pwm = x ;


Извеняюсь :-)


ЗЫ У меня стояли транзисторы с логическим управлением irLz34n, т.е. при пяти вольтах сопротивление минимально( отсюда и меньше греются, т.к. при различном сопротивлении перехода выделяется разная мощность на радиатор- соответственно и разная температура), при 12 вольтах- ещё интересней :-) ...

Когда стоял один BUZ, то он не выдержал той мощности, что к нему была подведена и перегорел, ведь MOSFET открывался на половину(сопротивление сток-исток D-S было больше).

Сопротивление перехода Rds сток-исток от напряжения на затворе Vgs можно подсмотреть в даташите на транзисторы :-) .

Про мощность можно почитать, если перейти по этой ссылке http://ftoe.ru/elec4/Labs/lab5.htm, для наглядности можно передставить, что переменное сопротивление- это сопротивление перехода сток-исток у MOSFET при разном напряжении на затворе).

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

Posted: 01 Jul 2011 16:24
by hardlock
kredovit wrote:if (pwm = 25)
низя равно, т.к. фиг попадёшь. нужно диапазоны от и до...

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

Posted: 01 Jul 2011 16:36
by kredovit
if (pwm > 20; pwm < 30) x = 171 ;

так правильней будет?

Если да, то:
if (pwm < 5) x= 0; // положение 0
if (pwm > 20; pwm < 30) x = 171; //положение 1
if (pwm > 45; pwm <55) x = 177; //положение 2
...
if (pwm >220; pwm < 230) x = 228;//положение 9
if (pwm > 250) x = 255;//положение 10
pwm = x ;


:-)

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

Posted: 01 Jul 2011 16:41
by hardlock
kredovit wrote:if (pwm > 20; pwm < 30) x = 169 ; так правильней будет?

Code: Select all

if ((pwm>20) & (pwm < 30)) x = 169;
но всё равно это не правильный путь. Надо вначале построить соответствие напряжений положениям на климате, потом посчитать соответствие напряжений и данных с ADC, а потом всё описать одним выражением.

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

Posted: 01 Jul 2011 16:45
by kredovit
неисключено, но работает :-)
просто я не любитель замеров- всё оставляю контроллеру- работаю совместно с EPROM , константы туда записываю с предварительной настройки онреал...

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

Posted: 01 Jul 2011 18:01
by vasilievich
Что-то я в конец запутался, на выходных буду пробовать воплощать Ваши идеи в жизнь.

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

Posted: 11 Jul 2011 09:45
by kredovit
vasilievich,как успехи?

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

Posted: 12 Jul 2011 18:49
by vasilievich
Да практически никак. По крайней рекомендации изменил указанные Вами строки в исходнике программы, единственно, что пересчитал - это значение Х, так как у меня при более внимательном изучении оказалось не десять положений (от 0 до 9), а восемь (от 0 до 7). В итоге при компиляции CVAVR выдает кучу матерных выражений начиная от строки, где Х присваивается значение 0 и до конца (pwm=x). Так, что пока без результатов.

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

Posted: 14 Jul 2011 06:52
by kredovit

Code: Select all

В итоге при компиляции CVAVR выдает кучу матерных выражений начиная от строки, где Х присваивается значение 0 и до конца (pwm=x).
я забыл указать объявление переменной X

после #include <tiny13.h>
вставить unsigned int x;


после строчки // Place your code here
вставить x=0;

; нужно не забывать ставить в конце каждой строки, в предидущих сообщениях забыл :oops:

значения Х для всех положений регулятора

Code: Select all

  if (pwm < 5)  x = 0; // положение 0
  if ((pwm > 27) & (pwm < 37))  x = 174; // положение 1
  if ((pwm > 59) & (pwm < 69))  x = 183; // положение 2
  if ((pwm > 91) & (pwm < 101))  x = 192; // положение 3
  if ((pwm > 123) & (pwm < 133))  x = 201; // положение 4
  if ((pwm > 155) & (pwm < 165))  x = 210; // положение 5
  if ((pwm > 187) & (pwm < 197))  x = 219; // положение 6
  if (pwm > 219)  x = 255; // положение 7 
  pwm=x ;  


codewision не ругается :-)


вложил все файлы одним архивом.

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

Posted: 14 Jul 2011 18:07
by vasilievich
Большое спасибо, буду пробовать.

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

Posted: 14 Jul 2011 22:21
by hardlock
kredovit, думаю в тиньке не хватит памяти. И что будет с устройством при pwm=39, например?

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

Posted: 15 Jul 2011 06:52
by kredovit

Code: Select all

в тиньке не хватит памяти
ещё 45% FLASH доступно

Code: Select all

что будет с устройством при pwm=39

При очередном запуске печки, в положениe ручки регулятора(резистора) соответствующем pwm=39 мотор работать не будет, т.к. было условие x=0 изначально. Для исправления этой ситуации надо будет выбрать любое положение от 1 до 7.


ЗЫ Программа рассчитана на дискретность.

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

Posted: 16 Jul 2011 13:24
by vasilievich
Программа расчитана на дискретность - это толково, но при проверке оказалось, что при значениях pwm = от 38 до 58 и так далее двигатель работает как бы с рывками, т.е. по мере увеличения управляющего напряжения с помощью резистора двигатель начинает вращаться с одной скоростью, далее его скорость уменьшается, затем скачкообразно снова увеличивается, затем снова уменьшается и так до положения 7. При этом скорость оборотов двигателя в "неактивной" зоне регулирования, назовем ее так, - это (я так думаю pwm = от 38 до 58, от 70 до 90 и т.д.) постоянна , т.е. увеличение оборотов происходит в пределах 27-37, 59-69 и т.д. Использовал для регулировки резистор, так как первый вариант регулятора стоит у знакомого на авто. Конечно с резистором ни о какой дискретной регулировке не может быть и речи, но hardlock был прав, что для такого варианта программы необходимо знать точно величину управляющего напряжения с блока климы и только после этого привязывать его к программе. Конкретно на авто этот вариант регулятора не пробовал, использовал другой маленький движок (от сюда и вращение в моем случае при pwm=39), времени для всего совершенно не хватает. На следующей неделе попробую приобрести транзисторы, управляемые логическим уровнем. Спасибо за сотрудничество.

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

Posted: 16 Jul 2011 18:53
by kredovit

Code: Select all

скорость оборотов двигателя в "неактивной" зоне регулирования, назовем ее так, - это (я так думаю pwm = от 38 до 58, от 70 до 90 и т.д.) постоянна , т.е. увеличение оборотов происходит в пределах 27-37, 59-69 и т.д.
я этот вариант предлагал как дискретность(ступенчатая регулировка)

Code: Select all

при проверке оказалось, что при значениях pwm = от 38 до 58 и так далее двигатель работает как бы с рывками, т.е. по мере увеличения управляющего напряжения с помощью резистора двигатель начинает вращаться с одной скоростью, далее его скорость уменьшается, затем скачкообразно снова увеличивается, затем снова уменьшается и так до положения 7
проблема может быть в неправильном месте строчки X=0;
косячёк :oops: , виноват.
Попробовать её переместить в начало программы, где присваиваются значения константам.
Я в кодевизион(С++) не силён, поэтому извините :pardon:

Если я не ошибаюсь, то X=0; надо поставить после объявления переменной unsigned int x;
Тогда X=0; не будет заставлять двигатель дёргаться в промежутках между положениями(в pwm = от 38 до 58 и т.п.)

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

Posted: 17 Jul 2011 11:58
by vasilievich
Наверное я Вас достал своими задачами, спасибо огромное, вечером обязательно попробую.

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

Posted: 20 Jul 2011 07:29
by kredovit
Всё нормально :-)
я тоже просил помощи у ребят, которые преодолели трудности в стопорных для меня ситуациях :-)

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

Posted: 24 Jul 2011 14:29
by kredovit
vasilievich,как успехи?

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

Posted: 02 Aug 2011 09:51
by kredovit
Видимо всё получилось, раз не отвечают :-)

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

Posted: 02 Aug 2011 22:08
by Casper_pro
kredovit wrote: if (pwm < 5) x = 0; // положение 0
if ((pwm > 27) & (pwm < 37)) x = 174; // положение 1
if ((pwm > 59) & (pwm < 69)) x = 183; // положение 2
if ((pwm > 91) & (pwm < 101)) x = 192; // положение 3
if ((pwm > 123) & (pwm < 133)) x = 201; // положение 4
if ((pwm > 155) & (pwm < 165)) x = 210; // положение 5
if ((pwm > 187) & (pwm < 197)) x = 219; // положение 6
if (pwm > 219) x = 255; // положение 7
pwm=x ;
А так не проще было?

x = pwm / 36.5;
x = x * 9 + 165;
if (pwm < 19) x = 0; // положение 0
if (pwm > 235) x = 255; // положение 7
pwm = x;

При условии что х - целая переменная