Внимание! Если вы используете эту плату для управления очень мощными моторами (I>6 А), то вам, возможно, потребуется организовать дополнительные меры для отведения тепла от силовых микросхем VNH2SP30. Для этого можно использовать радиатор и в совсем тяжёлом случае вентилятор.
На pololu чуваки испытывали, до 14 ампер оно работает без проблем. Без радиаторов и иного принудительного охлаждения. При токе 15A, защита по перегреву срабатывает через 150 секунд, при токе 20A через 35. Чип драйвера уходит в защиту при достижении температуры в 170 градусов цельсия. Спалить драйвер перегревом не возможно, т.ч. если не смущают высокие температуры, то можно гонять и так.
Да все никак не добраться до регулируемого источника, и не посадить аккум до 3,3В ))
У меня есть вопрос по применению этой сборки, если можно. В моем сервоприводе положение штока определяется отсчетом с оптопары. Диод оптрона потребляет 12мА, я хочу его гасить на время, пока мотор стоит. Мне кажется, еще одна такая сборка отработает логику ИЛИ, т.е. включать диод при любом состоянии, когда уровни на R1, R2 не совпадают. Можно ли для этого подключить выводы 2 и 4 к R1 и R2 соответственно, а между 5,6 и 7,8 включить диод с балластным сопротивлением порядка 200 Ом?
Извините, что так описываю схему, сделал картинку, но не нашел способ, как здесь ее прилепить.
a5021 ты здесь бываешь? вот думаю наконец добить драйвер для мотора на ток до 2 ампер постоянного тока и с питанием до 12В (теоретически выше, но ток на тех напряжениях наверно расплавят наверно припой мосфетов)
делать думаю на тиньке13+2xAO4606+3 резистора+2 полевика 2N7000. управление 1 пином сигналом PPM.
можно конечно и 2 DIR и PWM. но первый вариант более актуальный наверно
Да, я слежу за этой темой и она мне интересна. Кроме того, время от времени у меня возникают разннобразные электронные фантазии по обсуждаемому тут вопросу, но пока они еще не оформились во что-то более-менее приличное. :) Часть я наверное тут изложу, но это не решение, а просто мысли вслух.
Цитата:
вот думаю наконец добить драйвер для мотора на ток до 2 ампер постоянного тока и с питанием до 12В (теоретически выше, но ток на тех напряжениях наверно расплавят наверно припой мосфетов)
Нет, это все же преувеличенные опасения. Я тут игрался с повышайкой, которая из компового БП (12 вольт) вытягивает около 12 ампер, однако не обнаружил, чтобы там что-то опасно грелось. Если не схалтурить с шириной дорожек на печатной плате, не сделать их слишком тонкими, то там довольно большие токи можно пропускать. Для расчета ширины проводников печатных плат есть даже web-калькуляторы, навроде вот этого. Если им верить, то для тока 10 Ампер достаточно ширины печатной дорожки в 5мм. Сие справделиво для расчета нагрева проводника не выше 20 градусов от температуры окружающей среды. Если для конструкции приемлем нагрев до 65 градусов (палец еще с трудом можно удерживать, но не очень долго), то тот же ток можно пускать по дороге шириной 3мм или по пяти миллиметрам пускать почти 15 Ампер.
Цитата:
делать думаю на тиньке13+2xAO4606+3 резистора+2 полевика 2N7000. управление 1 пином сигналом PPM.
По уму, там несколько посложнее будет. Я как-то для своих нужд драйвер изобретал и получилось что-то вот такое:
Мне нужно было шимить с логического уровня 1.8в двадцатичетырехвольтовую нагрузку с током до 10А. Расчет в Micro-Cap выдал вот такую "осциллограмму" для 2мгц. Имеется ввиду вышеприведенная схема.
Два мегагерца тут приведены только для иллюстрации, чтобы фронты получше рассмотреть, т.к. при таких токах мосфет все равно будет сильно греться. Схема, позже воплощенная в железе, работала на частоте 60-80 килогерц и показала весьма приемлемые результаты. Можно сказать, что расчетные и реальные значения почти совпали.
Хотя эта схема немного из другой оперы, часть ее вполне можно применить для решения нашей задачи. Если выбросить все, что правее резистора R6, а оставшееся подставить к соединенным затворам 4606, то получится законченная половинка моста. Собрав вторую такую же половинку (4 транзистора + 4606), получим полный мост для кручения моторов практически любыми напряжениями (ограничивают здесь максимально-допустимые напряжения мосфетов). Схема хоть и сложнее, чем все, что тут предлагалось раньше, но обеспечивает приемлемые частотные и нагрузочные характеристики.
Если помечтать и потеоретизировать еще немного на эту тему, то вместо тиньки сюда явно просится какой-нибудь младший из STM8. В последний раз я покупал STM8S103K3T6 по 16 рублей за штуку в партии из десятка. Тут конечно возникает определенный идеологический диссонанс, т.к. этот камень мощнее восьмой меги (да и вообще офтопичный инородец), но глядя на цену невозможно убедить себя покупать, скажем, 74-ую логику по цене 20 руб за корпус, да еще и в количестве пары штук, вместо одного STM8. Я в последнее время настропалился паять STM8S103F3P6 в корпусе TSSOP20 куда надо и куда не надо. :) Купил их на радостях двадцать штук, теперь придумываю применения, чтобы не пропадали. Говорю это не для хвастовства, но затем, чтобы пояснить простую мысль -- стоит дешево, занимает мало места, но имеет на борту массу всего, что в мегах и у старших моделей не всегда есть. Нет ни одного возражения против применения их даже в самых простых устройствах или узлах.
Здесь обязательно хочу оговорить отдельно, что я ни при каких обстоятельствах не собираюсь заниматься противопоставлением разных семейств МК. Я вообще активный противник этого дела, т.к. с удовольствием использую всякие железки, до которых дотянулись руки. В последний раз из Китая заказал и получил две разновидности STM32 (просто камни под пайку) и три ардуины "про мини" в сборе. Кому-то такой набор может показаться идиотским, т.к. на STM32 реализуются практически любые задачи, которые можно решать атмегой и вроде бы смысла в ардуинах в этом случае никакого, но это лишь при сугубо поверхностном рассмотрении. 32-ые мной покупались под счетные задачи (там где мега просто не вытягивает по скорости), а ардуины под быструю и безгеморройную реализацию кое-какого обвеса "умного дома". STM32 замечательное семейство, но в рамках моей конкретной задачи оно сливает ардуине не просто с треском, а делает проект практически не реализуемым, за исключением разве что случая, когда жизнь предполагается бесконечной. :)
Но вернусь к STM8. Прелесть их для задачи управления двигателями заключается в том, что STM-ная периферия имеет некоторые аппаратные особенности, специально заточенные под это дело. Прежде всего на ум приходит наличие комплементарных выходов. Суть их в том, что, что состояние одного выхода всегда находится в противофазе с другим -- когда на одном "1", то на другом "0" и наоборот. Это реализовано в МК аппаратно. В условиях нашего драйвера, выглядит весьма соблазнительным один такой выход подцепить к верхнему мосфету, а другой к нижнему. Но в том, чтобы просто подцепить, практически никакого куражу. :) Весь цимус раскрывается тогда, когда выясняется, что моменты перехода от одного логического состояния к другому можно смещать на небольшую величину относительно разных выходов. Другими словами, сначала проходит фронт закрывающий, скажем, верхний мосфет, а потом, с небольшой задержкой (программируемой, от сотен наносекунд до сотен микросекунд), достаточной для полного закрытия, следует открывающий фронт нижнего мосфета. Таким образом становится возможным исключить ситуацию протекания сквозных токов моста в принципе.
Однако, все это слишком хорошо, чтобы взять и просто воткнуть в нашу схему. Идилическая картинка рассыпается при столкновении с необходимостью управлять раздельно каждым затвором. На затворы нам нужно подавать напряжения выше логических уровней, а стало быть, драйвер потребуется под каждый затвор. Если бы речь шла о кручении киловаттных моторов, где вопрос бы стоял или так, или никак, то с тяжелым сердцем можно было бы сподвигнуться и на изготовление дискретных драйверов под каждый затвор. Для наших же условий подобное выглядит, на мой взгляд, слишком громоздким. И опять все упирается в отсутствие недорогих, но мощных интегрированных драйверов затворов. :(
Насчет вашей идеи с тинькой и 7002-ми, я примерно представляю, о чем может идти речь, но, честно говоря, сильных восторгов на этот счет не испытываю. Безусловно, что при соблюдении ряда условий оно будет работать и обеспечивать какой-никакой функционал, но нужно сразу приготовиться к тому, что оно будет склонно к нагреву при эксплуатации и случайному пожиганию мосфетов при разработке. Написание кода для тиньки будет чем-то напоминать нелегкий труд сапера. :)
Еще, конечно, от схемы зависит. Вполне возможно, что я чего-то пока не понимаю. Однако, если бы речь шла обо мне, то я бы двинулся все же в сторону руления соединенными затворами драйверами по схеме, что приводил выше.
я не спорю. правильный драйвер для полевиков сделать просто достаточно, но требуется 3 транзистора (мне кажется 4 многовато). если по твоей схеме убрать Q1 с обвязкой кроме R5
короче чтобы понятнее было вот первоначальная схема. но пока только схема. времени заниматься просто нет. но пусть здесь будет чтобы не забыть
если экпериментально найти макс рабочее напряжение и ток можно оставить так. не очень хорошее решение, но скорее всего для 2S должен легко подойти
Поясню по работе. VT2 задает направление. и меняется только при смене направления
Шимом управляется только VT3. причем от направления используется PB0 или PB1.
например в прямом направлении на VT1 подается HIGH, VT2 замыкает мотор на землю, на PB1 шим управляет скоростью через верхний транзистор сборки VT3. на PB0 на выходе 0, и соответственно нижний транзистор VT3 всегда закрыт и не тормозит двигатель, но и сквозного тока не может быть
в обратном направлении на VT1 подается LOW. VT2 замыкает мотор на + питания, на PB0 шим управляет скоростью через нижний транзистор сборки VT3. на PB1 на выходе 0, и соответственно верхний транзистор VT3 всегда закрыт и не тормозит двигатель, но и сквозного тока не может быть
Посчитал я данный мост в микрокапе и выглядит он там весьма печально. Начальные условия: затвор VT1 на земле, нижний мосфет VT2 открыт, нижний мосфет VT3 закрыт, на затвор VT4 подается меандр 5 вольт 22кгц.
Желтыми маркерами отмечены начало и конец линейного режима работы мосфета (8 вольта на затворе и 10) при закрытии. Это тот период, когда он наиболее активно преобразует протекающий через канал ток в тепло. В этом режиме он пребывает около 3-х микросекунд на каждый период входного шима. При частоте 22 кгц, соответственно, мосфет работает нагревателем 66 миллисекунд на каждую секунду. Это много.
быстро ты проверил. спасибо. проверь еще на других частотах если схема уже нарисована. например 1, 5, 10, 15кгц
а насчет нагрева согласен. путем простых прикидычных расчетов получил выделяемая мощность макс 1,584Вт на 22кгц, 12В 2А, при том что вся мощность в эти периоды падает на транзисторе. на самом деле меньше. но буду опираться на нее
нагрев получается 1,584*90с/вт=142,56градуса
макс рабочая 160. но думаю не стоит делать выше 70
делим пополам 142,56градуса получаем около 70 градусов
соответственно нужно понизить частоту до 11гкц. это в самом худшем случае
но с учетом характеристики и наличия медных площадок думаю и 15кгц может потянуть при нагреве до 70градусов и окружающей 25градусов
опыт только покажет реальную картинку. вот кстати сделал трассировку
да кстати при 25 градусах окружающей температуры макс рассеиваемая мощность 2Вт, при 70 градусах 1.3Вт
частоту можно всегда понизить. 2А это еще пиковый ток для моторов игрушек на ходу, средний ниже
да и в игрушках 12В не требуется. 2S батареи достаточно. это 8,4В макс. напряжение. что на треть ниже и уже должно по идее неплохо работать
для меня было принципиально не делать схему из даже из 10 транзисторов, а самый минимум который возможно и при этом драйвер выполнял свои функции
проверю в железе будет видно что получится. но хз когда получится
кстати плата получилась как одна третья спичечного коробка, размером 16х33мм, но на ней пока не установлен конденсатор по питанию драйвера. но если использовать литиевые аккумуляторы смысла в них особо нет
проверь еще на других частотах если схема уже нарисована. например 1, 5, 10, 15кгц
Так я посчитал для одного периода. Чем больше периодов (выше частота шима), тем больше времени оно занимается нагревом. Все линейно. Для 22 тысячи периодов * 3мкс = 66мс; 10кгц * 3 = 30мс и т.д. Чем ниже частота, тем меньше суммарное время на выработку тепла. Есть у меня смутные предположения, что в районе килогерца и наступит затык. Еще и мотор на этой частоте обычно громко поет. Тогда уж шим сбросить до сотен герц, хоть звук не такой противный получится.
Я попробовал совместить свой драйвер с вашей схемой. Практического смысла пока в этом никакого, но вот насколько параметры отличаются, посмотреть любопытно.
По результатам моделирования, время мосфета в линейном режиме в 35 раз меньше, чем было в прошлый раз.
В таком масштабе графика можно наблюдать, что оно меньше 1мкс, а если посмотреть свойства, то 85,6 наносекунд.
Кстати сказать, при питании мотора 12 в, затворы полумоста соединять нельзя. Я посмотрел для своего драйвера, получится, что 64 наносекунды в каждый период шима оба мосфета полностью открыты одновременно. Хоть время и ничтожное, но сквозной ток через оба мосфета обещает быть умопомрачительным.
какой еще каждый период шима. затворы объеденены только у VT2, а на него шим не подается вообще
а в VT3 работает или N, а P всегда закрыт, или наоборот
сквозной ток может быть только когда переключается направление в VT2. но это длится недолго, поэтому не так страшно, хотя конечно я проверю что да как
и тут кстати драйвер будет иметь передний и задний ход так сказать. скорее всего N открываться будет гораздо быстрее, так как более низкая входная емкость
поэтому передний ход будет верхий VT2 и нижний VT3. задний наоборот. задний ход более напряжный будет для драйвера, но он требуется во много раз меньше чем передний, и более сильный нагрев на заднем ходу не так уже важен
Да нет, я не про последнюю вашу схему говорил. Просто вслух высказал мысль, что содинять затворы, как было в одной из первых пятивольтовых схем, плохая идея для двенадцативольтового драйвера.
Все-таки зря оба затвора соединены на левой половине. При переключении, на короткий момент оба мосфета оказываются открыты. Оно мож и потянет, если не часто их дергать, но все равно как-то не правильно.
Это разъем для ленточного (FFC) кабеля, которым производитель оригинального оборудования подключает исполнительный узел к своему контроллеру. Самым простым оказалось найти походящий разъем и подключиться без переделок и/или перепаек, тупо, вытащив кабель оттуда и вставив сюда.
Специально нашел даташит на кабель -- там разрешенный ток по одному проводнику до 0.5А, а моторчик берет миллиампер сто, от силы.
По результатам экспериментов с устройством на фото выше, подумалось, что из них можно вынести кое-какой опыт для создания более мощного, рассчитанного на большие напряжения, драйвера. Прикинул и промоделировал в протеусе разные варианты, перепроверил частями в микро-капе. Чтобы охватить побольше применений, рассчитывал сразу на 24 вольта, хотя из этой схемы можно делать варианты на меньшее или большее напряжения без существенной переработки. Вырисовывается примерно следующее:
Коротенько о схеме: модели транзисторов в схеме моста выбраны только по соображениям наличия их SPICE-моделей в программах схемной эмуляции. В реальной схеме это могут быть, как отдельные транзисторы, так и те же AO4606 в сборках или вообще любые другие, подходящие по параметрам. Верхняя пара может быть даже не logic-level.
Схема задумывалась так, что Q2 и Q4 ответственны за направление вращения мотора, а Q3 и Q5 за управление скоростью вращения. Скорость регулируется посредством подачи сигнала с широтно-импульсной модуляцей (PWM) на затвор соответствующего нижнего мосфета. На полевых транзисторах Q1 и Q6 выполнена схема сдвига уровня напряжения, чтобы с пятивольтовой ножки контроллера управлять подачей более высокого потенциала на затворы верхних мосфетов. Отдельно отмечу роль стабилитронов D1 и D2 в стоках Q1 и Q6: в схемах с питанием выше 20 вольт на затворы верхних транзисторов может быть подано напряжение, превышающее предельно для них допустимое. Чтобы этого не произошло, напряжение на затворах следует ограничивать величиной 15-19 вольт. Для этого в сток Q1/Q6 устанавливается стабилитрон из расчета Vогр. = Vпит. - Vстаб. Для схемы на рисунке выше, ограничение напряжения на затворах верхних мосфетов выбрано из расчета 24в - 5.6в = 18.4в. Важно отметить, что для схем с питанием ниже 20 вольт, для правильной работы устройства, эти стабилитроны должны быть исключены из схемы и заменены перемычками.
Так как в отличии от схем на дискретной логике здесь все управление возложено на управляющую программу, стоит оговорить ряд моментов и правил, соблюдение которых будет обеспечивать правильное и безопасное функционирование устройства в целом. Речь идет о том, чего можно, а чего нельзя делать в программе и в какой последовательности должны выполняться те или иные действия.
На схеме выводы МК задействованы следующим образом: два в качестве входов и три в качестве выходов. Вход с кнопки следует инициализировать, как вход с поддятжкой, а вход с переменного резистора, как свободный. Все выходы должны быть переведены в положение логического нуля. Для выводов 5 и 6 это требование жесткое, т.к. иное состояние на них может быть чревато выходом из строя мосфетов моста.
ATTINY13(a), в своем наборе периферии, имеет один восьмибитный таймер, который укомплектован двумя PWM-выходами наружу, закрепленными за выводами 5 и 6 микросхемы. Не смотря на то, что выходы висят на одном и том же счетчике, они могут управляться раздельно в том смысле, что включаться и выключаться независимо друг от друга, как независимо иметь PWM-сигнал с разным коэффициентом заполнения для каждого. Разный коэффициент в данной схеме врят ли будет остро восстребован, но возможность выдавать PWM-сигнал в нужное время с одной или другой ноги оказывается весьма кстати. Задействовать тот или иной выход довольно удобно, когда нужно подавать PWM-сигнал к одному из нижних мосфетов, в соответствии с заданным направлением вращения мотора. Отдельно отметить, что подача PWM-сигнала на оба вывода одновременно категорически недопустима и приведет к моментальной порче мосфетов в одной из вертикалей моста.
Немного про инициализацию таймера. В качестве примера на все случаи жизни стоит выбрать не очень высокую частоту PWM-сигнала. В случае рассматриваемого здесь устройства, это могла бы быть частота 586 Герц. Такая частота может быть получена, если восьмибитный счетчик ATTINY13 затактировать от пред-делителя частотой 150кГц. Тактовая частота МК в 9600000 Герц делится на 64 пред-дделителем и получившиеся 150кГц делятся уже самим счетчиком таймера на 256, чтобы на выходе получились искомые 585.93 Герца.
После выполнения приведенного кода, таймер будет запущен с нужными параметрами (причем коэффициент заполения можно сразу задать в процентах в определении DUTY_CYCLE, где в данном примере он установлен в значение 85%), но выводы 5 и 6 МК останутся в нулевом состоянии. За включение PWM-сигнала на нужном выводе ответственны биты COM0A1 и COM0B1 регистра TCCR0A. Удобно будет сразу описать команды двигателю с помощью директив определения:
параметр SPEED представляет собой целое число от 0 до 100, которое макросом пересчитывается в значение регистра, соответствующее коэффициенту заполнения выходного PWM-сигнала.
Почти все готово для управления мотором из программы, но именно здесь нужно описать безопасные техники переключения напрвления вращения. Упрощенная схема управления верхними мосфетами моста накладывает серьезные ограничения на процедуру реверса -- она не может быть выполнена мгновенно. Дело в том, что если отрытие верхних мосфетов может происходить быстро, то закрытие этим же похвастаться не может. При реверсе, подача сигнала на нижний мосфет (ключ) с недозакрывшимся верхним, чревата серьезными неприятностями, вплоть до пиротехнических эффектов. Безопасная процедура смены направления вращения должна предусматривать задержку между подачей управляющих сигналов на полевые транзисторы. Моделирование показывает, что верхний мосфет полностью закрывается за время от 200 микросекунд до 1 миллисекунды, в зависимости от конкретной модели транзистора. В этом случае безопасная процедура может выглядеть так:
1) снятие сигнала с затвора соответствующего нижнего ключа;
2) переключение верхних мосфетов;
3) задержка 200 - 1000 микросекунд;
4) подача сигнала на соответствующий нижний ключ.
Опять же, удобнее всю безопасную процедуру описать одним определением, чтобы потом уже не возвращаться и не проверять, все ли включено/выключено, как положено:
Теперь все дейстия по управлению двигателем превращаются в вызов соответствующих макросов. Пример:
// половинный ход
SET_ROTATION_SPEED(50);
// крутим три секунды по часовой стрелке
RUN_FORWARD;
delay_ms(3000);
// добавляем оборотов до трех четвертей
SET_ROTATION_SPEED(75);
// еще пять секунд
delay_ms(5000);
// полный ход
SET_ROTATION_SPEED(100);
// десять секунд
delay_ms(10000);
// выбег (двигатель вращается по инерции)
STOP_MOTOR;
// десять секунд
delay_ms(10000);
// полный газ
SET_ROTATION_SPEED(100);
RUN_FORWARD;
//три секунды
delay_ms(3000);
// задний ход помалу
SET_ROTATION_SPEED(30);
RUN_BACKWARD;
// десять секунд
delay_ms(10000);
// задний на полную
SET_ROTATION_SPEED(100);
...
Не смотря на то, что в тексте програмы реверс выполняется "на полном ходу", макросами будет выполнена безопасная процедура останова и смены направления вращения.
Все вышенаписанное никак не может являться точной инструкцией. Это просто мои соображения по данному вопросу. Записки на салфетке, если угодно. Они могут содержать опечатки, мелкие неточности, но в целом и схема и алгоритм могут служить основой для разработки действующего устройства. Если кто-то желает выступить с замечаниями и/или критикой, это в высшей степени приветствуется. Хоть мне и кажется, что я более-менее все продумал, но от ошибок никто не застрахован и свежий взгляд со стороны может оказаться очень полезным. По не понятным моментам готов просветить дополнительно.
что то мне это напоминает, только ты поступил хитрее. шим подаешь только на n-канальные. пожалуй так правильнее
кнопка и потенциометр если правильно понял чтобы играться с драйвером
насчет правильно включения выключения согласен. у меня драйвер пару раз горел когда резисторы подтягивающие не добавил и внес изменения в код
уменьшить бы количество 2N7002. но вроде уже некуда. если убрать q7, а q6 затвор подать на сток q1 уберется один полевик, но риск что драйвер сгорит сильно повышается
хотя если использовать еще один пин мк то можно избавится от q7
Да, Q7можно убирать. Он у меня пролез из одной промежуточной редакции, да так и затихарился гад. :) Без него схема абсолютно ничего не теряет. Специально прогнал на моделях, все напряжения во время переходных процессов остаются в допустимых границах. Схема во второй редакции приобретает следующий вид:
Кнопка и потенциометр здесь не являются обязательными элементами драйвера, а нарисованы скорее, как интерфейс во внешний мир. В программе можно навесить на них разные функции. Это уж как кому вздумается. Можно кнопкой менять направление вращения двигателя, а потенциометром оборотами управлять, а можно кнопкой запускать/останавливать мотор, а потенциометром устанавливать скорость и направление вращения. До середины хода потенциометр управляет задним ходом, на середине стоп, а дальше уже увеличивает скорость в прямом направлении. Вобщем, вариантов есть.
Эти же два пина можно отдать под прием цифровых команд снаружи. Если уж сильно припечет, то можно и RESET перепрограммировать под обычный пин (правда перешить после этого МК будет уже невозможо).
Теоретически, используя 2 и 3 пин можно замахнуться на I2C Slave устройство. Хотя готовых решений при быстром гуглении пока не просматривается, но попадаются куски ассемблерного кода для AVR с реализацией этого дела, которые можно было бы попробовать перепилить под тиньку.
В принципе, замена тиньки здесь возможна практически на любой из современных МК. Если драйвер планируется подключать к другому устройству на МК, то можно тиньку выкидывать и повеситься на МК главного устройства. Все, что требуется, это три пина и совсем чуть-чуть места во флеше, чтобы реализовать базовую логику. В минимальном варианте можно даже без PWM-регулирования обойтись, если уж совсем с ресурсами туго. Ну а если без дела остался хоть какой-нибудь таймер, то и вовсе красота.
Скорее всего, да. Руки чешутся, но на столе лежат два других недособранных устройства и своим видом стыдят меня неподецки. Как-то буду пытаться совмещать. Не знаю, как уж быстро получится.
Приблудилась уже целая куча разнообразных моторчиков, на разные напряжения и когда-нибудь кто-то из них запросится в конечное устройство с пометкой срочно. Хорошо бы заранее откатать схемотехнику, чтобы, когда припечет, взять и по быстрому воспользоваться уже готовым решением. Последний раз у меня как раз такой поворот и случился, когда я не раздумывая воспользовался здешними решениями, теперь уже полуторогодовалой давности. Выходит, не зря были усилия. Так и теперь, думаю, что пригодится еще и не раз.
Драйвера, конечно, разные бывают, но здесь закладываться на какой-то конкретный чип или готовую плату не очень удобно. Потребность, как обычно, возникает неожиданно и надо или иметь склад (что сложно представить для любительских условий), либо смириться с процедурой ожидания посылки из Китая. Идея сколхозить устройство из того, что есть под рукой, не неся дополнительных трат и получив при этом параметры не сильно хуже, чем у брендов, она сама по себе способна занимать воображение. :)
короче я решил переделать драйвер. похоже на твое только без резисторов на затворах, добавил подтягивающие к земле для мощных n-канальных (а то использую загрузчик, а в этот момент на затворах все что угодно), полевые сборки AO4606. с хронометром разберусь проверю
И все же резисторы в затворах я бы не советовал убирать. Моделируя, я наблюдал всплески на затворах до нескольких вольт в момент открытия верхних мосфетов при некоторых номиналах R2 и R7. При 22к их нет, но при десяти килоомах на затворах выброс больше двух вольт и этот пик оказывается выше предельно допустимых 20 вольт для напряжения на затворе. Я глубоко не копал, но похоже, что при определенных условиях наблюдается что-то типа резонанса. При каких номиналах он вылезет на реальной схеме угадать невозможно, но в данном случае лучше перебдеть. Больше того, есть смысл увеличить величину затворных резисторов где-нибудь ом до 47-68, чтобы уж наверняка. Скорости переключения там и без этих резисторов нет, а вот от звона застраховаться лишним не будет.
Подтяжка к земле затворов нижних мосфетов вполне обоснована.
Доброго времени суток! Меня привлекло упоминание IRLML2502/6401, ибо эти ребята как раз есть в наличии, а если драйвер вполне себе может отдать 3 А, написанные в справочном листке на транзистор, так это просто праздник какой-то :)
Имеется движок STH-39D1126 от принтера, он умеет шагать по 1.8° и кроме того имеет 1:4 редуктор, так что ШИМить нет никакой надобности. Собственно вопрос, если надо 12 В, то при использовании схемы из 216 поста - какие требования к транзисторам, притягивающим затворы сборок к нулю? Я так понимаю, это должно происходить быстро. Есть биполярные S8050. В моём случае, ессно, речь не о сборках а о парах 2502+6402.
Или 3 А для движка размером 3х4х4 см это всё же много, и можно не заморачиваться - делать 5-вольтовый драйвер (с 7400)? Просто двигатель непонятно откуда и на нём только надпись, что типа 4.1 Ома в обмотках, а на каком напряжении работает - хз. Как определить мощность на глаз?
Вопрос про двигатель размером с поллитровую кружку: для более мощного драйвера, годятся ли полевики p-типа из серии IRFZ48 (большой ток но ёмкий затвор), или надо какие-то быстродействующие? Главное чтобы дешёвые. В углу стола лежат три убитых мостика L298, желания экспериментировать на них уже нет. Да и биполярные, хотя может это и не плохо для мощных вещей.
Мне принцип интересен. Опыты с цеплянием движка на 1.3 Ом на 18 вольтах привели только к дерганию вала. Вот и охота понять - если там не просто "обмотки включить-выключить", то как.
На pololu чуваки испытывали, до 14 ампер оно работает без проблем. Без радиаторов и иного принудительного охлаждения. При токе 15A, защита по перегреву срабатывает через 150 секунд, при токе 20A через 35. Чип драйвера уходит в защиту при достижении температуры в 170 градусов цельсия. Спалить драйвер перегревом не возможно, т.ч. если не смущают высокие температуры, то можно гонять и так.
при 14А он наверно уже жутко горячий, вообще хорошо что защита так хорошо работает
Все работает. Пробовал от 3,8В, на драйвере падает 0,1В, или около того. Спасибо!
хорошо)
а от 3.3В разве не работает? вроде должно
а от 3.3В разве не работает? вроде должно
Да все никак не добраться до регулируемого источника, и не посадить аккум до 3,3В ))
У меня есть вопрос по применению этой сборки, если можно. В моем сервоприводе положение штока определяется отсчетом с оптопары. Диод оптрона потребляет 12мА, я хочу его гасить на время, пока мотор стоит. Мне кажется, еще одна такая сборка отработает логику ИЛИ, т.е. включать диод при любом состоянии, когда уровни на R1, R2 не совпадают. Можно ли для этого подключить выводы 2 и 4 к R1 и R2 соответственно, а между 5,6 и 7,8 включить диод с балластным сопротивлением порядка 200 Ом?
Извините, что так описываю схему, сделал картинку, но не нашел способ, как здесь ее прилепить.
лучше схему
Я не видел до этого кнопочки загрузить
Черт, чего-то я, кажется намудрил... Не сработает ((
приблизительно понял что ты хочешь. но данная схема сработает только в 1 направлении
а от 3.3В разве не работает? вроде должно
Все в порядке, работает от 3,3В. Для радио взял стаб 3,3, от этой цепи и попробовал. На моторе при этом меряется 3,2В
ну тогда все нормально. а то подумал мало ли даташит кривой. всякое бывает
a5021 ты здесь бываешь? вот думаю наконец добить драйвер для мотора на ток до 2 ампер постоянного тока и с питанием до 12В (теоретически выше, но ток на тех напряжениях наверно расплавят наверно припой мосфетов)
делать думаю на тиньке13+2xAO4606+3 резистора+2 полевика 2N7000. управление 1 пином сигналом PPM.
можно конечно и 2 DIR и PWM. но первый вариант более актуальный наверно
А что если использовать программный юарт чтобы говорить тиньке какие ноги дёргать?
А что если использовать программный юарт чтобы говорить тиньке какие ноги дёргать?
а смысл? тут всего 2 варианта удобных. PWM + DIR или PPM
a5021 ты здесь бываешь?
Да, я слежу за этой темой и она мне интересна. Кроме того, время от времени у меня возникают разннобразные электронные фантазии по обсуждаемому тут вопросу, но пока они еще не оформились во что-то более-менее приличное. :) Часть я наверное тут изложу, но это не решение, а просто мысли вслух.
вот думаю наконец добить драйвер для мотора на ток до 2 ампер постоянного тока и с питанием до 12В (теоретически выше, но ток на тех напряжениях наверно расплавят наверно припой мосфетов)
Нет, это все же преувеличенные опасения. Я тут игрался с повышайкой, которая из компового БП (12 вольт) вытягивает около 12 ампер, однако не обнаружил, чтобы там что-то опасно грелось. Если не схалтурить с шириной дорожек на печатной плате, не сделать их слишком тонкими, то там довольно большие токи можно пропускать. Для расчета ширины проводников печатных плат есть даже web-калькуляторы, навроде вот этого. Если им верить, то для тока 10 Ампер достаточно ширины печатной дорожки в 5мм. Сие справделиво для расчета нагрева проводника не выше 20 градусов от температуры окружающей среды. Если для конструкции приемлем нагрев до 65 градусов (палец еще с трудом можно удерживать, но не очень долго), то тот же ток можно пускать по дороге шириной 3мм или по пяти миллиметрам пускать почти 15 Ампер.
делать думаю на тиньке13+2xAO4606+3 резистора+2 полевика 2N7000. управление 1 пином сигналом PPM.
По уму, там несколько посложнее будет. Я как-то для своих нужд драйвер изобретал и получилось что-то вот такое:
Мне нужно было шимить с логического уровня 1.8в двадцатичетырехвольтовую нагрузку с током до 10А. Расчет в Micro-Cap выдал вот такую "осциллограмму" для 2мгц. Имеется ввиду вышеприведенная схема.
Два мегагерца тут приведены только для иллюстрации, чтобы фронты получше рассмотреть, т.к. при таких токах мосфет все равно будет сильно греться. Схема, позже воплощенная в железе, работала на частоте 60-80 килогерц и показала весьма приемлемые результаты. Можно сказать, что расчетные и реальные значения почти совпали.
Хотя эта схема немного из другой оперы, часть ее вполне можно применить для решения нашей задачи. Если выбросить все, что правее резистора R6, а оставшееся подставить к соединенным затворам 4606, то получится законченная половинка моста. Собрав вторую такую же половинку (4 транзистора + 4606), получим полный мост для кручения моторов практически любыми напряжениями (ограничивают здесь максимально-допустимые напряжения мосфетов). Схема хоть и сложнее, чем все, что тут предлагалось раньше, но обеспечивает приемлемые частотные и нагрузочные характеристики.
Если помечтать и потеоретизировать еще немного на эту тему, то вместо тиньки сюда явно просится какой-нибудь младший из STM8. В последний раз я покупал STM8S103K3T6 по 16 рублей за штуку в партии из десятка. Тут конечно возникает определенный идеологический диссонанс, т.к. этот камень мощнее восьмой меги (да и вообще офтопичный инородец), но глядя на цену невозможно убедить себя покупать, скажем, 74-ую логику по цене 20 руб за корпус, да еще и в количестве пары штук, вместо одного STM8. Я в последнее время настропалился паять STM8S103F3P6 в корпусе TSSOP20 куда надо и куда не надо. :) Купил их на радостях двадцать штук, теперь придумываю применения, чтобы не пропадали. Говорю это не для хвастовства, но затем, чтобы пояснить простую мысль -- стоит дешево, занимает мало места, но имеет на борту массу всего, что в мегах и у старших моделей не всегда есть. Нет ни одного возражения против применения их даже в самых простых устройствах или узлах.
Здесь обязательно хочу оговорить отдельно, что я ни при каких обстоятельствах не собираюсь заниматься противопоставлением разных семейств МК. Я вообще активный противник этого дела, т.к. с удовольствием использую всякие железки, до которых дотянулись руки. В последний раз из Китая заказал и получил две разновидности STM32 (просто камни под пайку) и три ардуины "про мини" в сборе. Кому-то такой набор может показаться идиотским, т.к. на STM32 реализуются практически любые задачи, которые можно решать атмегой и вроде бы смысла в ардуинах в этом случае никакого, но это лишь при сугубо поверхностном рассмотрении. 32-ые мной покупались под счетные задачи (там где мега просто не вытягивает по скорости), а ардуины под быструю и безгеморройную реализацию кое-какого обвеса "умного дома". STM32 замечательное семейство, но в рамках моей конкретной задачи оно сливает ардуине не просто с треском, а делает проект практически не реализуемым, за исключением разве что случая, когда жизнь предполагается бесконечной. :)
Но вернусь к STM8. Прелесть их для задачи управления двигателями заключается в том, что STM-ная периферия имеет некоторые аппаратные особенности, специально заточенные под это дело. Прежде всего на ум приходит наличие комплементарных выходов. Суть их в том, что, что состояние одного выхода всегда находится в противофазе с другим -- когда на одном "1", то на другом "0" и наоборот. Это реализовано в МК аппаратно. В условиях нашего драйвера, выглядит весьма соблазнительным один такой выход подцепить к верхнему мосфету, а другой к нижнему. Но в том, чтобы просто подцепить, практически никакого куражу. :) Весь цимус раскрывается тогда, когда выясняется, что моменты перехода от одного логического состояния к другому можно смещать на небольшую величину относительно разных выходов. Другими словами, сначала проходит фронт закрывающий, скажем, верхний мосфет, а потом, с небольшой задержкой (программируемой, от сотен наносекунд до сотен микросекунд), достаточной для полного закрытия, следует открывающий фронт нижнего мосфета. Таким образом становится возможным исключить ситуацию протекания сквозных токов моста в принципе.
Однако, все это слишком хорошо, чтобы взять и просто воткнуть в нашу схему. Идилическая картинка рассыпается при столкновении с необходимостью управлять раздельно каждым затвором. На затворы нам нужно подавать напряжения выше логических уровней, а стало быть, драйвер потребуется под каждый затвор. Если бы речь шла о кручении киловаттных моторов, где вопрос бы стоял или так, или никак, то с тяжелым сердцем можно было бы сподвигнуться и на изготовление дискретных драйверов под каждый затвор. Для наших же условий подобное выглядит, на мой взгляд, слишком громоздким. И опять все упирается в отсутствие недорогих, но мощных интегрированных драйверов затворов. :(
Насчет вашей идеи с тинькой и 7002-ми, я примерно представляю, о чем может идти речь, но, честно говоря, сильных восторгов на этот счет не испытываю. Безусловно, что при соблюдении ряда условий оно будет работать и обеспечивать какой-никакой функционал, но нужно сразу приготовиться к тому, что оно будет склонно к нагреву при эксплуатации и случайному пожиганию мосфетов при разработке. Написание кода для тиньки будет чем-то напоминать нелегкий труд сапера. :)
Еще, конечно, от схемы зависит. Вполне возможно, что я чего-то пока не понимаю. Однако, если бы речь шла обо мне, то я бы двинулся все же в сторону руления соединенными затворами драйверами по схеме, что приводил выше.
я не спорю. правильный драйвер для полевиков сделать просто достаточно, но требуется 3 транзистора (мне кажется 4 многовато). если по твоей схеме убрать Q1 с обвязкой кроме R5
короче чтобы понятнее было вот первоначальная схема. но пока только схема. времени заниматься просто нет. но пусть здесь будет чтобы не забыть
если экпериментально найти макс рабочее напряжение и ток можно оставить так. не очень хорошее решение, но скорее всего для 2S должен легко подойти
Поясню по работе. VT2 задает направление. и меняется только при смене направления
Шимом управляется только VT3. причем от направления используется PB0 или PB1.
например в прямом направлении на VT1 подается HIGH, VT2 замыкает мотор на землю, на PB1 шим управляет скоростью через верхний транзистор сборки VT3. на PB0 на выходе 0, и соответственно нижний транзистор VT3 всегда закрыт и не тормозит двигатель, но и сквозного тока не может быть
в обратном направлении на VT1 подается LOW. VT2 замыкает мотор на + питания, на PB0 шим управляет скоростью через нижний транзистор сборки VT3. на PB1 на выходе 0, и соответственно верхний транзистор VT3 всегда закрыт и не тормозит двигатель, но и сквозного тока не может быть
Посчитал я данный мост в микрокапе и выглядит он там весьма печально. Начальные условия: затвор VT1 на земле, нижний мосфет VT2 открыт, нижний мосфет VT3 закрыт, на затвор VT4 подается меандр 5 вольт 22кгц.
Синий график -- затвор x6, красный -- затвор х4, зеленый -- мотор.
Желтыми маркерами отмечены начало и конец линейного режима работы мосфета (8 вольта на затворе и 10) при закрытии. Это тот период, когда он наиболее активно преобразует протекающий через канал ток в тепло. В этом режиме он пребывает около 3-х микросекунд на каждый период входного шима. При частоте 22 кгц, соответственно, мосфет работает нагревателем 66 миллисекунд на каждую секунду. Это много.
быстро ты проверил. спасибо. проверь еще на других частотах если схема уже нарисована. например 1, 5, 10, 15кгц
а насчет нагрева согласен. путем простых прикидычных расчетов получил выделяемая мощность макс 1,584Вт на 22кгц, 12В 2А, при том что вся мощность в эти периоды падает на транзисторе. на самом деле меньше. но буду опираться на нее
нагрев получается 1,584*90с/вт=142,56градуса
макс рабочая 160. но думаю не стоит делать выше 70
делим пополам 142,56градуса получаем около 70 градусов
соответственно нужно понизить частоту до 11гкц. это в самом худшем случае
но с учетом характеристики и наличия медных площадок думаю и 15кгц может потянуть при нагреве до 70градусов и окружающей 25градусов
опыт только покажет реальную картинку. вот кстати сделал трассировку
поправил немного заливку. а то как то некрасиво она сделалась
да кстати при 25 градусах окружающей температуры макс рассеиваемая мощность 2Вт, при 70 градусах 1.3Вт
частоту можно всегда понизить. 2А это еще пиковый ток для моторов игрушек на ходу, средний ниже
да и в игрушках 12В не требуется. 2S батареи достаточно. это 8,4В макс. напряжение. что на треть ниже и уже должно по идее неплохо работать
для меня было принципиально не делать схему из даже из 10 транзисторов, а самый минимум который возможно и при этом драйвер выполнял свои функции
проверю в железе будет видно что получится. но хз когда получится
кстати плата получилась как одна третья спичечного коробка, размером 16х33мм, но на ней пока не установлен конденсатор по питанию драйвера. но если использовать литиевые аккумуляторы смысла в них особо нет
проверь еще на других частотах если схема уже нарисована. например 1, 5, 10, 15кгц
Так я посчитал для одного периода. Чем больше периодов (выше частота шима), тем больше времени оно занимается нагревом. Все линейно. Для 22 тысячи периодов * 3мкс = 66мс; 10кгц * 3 = 30мс и т.д. Чем ниже частота, тем меньше суммарное время на выработку тепла. Есть у меня смутные предположения, что в районе килогерца и наступит затык. Еще и мотор на этой частоте обычно громко поет. Тогда уж шим сбросить до сотен герц, хоть звук не такой противный получится.
так я тоже посчитал. которе когда плату сделаю тогда и проверю что в реальности получится
Я попробовал совместить свой драйвер с вашей схемой. Практического смысла пока в этом никакого, но вот насколько параметры отличаются, посмотреть любопытно.
По результатам моделирования, время мосфета в линейном режиме в 35 раз меньше, чем было в прошлый раз.
В таком масштабе графика можно наблюдать, что оно меньше 1мкс, а если посмотреть свойства, то 85,6 наносекунд.
так и должно быть. нормальный драйвер полевика даст лучше фронты
Кстати сказать, при питании мотора 12 в, затворы полумоста соединять нельзя. Я посмотрел для своего драйвера, получится, что 64 наносекунды в каждый период шима оба мосфета полностью открыты одновременно. Хоть время и ничтожное, но сквозной ток через оба мосфета обещает быть умопомрачительным.
какой еще каждый период шима. затворы объеденены только у VT2, а на него шим не подается вообще
а в VT3 работает или N, а P всегда закрыт, или наоборот
сквозной ток может быть только когда переключается направление в VT2. но это длится недолго, поэтому не так страшно, хотя конечно я проверю что да как
и тут кстати драйвер будет иметь передний и задний ход так сказать. скорее всего N открываться будет гораздо быстрее, так как более низкая входная емкость
поэтому передний ход будет верхий VT2 и нижний VT3. задний наоборот. задний ход более напряжный будет для драйвера, но он требуется во много раз меньше чем передний, и более сильный нагрев на заднем ходу не так уже важен
Да нет, я не про последнюю вашу схему говорил. Просто вслух высказал мысль, что содинять затворы, как было в одной из первых пятивольтовых схем, плохая идея для двенадцативольтового драйвера.
да я помню. и изза этого кстати 2 шима и испльзовать планирую, чтобы не было того недостатка
сделал ряд проверок драйвера
пока без тиньки, просто с уно подавал сигналы. драйвер легко тянул двигатель при питании 8В и токе до 700ма
нагрева нет. все стабильно
поставил более мощный двигатель, который однозначно должен его сжечь, он и сжег, так как пусковой ток около 10А. ну это так для эксперимента
частота шим стандартная 490гц и еще тестировал на 4кгц. на 4кгц писк противный хоть и не очень громкий
заменю полевики и проверю с обычными двигателями
http://ru.aliexpress.com/item/HK-POST-FREE-Wholesale-48-1-Plastic-DC-Dri...
нагружу сразу по два двигателя на драйвер чтобы определить ток который тянет
Все-таки зря оба затвора соединены на левой половине. При переключении, на короткий момент оба мосфета оказываются открыты. Оно мож и потянет, если не часто их дергать, но все равно как-то не правильно.
экономия выводов.хотя еще один пин свободный, можно на него один полевик посадить
Я вот такое нынче собрал. Тож с тинькой. Неожиданно понадобилось.
прикольно получилось
а зачем такой разъем справа наверху? как то не для него
Это разъем для ленточного (FFC) кабеля, которым производитель оригинального оборудования подключает исполнительный узел к своему контроллеру. Самым простым оказалось найти походящий разъем и подключиться без переделок и/или перепаек, тупо, вытащив кабель оттуда и вставив сюда.
Специально нашел даташит на кабель -- там разрешенный ток по одному проводнику до 0.5А, а моторчик берет миллиампер сто, от силы.
По результатам экспериментов с устройством на фото выше, подумалось, что из них можно вынести кое-какой опыт для создания более мощного, рассчитанного на большие напряжения, драйвера. Прикинул и промоделировал в протеусе разные варианты, перепроверил частями в микро-капе. Чтобы охватить побольше применений, рассчитывал сразу на 24 вольта, хотя из этой схемы можно делать варианты на меньшее или большее напряжения без существенной переработки. Вырисовывается примерно следующее:
Коротенько о схеме: модели транзисторов в схеме моста выбраны только по соображениям наличия их SPICE-моделей в программах схемной эмуляции. В реальной схеме это могут быть, как отдельные транзисторы, так и те же AO4606 в сборках или вообще любые другие, подходящие по параметрам. Верхняя пара может быть даже не logic-level.
Схема задумывалась так, что Q2 и Q4 ответственны за направление вращения мотора, а Q3 и Q5 за управление скоростью вращения. Скорость регулируется посредством подачи сигнала с широтно-импульсной модуляцей (PWM) на затвор соответствующего нижнего мосфета. На полевых транзисторах Q1 и Q6 выполнена схема сдвига уровня напряжения, чтобы с пятивольтовой ножки контроллера управлять подачей более высокого потенциала на затворы верхних мосфетов. Отдельно отмечу роль стабилитронов D1 и D2 в стоках Q1 и Q6: в схемах с питанием выше 20 вольт на затворы верхних транзисторов может быть подано напряжение, превышающее предельно для них допустимое. Чтобы этого не произошло, напряжение на затворах следует ограничивать величиной 15-19 вольт. Для этого в сток Q1/Q6 устанавливается стабилитрон из расчета Vогр. = Vпит. - Vстаб. Для схемы на рисунке выше, ограничение напряжения на затворах верхних мосфетов выбрано из расчета 24в - 5.6в = 18.4в. Важно отметить, что для схем с питанием ниже 20 вольт, для правильной работы устройства, эти стабилитроны должны быть исключены из схемы и заменены перемычками.
Так как в отличии от схем на дискретной логике здесь все управление возложено на управляющую программу, стоит оговорить ряд моментов и правил, соблюдение которых будет обеспечивать правильное и безопасное функционирование устройства в целом. Речь идет о том, чего можно, а чего нельзя делать в программе и в какой последовательности должны выполняться те или иные действия.
На схеме выводы МК задействованы следующим образом: два в качестве входов и три в качестве выходов. Вход с кнопки следует инициализировать, как вход с поддятжкой, а вход с переменного резистора, как свободный. Все выходы должны быть переведены в положение логического нуля. Для выводов 5 и 6 это требование жесткое, т.к. иное состояние на них может быть чревато выходом из строя мосфетов моста.
Здесь можно сразу определить макрос, вызов которого в нужном месте программы будет переключать направление вращение мотора:
ATTINY13(a), в своем наборе периферии, имеет один восьмибитный таймер, который укомплектован двумя PWM-выходами наружу, закрепленными за выводами 5 и 6 микросхемы. Не смотря на то, что выходы висят на одном и том же счетчике, они могут управляться раздельно в том смысле, что включаться и выключаться независимо друг от друга, как независимо иметь PWM-сигнал с разным коэффициентом заполнения для каждого. Разный коэффициент в данной схеме врят ли будет остро восстребован, но возможность выдавать PWM-сигнал в нужное время с одной или другой ноги оказывается весьма кстати. Задействовать тот или иной выход довольно удобно, когда нужно подавать PWM-сигнал к одному из нижних мосфетов, в соответствии с заданным направлением вращения мотора. Отдельно отметить, что подача PWM-сигнала на оба вывода одновременно категорически недопустима и приведет к моментальной порче мосфетов в одной из вертикалей моста.
Немного про инициализацию таймера. В качестве примера на все случаи жизни стоит выбрать не очень высокую частоту PWM-сигнала. В случае рассматриваемого здесь устройства, это могла бы быть частота 586 Герц. Такая частота может быть получена, если восьмибитный счетчик ATTINY13 затактировать от пред-делителя частотой 150кГц. Тактовая частота МК в 9600000 Герц делится на 64 пред-дделителем и получившиеся 150кГц делятся уже самим счетчиком таймера на 256, чтобы на выходе получились искомые 585.93 Герца.
После выполнения приведенного кода, таймер будет запущен с нужными параметрами (причем коэффициент заполения можно сразу задать в процентах в определении DUTY_CYCLE, где в данном примере он установлен в значение 85%), но выводы 5 и 6 МК останутся в нулевом состоянии. За включение PWM-сигнала на нужном выводе ответственны биты COM0A1 и COM0B1 регистра TCCR0A. Удобно будет сразу описать команды двигателю с помощью директив определения:
Ну и чтобы два раза не вставать, макроопределение для установки коэффициента заполнения, которое определяет скорость вращения:
параметр SPEED представляет собой целое число от 0 до 100, которое макросом пересчитывается в значение регистра, соответствующее коэффициенту заполнения выходного PWM-сигнала.
Почти все готово для управления мотором из программы, но именно здесь нужно описать безопасные техники переключения напрвления вращения. Упрощенная схема управления верхними мосфетами моста накладывает серьезные ограничения на процедуру реверса -- она не может быть выполнена мгновенно. Дело в том, что если отрытие верхних мосфетов может происходить быстро, то закрытие этим же похвастаться не может. При реверсе, подача сигнала на нижний мосфет (ключ) с недозакрывшимся верхним, чревата серьезными неприятностями, вплоть до пиротехнических эффектов. Безопасная процедура смены направления вращения должна предусматривать задержку между подачей управляющих сигналов на полевые транзисторы. Моделирование показывает, что верхний мосфет полностью закрывается за время от 200 микросекунд до 1 миллисекунды, в зависимости от конкретной модели транзистора. В этом случае безопасная процедура может выглядеть так:
1) снятие сигнала с затвора соответствующего нижнего ключа;
2) переключение верхних мосфетов;
3) задержка 200 - 1000 микросекунд;
4) подача сигнала на соответствующий нижний ключ.
Опять же, удобнее всю безопасную процедуру описать одним определением, чтобы потом уже не возвращаться и не проверять, все ли включено/выключено, как положено:
Теперь все дейстия по управлению двигателем превращаются в вызов соответствующих макросов. Пример:
Не смотря на то, что в тексте програмы реверс выполняется "на полном ходу", макросами будет выполнена безопасная процедура останова и смены направления вращения.
Все вышенаписанное никак не может являться точной инструкцией. Это просто мои соображения по данному вопросу. Записки на салфетке, если угодно. Они могут содержать опечатки, мелкие неточности, но в целом и схема и алгоритм могут служить основой для разработки действующего устройства. Если кто-то желает выступить с замечаниями и/или критикой, это в высшей степени приветствуется. Хоть мне и кажется, что я более-менее все продумал, но от ошибок никто не застрахован и свежий взгляд со стороны может оказаться очень полезным. По не понятным моментам готов просветить дополнительно.
что то мне это напоминает, только ты поступил хитрее. шим подаешь только на n-канальные. пожалуй так правильнее
кнопка и потенциометр если правильно понял чтобы играться с драйвером
насчет правильно включения выключения согласен. у меня драйвер пару раз горел когда резисторы подтягивающие не добавил и внес изменения в код
уменьшить бы количество 2N7002. но вроде уже некуда. если убрать q7, а q6 затвор подать на сток q1 уберется один полевик, но риск что драйвер сгорит сильно повышается
хотя если использовать еще один пин мк то можно избавится от q7
Да, Q7можно убирать. Он у меня пролез из одной промежуточной редакции, да так и затихарился гад. :) Без него схема абсолютно ничего не теряет. Специально прогнал на моделях, все напряжения во время переходных процессов остаются в допустимых границах. Схема во второй редакции приобретает следующий вид:
Кнопка и потенциометр здесь не являются обязательными элементами драйвера, а нарисованы скорее, как интерфейс во внешний мир. В программе можно навесить на них разные функции. Это уж как кому вздумается. Можно кнопкой менять направление вращения двигателя, а потенциометром оборотами управлять, а можно кнопкой запускать/останавливать мотор, а потенциометром устанавливать скорость и направление вращения. До середины хода потенциометр управляет задним ходом, на середине стоп, а дальше уже увеличивает скорость в прямом направлении. Вобщем, вариантов есть.
Эти же два пина можно отдать под прием цифровых команд снаружи. Если уж сильно припечет, то можно и RESET перепрограммировать под обычный пин (правда перешить после этого МК будет уже невозможо).
Теоретически, используя 2 и 3 пин можно замахнуться на I2C Slave устройство. Хотя готовых решений при быстром гуглении пока не просматривается, но попадаются куски ассемблерного кода для AVR с реализацией этого дела, которые можно было бы попробовать перепилить под тиньку.
В принципе, замена тиньки здесь возможна практически на любой из современных МК. Если драйвер планируется подключать к другому устройству на МК, то можно тиньку выкидывать и повеситься на МК главного устройства. Все, что требуется, это три пина и совсем чуть-чуть места во флеше, чтобы реализовать базовую логику. В минимальном варианте можно даже без PWM-регулирования обойтись, если уж совсем с ресурсами туго. Ну а если без дела остался хоть какой-нибудь таймер, то и вовсе красота.
собирать планируешь?
Скорее всего, да. Руки чешутся, но на столе лежат два других недособранных устройства и своим видом стыдят меня неподецки. Как-то буду пытаться совмещать. Не знаю, как уж быстро получится.
Приблудилась уже целая куча разнообразных моторчиков, на разные напряжения и когда-нибудь кто-то из них запросится в конечное устройство с пометкой срочно. Хорошо бы заранее откатать схемотехнику, чтобы, когда припечет, взять и по быстрому воспользоваться уже готовым решением. Последний раз у меня как раз такой поворот и случился, когда я не раздумывая воспользовался здешними решениями, теперь уже полуторогодовалой давности. Выходит, не зря были усилия. Так и теперь, думаю, что пригодится еще и не раз.
конечно. я теперь только самодельные драйвера ставлю. всеравно что продается в основном расчитано на шаговые, тормозят двигатель
Драйвера, конечно, разные бывают, но здесь закладываться на какой-то конкретный чип или готовую плату не очень удобно. Потребность, как обычно, возникает неожиданно и надо или иметь склад (что сложно представить для любительских условий), либо смириться с процедурой ожидания посылки из Китая. Идея сколхозить устройство из того, что есть под рукой, не неся дополнительных трат и получив при этом параметры не сильно хуже, чем у брендов, она сама по себе способна занимать воображение. :)
короче я решил переделать драйвер. похоже на твое только без резисторов на затворах, добавил подтягивающие к земле для мощных n-канальных (а то использую загрузчик, а в этот момент на затворах все что угодно), полевые сборки AO4606. с хронометром разберусь проверю
И все же резисторы в затворах я бы не советовал убирать. Моделируя, я наблюдал всплески на затворах до нескольких вольт в момент открытия верхних мосфетов при некоторых номиналах R2 и R7. При 22к их нет, но при десяти килоомах на затворах выброс больше двух вольт и этот пик оказывается выше предельно допустимых 20 вольт для напряжения на затворе. Я глубоко не копал, но похоже, что при определенных условиях наблюдается что-то типа резонанса. При каких номиналах он вылезет на реальной схеме угадать невозможно, но в данном случае лучше перебдеть. Больше того, есть смысл увеличить величину затворных резисторов где-нибудь ом до 47-68, чтобы уж наверняка. Скорости переключения там и без этих резисторов нет, а вот от звона застраховаться лишним не будет.
Подтяжка к земле затворов нижних мосфетов вполне обоснована.
у меня напряжение питания 2S li-ion аккумулятор. поэтому мне это не так страшно
Доброго времени суток! Меня привлекло упоминание IRLML2502/6401, ибо эти ребята как раз есть в наличии, а если драйвер вполне себе может отдать 3 А, написанные в справочном листке на транзистор, так это просто праздник какой-то :)
Имеется движок STH-39D1126 от принтера, он умеет шагать по 1.8° и кроме того имеет 1:4 редуктор, так что ШИМить нет никакой надобности. Собственно вопрос, если надо 12 В, то при использовании схемы из 216 поста - какие требования к транзисторам, притягивающим затворы сборок к нулю? Я так понимаю, это должно происходить быстро. Есть биполярные S8050. В моём случае, ессно, речь не о сборках а о парах 2502+6402.
Или 3 А для движка размером 3х4х4 см это всё же много, и можно не заморачиваться - делать 5-вольтовый драйвер (с 7400)? Просто двигатель непонятно откуда и на нём только надпись, что типа 4.1 Ома в обмотках, а на каком напряжении работает - хз. Как определить мощность на глаз?
Вопрос про двигатель размером с поллитровую кружку: для более мощного драйвера, годятся ли полевики p-типа из серии IRFZ48 (большой ток но ёмкий затвор), или надо какие-то быстродействующие? Главное чтобы дешёвые. В углу стола лежат три убитых мостика L298, желания экспериментировать на них уже нет. Да и биполярные, хотя может это и не плохо для мощных вещей.
для шагового купи сразу такие
http://arduino.ru/forum/apparatnye-voprosy/shagovyi-dvigatel-s-reduktorom#comment-104924
меньше 100 рублей. чем ты будешь мучаться. это драйвер для коллектороного двигателя. можно переделать и для шагового
к тому же ток слишком высокий
Мне принцип интересен. Опыты с цеплянием движка на 1.3 Ом на 18 вольтах привели только к дерганию вала. Вот и охота понять - если там не просто "обмотки включить-выключить", то как.
да просто все. и дело не только в напряжении и токе. погугли как надо подавать напряжение на обмотки чтобы он крутился
переделал драйвер немного. так как подключение к пинам с шимом было неудобное
правда две перемычки 1206 потребовалось
Ничего не понятно, но интересно. :) Это целая атмега будет моторами управлять?