В настоящее время энтузиасты очень заинтересованы в управлении бесщеточным двигателем постоянного тока (BLDC).
По сравнению с традиционным двигателем постоянного тока производительность двигателя улучшилась, энергоэффективность также улучшилась, но его сложнее использовать. множество готовых продуктов.
Для этой цели существует
Например, существует множество небольших контроллеров BLDC, которые очень хорошо работают с радиоуправляемыми самолетами.
Для тех, кто хочет более подробно изучить управление BLDC, существует также множество различных микроконтроллеров и другого электронного оборудования для промышленных пользователей, которые обычно имеют очень хорошую документацию.
До сих пор я не нашел подробного описания того, как использовать микроконтроллер Arduino для управления BLDC.
Кроме того, если вы заинтересованы в рекуперативном торможении или использовании BLDC для выработки электроэнергии, я не нашел много продуктов, подходящих для использования с небольшими двигателями, и не узнал, как управлять трехфазным генератором.
Эта структура изначально была в рассказе о
вычислениях в реальном времени, я продолжаю делать это после окончания курса.
Идея проекта — показать пропорциональную модель гибридного автомобиля с накопителем энергии на маховике и рекуперативным торможением.
Двигатель, использованный в проекте, представляет собой небольшой BLDC, извлеченный из поврежденного жесткого диска компьютера.
В этом руководстве описывается, как использовать микроконтроллер Arduino и
датчики положения Hall-Affects в режимах движения и рекуперативного торможения.
Обратите внимание, что посещение oscillisoft очень полезно, если не необходимо, для завершения этого проекта.
Если вы не можете получить доступ к области, я добавил несколько советов, как это сделать без области (шаг 5).
Одна вещь, которую этот проект не должен включать ни в один реальный контроллер двигателя, — это какие-либо функции безопасности, такие как защита от перегрузки по току.
На самом деле самое страшное, что вы сожжете мотор HD.
Однако реализовать защиту от перегрузки по току на современном оборудовании несложно, и, возможно, в какой-то момент я это сделаю.
Если вы пытаетесь управлять двигателем большего размера, добавьте защиту от перегрузки по току, чтобы защитить ваш двигатель и вашу собственную безопасность.
Я хочу попробовать использовать этот контроллер с двигателем большего размера, который сможет выполнять «реальную» работу, но у меня пока нет подходящего.
Я заметил, что на eBay машина мощностью 86 Вт продавалась примерно за 40 долларов.
Похоже, хороший кандидат.
Существует также веб-сайт RC под названием GoBrushless, на котором продаются комплекты для сборки собственных BLDC.
Они не слишком дороги, и их создание стоит того, чтобы получить опыт.
Обратите внимание, что на этом сайте нет датчика Холла для двигателя. Фу!
Написание этой структуры — большая работа.
Надеюсь, статья окажется для вас полезной, оставляйте свои комментарии и предложения.
Цифровой мультиметр (DMM).
Если ваш цифровой мультиметр оснащен частотомером, осциллографом (
лучше иметь как минимум 2 канала),
драйвер T8 Torx (
один из них понадобится, чтобы открыть любой жесткий диск).
Есть хороший строительный магазин.
Машинная мастерская и быстрый прототип (
это очень полезно, но я думаю, что этот проект можно реализовать и без них).
Материал: магнитное кольцо двигателя постоянного тока с жесткого диска компьютера (
половина двигателя)
С другого жесткого диска Несколько (3-6)
На серебряном диске на жестком диске имеется второй небольшой двигатель (щеточный постоянный ток в порядке)
Резиновая лента или (предпочтительно)
Бесщеточный двигатель постоянного тока с ручкой с другим двигателем Электронная хлебная пластина Сплошной провод месяц Arduino Duemilanove 120 кОм Резистор от шести до 400 Ом Резистор линейный или вращающийся Потениометр 100 кОмST micro Схема L6234 IC драйвера трехфазного двигателя два конденсатора 100 мкФ один конденсатор 10 нФ один конденсатор 220 нФ один конденсатор 1 мкФ один конденсатор 100 мкФ три приемных диода Один 2.
Биполярный предохранитель Холла-5 ампер Honeywell SS411A 1 держатель предохранителя 3
Примечание. Майк Антон разработал и продал продукт, который заменит силовую электронику и схемы датчика Холла, которые я показал в этом руководстве (
он управляется с помощью обратного потенциала). индукция).
Спецификации и информацию о закупках можно найти по этим двум ссылкам: Если вы собираетесь реализовать этот проект, я предлагаю вам потратить время на то, чтобы полностью понять, как работает и контролируется BLDC.
В Интернете имеется большое количество ссылок (
некоторые предложения см. ниже).
Тем не менее, я включил в свой проект несколько диаграмм и таблиц, которые помогут вам понять.
Вот список концепций, которые, по моему мнению, наиболее важны для понимания этого проекта: Транзисторы MOSFET 3-фазный полумост 6-3
-ступенчатое сокращение предложения
Широтно-импульсная модуляция фазового двигателя (ШИМ)
Микрочип Холла AVR443: общий справочник датчиков Двигатель постоянного тока Основные принципы работы цифровых датчиков положения
Управление трехфазным бесщеточным двигателем постоянного тока на основе управления бесщеточным двигателем постоянного тока
Управление фазовым BLDC-двигателем датчика Холла «Летящая звезда» видео чистки мотора винчестера, но автор судя по всему мотор запускает как шаговый и как шаговый. Более конкретная справочная веб-страница по BLDC на микросхеме привода двигателя l6234, включая технические описания, замечания по применению и информацию о покупке.
Бесплатный образец бесщеточного двигателя с постоянными магнитами для гибридных электромобилей.
Это единственная найденная мной статья, в которой описывается порядок изменения фазы рекуперативного торможения.
Эта статья о рекуперативном торможении в электромобилях полезна, я позаимствовал из нее несколько цифр, но думаю, что она неправильно описывает, как работает регенерация.
Я выполнил этот проект с переработанным двигателем дисковода, потому что через него было легко пройти, и мне нравится использовать небольшой низковольтный двигатель, чтобы изучить шнур, управляемый BLDC, и не создавать никаких проблем с безопасностью.
Кроме того, конфигурация магнита датчика Холла становится очень простой за счет использования магнитного кольца (ротора)
второго из этих двигателей (см. Шаг 4).
Если вы не хотите вдаваться в хлопоты по установке и калибровке датчика Холла (шаги 5-7),
я знаю, что по крайней мере в некоторые приводы CD/DVD встроены двигатели Холла.
Чтобы обеспечить мотору некоторую инерцию вращения и дать ему небольшую нагрузку, я поставил на мотор 5 жестких дисков, аккуратно склеил их небольшим количеством крепкого клея и приклеил к мотору (
Так получился маховик в моем оригинальном проекте).
Если вы собираетесь снять двигатель с жесткого диска, вам понадобится ключ Torx T8, чтобы открутить корпус (
обычно за планкой на центральной этикетке спрятаны два винта)
и внутренние винты, которые удерживают двигатель на месте.
Также необходимо снять головку считывателя (
исполнительный звуковой круг).
Таким образом вы сможете вынуть диск памяти, чтобы добраться до мотора.
Кроме того, вам понадобится второй такой же двигатель жесткого диска, чтобы снять ротор с этого двигателя (
внутри есть магнит).
Чтобы разобрать двигатель, я взял ротор (вверху)
Тиски двигателя и прижал его к статору (внизу).
Две отвертки расположены под углом 180 градусов друг от друга.
Удержать мотор на достаточно плотной паре без деформации непросто.
Возможно, вы захотите построить деревянный v-образный
блок, используемый для этой цели.
Я просверлил на токарном станке отверстие в магнитном кольце, чтобы оно удобно прилегало к верхней части двигателя.
Если вы не умеете пользоваться токарным станком, можно закрепить перевернутый ротор на двигателе с помощью прочного клея.
На рисунках 2 и 3 ниже показана внутренняя часть одного из моторов, которые я разобрал.
В первой половине (ротор) 8 полюсов (
магнит завернут в пластик).
Во второй половине (статоре)
имеется 12 пазов (обмоток).
Каждая из трех фаз двигателя имеет 4 слота последовательно.
Некоторые двигатели HD имеют три контакта внизу, по одному контакту на фазу, а другой — это центральный отвод двигателя (
где встречаются три ступени).
В этом проекте центральный кран не требуется, но он может пригодиться при безсенсорном управлении (
я надеюсь однажды опубликовать заметку о безсенсорном управлении).
Если ваш двигатель имеет четыре контакта, вы можете определить фазу с помощью омметра.
Сопротивление между центральным отводом и фазой составляет половину сопротивления между любыми двумя фазами.
Большая часть литературы по двигателям BLDC посвящена двигателям с лестничной формой сигнала обратного потенциала, но двигатель жесткого диска, похоже, имеет обратный потенциал, похожий на синусоидальный (см. ниже).
Насколько я знаю, управление синусоидальным двигателем с помощью синусоидальной ШИМ работает нормально, хотя эффективность может несколько снизиться.
Как и все двигатели BLDC, этот состоит из трехфазного полутранзисторного
моста (
см. вторую фотографию ниже).
Для моста
я использую микросхему производства ST Micro (L6234) , также известную как драйвер двигателя.
Электрическое подключение L6234 показано на шаге 8.
На третьей фотографии ниже показана принципиальная схема привода двигателя и трех фаз двигателя.
Чтобы двигатель работал по часовой стрелке, переключатель должен быть выполнен в следующем порядке (
первая буква — верхний транзистор, вторая буква — нижний транзистор)
: Шаг 1 2 3 4 5 6 по часовой стрелке: CB, AB, AC, BC, BA, CA против часовой стрелки: BC, BA, CA, CB, AB, AC. Эти 6.
Последовательность шагов требует «электрической степени» 360, но только физической степени 90 для этих моторов.
Следовательно, скорость вращения каждого двигателя увеличивается в четыре раза.
Две последовательности кажутся одинаковыми, но это не одно и то же, потому что для 6-
шаговой последовательности по часовой стрелке направление тока через фазу является одним направлением, а для против часовой стрелки направление тока противоположно.
Вы можете убедиться в этом сами, подав напряжение аккумулятора или источника питания на любую фазу двигателя.
Если подать напряжение, двигатель немного переместится в одну сторону и остановится.
Если вы можете быстро изменить напряжение на фазе в одной из вышеописанных последовательностей, вы сможете вращать двигатель вручную.
Транзисторы и микроконтроллеры выполняют все эти переключения очень быстро, переключаясь сотни раз в секунду, когда двигатель работает на высокой скорости.
Также обратите внимание, что если напряжение подается на обе фазы, двигатель немного движется, а затем останавливается.
Это потому, что крутящий момент равен нулю.
Вы можете увидеть это на четвертой фотографии ниже, где показан обратный потенциал пары фаз двигателя.
Это синусоидальная волна.
Когда волна проходит через
вал x, крутящий момент, создаваемый этой фазой, равен нулю. В шестиступенчатой
последовательности фазовых изменений BLDC этого никогда не происходило.
Прежде чем крутящий момент на определенной фазе станет низким, мощность переключается на другую комбинацию фаз.
Двигатели BLDC большего размера обычно производятся с использованием датчиков Холла внутри двигателя.
Если у вас такой мотор, то этот шаг можно пропустить.
Кроме того, я знаю, что по крайней мере некоторые приводы CD/DVD уже имеют встроенный датчик Холла.
Когда двигатель вращается, для определения положения используются три датчика Холла, поэтому изменение фазы выполняется в нужный момент.
Мой двигатель HD работает со скоростью до 9000 об/мин (150 Гц).
Поскольку на каждое колесо приходится 24 замены при 9000 об/мин, машина меняется каждые 280 микросекунд.
Микроконтроллер Arduino работает на частоте 16 МГц, поэтому каждый такт составляет 0,06 микросекунды.
Я не знаю, сколько тактов требуется для сокращения предложения, но даже если требуется 100 тактов, то есть на каждое сокращение предложения уходит 5 микросекунд.
Двигатели HD не имеют датчиков Холла, поэтому их необходимо устанавливать снаружи двигателя.
Датчик необходимо зафиксировать относительно вращения двигателя и подвергнуть воздействию ряда полюсов, соответствующих вращению двигателя.
Мое решение состоит в том, чтобы снять магнитное кольцо с того же двигателя и установить его вверх дном на двигатель, которым нужно управлять.
Затем я установил три датчика Холла над этим магнитным кольцом на расстоянии 30 градусов друг от друга на валу двигателя (
вращение электродвигателя 120 градусов).
Мой держатель датчика Холла состоит из простого держателя, состоящего из трёх обработанных мной алюминиевых деталей и трёх пластиковых деталей, изготовленных на быстром прототипе.
Если у вас нет этих инструментов, не составит труда найти другой способ указать позицию.
Создание кронштейнов для датчиков Холла будет более сложной задачей.
Возможный вариант работы: 1.
Найдите пластиковый лоток нужного размера и аккуратно заклейте датчик холла эпоксидной смолой. 2.
На бумаге распечатывается шаблон, имеющий тот же круг, что и радиус магнитного кольца, и три метки, расположенные на расстоянии 15 градусов 3 друг от друга.
Приклейте шаблон к диску, а затем используйте его в качестве направляющей, чтобы аккуратно установить эпоксидную смолу датчика Холла на место.
Теперь, когда датчики Холла установлены на двигатель, подключите их к схеме, показанной ниже, и проверьте их с помощью цифрового мультиметра или осциллографа, чтобы убедиться, что выходной сигнал становится все выше и ниже по мере вращения двигателя.
Я запускаю эти датчики под напряжением 5 В, используя выход 5 В Arduino.
Датчик Холла имеет высокий или низкий выходной сигнал (1 или 0).
Это зависит от того, чувствуют ли они Антарктику или Арктику.
Поскольку они находятся на расстоянии 15 градусов друг от друга, магниты вращаются под ними и меняют полярность каждые 45 градусов, эти три датчика никогда не будут показывать высокий или низкий уровень одновременно.
Когда двигатель вращается, выходной сигнал датчика равен 6-
ступенчатой схеме, показанной в следующей таблице.
Датчик должен быть совмещен с движением двигателя, чтобы один из трех датчиков менял положение точно в положении изменения фазы двигателя.
В этом случае нарастающий фронт первого датчика Холла (H1)
должен соответствовать открытию комбинации C (высокий) и B (низкий).
Это эквивалентно включению транзисторов 3 и 5 по мостовой схеме.
Совмещаю датчик с магнитом с помощью осциллографа.
Для этого мне нужно использовать три канала обзора.
Я вращаю двигатель, подключая его к ремню второго двигателя, и измеряю обратный потенциал между двумя комбинациями фаз (
A и B, A и C).
Это два синуса.
Как волны на картинке ниже.
Затем посмотрите на сигнал датчика Холла 2 на канале 3 осциллографа.
Держатель датчика Холла поворачивают до тех пор, пока нарастающий край датчика Холла не будет полностью совмещен с точкой, в которой должно быть выполнено изменение фазы (см. ниже).
Теперь я понимаю, что есть только два канала для выполнения одной и той же калибровки.
Если BEMF комбинации фаз B-
использует C, нарастающий фронт H2 будет связан с кривой BC.
Причина, по которой здесь следует выполнять изменение фазы, заключается в том, чтобы всегда поддерживать как можно более высокий крутящий момент двигателя.
Обратный потенциал пропорционален крутящему моменту, и вы заметите, что каждое изменение фазы происходит, когда обратный потенциал проходит ниже кривой следующей ступени.
Таким образом, фактический крутящий момент состоит из наивысшей части каждой комбинации фаз.
Если вы не можете получить доступ к прицелу, вот моя идея выравнивания.
На самом деле это интересное упражнение для всех, кто хочет знать, как работает двигатель BLDC.
Если фаза двигателя A подключена (положительная) и B (отрицательная)
к источнику питания и включить источник питания, двигатель немного повернется и остановится.
Затем, если отрицательный провод питания переместить на фазу C и включить питание, двигатель будет вращаться дальше и остановится.
Следующей частью последовательности будет перемещение положительного вывода к фазе B и т. д.
Когда вы это сделаете, двигатель всегда останавливается там, где крутящий момент равен нулю, что соответствует тому месту, где диаграмма проходит через ось X на диаграмме.
Обратите внимание, что нулевая точка третьей фазы соответствует положению изменения фазы первых двух комбинаций.
Следовательно, положение нулевого крутящего момента для B-
комбинации C — это то место, где вы хотите расположить нарастающий фронт h2.
Отметьте это положение тонкими отметками или острыми лезвиями, а затем отрегулируйте держатель датчика Холла с помощью цифрового мультиметра до тех пор, пока выходной сигнал H2 не станет точно выше этой отметки.
Даже если вы немного отклонитесь от школьного расписания, мотор должен работать хорошо.
Трехфазный двигатель будет получать питание от драйвера трехфазного двигателя L6234.
Я обнаружил, что это хороший продукт, который выдержит испытание временем.
Есть много способов случайно поджечь компоненты при использовании силовой электроники, я не инженер-электрик и не всегда знаю, что происходит.
В моей школьной программе мы сделали собственный
трехфазный полумостовой выход из 6 MOSFET-транзисторов и 6 диодов.
Мы использовали это на HIP4086 другого драйвера Intersil, но у нас было много проблем с этой настройкой.
Мы сожгли кучу транзисторов и микросхем.
Я запускаю L6234 (
то есть двигатель) при напряжении 12 В.
L6234 имеет необычный набор входов для управления полумостом из 6 транзисторов.
Не каждый транзистор имеет вход, а разрешающий (EN)
Вход для каждой из трех ступеней, а затем еще один вход (IN)
Выберите, какой транзистор в открытой фазе (верхний или нижний).
Например, включите транзистор 1 (верхний) и 6 (нижний).
Оба EN1 и EN3 имеют высокий уровень (
EN2 низкий, чтобы ступень оставалась закрытой)
IN1 высокий, IN3 низкий.
Это делает комбинацию фаз-C.
Хотя в примечаниях к применению L6234 предлагалось применить ШИМ, используемый для управления скоростью двигателя, к выводу IN, я решил сделать это на выводе EN, поскольку на тот момент мне казалось, что было бы «странно» включать поочередно верхний и нижний транзисторы фазы».
На самом деле, кажется, нет ничего плохого в включении нижних транзисторов обеих фаз одновременно, поскольку они имеют одинаковый потенциал, поэтому ни один из них не пропускает ток.
Высокая фаза включается и выключается поочередно на частоте ШИМ, в то время как низкая фаза остается включенной в течение всего изменения фазы.
Ниже представлена схема привода двигателя, я добавил контактное соединение с платой Arduino. Я также добавляю предохранитель на 2,5
А между положительным выводом батареи и цепью, предохранитель на 100 мкФ между источником питания и землей, чтобы уменьшить пульсации рекуперативного тока.
Эта цифра немного мала, поэтому для более крупных версий обратитесь к документации. L6234.
Примечание: Майк Антон сделал печатную плату для L6234, которая (я полагаю)
заменит эту дорожку и избавит вас от работы по ее сборке.
См. Эти ссылки для получения технических характеристик и информации о покупке: Я не нашел много информации о 3.
Обратите
внимание, что я не инженер-электрик, и мы будем признательны за любые поправки к моему объяснению.
Во время движения система управления подает ток на три фазы двигателя таким образом, чтобы максимизировать крутящий момент.
При рекуперативном торможении система управления также максимизирует крутящий момент, но на этот раз это отрицательный крутящий момент, который вызывает замедление двигателя при передаче тока обратно в батарею. Метод рекуперативного
торможения,
который я использовал, взят из статьи Окриджской национальной лаборатории правительства США,
которая проводит много исследований автомобильных двигателей.
двигатель вращается, напряжение BEMF в фазе двигателя колеблется вверх и вниз.
На рисунке
показан момент, когда BEMF высокий на этапе B и низкий на этапе.
В этом случае ток может течь от B к.
Критически важно для рекуперативного торможения, низкочастотные транзисторы быстро включаются и выключаются (
тысячи переключений ШИМ в секунду).
С точки зрения силовой электроники схема похожа на устройство, называемое повышающим преобразователем, где энергия сохраняется в фазе двигателя ( в
Википедии есть хорошая статья, объясняющая, как работает повышающий преобразователь) . Эта энергия высвобождается
при выключении низкочастотного транзистора , но при более высоком напряжении
ток мгновенно протекает через «антивозбуждающий» диод рядом с каждым транзистором, а затем возвращается в аккумулятор. направление (противоположное движению) Взаимодействуйте
с магнитным кольцом, чтобы создать отрицательный крутящий момент, который замедляет двигатель.
Транзистор нижнего плеча использует переключатель ШИМ, а рабочий цикл ШИМ контролирует величину торможения.
Во время движения двигатель
переключается с одной комбинации на другую, чтобы поддерживать
максимально возможный крутящий момент . Коммутация
рекуперативного тормоза очень похожа, потому что в некоторых режимах переключения
двигатель создает максимально возможный отрицательный крутящий момент. вижу, что рекуперативный тормоз работает нормально, но я думаю
, что основная причина в том, что двигатель жесткого диска, который я использую, представляет собой двигатель с очень низким крутящим моментом, поэтому он не производит большого BEMF, кроме как на самой высокой скорости.
На более низкой скорости рекуперативное торможение очень незначительное (если оно вообще есть).
Я использую обычные выпрямительные диоды, и я могу получить лучшую производительность, если буду использовать некоторые специальные диоды с меньшим падением напряжения. Ниже приведен список входов и выходов на Arduino.
Также приложите диаграммы и фотографии моей платы. Резистор 400 Ом 6
2 Цифровых выхода последовательно с резистором 400 Ом 7 3 Цифровых выхода
последовательно с резистором 400 Ом 9- Цифровой выход EN 1 последовательно с резистором 400 Ом 10- Цифровой
выход
EN 2 последовательно
с резистором 400 Ом 11-
Цифровой выход
EN
3 включен последовательно с резистором 400 Ом, Потенциометр на 100 кОм, с 5 В и
заземлением на обоих концах
и аналоговым контактом 0, подключенным посередине. Этот потенциометр используется для управления скоростью
двигателя и громкостью торможения. Источник питания 5 В также используется
для работы датчиков Холла (см.
Шаг 5 )
, который я написал для Arduino, который включает комментарии: /
* bldc_congroller 3.
1. 1*3 от Дэвида Глейзера. ИС драйвера трехфазного двигателя * вращающийся
двигатель дисковода по часовой стрелке * с рекуперативным торможением *
скорость двигателя и торможение контролируются одним потенциометром *
положение двигателя тремя датчиками Холла * Arduino получает выходной сигнал от 3 датчиков Холла (контакты 2,3,4) * и преобразует их комбинацию в 6 различных шагов изменения фазы на
контактах 9, 10, 11 при 32 кГц * Выход ШИМ (соответствует EN 1,2, 3*3 DO на контактах
) 5,6, 7 соответственно (IN 1,2,3) * Подключите
симуляцию
в 0 к потенциометру для изменения рабочего цикла ШИМ и переключения * между движением и рекуперативным торможением *. * 0-
499: тормоз * 500-
523: Такси * 524- 1023: движение * комментирует множество строк для отладки, выводя различные значения в
последовательное соединение */Int allstate1; (3,2,1)int HallState3; Int HallVal = 1;
/Двоичное значение всех
3 датчиков Холла int MSPs = 0
; /Уровень
скорости int bSpeed
= 0 для двигателя; /
Уровень торможения дроссельной заслонки = 0
; /
Эта переменная используется вместе с аналоговым входом для измерения положения зазора
потенциометра
дроссельной заслонки (){pinMode(2,INPUT); /Hall 1 pinMode (3,INPUT); /Hall 2
pinMode (4,INPUT); /L6234 Hall 3/выход драйвера двигателя pinMode (5,OUTPUT);
/In 2 pinMode (7,OUTPUT);
/In 3 pinMode (9,OUTPUT); /IN 1 pinMode (10,OUTPUT);
pinMode
(11,OUTPUT); /EN 3/
serial start(9600);
Если вы будете использовать последовательное соединение, раскомментируйте эту строку.
/* Установите частоту ШИМ на контактах 9,
10 и 11/ установите ШИМ на
32 кГц для контактов 9, 10
/сначала очистите все три бита предварительного делителя: int prescalerVal = 0x07;
/Создайте переменную с именем prescalerVal и установите ее равной двоичному числу \'00000111\' TCCR1B & = ~ Prescaler /И значение в
TCCR0B с двоичным числом \'11111000
\'/теперь установите соответствующий бит предварительного кодирования: int бит предварительного кодирования 2 = 1;
/Установите prescalerVal равным двоичному числу \'00000001\'. TCCR1B | =
prescalerVal2; /Или значение в TCCR0B с двоичным числом \'00000001\'/
установите ШИМ на 32 кГц для контакта 3,11 (
эта программа использует только вывод 11)
/Сначала очистите все три бита предварительного калибратора: TCCR2B & = ~ Pre-calerval / И значение в TCCR0B с двоичным числом;
\'11111000\'/теперь установите соответствующий бит предварительного кодирования: TCCR2B | = бит предварительного кодирования 2;
/Или значение в TCCR0B с двоичным числом \'00000001\'/сначала очистите все три предварительно закодированных бита:}
Основной цикл /PRGROM void цикл (){
/Time = millis ();
Время после запуска программы печати. print(\'\');
Throttle = AnalogRead (0);
/Потенциометр дроссельной заслонки MSP = карта (
Throttle, 512,1023, 0,255);
/Вождение отображается на верхнюю половину потенциометра bSpeed = map (
Throttle, 0,511,255, 0);
/Половина рекуперативного торможения в нижней части горшка/MSPs ed = 100;
/Для отладки HallState1 = digitalRead (2);
/Чтение входного значения из Холла 1 2 = Цифровое чтение (3);
/Чтение входного значения из Холла 2 3 = Цифровое чтение (4);
Чтение входного значения/цифровой записи из Холла 3 (8, HallState1);
/Когда соответствующий датчик находится под высоким напряжением, включается светодиод.
Первоначально используется для отладки digitalWrite (
9, HallState2); HallVal = (HallState1)+ (2*HallState2)+ (4*HallState3);
/Calculate the binary values of 3 hall sensors/* series.
print(\'H 1: \'); For debugging serial port. println(HallState1); Serial. print(\'H 2: \'); Serial. println(HallState2);
Serial. print(\'H 3: \'); Serial. println(HallState3); Serial. println(\' \')
;
*/ //Serial. println(mSpeed); //Serial. println
(HallVal);
//Serial. print(\'\'); /Monitor transistor output/delay (1000); /* T1 = digitalRead (2); //T1 = ~T1; T2 = digitalRead (4); //T2 = ~T2; T3 = digitalRead (5); //T3 = ~T3; Serial. print(T1); Serial. print(\'\t\'); Serial. print(T2); Serial. print(\'\t\'); Serial. print(T3); Serial. print(\'\'); Serial. print(\'\'); Serial. print(
digitalRead(3)); Serial. print(\'\t\'); Serial. print(digitalRead(9)); Serial. print(\'\t\'); Serial. println(digitalRead(10)); Serial. print(\'\'); Serial. print
(\'\'); //delay(
500); *
/Driving phase change/each binary number
has a case corresponding to the different transistors turned on/bit math used to change the value of the output arduino:
/PORTD contains
the output of the IN pin on
the L6234 driver/the output used to Определите, управляется ли верхний транзистор или нижний
вывод
транзистора/
EN для
каждой
фазы по аналогии с командой Arduino, установите рабочий цикл ШИМ (0 = ВЫКЛ, 255 = ВКЛ или значение дроссельной заслонки, управляемое потенциометром)
. B00011111
не следует изменять;
/Analowrite (9,mSpeed);
PWM на фазе A (
высокопроизводительный транзистор
)analogWrite(10,0); Замыкание фазы B (duty = 0)
analogWrite(11,255);
//
Фаза C on -duty = 100% (Low-end транзистор)обрыв ; B001xxx00;
/Ожидаемый выходной сигнал контактов 0–7 PORTD
& = B00100000; /
Analowrite
(9,mSpeed)
;
PWM на фазе A (высокопроизводительный транзистор)analogWrite(10,255); //Фаза B включена (низкочастотный транзистор)analogWrite(11,0); 0)break;
Case 5:/PORTD = B101xxx00;
/Expected output of pin 0-
7 PORTD & =
B00011111
; /PORTD | = B10100000; analogWrite(9,0); analogWrite(10,255)
;
analogWrite(11,mSpeed); break; Case 4: /PORTD
= B100xxx00; /
Expected output of контакт 0-7
PORTD & = B00011111; = /Analowrite (9,255); AnalogWrite(11,mSpeed); Случай
6: /PORTD =
B110xxx00
; /
Ожидаемый
вывод 0-7
PORTD b11; 000 =; Analowrite (9,255);
AnalogWrite(11,0
); Случай 2: / PORTD = B010xxx00; / Ожидаемый вывод 0-7 PORTD & = B0201700 PORTD =; AnalogWrite(10
,mSpeed);break; }} /Регенеративное торможение фазы/PORTD (Вывод IN на L6234) На выводах всегда низкий уровень, поэтому во время рекуперативного торможения используются только низкие
транзисторы. else{ /PORTD = B000xxx00; Ожидаемый выходной сигнал
0-7 PORTD | = bym0000; // switch (HallVal){
Case 3: analogy writing (9,bSpeed); //analogWrite(9,0); analogWrite(10,0);
analogWrite(11,0); break; Case 1: analogy writing (9,bSpeed); analogWrite(10,0); analogWrite(11,0); break; Case 5: analogy writing
(9,0
); analogWrite(10,0); analogWrite(11,bSpeed); break; Case 4: analogy writing (9,0); analogWrite(10,0); analogWrite(11,bSpeed); break; Case 6:
analogy
writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0); break; Case 2: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0
)
; перерыв; }} /Time = millis (); Время после запуска программы печати
.
//Serial. print(\'\'); //Serial.lush(); /
Если вы
хотите
выполнить отладку с использованием
последовательного порта, пожалуйста, раскомментируйте} Я думаю,
что операция, которую выполняет Arduino в этом проекте, кажется пустой тратой времени, чтобы выполнить эту задачу с помощью микропроцессора. Lattice Semiconductor), чтобы выполнить эту работу, я не знаком с программированием этого устройства, но стоимость микросхемы в Ньюарке составляет всего 2,39 доллара. Другие подобные интегральные схемы также очень дешевы. Другой вариант - собрать воедино дискретные логические схемы. Я придумал несколько относительно простых логических последовательностей, которые могли бы управлять микросхемой L6234 с выхода трех датчиков Холла. Из фаз B и C дверь «не» должна быть переключена на другую сторону от «или». Проблема этого подхода в том, что на каждом этапе имеется около 20 соединений, поэтому для их соединения требуется немало работы.
Лучше всего запрограммировать его как программируемый логический вентиль.