На сьогоднішній день ентузіасти дуже зацікавлені в контролі безщірного постійного струму (BLDC)
порівняно з традиційним двигуном постійного струму, продуктивність двигуна покращилася, енергоефективність також покращилася, але це важче у використанні. багато продуктів, що не знаходяться в полиці .
Для цього існує
Наприклад, існує багато маленьких контролерів BLDCS, які дуже добре працюють для літаків RC.
Для тих, хто хоче детальніше вивчити контроль над BLDC, існує також багато різних мікроконтролерів та інших електронних обладнання для промислових користувачів, які зазвичай мають дуже хорошу документацію.
Поки я не знайшов жодного вичерпного опису того, як використовувати мікроконтролер Arduino для управління BLDC.
Крім того, якщо ви зацікавлені в регенеративному гальмуванні або використанні BLDC для виробництва електроенергії, я не знайшов багато продуктів, придатних для використання з невеликими двигунами, і я не дізнався про те, як контролювати 3-фазовий генератор.
Ця структура спочатку була в розповіді про
розрахунок у реальному часі, я продовжую це робити після закінчення курсу.
Ідея проекту полягає в тому, щоб показати пропорційну модель гібридного автомобіля з зберіганням енергії маховика та регенеративним гальмуванням.
Двигун, що використовується в проекті, - це невеликі BLDC, очищені з пошкодженого жорсткого диска комп'ютера.
Цей посібник описує, як використовувати мікроконтролер Arduino та Hall-
впливає на датчики положення у режимах руху та регенеративного гальмування.
Зверніть увагу, що відвідування Oscillisoft дуже корисно, якщо не істотно, для завершення цього проекту.
Якщо ви не можете отримати доступ до області, я додав кілька пропозицій щодо того, як це зробити без обсягу (крок 5).
Одне, що цей проект не повинен включати в будь -який фактичний контролер двигуна, - це будь -яка функція безпеки, наприклад, над поточним захистом.
Насправді найгірше - це те, що ви спалюєте двигун HD.
Однак впровадження захисту від поточного потоку за допомогою поточного обладнання не складно, і, можливо, я зроблю це в якийсь момент.
Якщо ви намагаєтесь контролювати більший двигун, додайте до поточного захисту, щоб захистити свій двигун та власну безпеку.
Я хочу спробувати використовувати цей контролер з більшим двигуном, який може виконати якусь \ 'реальну \', але я ще не маю правильного.
Я помітив, що eBay продав автомобіль 86 Вт за близько 40 доларів.
Виглядає як хорошого кандидата.
Також є веб -сайт RC під назвою \ 'Gobrushless \', який продає набори, які збирають власний BLDC.
Вони не надто дорогі, і варто створити досвід.
Зверніть увагу, що на цьому веб -сайті немає датчика Холла. Ваше!
Написання цієї структури - велика робота.
Сподіваюся, ви вважаєте це корисним, будь ласка, зробіть свої коментарі та пропозиції.
Цифровий мультиметр (DMM)-
Якщо ваш DMM має осцилоскоп лічильника частоти (
краще мати принаймні 2 канали)
T8 Torx драйвер (
вам потрібен один із них, щоб відкрити будь-який жорсткий диск).
Є хороший магазин обладнання.
Машинна майстерня та швидкий прототип (
вони дуже корисні, але я думаю, що цей проект можна зробити без них).
Material bldc motor magnetic ring from computer hard disk (
Half of the motor)
From another hard driveSeveral (3-6)
There is a second small motor in the silver disk on the hard disk (DC brushed OK)
Rubber band or (preferably)
The brushless DC motor with a handle with another motor electronic bread plate solid wire month the Arduino Duemilanove 120 k ohm resistor six to 400 ohm resistor linear or rotating Poteniometer100 K OHMST MICRO Circuit L6234 Трифазний драйвер двигуна Ic два 100 конденсаторів UF One 10 NF конденсатор один 220 NF конденсатор один 1 UF конденсатор One 100 UF Три прийому DIODES ONE
2
. Цей посібник (
він контролюється за допомогою індукції потенційного спинки).
Технічні характеристики та інформацію про закупівлі можна знайти в цих двох посилань: Якщо ви збираєтеся зробити цей проект, я пропоную вам витратити час, щоб ретельно зрозуміти, як працює BLDC.
Існує велика кількість посилань в Інтернеті (
див. Нижче для деяких пропозицій).
Однак я включаю в свій проект деякі діаграми та таблиці, які повинні допомогти вам зрозуміти.
Ось перелік концепцій, які, на мою думку, є найважливішими для розуміння цього проекту: МОСФЕТ ТРАНСістори 3-фазового
модуляції
фазового двигуна (PWM) зал -
мікрочіпа AVR443: Генеральний мотор
DC
MICELBRES Датчик 'Літаюча зірка', гарне відео про очищення двигуна жорсткого диска, але автор, здається, працює двигуном як кроковий двигун і як кроковий двигун. Більш конкретна довідкова веб -сторінка для BLDC на моторному приводі L6234, включаючи аркуші даних, нотатки додатків та інформацію про придбання.
Безкоштовний зразок для безщасливих приводів двигуна для гібридних електромобілів.
Це єдиний документ, який я знайшов, який описує порядок зміни фази регенеративної гальмування.
У цій роботі корисно регенеративне гальмування в електромобілях, я позичив у нього кілька номерів, але я думаю, що це неправильно описує, як працює регенерація.
Я робив цей проект з переробленим двигуном диска, тому що його було легко пройти, і мені подобається використовувати невеликий двигун низької напруги для вивчення шнура, керованого BLDC, і не спричиняє жодних проблем із безпекою.
Крім того, конфігурація магніту датчика залу стає дуже простою за допомогою магнітного кільця (ротора)
з другого з цих двигунів (див. Крок 4).
Якщо ви не хочете перейти до всіх клопоту встановлення та калібрування датчика залу (кроки 5-7),
я знаю, що є принаймні кілька датчиків датчиків приводу CD/DVD.
Для того, щоб забезпечити інерцію повороту на двигун і надати їм трохи навантаження, я поклав на двигун 5 жорстких дисків, обережно склеєних з невеликим сильним клеєм і приклеєним до двигуна (
це зробило маховик у моєму оригінальному проекті).
Якщо ви збираєтеся вийняти двигун з жорсткого диска, вам потрібен привід T8 Torx, щоб відкрутити корпус (
як правило, два гвинти заховані за палицею в етикетці Centeron)
та внутрішні гвинти, які тримають двигун на місці.
Вам також потрібно видалити головний зчитувач (
керівник звукового кола)
таким чином ви можете вийняти диск пам'яті, щоб дістатися до двигуна.
Крім того, вам знадобиться другий самий двигун жорсткого диска, щоб вийняти ротор з цього двигуна (
всередині є магніт).
Для того, щоб розібрати двигун, я схопив ротор (вгорі)
мотор і підняв його на статорі (внизу),
дві викрутки знаходяться на 180 градусів один від одного.
Тримати двигун на досить щільній пари нелегко.
Можливо, ви захочете побудувати деревний V-
блок, який використовується для цієї мети.
Я просвердлив отвір у магнітному кільці на токарному верстаті, щоб воно комфортно вписувалося на верхню частину двигуна.
Якщо ви не можете використовувати токарний верстат, ви можете виправити перевернутий ротор на двигуні сильним клеєм.
На малюнках 2 та 3 нижче показані інтер'єр одного з двигунів, які я розібрав.
У першому таймі там (ротор) - 8 полюсів (
магніт загорнутий у пластик).
У другому таймі (статора)
є 12 слотів (обмоток).
Кожна з трьох моторних фаз має 4 слоти послідовно.
Деякі HD -двигуни мають три контакти внизу, один контакт на фазу, а другий - центральний кран двигуна (
де зустрічаються три етапи).
У цьому проекті не потрібно центрального крана, але він може стати в нагоді в контролі без сенсорів (
я сподіваюся, що один день випустить записку про контроль без сенсорів).
Якщо ваш двигун має чотири контакти, ви можете визначити фазу з OHMERET.
Опір між центральним краном і фазою становить половину опору між будь -якими двома фазами.
Більшість літератури про мотори BLDC займаються тим, хто має потенційну форму хвилі у формі сходу, але двигун жорсткого диска, здається, має потенціал спини, схожий на синуса (див. Нижче).
Наскільки мені відомо, водіння синусоїди з синусою хвилею ПЗМ працює нормально, хоча ефективність може дещо знизитися.
Як і всі двигуни BLDC, цей складається з трифазного напів-
транзисторного мосту (
див. 2-й фотографії нижче).
Я використовую ІС, зроблений ST Micro (L6234)
для мосту, також відомого як драйвер двигуна.
Електричне з'єднання L6234 показано на кроці 8.
Третя фотографія нижче показує схематичну схему драйвера двигуна та три фази двигуна.
Для того, щоб двигун працював за годинниковою стрілкою, перемикач буде здійснений у такому порядку (
перша літера- верхній транзистор, а друга буква- нижній транзистор)
: Крок 1 2 3 4 5 6 за годинниковою стрілкою: CB, AB, AC, BC, BA, CA COLDICWILLE: BC, BA, CA, CB, AB, AC, ці 6-
Послідовність кроку вимагає ”електрику ' '. двигуни.
Тому швидкість обертання кожного двигуна відбувається в чотири рази.
Дві послідовності здаються однаковими, але вони не однакові, тому що для 6-
крок послідовності для CW напрямок поточного потоку через фазу- це один напрямок, а для CCW напрямок потоку протилежний.
Ви можете побачити це самостійно, застосувавши напругу акумулятора або джерела живлення до фази двигуна.
Якщо ви застосуєте напругу, двигун буде рухатися трохи в одному напрямку і зупиниться.
Якщо ви зможете швидко змінити напругу на фазі в одній із перерахованих вище послідовностей, ви можете обертати двигун вручну.
Транзистори та мікроконтролери дуже швидко виконують усі ці комутатори, перемикаючи сотні разів в секунду, коли двигун працює з великою швидкістю.
Крім того, зауважте, що якщо напруга застосовується до обох фаз, двигун трохи рухається, а потім зупиняється.
Це тому, що крутний момент дорівнює нулю.
Це ви можете побачити на четвертому фотографії нижче, на якій відображається потенціал задньої частини пари моторних фаз.
Це синусова хвиля.
Коли хвиля проходить через X-
вал, крутний момент, забезпечений цією фазою, дорівнює нулю. У шестиступеневій
послідовності зміни фази BLDC, яка ніколи не була.
Перед тим, як крутний момент на певній фазі стає низьким, потужність перемикається на іншу фазову комбінацію.
Більші двигуни BLDC зазвичай виробляються датчиками Холла всередині двигуна.
Якщо у вас такий двигун, то ви можете пропустити цей крок.
Крім того, я знаю, що в датчику вже зловживання вбудовані привідні двигуни CD/DVD.
Коли двигун обертається, для виявлення положення використовуються три датчики залів, тому зміна фази здійснюється в потрібний момент.
Мій двигун HD працює до 9000 об / хв (150 Гц).
Оскільки в колесі є 24 зміни, при 9000 об / хв, машина змінюється кожні 280 мікросекунд.
Мікроконтролер Arduino працює на 16 МГц, тому кожен тактовий цикл становить 06 мікросекунд.
Я не знаю, скільки тактальних циклів потрібно для зменшення речення, але навіть якщо потрібні 100 тактових циклів, тобто для кожного зменшення речення потрібно 5 мікросекунд.
HD -двигуни не мають датчиків залу, тому необхідно встановити їх на зовнішній стороні двигуна.
Датчик повинен бути закріплений відносно обертання двигуна та піддається впливу ряду полюсів, які відповідають обертанню двигуна.
Моє рішення полягає в тому, щоб зняти магнітне кільце з того ж двигуна і встановити його догори дном на двигун, який слід керувати.
Потім я встановив три датчики залів над цим магнітним кільцем, 30 градусів один від одного на валу двигуна (
обертання електричного двигуна 120 градусів).
Мій власник датчика залу складається з простого тримача, що складається з трьох алюмінієвих деталей, оброблених мною, та трьох пластикових деталей, виготовлених на швидкому прототипі.
Якщо у вас немає цих інструментів, не повинно бути складно знайти інший спосіб вказати позицію.
Створення дужок для датчиків залів буде складнішим.
Це можливий спосіб роботи: 1.
Знайдіть пластиковий піднос потрібного розміру, і ви можете обережно епоксидний датчик залу. 2.
На папері надрукований шаблон, який має те саме коло, що і радіус магнітного кільця, а три позначки - 15 градусів 3 один від одного.
Приклейте шаблон на диск, а потім використовуйте шаблон як орієнтир, щоб ретельно розмістити на місці датчик залу.
Тепер, коли датчики залу встановлюються на двигуні, підключіть їх до схеми, показаного нижче, і протестуйте їх за допомогою DMM або осцилографа, щоб переконатися, що вихід стає все вище і нижче, коли двигун обертається.
Я запускаю ці датчики під 5 В за допомогою виходу Arduino 's 5 В.
Датчик залу має високий або низький вихід (1 або 0),
залежить від того, чи відчувають вони Антарктику чи Арктику.
Оскільки вони знаходяться на 15 градусів, магніти обертаються під ними і змінюють полярність кожні 45 градусів, ці три датчики ніколи не будуть високими або низькими одночасно.
Коли двигун обертається, вихід датчика становить 6-
Шаблон кроку, показаний у наступній таблиці.
Датчик повинен бути вирівняний рухом двигуна, щоб один із трьох датчиків змінювався саме в положенні зміни фази двигуна.
У цьому випадку зростаючий край датчика першого залу (H1)
повинен відповідати відкриттю комбінації C (високо) та B (низький).
Це еквівалентно включенню транзисторів 3 та 5 у мостовому ланцюзі.
Я вирівнюю датчик з магнітом з осцилоскопом.
Для цього я повинен використовувати три канали обсягу.
Я обертаю двигун, підключившись до пояса другого двигуна і вимірюю потенціал задньої частини між двома фазовими комбінаціями (
A і B, A і C)
Це два синуси.
Як і хвилі на малюнку нижче,
а потім подивіться на сигнал датчика Холла 2 на каналі 3 осцилографа.
Датчик датчика залу повертається до тих пір, поки піднімається край датчика залу повністю не вирівняється з точкою, де слід проводити зміну фази (див. Нижче).
Зараз я розумію, що є лише два канали, щоб зробити однакову калібрування.
Якщо BEMF фазової комбінації B-
за допомогою C, піднімається край H2 буде пов'язаний з кривою БК.
Причина, чому тут слід здійснити зміну фази, - це завжди тримати крутний момент двигуна максимально високо.
Потенціал задньої частини пропорційний крутного моменту, і ви помітите, що кожна зміна фази відбувається, коли потенціал задньої частини проходить нижче наступної кривої етапу.
Тому фактичний крутний момент складається з найвищої частини кожної фазової комбінації.
Якщо ви можете отримати доступ до області, ось моя ідея вирівнювання.
Це насправді цікава вправа для всіх, хто хоче знати, як працює мотор BLDC.
Якщо фаза двигуна A підключена (позитивна) і B (негативна)
до джерела живлення та увімкніть джерело живлення, двигун трохи обертається і зупиниться.
Потім, якщо негативна потужність переміщується на фазу С і потужність увімкнено, двигун повернеться далі і зупиниться.
Наступною частиною послідовності буде переміщення позитивного ведучого до фази В і т. Д.
Коли ви це робите, двигун завжди зупиняється там, де крутний момент дорівнює нулю, що відповідає одному місці, де діаграма проходить через осі x на діаграмі.
Зауважте, що нульова точка комбінації третьої фази відповідає положенню зміни фаз перших двох комбінацій.
Тому нульове положення крутного моменту B-
комбінації C- це місце, де ви хочете розмістити піднімаючий край H2.
Позначте цю позицію дрібними слідами або гострими лопатками, а потім відрегулюйте датчик датчика залу за допомогою DMM, поки вихід H2 не буде вище на цій позначці.
Навіть якщо ви трохи відхилитесь від шкільного розкладу, мотор повинен добре працювати.
Три фази двигуна отримають живлення від трифазного двигуна L6234.
Я виявив, що це хороший продукт, який може витримати тест часу.
Існує багато способів випадково обсмажувати ваші компоненти під час використання електроніки Power, я не інженер -електрик, і я не знаю, що відбувається.
У моїй шкільній програмі ми зробили власний 3-
фазовий напівмодний вихід 6 MOSFET транзисторів та 6 діодів.
Ми використовували це на HIP4086 іншого водія, але у нас є багато проблем з цією установкою,
ми спалили купу транзисторів та чіпів.
Я запускаю L6234 (
так двигун) при 12 В.
L6234 має незвичайний набір входів для контролю на півстостях з 6 транзисторів.
Не кожен транзистор має вхід, а вхід (EN)
для кожного з трьох етапів, а потім інший вхід (в)
виберіть, який транзистор у відкритому фазі (верхній або нижній).
Наприклад, увімкніть транзистор 1 (верхній) та 6 (нижній)
і EN1, і EN3 високі (
EN2 низький, щоб зберегти стадію закритою)
у 1 високий, in3 низький.
Це робить фазу комбінації-C.
While the L6234 application note suggested applying the PWM used to control the speed of the motor to the IN pin, I decided to do it on the EN pin because, at that time, I think it would be \'strange\' to turn on the upper and lower transistors of the phase alternately \'.
In fact, it seems that there is nothing wrong with turning on the low transistors of both phases at the same time, because they have the same potential, so neither of them Проходить
мій
.
метод
через Трохи невеликий, тому для більших версій, будь ласка, зверніться до документації для L6234.
ПРИМІТКА: Майк Антон зробив друковану плату для L6234, який (я вірю)
замінить цю доріжку та зберегти вам роботу зі складання його.
Дивіться ці посилання на характеристики та інформацію про придбання: Я не знайшов багато про 3-
я опишу своє розуміння того, як це працює.
Зверніть увагу, що я не інженер -електрик, і ми будемо вдячні за будь -які виправлення мого пояснення.
Під час руху система управління надсилає струм у три фази двигуна таким чином, що максимально збільшує крутний момент.
При регенеративному гальмуванні система управління також максимізує крутний момент, але цього разу це негативний крутний момент, який змушує двигун сповільнюватися, відправляючи струм назад до акумулятора.
Регенеративний метод гальмування, який я використовував, надійшов із паперу з Національної лабораторії Окрідж у США. С. Говт.
Лабораторія, яка проводить багато досліджень для автомобільних двигунів.
Діаграма нижче походить з іншого документу, який допомагає проілюструвати, як він працює (
однак, я думаю, що пояснення, наведене в цьому другому документі, частково невірно).
Майте на увазі, що коли двигун обертається, напруга BEMF у фазі двигуна коливається вгору і вниз.
На малюнку він показує момент, коли BEMF високий на стадії B і низький на стадії.
У цьому випадку, коли струм може протікати від B до.
Критично для регенеративного гальмування, низькокласні транзистори швидко вмикаються і вимикаються (
тисячі комутаторів ШІМ в секунду).
Коли вимикач високого класу вимикається;
Коли вмикається низький транзистор, струм тече, як показано на першому малюнку.
Що стосується електроніки живлення, ланцюг схожий на пристрій, який називається перетворювачем підсилювача, де енергія зберігається у фазі двигуна (
у Вікіпедії є хороша стаття, що пояснює, як працює перетворювач Boost).
Ця енергія вивільняється, коли транзистор низького класу вимкнено, але при більш високій напрузі струм миттєво протікає через \ 'анти-екскітування \' діод поруч з кожним транзистором, а потім повертається до акумулятора.
Діод запобігає протіканням струму від акумулятора до двигуна.
У той же час струм у цьому напрямку (
всупереч за кермом)
взаємодіє з магнітним кільцем, щоб створити негативний крутний момент, який уповільнює двигун вниз.
Транзистор з низькою стороною використовує ШІМ-перемикач, а робочий цикл ШІМ контролює кількість гальмування.
Під час руху, комутація двигуна перемикається від однієї комбінації на наступну вчасно, щоб підтримувати максимальний можливий крутний момент.
Комутація регенеративного гальма дуже схожа, оскільки деякий режим комутації змушує двигун виробляти якомога більше негативного крутного моменту.
Якщо ви дивитесь відео на першому кроці, ви можете побачити, що регенеративне гальмо працює нормально, але воно не працює добре.
Я думаю, що головна причина полягає в тому, що двигун жорсткого диска, який я використовую, є дуже низьким двигуном крутного моменту, тому він не виробляє багато BEMF, крім найвищої швидкості.
З нижчою швидкістю дуже мало регенеративного гальмування (якщо такий є).
Крім того, моя система працює при відносно низькій напрузі (12 В),
крім того, оскільки кожен шлях через антизексиційний діод зменшує напругу на кілька вольт, це також значно знижує ефективність.
Я використовую нормальні діоди випрямляча, і я можу отримати кращу продуктивність, якщо я використовую деякі спеціальні діоди з меншим падінням напруги.
Нижче наведено перелік входів та виводів на Arduino.
Також включайте діаграми та фотографії моєї дошки. 2-
Digital entry-Hall 1
120 K resistance of Gnd 3
Digital entry hall 2
120 K resistance of Gnd 4
Hall 3 digital input-
120 K resistance of Gnd 5
1 Digital Output in series with 400 ohm resistor 6
2 Digital outputs in series with 400 ohm resistor 7
3 Digital outputs in series with 400 ohm resistor 9-
Digital Output of EN 1 in series with 400 ohm resistor 10-
Digital Output of EN 2 in series with 400 ohm resistor 11-
Цифровий вихід EN 3 є послідовним із резистором 400 Ом, потенціометром 100 К Ом, з 5 В та GND, підключеним на обох кінцях, і аналоговим штифтом 0, підключеним посередині.
Цей потенціометр використовується для управління швидкістю двигуна та гальмуванням.
5 В джерело живлення також використовується для запуску датчиків залу (див. Крок 5).
Ось вся програма, яку я написав для Ardjuino, яка включає коментарі:/* bldc_congroller 3. 1.
1* 3 від Девіда Глазера.
The X series is ST L6234 3-
Phase motor driver IC * running disk drive motor clockwise * with regenerative braking * motor speed and braking controlled by a single potentiometer * motor position by three Hall-
Effect Sensor * Arduino receives output from 3 hall sensors (pins 2,3,4)
* And convert their combination to 6 different phase-changing steps on pins 9, 10, 11 at 32 kHz * PWM output (
Corresponding to EN 1,2, 3 * 3 на штифті 5,6, 7, відповідно (у 1,2,3)
підключіть моделювання в 0 до потенціометра, щоб змінити робочий цикл ШІМ та змінювати * між рухом і регенеративним
*
гальмуванням
*
.
Змінні датчиків залів (
;
)
3,2,1
int
Hallstate2
/Зал 1 pinmode (3, вхід);
/Зал 2 pinmode (4, вхід);
/L6234 HALL 3/Вихід драйвера двигуна Pinmode (5, вихід);
/В 1 pinmode (6, вихід);
/В 2 pinmode (7, вихід);
/В 3 pinmode (9, вихід);
/En 1 pinmode (10, вихід);
/En 2 pinmode (11, вихід);
/En 3/серіал. почати (9600);
Якщо ви будете використовувати серійне з'єднання, будь ласка, не визначте цей рядок.
Команда Flush в кінці програми.
/* Встановити частоту ШІМ на штифтах 9, 10 та 11/встановити ШІМ до 32 кГц для штифтів 9, 10/Перший очистіть усі три шматочки попереднього опорочування: int prescalerval = 0x07;
/Створіть змінну під назвою Prescalerval і встановіть її для дорівнювання двійкового числа \ '00000111 \' TCCR1b & = ~ prescaler
/і значення в tccr0b з бінарним числом \ '11111000 \' /тепер встановіть відповідний біт попереднього кодування: int попередній біт 2 = 1;
/Встановіть prescalerval, щоб дорівнювати бінарному числу \ '00000001 \' tccr1b | = prescalerval2;
/Або значення в tccr0b з двійковим числом \ '00000001 \' /встановити PWM до 32 кГц для PIN-коду 3,11 (
ця програма використовує лише PIN 11)
/очистіть усі три біти попереднього каліера спочатку: TCCR2B & = ~ Pre-Calerval;
/І значення в TCCR0B з двійковим числом \ '11111000 \'/тепер встановіть відповідний біт попереднього кодування: TCCR2B | = Попередній біт 2;
/Або значення в tccr0b з двійковим числом \ '00000001 \'/спочатку очистіть усі три попередньо кодовані біти:}
Основна петля/prgrom void pet () {
/time = milis ();
Час після початку друку. println (час); // серіал. друк (\ '\');
Дросель = Analogread (0);
/Дросель потенціометр MSPS = MAP (
дросель, 512,1023, 0,255);
/Водіння відображається у верхній половині потенціометра BSPEED = карта (
дросель, 0,511,255, 0);
/Регенеративне гальмування на півтори частини внизу горщика/MSP ED = 100;
/Для налагодження HallState1 = DigitalRead (2);
/Прочитайте значення введення з HALL 1 2 = Digital Read (3);
/Прочитати значення введення з Hall 2 3 = Digital Read (4);
Прочитайте значення вхідного/числового запису з Hall 3 (8, HallState1);
/Коли відповідний датчик знаходиться у великій потужності, світлодіод вмикається
спочатку для налагодження DigitalWrite (9, HallState2);
// DigitalWrite (10, HallState3); Hallval = (hallstate1)+ (2*hallstate2)+ (4*hallstate3);
/Обчисліть двійкові значення 3 датчиків залів/* серії. друк (\ 'H 1: \');
Для налагодження послідовного порту. println (hallstate1); Серіал. друк (\ 'H 2: \'); Серіал. println (hallstate2); Серіал. друк (\ 'H 3: \'); Серіал. println (hallstate3); Серіал. println (\ '\');
*/// серіал. println (mspeed); // серіал. println (Hallval); // серіал. друк (\ '\');
/Монітор транзистора/затримка (1000);
/* T1 = DigitalRead (2); // t1 = ~ t1;
T2 = DigitalRead (4); // t2 = ~ t2;
T3 = DigitalRead (5); // t3 = ~ t3; Серіал. друк (T1); Серіал. print (\ '\ t \'); Серіал. друк (T2); Серіал. print (\ '\ t \'); Серіал. друк (T3); Серіал. друк (\ '\'); Серіал. друк (\ '\'); Серіал. друк (DigitalRead (3)); Серіал. print (\ '\ t \'); Серіал. друк (DigitalRead (9)); Серіал. print (\ '\ t \'); Серіал. println (DigitalRead (10)); Серіал. друк (\ '\'); Серіал. друк (\ '\'); // затримка (500);
*/Зміна фази руху/Кожен бінарний номер має випадок, що відповідає різним транзистом, що ввімкнено/біт, що використовується для зміни значення вихідного драйвера Arduino:/Portd, що містить вихід у штифт на штифті L6234/вихід, що використовується для визначення верхнього транзистора або нижнього транзистора/EN PIN для кожної фази, керована
Adulin контролюється потенціометром). if (дросель> 511) {switch (hallval) {
випадок 3:/portd = 1111xxx00;
/Очікуваний вихід PIN-коду 0-
7 xxx відноситься до введення HALL, а PORTD & = B00011111 не слід змінювати;
Портд | = B01100000;
/Analowrite (9, mspeed);
PWM на фазовому (
висококласному транзисторі) аналогічний (10,0);
Фаза B закриття (мито = 0) аналога (11,255); // фаза C на -дуті = 100% (
низькокласний транзистор) розрив;
Випадок 1:/portd = b001xxx00;
/Очікуваний вихід PIN-коду 0-
7 PORTD & = B00011111;
/Портд | = B00100000;
/Analowrite (9, mspeed);
PWM на фазовому (
висококласному транзисторі) аналогічний (10,255); // фаза B на (
низькому класі транзистора) аналога (11,0); // фаза B вимкнено (мита = 0) перерва;
Випадок 5:/portd = b101xxx00;
/Очікуваний вихід PIN-коду 0-
7 PORTD & = B00011111;
/Портд | = B10100000; аналога (9,0); аналога (10 255); аналога (11, mspeed); перерва;
Випадок 4:/portd = B100xxx00;
/Очікуваний вихід PIN-коду 0-
7 PORTD & = B00011111;
Портд | = bym000;
/Analowrite (9,255); аналога (10,0); аналога (11, mspeed); перерва;
Випадок 6:/portd = B110xxx00;
/Очікуваний вихід PIN-коду 0-
7 PORTD & = B00011111;
Порт Б11. 000 =;
/Analowrite (9,255); аналога (10, mspeed); аналога (11,0); перерва;
Випадок 2:/portd = b010xxx00;
/Очікуваний вихід PIN-коду 0-
7 PORTD & = B00011111;
B0201700 PORTD | =;
/Analowrite (9,0); аналога (10, mspeed); аналога (11,255); перерва; }}
/Регенеративна зміна фази гальма /Портд (
вихід у PIN -коду на L6234)
Штифти завжди низькі, тому під час регену використовуються лише низькі транзистори на кожній фазі. гальмування. else {
/portd = b000xxx00;
/Очікуваний вихід PIN-коду 0-
7 PORTD & = B00011111;
Портд | = BYM0000; // перемикач (Hallval) {
випадок 3: написання аналогії (9, bspeed); // аналога (9,0); аналога (10,0); аналога (11,0); перерва;
Випадок 1: написання аналогії (9, BSPEED); аналога (10,0); аналога (11,0); перерва;
Випадок 5: написання аналогії (9,0); аналога (10,0); аналога (11, bspeed); перерва;
Випадок 4: написання аналогії (9,0); аналога (10,0); аналога (11, bspeed); перерва;
Випадок 6: написання аналогії (9,0); аналога (10, bspeed); аналога (11,0); перерва;
Випадок 2: написання аналогії (9,0); аналога (10, bspeed); аналога (11,0); перерва; }}
/Time = millis ();
Час після початку друку. println (час); // серіал. друк (\ '\'); // серіал. Flush ();
/Якщо ви хочете налагодити за допомогою послідовного порту, будь ласка, UNCOMMENT}
Я думаю, що операція, яку Arduino робить у цьому проекті, настільки проста, що здається марнотратством цього завдання з мікропроцесором.
Насправді, примітки щодо застосування L6234 рекомендують простий програмований масив воріт (
GAL16V8, виготовлений з напівпровідника решітки) для виконання цієї роботи.
Я не знайомий з програмуванням цього пристрою, але вартість ІС становить лише 2 долари. 39 у Ньюарку.
Інші подібні інтегровані схеми також дуже дешеві.
Інший варіант - зібрати разом стриманні логічні ворота.
Я придумав кілька відносно простих логічних послідовностей, які могли б вигнати L6234 IC з виходу трьох датчиків залу.
Нижче показана діаграма А, а таблиця істини для всіх трьох етапів (
для того, щоб логічна схема фаз B і C, \ 'не \' двері повинні бути перемикені на іншу сторону \ 'або.
Проблема з таким підходом полягає в тому, що на кожному етапі є майже 20 з'єднань, тому вона потребує трохи роботи, щоб скласти його разом.
Найкраще програмувати її як програмування, що має право.