Форум по Роботика

Контролери => Ардуино (Arduino) => Темата е започната от: importante в Февруари 02, 2015, 03:49:29 pm

Титла: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 02, 2015, 03:49:29 pm
Здравейте! Сглобявам си електровелосипед с подръчни материали и стигнах до оборотите на двигателя.Опитвам се да направя така, че те да се увеличават или намаляват според движението на педалите (оборотите на педалите).
Двигателя е доста мощен и по данни дърпа до 20A ток, за неговото управление съм направил регулатор, който променя оборотите с потенциометър.
Въпроса ми е мога ли с Arduino да броя импулсите подавани от педалите, примерно на всеки оборот да праща импулс чрез рид контакт или друго, Arduino да брои тези импулси и да ги преобразува в променливо съпротивление в зависимост от честотата на импулсите? С две думи да свържа контролера към платката за управление на мотора, на мястото на потенциометъра. Някой има ли представа въобще как може да се напише кода за това нещо и дали въобще е възможно, мислех и варианти без процесор, но не мога да се сетя нещо подходящо..  :)


От тук съм взел схемата на регулатора на оборотите:

http://www.foar.ru/topic.php?forum=30&topic=5 (http://www.foar.ru/topic.php?forum=30&topic=5)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Февруари 04, 2015, 11:27:40 am
Няма проблем да решиш задачата с Ардуино, трябва да мериш периода на постъпващите импулси и на базата на формула да променяш зададената стойност на един цифров потенциометър, който да участва във въпросната схема. Разбира се за целта ще трябва да се напише алгоритъм.
Но мисля, че има и вариант без процесор. Ако ползваш преобраувател  честота - напрежение (V/F converter), ще получиш напрежение пропорционално на честоата на въртене на педалите. След това е лесно да се преобразува напрежението в PWM за управление на двигателя. Кратка спрвка с Google показва че има готови схеми за  V/F преобразуватели - примерно LM2907/LM2917.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 04, 2015, 09:58:55 pm
Благодаря ти yasko, но точно в това ми е проблема, не мога да напиша сам този код. Разбирам че входящите импулси според зависимост от честотата им е необходимо да се преобразуват в сигнал подходящ за цифровият потенциометър.Разгледах в гугъл за този тип потенциоментри, но не ми стана ясно как точно работят.Информация има много, но все е на чужд език, а за мен това е голяма пречка..

Хрумна ми една идея:
1.Импулсите подавани от към педалите да се приемат в чипа, той да ги ''обработва'' и при определена честота да включва секция от резистори с малки разлики в съпротивлението, няма да е плавно регулирането, но пък така елиминирам цифровият потенциометър, за който не знам нищо и нямам идея как да го включвам в схемата.
2.Когато засече импулс от педалите, без значение от честотата му да активира изпълнителен орган, примерно реле.През контактите на релето ще включвам отново различни резистори, на мястото на потенциометъра в платката за оборотите, само че този път ще имам един вид ''скоростен лост'' Включвам към контактите на релето по-голям резистор и въртя педалите.Колкото и да въртя няма да се надвишат оборотите на мотора над стойността позволена от резистора.После включвам друг резистор и сменявам скоростта.Това примерно с някой галетен превключвател или друго, което да е удобно.

Но не мога да напиша този код, надявам се да ми помогнете с кода. :)



Малко да редактирам поста:
Намерих малко инфо, което нямам идея дали съм разбрал правилно, коригирайте ме! Със зелено съм посочил къде, според което съм схванал трябва да свържа настоящият потенциометър, а на мястото на бутоните да се свърже Arduino с подходяща програма.



http://bg.ruodiantong.com/home-audio/other-home-audio/1019030718.html (http://bg.ruodiantong.com/home-audio/other-home-audio/1019030718.html)



(http://media.snimka.bg/s1/4286/034816474-big.jpg)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Февруари 06, 2015, 08:40:00 am
Правилно си схванал концепцията за цифровия резистор. При цифровите резистори има някои ограничения по отншение на напрежението, което им се подава.
Имам няколко въпроса:
1. На колко волта захранваш въпросния регулатор?
2. С какъв датчик ще измерваш оборотите на педалите и каква ще бъде очаквана честота?
3. Тествал ли си в реални условия този регулатор?
По принцип при варината с Ардуино би могло да се елеминира тази схема на регулатора и да се управлява директно крайния транзистор с PWM от Ардуино.
Предлагам като първа стъпка за решаване на проблема да изясним добре началните условия на задачата.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 06, 2015, 02:47:22 pm
Регулатора го захранвам с 12 волта, като мисля веригата на полевия транзистор да е 48V понеже на толкова ще работи мотора.Тествал съм го с друг двигател на 12V и работи много добре, има и обратна връзка за стабилизиране на оборотите.Схемата по принцип съм я правил за друго, но транзистора е доста мощен и мисля че няма да има проблем като се натовари.Ще подменя стабилизатора понеже максималното входно напрежение на този е по-малко, примерно LM317 и после 7808.
Оборотите смятам да се измерват с рид реле или нещо подобно, примерно от аларма за врата, от тези които слагат по вратите на магазините, на всяко минаване на магнита на включва.Може би няколко такива по окръжност за да не се налага да се въртят педалите много докато ''захапе''.Нещо което да не се влияе от влага или мръсотия толкова много.Когато са повече контактите предполагам, че честотата зададена в програмата трябва да е по-висока.Ако са 4 на по 90 градуса едно спрямо друго, може би максималната честота ще е 4hz, не знам дали мога да го променям после в програмата но това май трябва опитно да се нагласи.

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


Това е схемата на регулатора, който смятам да ползвам:

(http://www.coilgun.ru/920/regulator.gif)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 08, 2015, 04:36:17 pm
Това дали няма да работи, но да се преработи вместо дисплей при определени обороти да подава високо ниво на няколко пина, на които да закача релета, които пък от своя страна да превключват резистори с различна стойност..

http://www.instructables.com/id/Arduino-Bike-Speedometer/ (http://www.instructables.com/id/Arduino-Bike-Speedometer/)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Февруари 10, 2015, 12:15:55 am
Проекта, който си дал може да се ползва като основа, но това с релетата, които превключват резистори не е много елегантно..
Аз за момента си го представям така - Ардуиното мери преиода на постъпващите импулси на входа, след това прави една проста сметка и настройва един PWM генертор. На този PWM пин имаме вързан MOSFET драйвер (примерно TC4420), който  управлява крайния транзистор и регулира скоростта на въртене.  Планирам до няколко дни да сглобя едно Ардуино и може да разцъкаме този проблем.
Но ако може да ми обясниш нещо - говориш за колело с ел. мотор, а после се намесват и педали за управление. Ел. колело не се ли управлява чрез ръкохватка като мотор?
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 10, 2015, 03:30:03 am
Да така е, електровелосипедите са с ръкохватка, точно като на мотор, даже ги гледах, че ги продават с вграден потенциометър и може да се свържат директно с платката за управление.При мен обаче колелото не е точно колело ами е като рикша, и е с волан, няма как да използвам ръкохватка.Доста време го мисля и според мен варианта за управление с педалите ми се струва най-удачен.Това с релетата наистина не е много добре, и няма да има плавно регулиране, или пък при някакви стойности релетата да се чудят да включат ли, да не включат ли.. но тепърва се уча с програмирането и търся по-прости работещи варианти.С този драйвер към Arduino, май е по-добре, има го по магазините, а цифровите потенциометри като разпитвах по магазините не открих.Мисля си на педалите да има повече магнити, за да се увеличи честотата на импулса и регулирането да е по-плавно.
Това открих за драйвера, втори пин се свързва към Arduino, нали така?

(http://forum.cxem.net/index.php?s=f30ac6d021bf32474630b4e993807b24&app=core&module=attach&section=attach&attach_rel_module=post&attach_id=189211)

Сега ще потърся да си го набавя този драйвер, да имам всичко налично и да остане програмата
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Февруари 10, 2015, 08:48:41 am
В общи линии това е схемата на свързване, но когато се управлява индуктивен товар (мотор) се слага един диод в обратна посока паралелно на мотора, както е в първата схема.
Каква е мощността на мотора, който ще управляваш? За мощни мотори има по-добри схеми с два транзистoра на изхода (half bridge)  и в този случай се ползава друг драйвер примерно:  IR2104 (http://store.comet.bg/Catalogue/Product/9199/). Ще гледам довечера да драсна една схема, но има и доста схеми в нета.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 10, 2015, 12:15:17 pm
Сега имам един 350W
http://motobg.net/ocart/index.php?route=product/product&path=11&product_id=1850 (http://motobg.net/ocart/index.php?route=product/product&path=11&product_id=1850)
но по-натам като по спестя ще търся по-голям примерно 1киловат, че конструкцията стана тежка.Моята схема на регулатора на обороти я правих с BUZ11, с един радиатор по-голям може и да стане, дават го 30А http://jnaudin.free.fr/vpexp/images/buz11.gif (http://jnaudin.free.fr/vpexp/images/buz11.gif) , но нищо не пречи да взема IR2104 и да сложа два транзистора за по-сигурно.Няма да бързам докато не го уточним.. Даже с IR2104 ми се вижда по-добре  :)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 19, 2015, 12:27:44 am
Ето тук правят нещо подобно, но е температура вместо импулси , но конвертират една величина в друга.На мен не ми е ясно как става това, как да го изпиша в програмата?
https://www.youtube.com/watch?v=EbaY5D0O9S0 (https://www.youtube.com/watch?v=EbaY5D0O9S0)
 
yasko поръчал съм този драйвер, който ми посочи - IR2140 и тази седмица трябва да пристигне, както и няколко полеви транзистора по-мощни, взел съм идеята доста присърце и се надявам да ми помогнеш още и да стигна до края  :)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Февруари 21, 2015, 12:45:41 am
Няма порблем за помощта стига да имам време.
Нека придвижим нещта малко напред. Ето една схема на включване на IR2104, която съм правил. Ползвах я за регулирне на изх. напрежение на пелтие елемент. Махнал съм от схемата изх. филтър и мисля, че ще работи добре и с мотор. Тази схема съм я тествал до към 8 - 10 ампера при 24V. Транзисторите са IRFZ48N - 55V/64A. Кондензатори C13,C14 са филтрови  за IR2104. C13 трябва да се монтира близо до схемата. IR2104 иска захранване межу 10-20V.  Комдензатори C16 & C17 са филтрови на захранването за моста. C16 трябва да се монтира близо до дрейна на Q1, за да няма отскоци на напрежението при превключването на транзистора.  PWM сигнала се подава на краче 2 (IN), краче 3  (SD) трябва да е във високо ниво за даработи драйвера. Коефициента на запълване не бива да сига 100%, защото няма да има напрежение за превключване на Q1.  Това е специфично за този тип драйвер.  Това е засега по схемата.
За алгоритъма за управление ще пиша в следващия пост.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 23, 2015, 03:43:16 am
Благодаря ти, захващам се с направата на схемата и една отделна платка за нея, до ден-два трябва да пристигне драйвера и ще го тествам да видим какво ще се получи!
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Февруари 24, 2015, 07:48:43 pm
Свързването на мотора така ли е, както съм го нарисувал или е между дрейн и сорс на Q1 и Q2? Понеже нали ще има отделно захранване от самата схема, или да е по-добре с обща маса, а към драйвера да сложа един стабилизатор, че да не са с отделни батерии..

(http://media.snimka.bg/s1/4345/034933097.jpg)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Февруари 24, 2015, 10:11:36 pm
Мотора се свързва така както си ги нарисувал, межу маса и "OUT".  Може да захраниш драйвера със стабилизатор, обаче внимавай  колко е захранването на мотора. Mасата задължително трябва да е обща, но вземи предвид откъде минава тока в отделните контури. Предвиди дебели писти за изходния ток и захранването на мотора. Вероятно ще се наложи да ги усилиш допълнително с проводник, защото 20 -30 А не са малко.
Сглобих една платка, която е съвместима Arduino Uno и скоро ще  мога тествам нещата по отношение на софтуера.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 03, 2015, 12:23:23 am
Нека да започнем с алгоритъма за управление и да разгледаме нещата така - трябва да измерим една входна величина в нашия случай скоростта на въртене на педалите и да я преобразуваме в друга изходна величина - скорост на въртене на мотора.  Предполагаме, че имаме линейна връзка между входната и изходната величина и можем да запишем нещата така: N_motor = N_pedal * K. Нека сега да видим как пратически става това. Имаме следните задачи:
1. Измерване скоростта на въртене на педалите - трябва да имаме датчик, който да ни дава импусли чиято честота пропорционална на скоростта на въртене. Тъй като честота ще е ниска, ще е по удачно да измерваме периода на постъпващите импулси и след това да изчислим честотата.
2. Изчисление на изходнта величина по формулата по горе - тук нещата са изцяло софтуерни, след като сме определили коефициента К нещата се свеждат до умоножение.
3. Задаване скоростта на мотора - ще реугулираме скоростта чрез промяна на напрежението подавано към мотора. Напрежението от своя страна ще променяме чрез PWM сигнал с помощта на описаната  преди схема.
Идеята е да реализираме горния алгоритъм с Ардуино и в следващия пост ще видим какви хардуерни ресурси ще са ни нужни за да  решим задачата.
Един уточняващ въпрос към importante: Педалите които ще задават скоростта на движение вързани ли са физически към някое колело, както е при стандартен велосипед?

Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 03, 2015, 11:48:46 am
За да мога да предавам движението и на двете колела отзад съм усложнил малко конструкцията, но като цяло изглежда така:
(http://media.snimka.bg/s1/4361/034966512.jpg)

(http://media.snimka.bg/s1/4361/034966513.jpg)

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

(http://tpetrov.com/pictures/jpg/kms-30.jpg)

Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 07, 2015, 06:01:43 pm
Правя сега схемата с IR2104, имам няколко въпроса за кондензаторите C15 и C16 електролитни ли са, понеже на схемата са без поляритет и не знам какви да слагам.Мисля да тествам схемата подобно на този https://www.youtube.com/watch?v=T9Zpir5hidw (https://www.youtube.com/watch?v=T9Zpir5hidw) , но да свързвам ли масата на Arduino с общата маса или да го захраня от същото захранване на драйвера?
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 08, 2015, 11:42:53 pm
В мойто изпълнение на въпросната схема ползвам керамични (SMD) кондензатори,  тъй като те са с нисък ESR, но може да ползваш и електролитни. Задължително трябва да имаш обща маса межу ардуино и драйвера. Ардуиното може да го захраниш и отделно. Сложи в управляващите вериги към Ардуино по 100 ома последователно (сигнало IN, SD).
Кой пин на ардуино ще ползваш за PWM?  Имай предвид че функцията "analogWrite" ползва PWM сигнал с честота около 500 - 1000Hz,  която може да е малко ниска за това приложение. Тези дни четох как може да се промени честотата, но не съм експериментирал още.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 09, 2015, 01:33:25 am
Запоявам цял ден, Arduino го захраних направо от стабилизатора на драйвера, на SD подавам +5V а на pin 3 съм свързал IN. Не тръгна, на изхода няма никакво напрежение, значи въобще не отпушва транзисторите.. http://www.edaboard.com/thread133948.html (http://www.edaboard.com/thread133948.html) тук чета, че честотата трябвало да е около 2-3 kHz и резисторите към гейта при честота 1kHz да са около 200 ома,значи може и да става с по-ниска честота, но разбира се това което пишат не може да бъде на 100% Нещо е трудно да го подкарам този драйвер, но предполагам че е от честотата на сигнала

Това не знам дали ще помогне..
http://www.instructables.com/id/ARDUINO-SOLAR-CHARGE-CONTROLLER-Version-30/step10/SCHEMATIC-AND-WORKING/ (http://www.instructables.com/id/ARDUINO-SOLAR-CHARGE-CONTROLLER-Version-30/step10/SCHEMATIC-AND-WORKING/)

// Buck Converter test code

#include <TimerOne.h>
 
void setup()
{
  // Initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards
  pinMode(13, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  digitalWrite(8, HIGH);
  Timer1.initialize(20); // set a timer of length 8uS
  //Timer1.attachInterrupt( timerIsr ); // attach the service routine here
 
  //Set duty cycle
  //Timer1.pwm(9,256);  // 25% duty cycle
 // Timer1.pwm(9, 512); // 50% duty cycle
  Timer1.pwm(9, 768);  //  75% duty cycle
}
 
void loop()
{
  // Main code loop
  // TODO: Put your regular (non-ISR) logic here
}
 
/// --------------------------
/// Custom ISR Timer Routine
/// --------------------------
void timerIsr()
{
    // Toggle LED
    //digitalWrite( 13, digitalRead( 13 ) ^ 1 );
}
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 09, 2015, 11:08:51 pm
Тествах кода, който си дал и при мен схемата работи. Честототата  е малко висока 50KHz (период 20us) за управление на мотор, но може лесно да бъде намалена при инициализация на таймера. Аз тествах при 20kHz (50uS), но няма проблем и да работи на 1kHz (пробвах го). 
Timer1.initialize(50); //20kHzОтносно схемата първо провери захранващото напрежение на пин 1 на драйвера, трябва да в рамките на 10 до 20V. Провери контролните сигнали (IN, SD). Аз свързах цифров пин 8 на Ардуино с пин 3 на IR2104 (тук имаме постоянно високо ниво), а цифров пин 9 (PWM) го вързах на пин 2(IN). Захраних моста с 24V, a IR2104 я захранвам с 12V с един 7812. Ардуиното го захранвам от USB.  Провери дали имаш връзка между масите на Ардуино и драйвера.  Не се плаши ако не тръгне от първия път, това е нормално :)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 10, 2015, 04:25:42 am
Точно както си го свързал ти, така го свързах и аз, на Arduino pin 9 свързвам към PWМ на интегралата, от Pin 8 на Arduino подавам към SD.Масите на драйвера и Arduino са общи понеже ги захранвам от един и същ стабилизатор.
Какво трябва да имам на изхода на драйвера на LO и HO, да го проверя, понеже може да съм издумкал единия транзистор и за това да не завърта мотора.Първоначално бях обърнал местата на гейт и сорс..

Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 10, 2015, 11:00:28 am
С колко волта захранваш ардуиното и драйвера?  Провери с мултицет всички връзки. Направи една снимка да видим как изглежда монтажа.
Относно проверката на LO & HO - първо настрой ардуиното да генерира PWM с коефициент на запълване 25 % и включи схемата. Ако имаш осцилоскоп на изхода LO трябва видиш този PWM сигнал инвертиран, т.е с PWM =75% и с амплитуда равна на захрaнването на драйвера. Ако мериш с мултицет нещата трябва да изглеждат така: на изход 9 на ардуинo трябва да имаш около 1.25V (5V*0.25), което се подава на на pin2-IR2104. При захранване 12V на изхода LO трябва да измериш около 9V (12V*0.75). Това е така наречената "low side"  част на драйвера.
Сега при изхода HO нещата са по-сложни. За захранването на тази част от драйвера (high side) се използва схема за повдигане на напрежението в която участват D3, C15 и Q2. Провери дали въпросните елементи са свързани правилно. След това провери с мултицет напрежението върху C15, ако всичко е наред трябва да имаш около 12V, което показва, че BOOST схемата работи изправно. Без да влизам в детайли по-работата на BOOST схемата при захранване 24V на транзисторите и PWM=25% на изход HO измерваме около 9V. Aко всичко дотук е наред на pin-6(Vs) трябва да имаме 4V (24V*0.25).
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 10, 2015, 02:32:14 pm
Arduino съм го заредил с тази същата програма от по-предният ми пост, само че я редактирах както ти каза:
Timer1.initialize(50); //20kHz
Arduino и драйвера се захранват от същото захранване, с което захранвам и мотора, само че минават през 7812.
pin 9 свързан към IN имам около 3.75V,а на pin 8 свързан към SD имам 5V
На драйвера имам на Vcc  и на общата точка с C15, както и VB - 12V, след кондензатора няма никакво напрежение(VS), както и на LO и HO
BOOST схемата ли не работи, проверявах всичко многократно, смених кондензатора C15 със 100n и същата работа.Транзисторите имат изолационна подложка, не се вижда на снимките, както и C16 е директно на транзистора и маса запоен.

(http://media.snimka.bg/s1/4382/035007242.jpg)

(http://media.snimka.bg/s1/4382/035007243.jpg)

(http://media.snimka.bg/s1/4382/035007244.jpg)
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 10, 2015, 09:19:20 pm
Започва да става интересно :)
Първо да корегираме стойността на PWM на Ардуино, тъй като в момента е на 75% (3,75V -pin9), пък аз съм мерил при 25%. Откоментирай този ред:
Timer1.pwm(9,256);  // 25% duty cycle Сега измери какво имаш на крачета 2 & 3 на IR2104. Целта е да се провери дали PWM сигнала стига до драйвера. Ако на изходите отново няма никой, разкачи транзисторите и виж какво има на изход LO, ако схемата е изправна трябва да измериш около 9V, както писах. В противен случай може да се окаже че схемата не е изправна. Провери още веднъж включването на IR2104.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 10, 2015, 11:28:21 pm
Готово!
На IN имам около ~1.3V на SD имам ~5V, на LO около 8.5V и мотора завъртя.Накрая май се оказа че имам студена спойка при изводите на Arduino платката, но не съм забелязал.Казвам ''май'' понеже презапоих и подмених всичко без драйвера, и може и да не е било само това!Доволен съм, че не е изгорял драйвера или някой транзистор, понеже няма магазин наблизо и всичко поръчвам онлайн и чакам по 2 седмици за някой неща..
Голямо благодаря на yasko за отделеното време, внимание и ценните съвети и напътствия!!!
Сега остава да се сътвори и кода, който ще задвижва мотора от педалите и да се тества на живо  :) :)

Откоментирах този ред, с него тръгна, но ако било заради спойката, може и с 75% да става, ще пробвам да видя какво ще се получи..
Timer1.pwm(9,256);  // 25% duty cycle
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 12, 2015, 12:15:30 am
Браво! Успя да го подкараш.
Ще трябва малко да  поправиш този обемен монтаж защото като тръгнат големите токове може да има още проблеми и изпушване на елементи :)
Предлагам като следваща стъпка да се направи насторйка на PWM чрез потенциометър закачен на някой от аналоговите входове на ардуино.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 13, 2015, 03:56:55 pm
Готово е и това, направих направо нова платка, по-прегледно е, и по-безопасно и ето как изглежда :
https://www.youtube.com/watch?v=SPcRLIZKfe4 (https://www.youtube.com/watch?v=SPcRLIZKfe4)



(http://media.snimka.bg/s1/4391/035025369.jpg)

Закачил съм потенциометър към pin А0 на Arduino.С този код:
#include <TimerOne.h>
 int potPin = 0;
 int potValue = 0;
void setup()
{
 
  pinMode(13, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  digitalWrite(8, HIGH);
  Timer1.initialize(20);
 
Timer1.pwm(9,256); 
}
 
void loop()
{

  potValue = analogRead(potPin) / 4;
  analogWrite(9, potValue);
}
 

void timerIsr()
{
   
}
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 15, 2015, 08:39:23 pm
Много добре изглежда.
Някои насоки за следващите стъпки по софтуера, както писах в предните постове ще мерим период, което значи, че ще измерваме времето между два фронта на постъпващите импулси. Един от вариантите е да вържеш входа на датчика на пин 3  и да закачиш прекъсване на този пин  (примерно по преден фронт). Вътре в прекъсването четеш текущата стойност на времето с помощта на функците millis() или micros(). Периода на импулса ще в равен на разликата в стойностите прочетени в две последователни прекъсвания.
Трябва да уточним диапaзонa на измерваните импулси за да може да се сложат граници на валидните стойности за измервания период.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 16, 2015, 08:09:15 pm
Значи до колкото разбирам, програмата няма да брои моментите на включване, (моментите заключени между две прекъсвания) ами самите прекъсвания? За диапазона на импулсите си го представям така:

(http://media.snimka.bg/s1/4398/035039412.jpg)

По този начин на един оборот на педалите отговарят 8 импулса.Максимален брой импулси може да са 16Hz(два оборота в секунда).И ако го разделя на части при засечени над 4Hz входящи импулси двигателя да върти на 25%, после на 8Hz-50% 12Hz-75% 16Hz 100%..
Това при положение, че въртя педалите с 2 пълни оборота за 1 секунда и това да е максималният праг.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 16, 2015, 10:46:17 pm
Всъщност предлагам да измерваме времето между две прекъсвания, т.е времето за преминаване на два съседни магнита  покрай сензора, което ще отговаря на звъртане на 1/8 от окръжността (45 deg) Ако означим това време с Тp, тогава F = 1/(8*Tp). Пример: ако измерим време 100ms, тогава F = 1/(8*0.1) = 1.25Hz.
Възниква въпроса колко да бъде максималното време между 2 импулса над което да приемем че, няма въртене т.е F = 0.
Стойността на PWM ще бъде пропорционална на честота на въртене на педалите - PWM[%]=k*F. Това е най-простия случай на линейна предвателна функция, но ще трябва да се провери дали е удачна.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 16, 2015, 11:21:35 pm
Те нещата без няколко опита няма да станат, така е доста принципно, но веднъж да хвана логиката и ще ги променям според условията, но ако е според моята постановка, напълно принципно, нямам представа дали тази скорост на въртене ще е удачна, но опитно ще се установи, нещата идват така - за честота на импулса около 4Hz трябва да имаме време между два съседни магнита около 30ms. F=1/(8*0.03) = 4.16Hz.Това ако е минималното, всяко време над 30ms ще значи F=0
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Март 18, 2015, 10:40:02 pm
Малко да уточним за честотите и времената- с 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;
}
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Март 19, 2015, 03:18:35 am
Тука се разминаваме нещо.. Мисля, че сега е по-правилно:

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 - времето за преминаване на два съседни магнита покрай датчика

Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Април 23, 2015, 11:34:22 pm
Да попитам какво стана с проекта? Активен ли е още? Напоследък не ми остава много време за форума, но тествах един алгоритъм за измерване честота на въртене. Ако те интересува още мога да го кача.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Април 24, 2015, 10:07:22 pm
Да, разбира се, пробвам разни начини, но никак не съм добър в програмирането, но трудно се отказвам!!Ще съм ти благодарен да качиш програмката да я тествам.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Май 28, 2015, 09:16:12 pm
Схемата с драйвера IR2104 е добра, пробвам я на празен ход няма ядове и е коректна, обаче на ниски обороти като запъна двигателя и спира, тока на консумация се вдига много.Когато го монтирам страшно голям ток ще тече докато не се развърти мотора на високи обороти, а точно при потегляне ще бъде най-трудно за мотора, а ще се изискват ниски обороти.Не разбирам каква е разликата с реостат, така ли работи схемата или аз съм насмел нещо?Аз мога да въртя потенциометъра докато не тръгне, но ме притесняват токовете когато потегля и е ''напънат''
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: yasko в Юни 04, 2015, 12:18:11 am
Здравей,
Нещата, които набюдаваш са нормални. При ниските обороти очевидно тока през мотора е малък и съответно няма въртящ момент и може да го спреш с ръка. Мотора все пак се опитва да компесира ситуацията и тока нараства. При DC моторите  тока при блокиран ротор (stall current) е много по-голям от номиналния ток. Затова е най-добре DC моторите да се управляват по ток особено когато се ползват като тягови двигатели. Схемата в момемта регулира само изходното напрежение и трябва да тестваш дали е подходяща за твойто приложение.Може да се помисли и да се въведе ограничение по ток, но ще трябва допълнителна електроника.
Титла: Re: Регулиране на обороти на постояннотоков двигател
Публикувано от: importante в Юни 04, 2015, 09:52:20 pm
С ограничение по ток и аз го мислих, но нещата не вървят напред, а просто не отиват назад, в смисъл ползата е че няма да издумкам нещо.Трябва да се ориентирам към схема предвидена за електро скутер или велосипед, но все още не намирам подходяща