управление двигателем BLDC с помощью Arduino, Salvvated HD Motor и Hall Sensors
Дом » Блог » BLDC Motor Control с Arduino, Salvvated HD Motor и Hall Sensors

управление двигателем BLDC с помощью Arduino, Salvvated HD Motor и Hall Sensors

Просмотры: 0     Автор: редактор сайта публикация времени: 2020-09-02 Происхождение: Сайт

Запросить

Кнопка обмена Facebook
Кнопка обмена Twitter
Кнопка обмена строками
Кнопка обмена WeChat
Кнопка совместного использования LinkedIn
Pinterest кнопка совместного использования
Кнопка обмена WhatsApp
Какао кнопка обмена
Кнопка обмена Snapchat
Кнопка обмена телеграммой
Кнопка обмена Sharethis

В настоящее время энтузиасты очень заинтересованы в управлении бесщеточным DC (BLDC)
по сравнению с традиционным двигателем постоянного тока, производительность двигателя улучшилась, энергоэффективность также улучшилась, но его сложнее использовать. много продуктов .
Для этой цели существует
Например, есть много небольших контроллеров BLDCS, которые очень хорошо работают для самолетов RC.
Для тех, кто хочет изучить контроль BLDC более подробно, существует также много различных микроконтроллеров и других электронных оборудования для промышленных пользователей, которые обычно имеют очень хорошую документацию.
До сих пор я не нашел никакого всестороннего описания того, как использовать микроконтроллер Arduino для управления BLDC.
Кроме того, если вы заинтересованы в совершении регенеративного торможения или использовали BLDC для производства электроэнергии, я не обнаружил, что многие продукты подходят для использования с небольшими двигателями, и я не узнал о том, как контролировать 3-фазный генератор.
Эта структура была первоначально в истории о
расчете реального времени, я продолжаю делать это после окончания курса.
Идея проекта состоит в том, чтобы показать пропорциональную модель гибридного автомобиля с хранением энергии маховика и регенеративным торможением.
Мотор, используемый в проекте, представляет собой небольшие BLDCS, очищенные от поврежденного жесткого диска компьютера.
В этом руководстве описывается, как использовать микроконтроллер Arduino, а зал
влияет на датчики положения в режимах вождения и регенеративного торможения.
Обратите внимание, что посещение Oscillisoft очень полезно, если не необходимо, для завершения этого проекта.
Если вы не можете получить доступ к сферу действия, я добавил некоторые предложения о том, как сделать это без прицела (шаг 5).
Одна вещь, которую этот проект не должен включать в какой -либо фактический контроллер двигателя, - это какая -либо функция безопасности, такую ​​как тока.
На самом деле, хуже всего то, что вы сжигаете мотор HD.
Тем не менее, реализация защиты от тока с помощью текущего оборудования не сложно, и, возможно, я сделаю это в какой-то момент.
Если вы пытаетесь управлять большим двигателем, добавьте защиту тока, чтобы защитить свой мотор и свою безопасность.
Я хочу попытаться использовать этот контроллер с большим двигателем, который может выполнять некоторую работу \ «Реальное \», но я еще не имею правильного.
Я заметил, что eBay продал автомобиль 86 Вт за 40 долларов.
Похоже, хороший кандидат.
Существует также веб -сайт RC под названием \ «Gobrushless \», который продает наборы, которые собирают их собственный BLDC.
Это не слишком дорого, и это стоит того, чтобы построить его.
Обратите внимание, что на этом сайте нет датчика зала для мотора. Вот, как будто!
Написание этой структуры - большая работа.
Я надеюсь, что вы найдете это полезным, пожалуйста, сделайте свои комментарии и предложения.
Цифровой мультиметр (DMM)-
если ваш DMM имеет осциллограф частотный счетчик (
лучше иметь не менее 2 каналов)
T8 Driver Torx (
вам нужен один из них, чтобы открыть любой жесткий диск).
Есть хороший аппаратный магазин.
Материал Мастерна и быстрый прототип (
они очень полезны, но я думаю, что этот проект может быть выполнен без них).
Материал BLDC Моторное магнитное кольцо от компьютерного жесткого диска (
половина двигателя)
от другого жесткого Driveseveral (3-6).
резиновой полосе DC щетковывало OK) есть второй маленький двигатель
На
с помощью DC с помощью ручки с другой моторной хлебной пластиной. OHMST Micro Sucure L6234 Трехфазный двигатель IC Two 100 uf-конденсаторов One 10 NF-конденсатор One 220 NF-конденсатор One 1 UF-конденсатор One 100 UF-
конденсатор Три приемных диодов One 2. Honeywell SS411a Биполярный зал
. (
Он контролируется с использованием потенциальной индукции назад).
Технические характеристики и информацию о закупках можно найти в этих двух ссылках: если вы собираетесь выполнить этот проект, я предлагаю вам потратить время на то, чтобы понять, как работает BLDC.
В Интернете существует большое количество ссылок (
см. Ниже некоторые предложения).
Тем не менее, я включаю в свой проект несколько диаграмм и таблиц, которые должны помочь вам понять.
Вот список концепций, которые, я считаю, наиболее важны для понимания этого проекта:
модуляция
модуляции модуляции мотоцикла MOSFET модуляции по фазовым моторным (PWM)
AVR443: датчики-ориентиры DC Motor Basic Basic для цифровой позиции
Microhip
. Hall Sensor, хорошее видео о очистке двигателя жесткого диска, но автор, кажется, управляет двигателем в качестве ступенчатого двигателя и как ступени. Более конкретная справочная веб -страница для BLDC на IC L6234 моторного диска, включая листы данных, примечания к применению и информацию о покупке.
Бесплатный образец для PM бесщеточного моторного привода для гибридных применений электромобилей.
Это единственная статья, которую я нашел, в котором описывается порядок изменения фазы регенеративного торможения.
Эта статья, регенеративное торможение в электромобилях, полезна, я позаимствовал несколько цифр из нее, но я думаю, что это неправильно описывает, как работает регенерация.
Я сделал этот проект с переработанным двигателем дискового привода, потому что его было легко пройти, и мне нравится использовать небольшой двигатель с низким напряжением для изучения шнура, контролируемого BLDC, и не вызывать никаких проблем с безопасностью.
Кроме того, конфигурация магнита датчика зала становится очень простой, используя магнитное кольцо (ротор)
со второго из этих двигателей (см. Шаг 4).
Если вы не хотите пойти на все проблемы установки и калибровки датчика зала (шаги 5-7),
я знаю, что есть хотя бы некоторые моторы привода CD/DVD, встроенные в датчик.
Чтобы обеспечить некоторую поворотную инерцию в мотор и дать им немного нагрузки, я положил 5 жестких дисков на мотор, осторожно приклеивая с небольшим сильным клеем и приклеивая к мотору (
это сделало маховик в моем первоначальном проекте).
Если вы собираетесь снять двигатель с жесткого диска, вам нужен привод T8 Torx, чтобы открутить корпус (
обычно за палочкой спрятаны два винта, спрятанные за палочкой)
и внутренние винты, которые удерживают двигатель на месте.
Вам также необходимо удалить Head Reader (
Sound Circle Executive)
Таким образом, вы можете снять диск памяти, чтобы добраться до двигателя.
Кроме того, вам понадобится второй же двигатель жесткого диска, чтобы удалить ротор из этого двигателя (
внутри есть магнит).
Чтобы разобрать мотор, я схватил ротор (вверху)
виды двигателя и поднял его на старе (внизу),
две отвертки находятся на 180 градусов друг от друга.
Нелегко удерживать двигатель в достаточно плотной паре без деформации.
Возможно, вы захотите построить деревянный V-
блок, используемый для этой цели.
Я пробурил отверстие в магнитном кольце на токарном тоне, чтобы оно удобно подходило на вершине мотора.
Если вы не можете использовать токарный станок, вы можете исправить инвертированный ротор на двигателе сильным клеем.
На снимках 2 и 3 ниже показаны интерьер одного из двигателей, которые я разобрал.
В первой половине там (ротор) 8 полюсов (
магнит, завернутый в пластик).
Во второй половине (статор)
есть 12 слотов (обмотки).
Каждая из трех моторных фаз имеет 4 слота последовательно.
Некоторые HD -двигатели имеют три контакта внизу, один контакт на фазу, а другой - центральный кран двигателя (
где встречаются три этапа).
В этом проекте не требуется центральный кран, но он может пригодиться в управлении без датчиков (
я надеюсь выпустить примечание об управлении без датчиков один день).
Если у вашего двигателя есть четыре контакта, вы можете определить фазу с OhMeter.
Сопротивление между центральным краном и фазой составляет половину сопротивления между любыми двумя фазами.
Большая часть литературы по моторам BLDC имеет дело с теми, у кого есть потенциальная форма волны в форме лестницы, но двигатель жесткого диска, кажется, имеет задний потенциал, который выглядит как синус (см. Ниже).
Насколько я знаю, вождение синусоноводческого двигателя с синусоинутной шаточкой работает нормально, хотя эффективность может несколько упасть.
Как и все двигатели BLDC, этот состоит из трехфазного полуфазного
моста (
см. 2-е фото ниже).
Я использую IC, сделанный ST Micro (L6234)
для моста, также известного как двигатель.
Электрическое соединение L6234 показано на шаге 8.
На третьей фотографии ниже показана схематическая схема двигателя и трех моторных фаз.
Для того, чтобы двигатель работал по часовой стрелке, переключатель будет сделан в следующем порядке (
первая буква- верхняя транзистор, а вторая буква- нижний транзистор)
: Шаг 1 2 3 4 5 6 6 6 по часовой стрелке: CB, AB, AC, BC, BA, CA против по часовой стрелке: BC, BA, CA, CB, AB AC
. Моторс.
Следовательно, скорость вращения каждого двигателя происходит четыре раза.
Две последовательности кажутся одинаковыми, но они не одинаковы, потому что для 6-
ступенчатой ​​последовательности для CW направление тока через фазу- одно направление, а для CCW направление тока противоположное.
Вы можете увидеть это самостоятельно, применив напряжение батареи или источника питания на либо моторную фазу.
Если вы примените напряжение, двигатель немного движется в одном направлении и остановится.
Если вы можете быстро изменить напряжение на фазе в одной из вышеперечисленных последовательностей, вы можете повернуть двигатель вручную.
Транзисторы и микроконтроллеры очень быстро завершают все эти переключатели, переключая сотни раз в секунду, когда двигатель работает на высокой скорости.
Кроме того, обратите внимание, что если напряжение применяется к обеим фазам, двигатель немного движется, а затем останавливается.
Это потому, что крутящий момент равен нулю.
Вы можете увидеть это на четвертой фотографии ниже, которая показывает задний потенциал пары моторных фаз.
Это синусоидальная волна.
Когда волна проходит через X-
вал, крутящий момент, предоставленный этой фазой, равен нулю. В шестиэтапном
последовательности фазы фазы, которая никогда не произошла.
До того, как крутящий момент на определенной фазе становится низким, мощность переключается на другую фазовую комбинацию.
Большие двигатели BLDC обычно производятся датчиками зала внутри двигателя.
Если у вас такой мотор, вы можете пропустить этот шаг.
Кроме того, я знаю, что есть, по крайней мере, некоторые моторы CD/DVD-привод, встроенные в датчик уже на руках.
Когда двигатель вращается, для обнаружения положения используются три датчика залов, поэтому изменение фазы выполняется в нужный момент.
Мой HD -двигатель работает до 9000 об / мин (150 Гц).
Поскольку существует 24 изменения на колесо, при 9000 об / мин, машина изменяется каждые 280 микросекунд.
Микроконтроллер Arduino работает со скоростью 16 МГц, поэтому каждый тактовой цикл составляет 0, 06 микросекунд.
Я не знаю, сколько циклов часов необходимо для выполнения сокращения предложения, но даже если требуется 100 тактовых циклов, то есть для каждого сокращения предложения требуется 5 микросекунд.
HD Motors не имеют датчиков зала, поэтому необходимо установить их на внешней стороне двигателя.
Датчик должен быть фиксирован в отношении вращения двигателя и подвергать воздействию ряда полюсов, которые согласуются с вращением двигателя.
Мое решение состоит в том, чтобы удалить магнитное кольцо из того же двигателя и установить его вверх ногами на двигатель для управления.
Затем я установил три датчика зала над этим магнитным кольцом, на 30 градусов друг от друга на валу двигателя (
120 -градусный вращение электродвигателя).
Мой держатель датчика зала состоит из простого держателя, состоящего из трех алюминиевых деталей, обработанных мной, и трех пластиковых деталей, изготовленных на быстром прототипе.
Если у вас нет этих инструментов, не должно быть трудно найти другой способ указать положение.
Создание кронштейнов для датчиков зала будет более сложным.
Это возможный способ работы: 1.
Найдите пластиковый поднос правильного размера, и вы можете тщательно эпоксировать датчик зала. 2.
Шаблон напечатан на бумаге, которая имеет тот же круг, что и радиус магнитного кольца, а три отметки - 15 градусов 3 друг от друга.
Приклейте шаблон к диску, а затем используйте шаблон в качестве руководства, чтобы тщательно поставить эпоксидную смолу датчика зала.
Теперь, когда датчики зала установлены на двигателе, подключите их к схеме, показанной ниже, и протестируйте их, используя DMM или осциллограф, чтобы убедиться, что выход станет выше и ниже при вращении двигателя.
Я запускаю эти датчики до 5 В, используя выход Arduino 'S 5 V.
Датчик зала имеет высокий или низкий выход (1 или 0),
он зависит от того, чувствуют ли они антаркктику или арктику.
Поскольку они находятся на расстоянии 15 градусов друг от друга, магниты вращаются под ними и меняют полярность каждые 45 градусов, эти три датчика никогда не будут высокими или низкими одновременно.
Когда двигатель вращается, выход датчика- 6-
шаблон шага, показанный в следующей таблице.
Датчик должен быть выровнен с движением двигателя, чтобы один из трех датчиков изменился точно в положении изменения моторной фазы.
В этом случае восходящий край первого датчика зала (H1)
должен соответствовать открытию комбинации C (высокий) и B (низкий).
Это эквивалентно включению транзисторов 3 и 5 в мостовой цепи.
Я выровняю датчик с магнитом с осциллографом.
Чтобы сделать это, я должен использовать три канала масштаба.
Я вращаю двигатель, подключаясь к ремню второго двигателя и измеряю обратный потенциал между двумя фазовыми комбинациями (
A и B, A и C)
Это два синуса.
Как волны на рисунке ниже
, посмотрите на сигнал Hall Sensor 2 на канале 3 осциллографа.
Держатель датчика зала поворачивается до тех пор, пока поднимающийся край датчика зала не будет полностью выровнен с точкой, где следует выполнять фазовое изменение (см. Ниже).
Теперь я понимаю, что есть только два канала, чтобы сделать ту же калибровку.
Если BEMF фазовой комбинации B-
с использованием C, растущий край H2 будет связан с кривой BC.
Причина, по которой изменение фазы должно быть выполнено здесь, заключается в том, чтобы всегда держать моторный крутящий момент как можно более высоким.
Обратный потенциал пропорционален крутящему моменту, и вы заметите, что каждое изменение фазы происходит, когда потенциал обратной стороны проходит ниже следующей кривой этапа.
Следовательно, фактический крутящий момент состоит из самой высокой части каждой фазовой комбинации.
Если вы можете получить доступ к сферу, здесь моя идея выравнивания.
Это на самом деле интересное упражнение для тех, кто хочет знать, как работает мотор BLDC.
Если моторная фаза A подключена (положительно) и B (отрицательный)
к источнику питания и включите источник питания, двигатель немного вращается и остановится.
Затем, если отрицательная мощность перемещается в фазу C, а мощность включена, двигатель повернется дальше и остановится.
Следующая часть последовательности будет состоять в том, чтобы перемещать положительный лидий к фазе B и т. Д.
Когда вы это делаете, двигатель всегда останавливается там, где крутящий момент равен нулю, что соответствует одному месту, где диаграмма проходит через ось X на графике.
Обратите внимание, что нулевая точка комбинации третьей фазы соответствует положению изменения фазы первых двух комбинаций.
Следовательно, нулевое положение крутящего момента B-
Комбинация C- это то место, где вы хотите поместить восходящий край H2.
Отметьте эту позицию тонкими отметками или острыми лезвиями, а затем отрегулируйте держатель датчика Hall, используя DMM, пока выход H2 не станет точно выше на этой отмечке.
Даже если вы немного отклонитесь от своего школьного графика, мотор должен работать хорошо.
Три моторная фаза получат питание от трехфазного двигателя L6234.
Я обнаружил, что это хороший продукт, который может выдержать испытание временем.
Есть много способов случайно жарить ваши компоненты при использовании электроники питания, я не инженер -электрик, и я всегда знаю, что происходит.
В моей школьной программе мы провели свой собственный 3-
фазовый вывод по полу-мостилу 6 транзисторов MOSFET и 6 диодов.
Мы использовали это на HIP4086 другого драйвера Intersil, но у нас есть много проблем с этой установкой,
мы сжег кучу транзисторов и чипсов.
Я запускаю L6234 (
так же мотор) при 12 В.
L6234 имеет необычный набор входов, чтобы управлять половином моста из 6 транзисторов.
Не каждый транзистор имеет вход, но включенный (en)
вход для каждого из трех этапов, а затем другой вход (в)
выберите, какой транзистор в открытой фазе (верхняя или нижняя).
Например, включите транзистор 1 (верхний) и 6 (нижний)
как EN1, так и EN3 высоки (
EN2 Low, чтобы держать стадию закрытой)
в 1 -м, в 3 низком уровне.
Это делает фазовую комбинацию-c.
В то время как в примечании приложения L6234 предполагается применение ШИВ, используемое для управления скоростью двигателя к PIN, я решил сделать это на пинте, потому что в то время я думаю, что это было бы странно \ », чтобы включить верхние и нижние транзисторы фазы альтернативно
Ток
с помощью
моего
.
метода Большие версии, пожалуйста, обратитесь к документации для L6234.
Примечание: Майк Антон сделал печатную плату для L6234, который (я полагаю)
заменит этот трек и сохранит вам работу по его сборке.
Смотрите эти ссылки для характеристик и информации о покупке: я не нашел много о 3-
я опишу свое понимание того, как это работает.
Обратите внимание, что я не инженер -электрик, и мы будем признателен за любые исправления к моему объяснению.
При вождении система управления отправляет ток в три фазы двигателя таким образом, чтобы максимизировать крутящий момент.
При регенеративном торможении система управления также максимизирует крутящий момент, но на этот раз это отрицательный крутящий момент, который заставляет двигатель замедляться при отправке тока обратно в аккумулятор.
Метод регенеративного торможения, который я использовал, появился из бумаги из Национальной лаборатории Окриджа в Соединенных Штатах. С. Правительство
Лаборатория, которая проводит много исследований для автомобильных двигателей.
Диаграмма ниже поступает из другой статьи, которая помогает проиллюстрировать, как она работает (
однако, я думаю, что объяснение, приведенное во второй статье, частично неверно).
Имейте в виду, что когда двигатель вращается, напряжение BEMF в моторной фазе колеблется вверх и вниз.
На рисунке он показывает момент, когда BEMF находится на высоте на стадии B и низкой стадии.
В этом случае ток может течь от B до.
Критические для регенеративного торможения, низкоклассные транзисторы быстро включаются и выключаются (
тысячи переключателей ШИМ в секунду).
Когда выключатель высококачественного транзистора выключен;
Когда низкий транзистор включен, ток течет, как показано на первом рисунке.
С точки зрения электроники, схема похожа на устройство, называемое преобразователем усиления, где энергия хранится в фазе двигателя (
в Википедии есть хорошая статья, объясняющая, как работает преобразователь усиления).
Эта энергия высвобождается, когда транзистор низкого уровня выключается, но при более высоком напряжении ток мгновенно течет через диод \ '\' рядом с каждым транзистором, а затем возвращается в батарею.
Диод предотвращает проход от аккумулятора к двигателю.
В то же время ток в этом направлении (
в отличие от вождения)
взаимодействует с магнитным кольцом, чтобы получить отрицательный крутящий момент, который замедляет двигатель.
Транзистор с низким уровнем использования использует ШИМ-переключатель, а рабочее цикл ШИМ контролирует количество торможения.
При вождении коммутация двигателя переключается от одной комбинации на следующую, чтобы поддерживать максимально возможный крутящий момент.
Коммутация регенеративного тормоза очень похожа, потому что некоторые режимы переключения приводят к тому, что двигатель производит как можно больше отрицательного крутящего момента.
Если вы смотрите видео на первом шаге, вы увидите, что регенеративный тормоз работает нормально, но он не работает хорошо.
Я думаю, что главная причина в том, что двигатель жесткого диска, который я использую, представляет собой очень низкий мотор крутящего момента, поэтому он не производит много BEMF, за исключением самой высокой скорости.
На более низкой скорости очень мало регенеративного торможения (если есть).
Кроме того, моя система работает при относительно низком напряжении (12 В)
Более того, поскольку каждый путь через диод против экскутации уменьшает напряжение на несколько вольт, это также значительно снижает эффективность.
Я использую обычные диоды выпрямителя и могу получить лучшую производительность, если я использую некоторые специальные диоды с более низким падением напряжения.
Ниже приведен список входов и выходов на Arduino.
Также включайте диаграммы и фотографии моей доски. 2-
Цифровой запуск 1
120 К сопротивления GND 3
Цифровой зал 2
120 К. Сопротивление GND 4
Hall 3 Цифровой вход-
120 К. Сопротивление GND 5
1 Цифровое вывод последовательно с 400 ОМ-резистором 6
2 Цифровые выходы в серии с 400 Ом-резистором 7
3 Цифровые выходы с 400 Ом резистор 9-
цифровые выходы с 400-ом с 400 цифровыми выводами с 400 цифровыми
выводами с 400 цифровыми выводами с 400-
ом . EN 3 Цифровой вывод последовательна с резистором 400 Ом, потенциометром 100 км, с 5 В и GND, подключенными на обоих концах и аналоговым штифтом 0, подключенным в середине.
Этот потенциометр используется для контроля скорости двигателя и объема торможения.
5 V источник питания также используется для запуска датчиков зала (см. Шаг 5).
Вот вся программа, которую я написал для Ardjuino, которая включает в себя комментарии:/* bldc_congroller 3. 1.
1* 3 от Дэвида Глейзера.
X series IS ST L6234 3-
фазовый двигатель IC * ic * работающий дисковый двигатель по часовой стрелке * с регенеративным торможением * Скорость двигателя и торможение, контролируемые одним потенциометром * Положение двигателя с тремя
датчиком эффекта зала * Arduino получает выход из 3-х датчиков зала (Pins 2,3,4) * и конвертируйте их комбинацию на 6-й фазовой шаги на PINS 9, 10, 11 At At At At At At At At At At At At At at at kk chz * PW, 11 KKZ * PW, 11 KKZ * PW
11 KK chz *.
, 1,2, 3 * 3 Сделайте на булавках 5,6, 7, соответственно (в 1,2,3)
Подключите симуляцию в 0 к потенциометру
*
, чтобы изменить рабочее цикл ШИН и изменение * Между
вождением и регенеративным торможением *
. Переменные
датчиков (
3,2,1
из
(
трех
)
/Зал 1 Pinmode (3, вход);
/Зал 2 Pinmode (4, вход);
/L6234 Зал 3/Вывод драйвера двигателя PinMode (5, выход);
/В 1 pinmode (6, выход);
/В 2 pinmode (7, output);
/В 3 Pinmode (9, выход);
/En 1 pinmode (10, output);
/En 2 pinmode (11, output);
/En 3/serial. начало (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 \' /SET ШИМ на 32 кГц для PIN 3,11 (
в этой программе используется только PIN 11)
/Очистите все три биты предварительного калира: TCCR2B & = ~ Pre-Calerval;
/И значение в TCCR0B с двоичным числом \ '11111000 \'/Теперь установите соответствующий бит предварительного кодирования: TCCR2B | = Предварительный бит 2;
/Или значение в TCCR0B с двоичным числом \ '00000001 \'/Сначала очистите все три предварительно кодированных бита:}
Основной цикл/prgrom void loop () {
/time = millis ();
Время после начала программы печати. println (время); // серийный. print (\ '\');
Дроссельная заслонка = анализа (0);
/Дроссельный потенциометр msps = map (
дроссельная заслонка, 512,1023, 0,255);
/Вождение отображается с верхней половиной потенциометра Bspeed = MAP (
дроссельная заслонка, 0,511,255, 0);
/Полузадача регенеративного торможения в нижней части горшка/MSPS ED = 100;
/Для отладки HallState1 = DigitalRead (2);
/Прочитать входное значение из зала 1 2 = цифровое чтение (3);
/Прочитать входное значение из зала 2 3 = цифровое чтение (4);
Прочтите входное значение/цифровое запись из зала 3 (8, Hallstate1);
/Когда соответствующий датчик находится в высокой мощности, светодиод будет включать
изначально используемый для отладки DigitalWrite (9, HallState2);
// DigitalWrite (10, HallState3); Hallval = (Hallstate1)+ (2*Hallstate2)+ (4*Hallstate3);
/Рассчитайте двоичные значения 3 Sensors/* серии*. Печать (\ 'H 1: \');
Для отладки серийного порта. println (Hallstate1); Сериал. Печать (\ 'H 2: \'); Сериал. println (Hallstate2); Сериал. Печать (\ 'H 3: \'); Сериал. println (Hallstate3); Сериал. println (\ '\');
*/// Сериал. println (mspeed); // серийный. println (Hallval); // серийный. print (\ '\');
/Монитор транзистора вывода/задержка (1000);
/* T1 = DigitalRead (2); // t1 = ~ t1;
T2 = DigitalRead (4); // t2 = ~ t2;
T3 = DigitalRead (5); // t3 = ~ t3; Сериал. Печать (T1); Сериал. print (\ '\ t \'); Сериал. Печать (T2); Сериал. print (\ '\ t \'); Сериал. Печать (T3); Сериал. print (\ '\'); Сериал. print (\ '\'); Сериал. print (DigitalRead (3)); Сериал. print (\ '\ t \'); Сериал. Print (DigitalRead (9)); Сериал. print (\ '\ t \'); Сериал. println (DigitalRead (10)); Сериал. print (\ '\'); Сериал. print (\ '\'); // задержка (500);
*/Изменение фазы вождения/Каждое двоичное число имеет случай, соответствующий различным транзисторам, включенной/битой математики, используемой для изменения значения выходного arduino:/portd содержит выходной сигнал в PIN -код на драйвере L6234/Вывод, используемый для определения того, является ли верхний транзистор или нижний транзистор/EN для каждого фазы
. контролируется потенциометром). if (trottle> 511) {switch (hallval) {
case 3:/portd = 1111xxx00;
/Ожидаемый выход вывода 0-7
XXX относится к входу зала, а Portd & = B00011111 не следует изменять;
Портд | = B01100000;
/AnaloWrite (9, MSPEED);
ШИМ на фазовой (
высококлассной транзистор) аналого-написание (10,0);
Закрытие фазы B (обязанность = 0) аналогарат (11 255); // фаза C на -duty = 100% (
низко -конечный транзистор) разрыв;
Case 1:/portd = b001xxx00;
/Ожидаемый выход вывода 0-7
Portd & = B000111111;
/Portd | = B00100000;
/AnaloWrite (9, MSPEED);
ШИМ на фазовой (
высококачественной транзисторной) аналоговом написании (10 255); // Фаза B на (
низко-элитной транзистор) аналого-написание (11,0); // Фаза B OFF (Duty = 0) Break;
Case 5:/portd = b101xxx00;
/Ожидаемый выход вывода 0-7
Portd & = B000111111;
/Portd | = B10100000; Аналогор (9,0); Аналогор (10 255); Analogwrite (11, mspeed); перерыв;
Case 4:/portd = b100xxx00;
/Ожидаемый выход вывода 0-7
Portd & = B000111111;
Портд | = bym000;
/Аналоворит (9,255); Аналогор (10,0); Analogwrite (11, mspeed); перерыв;
Case 6:/portd = b110xxx00;
/Ожидаемый выход вывода 0-7
Portd & = B000111111;
Портд B11. 000 =;
/Аналоворит (9,255); Analogwrite (10, MSPEED); Аналогор (11,0); перерыв;
Case 2:/portd = b010xxx00;
/Ожидаемый выход вывода 0-7
Portd & = B000111111;
B0201700 Portd | =;
/Analowrite (9,0); Analogwrite (10, MSPEED); Аналогор (11 255); перерыв; }}
/Регенеративное изменение фазы тормоза /portd (
выходной контакт на L6234).
Контакты всегда низкие, поэтому во время регенерации используются только низкие транзисторы на каждой фазе. торможение. else {
/portd = b000xxx00;
/Ожидаемый выход вывода 0-7
Portd & = B000111111;
Портд | = BYM0000; // switch (hallval) {
case 3: analogy witch (9, bspeed); // analogwrite (9,0); Аналогор (10,0); Аналогор (11,0); перерыв;
Случай 1: написание аналогии (9, bspeed); Аналогор (10,0); Аналогор (11,0); перерыв;
Случай 5: написание аналогии (9,0); Аналогор (10,0); Analogwrite (11, Bspeed); перерыв;
Случай 4: написание аналогии (9,0); Аналогор (10,0); Analogwrite (11, Bspeed); перерыв;
Случай 6: написание аналогии (9,0); Analogwrite (10, Bspeed); Аналогор (11,0); перерыв;
Случай 2: написание аналогии (9,0); Analogwrite (10, Bspeed); Аналогор (11,0); перерыв; }}
/Time = millis ();
Время после начала программы печати. println (время); // серийный. print (\ '\'); // серийный. румянец();
/Если вы хотите отладить с помощью последовательного порта, пожалуйста, неуместно}
Я думаю, что операция, которую Arduino делает в этом проекте, настолько проста, что кажется, что отходы выполнять эту задачу с помощью микропроцессора.
На самом деле, примечания L6234 Примечания по рекомендации рекомендуют простой программируемый массив ворот (
GAL16V8 из полупроводника решетки) для выполнения этой работы.
Я не знаком с программированием этого устройства, но стоимость IC составляет всего 2 доллара. 39 в Ньюарке.
Другие подобные интегрированные цепи также очень дешевы.
Другой вариант - собрать вместе осторожных логических ворот.
Я придумал несколько относительно простых логических последовательностей, которые могли бы вывести IC L6234 с вывода трех датчиков зала.
Диаграмма для стадии А показана ниже, и таблица истинности для всех трех этапов (
для цепи логической цепи B и C, дверь \ «Не \» должна быть переключена на другую сторону \ ''или.
Проблема с этим подходом заключается в том, что на каждом этапе есть почти 20 соединений, поэтому она требует довольно много работы, чтобы соединить его вместе.
Лучше всего программировать.

Hoprio Group Профессиональный производитель Controller and Motors был создан в 2000 году. Групповая штаб -квартира в Чанчжоу, провинция Цзянсу.

Быстрые ссылки

Связаться с нами

WhatsApp: +86 18921090987 
Тел: +86-18921090987 
Электронная почта: sales02@hoprio.com
Добавить: № 19 Маханг Саут-роуд, высокотехнологичный район Вудзин, город Чанчжоу, провинция Цзянсу, Китай 213167
Оставить сообщение
СВЯЗАТЬСЯ С НАМИ
Copyright © 2024 Changzhou Hoprio Ecommerce Co., Ltd. Все права защищены. Sitemap | политика конфиденциальности