Отговори на тема  [ 40 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща
Управление на четков мотор за пералня с тахогенератор 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Ти много лесно можеш да си го направиш без да търсиш нулата с пик-а. Има оптрони с изходен триак със zerocross - идеални за управление на мощен триак - примерно MOC3041. ШИМ-а ще му намериш честотата някак.


Съб Яну 13, 2007 10:08 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
zaphod,би ли ми обяснил какви импулси има на изхода на тахогенератор за постоянен ток ?Много ми е любопитно. Пулсациите зависят от броя на колекторните пластини,а в края на крайща не измервааш пулсации а напрежение.То е носителя на информацията.При постоянен магнитен поток,скоростта на въртене е пропорционална на изходното напрежение.Ако имаш някакъв компаратор и знаеш броя на колекторните пластини-можеш да сведеш задачката до измерване на честота.Като погледнах едно управление на пералня(на Fagor) - там точно се използва триак,a преминаването през нулата го следят с някакъв компаратор LM393


Съб Яну 13, 2007 11:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
@Ки4о, кой е казал, че тахогенератора е за постоянен ток и че има колектор!? Принципа му на действие е като на алтернатора на колата, само че вътре се врти постоянен магнит. Има и мотори на перални, които имат на ротора залепен "секционен" магнит и той се чете от датчик на хол - това им е тахогенератора.
@zaphod, тоя мотор не може да работи там без някакво управление, да не говорим за "едно реле". Като му подадеш директно 220V, оборотите за около 1-3 секунди стават 10000...16000 - зависи от мотора. Това са максималните обороти, които в нормални условия се използват само при центрофугиране.
До сега съм виждал 3 принципа на управление на мотор за перална - фазово (със симистор), с ШИМ (мощен IGBT) и с честотно управление (перална с 3-фазен мотор). Какъв алгоритъм използват, не мога да коментирам, защото не знам :lol: .


Нед Яну 14, 2007 1:58 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Благодаря на всички които се отзоваха!
След много четене и мислене стигнах горе долу до следния вариант, който изглежда приемлив откъм реализация. То реално се пада някакъв упростен вариант на fuzzy логиката до който бях стигнал сам още преди да пусна темата във форума. Просто сега ми се изясни по-добре.
Как изглежда идеята:
1. Пералнята е с тахогенератор - който дава импулси по 8 на оборот на мотора. Те реално са 16, ама входната схема игнорира единия полупериод, а тя си е оригиналната на пералнята и не съм я променял. Това го казвам за да няма спор по въпроса.
2. Импулсите от тахото влизат на RB0 който е настроен да генерира външно прекъсване и на всяко прекъсване се увеличава променлива някаква, която брои импулсите.
3. Таймер 0 прави прекъсвания с честота 400 херца.
4. Мотора се управлява от останалата част на програмата, като просто в една променлива се записват желаните обороти на БАРАБАНА на пералнята, а самото управление се реализира на ниво прекъсванията от таймер 0 и само се грижи за плавно достигане и потдържане на зададените обороти. Така е много по лесно програмно.
5. Трябва да спомена че има и 2 служебни параметъра, който се въвеждат в сервизен режим, и имат отношение към управлението - единия е брой импулси от тахото на 1 оборот на мотора /в конкретния случай 8/, и предавателно число на шайбата на мотора спрямо тази на барабана /около 1:12/. Тия стойности ги има, за да става това управление и за други модели перални - щото и програматора на кандито на баща ми нещо май се еб-ва.
6. За реалната мощност на мотора има отделна променлива, в която логиката за управление не записва директна стойност, а текущата и стойност /от предишното изчисление/ се увеличава или намалява спрямо поличения резултат от новото изчисление.
7. На всяки 100 прекъсвания от таймер 0 /1/4 от секундата или тия 4 херца дето не се харесват на Ки4о/ се прави изчисление на мощността за следващата 1/4 от секундата, като мощността може да е от 0 до 100%, и реално се контролира, като се променя на кое от поредните 100 прекъсвания на таймер 0 да се пусне ток към двигателя. Така се получава някакво ШИМ управление, като в един период на ШИМ попадат около 25 полупериода на захранващото напрежение - което се надявам да е достатъчно.
8. Как става самото изчисление:
- първо на базата на зададените обороти на барабана, се изчислява колко импулса от тахото отговарят на търсените обороти на барабана.
- след това броя на получените импулси от тахото се сравнява с броя на очакваните и се определят 5 нива на разлика - много по-ниски, малко по-ниски, нормални, малко по-високи, много по-високи. За всяка от разликито отговаря съответна реакция - тоест промяна на мощността с 30%, 10%, 0% -10%, -30%.
- нужната промяна се отразява, като се променя текущата стойност на променливата, за отдавана мощност към мотора - съответно увеличава се с 30% или 10%, не се променя или се намалява с 10% или 30%.
9. Проверява се дали след промяната не се надхвърлят някакви гранични стойности /в случая минималната е 0 а максималната е 100/ и се прави корекция ако е необходимо.
10. След изчислението се нулира брояча дето брои импулсите от тахото, и се чакат до следващото 100-тно прекъсване от тимер 0 за да се направи ново изчисление и т.н.

Самата логика на управление прави леко плавно управлението на мотора, но то е много бързо за да се усети. А другото - много бавното плавно увеличение при центрофугиране се прави от самата програма, като просто не се извикват в началото най-високите оботроти, а плавно програмно се задава кривата на увеличаване.

Ако сте имали търпение да изчетете всечко това и ако имате забележки по въпроса - моля споделете. Това е само идея и ако нещо не е наред- по добре да го оправям още сега , а не после с поялника.


Нед Яну 14, 2007 8:33 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
Gogo написа:
Като му подадеш директно 220V, оборотите за около 1-3 секунди стават 10000...16000 - зависи от мотора. Това са максималните обороти, които в нормални условия се използват само при центрофугиране.
ясно бе човек, но говорим за УПРАВЛЕНИЕ, а не просто за намаляне на оборотите. оня иска да вкарва некви фузита и некви невронни мрежи.


Нед Яну 14, 2007 10:14 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
@Gogo ,zaphod каза че е тахогенератор и за това зададох въпроса,а не да се заяждам!
Имам следното питане-как ше се справяш с режимите на пускане и спиране?Къде ти е контрола на тока през двигателя?В първия момент,при пълна пералня с вода и пране,за да я развъртиш плавно се изисква доста по-голям момент,това как го виждаш?Кое ти контролира максималния ток през тиристора(или транзистора) щото можеш да го опукаш?Мисля че е по-добре да следиш тока за дадено време,интегрираш го и на базата на тази стойност сравненан с предходната,и максималното задание да вземаш решение за промяна на ШИМ-а.Ако само следиш оборотите има вероятност да изпушиш тиристора(транзистора).Но това си е мое мнение и естествено подлежи на критика :wink:


Нед Яну 14, 2007 10:20 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Абе тая пералня как са и се регулирали оборотите до момента? На обиковенните перални, демек по простите, има асинхронен мотор на които му превключват намотки с различен брой полюси. На този колекторен обаче това няма как да стане, трябва да има нещо което да му ги регулира. На сайта където са ти дали линка може да видиш общо взето акви са методите за регулиране, това че си избрал ШИМ не е лошо, но самото регулиранене се свежда толкова до контрол на напрежението на ротора а на тока протичащ през него, затова питането на Ки4о е съвсем резонно. Може би оригинално е имало резистори които са се превключвали във веригата на ротора, ама това е решение което отделя доста мощност, може да са првключвали ротора към автотрансформатор ... но и това не ми се вярва, та като цяло може би в пералнята има модулкойто е контролирал двигателя. Шим който правиш доколкото разбирам е въз основа на запълване със полувълните от захранващата мрежа, но това е доста ниска честота за ШИМ, за нагревател е ОК, но за DC мотор не ми звучи много добре, според мен ще се получи неравномерна работа. Ако ползваш фазово управление нещата ще са доста по добр, но тогава проблем остава т смущенията, а и тиристора ще се натоварва повечко, но пък за щастие тиристорите като такива са доста идиотоустойчиви, не се предават лесно. По добър вариант естествено е с двуоперационен тиристор, който можеш да го запушваш, или обикновен на който си направил схема за запушване, в този случай можеш да постигнеш същия ефект на фазовото но с по малко смущения. Но вървейки в тази насока излиза въпросът не е ли по добре да ползваш IGBT, който да комутира, и веднага следващия въпрос ако имаш IGBT защо да режеш мрежовата синусоида вместо да си направиш истински ШИМ на по висока честота. Тогава изниква и нуждата, която според мен не е за пренебрегване, да следиш токът през двигателя.
А за fuzzy локиката която си направил ...като принцип става, за твоя случай едва ли има някакво огромно значение колко точно се поддържат оборотите, та ще стае, но като цяло стъпката с която да се променя и границите на отделните отклонения не с еопредлят поред звездите или просто на око.


Нед Яну 14, 2007 10:46 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Ами пералнята е немска сякаш АКО или нещо подобно. Имала си е спецялна платка за управление на мотора с процесор филипс - обаче собственика от доста време на едно място в програмата си е превъртал програматора на ръка щото е заяждал и се е хванал за платката - без да иска де - та в процесора е влязло нещо дето не трябва - и дотам. Та мотора се е управлявал само с един семистор - без следене на ток - със сигурност, щото гледам по платката и свалих схемата - или поне частта от нея дето ме интересува. Та тук във форума разбрах че пералните се регулирали точно така - с пускане на пълното 220 напрежение, само че на импулси с различен коефицент на запълване - по точно около половин секунда. Аз съм избрал 4 пъти в секунда - за по точно.

За определяне на стъпката на промяна на мощността - гледам че при фъззи управлението е доста сложно да се изчисли. Аз не съм професионалист в електрониката та не ми е съвсем ясно. Сега като гледам - най голямата ми стъпка може да е 30 процента, а ако оборотите се различават с по малко от 30% от исканите - мисля да изчислявам грешката в проценти - и съответно с толкова процента да коригирам мощността. Така като оборотите наближат исканите - корекцията - нагоре или надолу ще става със все по малка стъпка - около 1-2% - а то това си е направо стъбилно за една пералня.
Дали ще стане - ще видим.

Да добавя - проблеми със смущенията нямам - щото се съобразих с това още в началото и ползвам филтъра от оригиналната платка.


Нед Яну 14, 2007 12:41 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Е както по-горе казаха, не всички перални са със колекторни мотори. Ти все някак оборотите ще ги оправиш, ама решил ли си въртене в двете посоки, въртене за наместване на прането - там е доста особенно - върти на пулсации за да си разпредели прането равномерно по барабана. Няма да стане толкова просто колкото го мислиш просто с едно въртене. По-скъпите перални са с трифазни мотори и честотен регулатор. И извън темата малко - тази техника е направена да се чупи след определен период от време за да си купиш нова. От любов към спорта можеш да си поиграеш, но се съмнявам че ще бъде ефективно.


Нед Яну 14, 2007 2:00 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Аз всичко друго съм го направил и работи - там с импулси цикли, посоки, индикация интерфейс че даже и оригиналните и програми съм вкарал - абе всичко си е наред и вече е тествано. Нямах обаче опит с контрол на двигатели и реших че като му пусна 50% с фазово управление - и той че върти с 50% от оборотите си - ама излеза наивно и НЕ ВЯРНО. Та сега се налага да сложим пак тахото в играта, ама нямам свободни пинове, та се налага да махна следенето на нулата заради фазовото управление и да направя някокво ШИМ управление със следене не оборотите. Верно че не е лесно - ама аз доста време се занимавах с платката и програмата - повече от месец - в свободното време де. А иначе пералнята е нова 3-4 годишна и в идеално състояние, та си е грехота да я хвърля човека.


Нед Яну 14, 2007 2:10 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Разгледай този PDF. МОже би няма да ти помогне, но този чип го имам като управление оборотите на едни машинки. Из форума съм пуснал и цялата схема на машинките но е чисто аналогово.


Прикачени файлове:
tca785.pdf [333.73 KiB]
393 пъти
Нед Яну 14, 2007 2:57 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Ами твърде вероятно е ако е било със симистор да е фазово управление, а пинове .. все един не мозеш ли да го дублираш релано трябва ти прекъсване. Доколкото тахогенератора можеш да го полираш то нулта ти трябва с по голяма точност за да имаш наистина фаово упрвление. Всъщност аз бих подал тахогенератора на входа на CCP модула, а това за нулата на входа за прекъсване, ама не знам какво още имаш като сигнали де ...


Нед Яну 14, 2007 4:44 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Nikola Kirov - доста популярен в този форум - пише по темата че пералните масово се управлявали с такъв т.н. ШИМ с честота около половин секунда. Щом го пише - явно че го е видял човека. Та мойта разработка се основава на това негово твърдение.
Иначе свободни пинове няма. Трябва да жертвам нещо и това ще е преминаването през нулата - че може и без него. То не че няма как да реорганизирам пиновете - ама платката вече е направена - в смисъл универсална е де не е спецялно за устройството, и на такъв тип платка е доста трудно да преправя нещата. Основния въпрос беше дали някой е правил нещо подобно и то по тоя начин - да сподели опит. Не че това е най добрия начин за управление на подобен мотор, ама беше хубаво да знам предварително дали става или не, ще да не се мъча ако не става. Явно ще трябва да си откривам америката сам - или поне да се опитам...


Нед Яну 14, 2007 7:09 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Ами може и да има подобни управления, аз със перални не съм запознат, ако никола твърди че е така, сигурно е точно така, може би товара в барабана си казва думата, иначе така съм управлявал печки за керамика но там е друга хава.
А относно пиновете .... да ако няма да правиш истинско фазово управление може и да минеш без следене на нулата, като това става в самия комутиращ елемент, по горе бяха писали по въпроса.


Нед Яну 14, 2007 8:05 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Програмата е готова. Ето как изглежда функцията на прекъсването на HI-TECH PICC. Утре ще правя експерименти и ще видим как се държи в реални условия. Ако стане - после ще му правя оптимизации. За сега така е по разбираемо.

Малко гадно изглежда тук, че редовете ми са много дълги. Копнете текста в нотпад - там е друга работа...


// Имаме прекъсване от тахогенератора - което влиза през порт RB0 като външно прекъсване. Може да е при нарастване или при сваляне
// На всяко прекъсване се увеличава само променливата, която отчита броя прекъсвания. Тоест броят се.
// Имаме друго прекъсване от таймер 2 - на всеки 2.5мс - тоест 400 пъти в секунда, като на всеки 100 пъти /4 пъти в сек/ се изчислява
// разликата между зададените и измерваните обороти на мотора и се нанася корекция в мощността към мотора. Максималната корекция е с +/-30%.
// Желаната скорост се задава в променливата "baraban_oboroti" и е в обороти в минута. От нея с помощта на служебните променливи за брой имулса
// от тахогенератора на един оборот на мотора и от съотношението колко оборота прави мотора за един оборот на центрофугата се изчислява колко
// импулса трябва да се получават от тахото, за зададените обороти на барабана. После се гледа разликата между очакваните и получените
// и се изчислява грешката, като на нейна база се прави изменение в мощността на мотора - спрямо предишния изчислен период.

unsigned long temp;
unsigned int ochakvan_broi_impulsi;
unsigned char error;
static unsigned char motor_power = 50; // Задава мощността към мотора в проценти: 0-мин; 100-макс; Изчислява се в прекъсването според зададените обороти


void interrupt my_isr(void)
{
if( (INTE) && (INTF) ) // Прекъсване от импулс на тахогенератора
{
tachogen_counter++; // Увеличаване на променливата - брояч на импулси получени от тахогенератора
INTF = 0; // Изчистване на флага на външно прекъсване от пин RB0
}

if( (TMR2IE) && (TMR2IF) ) // Прекъсване от таймер 2 - на всеки 2.5мс - 400 пъти в секунда
{
// Неща които се изпълняват винаги и безусловно
KEYBOARD_CHECK_FLAG = 1; // Вдигане на флага че са изминали 2.5 мс и може да се направи нова проверка за натиснат клавиш
display_blink_counter++; // Увеличаване на променливата за мигане на индикаторите
delay_2_5ms_counter++; // Увеличаване на променливата, която отговаря за получаване на закъснения
timer2_int_counter++; // Увеличаване на променливата, която брои номера на прекъсванията от таймер 2

// Изчисление на мощността за следващия период - на всеки 100 прекъсвания
if(timer2_int_counter >= 100){ // Ако е достигнато стотното прекъсване - започване на процес по изчисляване на мощността към мотора за следващия период
if(baraban_oboroti){ // Започва се изчисление, само ако има зададени обороти на барабана
temp = saotnoshenie_baraban_motor * broi_impulsi_ot_tahoto_za_1_oborot; // Изчисляване на броя импулси от тахото за 1 оборот на БАРАБАНА!!!
temp = temp * baraban_oboroti; // Изчисляване на броя импулси от тахото за 1 минута (60сек) при зададените обороти - щото те се задават в ОБ/МИНУТА
temp = temp/240; // Изчисляване на броя импулси от тахото за 1/4 от секундата - тоест за 1 мин делено на 60 и на още 4 за 1/4 от сек
ochakvan_broi_impulsi = (unsigned int)temp; // Прехвърляне на вече изчисления очакван брой импулси от тахогенератора при зададените обороти в променливата
temp = tachogen_counter; // Прехвърляне на броя на получените импулси в променлива от тип long - заради препълванията
temp = (temp * 100)/ochakvan_broi_impulsi; // Изчисляване на процентната грешка от разликата в оборотите
while(temp > 100) temp-=100; // Махане на горните стотици от изчислението - ако има такива и резултата е над 100
error = (unsigned char)temp; // Прехвърляне на резултата е променлива от тип char
if(tachogen_counter > ochakvan_broi_impulsi){ // Изчисляване - ако оборотите на мотора са ПО-ВИСОКИ от исканите
if(error > 30) error = 30; // Лимитиране на грешката до 30%
if(motor_power > error) motor_power -= error; // Ако мощността към мотора в момента е по-голяма от грешката - намаляване с грешката
else motor_power = 0; // иначе мощност = 0
}else{ // Изчисляване - ако оборотите на мотора са ПО-НИСКИ от исканите
error = 100 - error; // Изчисляване на грешката - тоест на знака
if(error > 30) error = 30; // Лимитиране на грешката до 30%
motor_power += error; // Увеличаване на мощността към мотора със стойността на грешката
if(motor_power > 100) motor_power = 100; // Лимитиране на мощността до 100 - максимално възможната
}
}else motor_power = 0; // Ако няма зададени обороти - мощността към мотора става веднага нула
timer2_int_counter = 0; // Нулиране на брояча на прекъсванията - и започване на броенето отначало
tachogen_counter = 0; // Нулиране на брояча на импулси от тахто
}

// Изпращане на мощността към двигателя с т.н. ШИМ модулация. Изпълнява се винаги и безусловно
if(timer2_int_counter < motor_power) PIN_TRIAC_CONTROL = 1; // Проверка за времето на подаване на мощност към мотора
else PIN_TRIAC_CONTROL = 0;
}

}


Вто Яну 16, 2007 6:54 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 40 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни