5-Microstep Drive. Xilinx CPLD

boldive

to mura
Юрий, так как насчет содержания моего поста

Юрий, есть прогресс в моделировании?

Вот тут еще немножко теории как это сделано у Марисса.

Можете поделится кодом testbench для этого дела?

mura

Cкоро начну “боевые” испытания. А тесткод не писал, в МАКсе удобный симулятор, и там все задается графически.

20 days later
Oleg2

Интерестно,как обстоят дела с драйвером…и подскажите boldive ,по Вашему мнению какой драйвер будет лучше: 1)на LS8290 или 2)на Xilinx CPLD

boldive

Разумеется на CPLD, только там код надо слегка до ума довести.

Аэробус

Ээээ… Народ, подскажите, нашел тут Xilinx ISE Design Suite v11.1 весит 5,6Гб и пакет обновлений до 11.4 2,5Гб Это чо неполная? В первых постах речь шла о 47Гб?

boldive

Все правильно. Так и есть. Только ко всему этому надо еще впридачу с сайта Xilinx скачать Modelsim 6.4 с библиотеками под CPLD (хотя по умолчанию там эти библиотеки уже сидят). Регистрационный код получите там-же бесплатно.

Oleg2

Так тогда два вопроса :1)А что с кодом именно не так? 2)топологию платы брали с сайта или сами разводили?

boldive
  1. 1/5 шага заявленная в проекте работает. Но это хорошо для изучения процесса. Желательно сделать его меняющим шаг в зависимости от частоты оборотов двигателя и начинать вращение где-то с 1/16 шага.

  2. Топология платы своя. Долго пыхтел, но сделал.

1 month later
andrey_als76

Схему как файл прикреплять уже нельзя. Кому надо текущий вариант схемы берем тут.[/QUOTE]

Тоже хочу собрать контролер с ПЛМ разобрался, счас копаю аналоговую часть.

1.не могу монять почему на схеме резистор R40 0.05ом -это при токе 65А даст на компараторах 3.3в , на 3,5 ноге LM393 напряжение должно менятся от 0 до 3.3В. у вас что двигатель потребляет 65А? + перед компаратором лучше поставить усилитель напряжения с регулируемой обратной связью чтоб можно было ток менять.

2 что за хитрый у вас источник тока для asin

с помехами разобрались при высоком напряжении? , у меня будет в районе 90в.

boldive
  1. Откуда 65А ? Вроде такие цифры никогда не озвучивались. Я так думаю 7-8А это то что схема выдаст. R1 и есть то что меняет максимальный ток обмоток мотора. Примерно 1к на 1А. Т.е. при токе 4А надо ставить 4К. Если ничего не поставить в качестве R1 (оборвать) то схема сама ограничит ток до ~7А (R2).
  2. Кто то невнимательно прочитал tutorial. Или совсем его не читал. ASIN and BSIN это выходы CPLD с открытым коллектором (Z-level). Грубо говоря закорачиваются ASIN and BSIN на минус питания. В зависимости от “длительности” закорачивания и получается синусоида на компараторе.

С помехами еще воюю. У меня токи 7-8А 48VDC. Если будет 90В питания то IRF540N не подойдут. У них максимум 100В. А поскольку силовая часть работает в импульсном режиме на индуктивную нагрузку то выбросы напряжения будут вольт так под 160 если не больше.

Помехозащищенность очень сильно зависит от топологии печатной платы. С двухсторонней платой очень трудно защититься от токов 7-8А. Уже подумываю прилепить медный экран сверху CPLD и компаратора (закрыть всю несиловую часть).

andrey_als76

меня поначалу запутало то что в первоисточнике было указано curent set- думал стабилизатор тока пока не увидел конденсатор 1мф.

Разобрался с вашей схемой на транзисторах Q1-Q3 На Q1-источник тока, Q2 просто напряжение падает , Q3- эмитерный повторитель, в итоге получаем простой стабилизатор напряжения регулируемый 2 резисторами (отсюда вопрос зачем такой изврат😁)

Раньше я занимался проектированием импульсных источников питания поэтому в борьбе с помехами знаю толк. ваша схема может и будет работать в четырехслойной плате, если повезет. у вас на компараторе сравниваются миливольты (50mv) это сопоставимо с наводимыми помехами. надо усиливать сигнал c резистора R39 R40 хотябы до вольт 3-4 (усилитель рядом с резистором R39) и на R4-R5 подавать такое же напряжение. самое главное обратную связь правильно развести (цепи компаратора) на осцилографе все хорошо будет видно. микросхема вроде и на 5 в расчитана , наверное можно подать на С3 и 5в.
посмотрите как сделан усилитель тока у robozone.su/uploads/posts/…/1265808176_sch.jpg

у меня в бп по 600в с токами 3а коммутировалось на 1 слойной плате и ничего, помех никаких небыло, сигнал был намного чище чем в серийных изделиях.

boldive
andrey_als76:

отсюда вопрос зачем такой изврат😁)

…поэтому в борьбе с помехами знаю толк.

current set - дословный перевод “установка тока”.

Изврат для установки тока мотора без влезания на плату. К терминалам подсоединяется внешний резистор и все. Не надо ничего мерять и подбирать.

Усилить сигнал с токовых резисторов хорошая идея. Применять еще дополнительные 5В питания не совсем понятно зачем.
Если посмотреть внимательно на плату предложенной выше схемы то видно что проводники от резисторов через всю плату идут к усилителям и потом к компаратору. Какой смысл в такой разводке?

Если есть желание поучаствовать в “правильной” разводке платы (а ваш опыт несомнено будет полезен) могу дать проект со схемами и печатными платами в Altium Designer Summer 2009. В проекте двусторонняя печатная плата расчитанная на домашнее применение. Её фотки я выкладывал раньше. Там я старался максимально уменьшить количество переходных отверстий. Для домашнего изготовления это иногда критично (сверел не так уж и много, и переломал я их достаточно).

Zliva

Идея использования CPLD хорошая. Респект. Но хотел бы спросить, почему не взять к примеру обычную AVR AT90PWM2 или AT90PWM3 или даже ATMEGA8 и запрограммировать ШИМ на работу с sin/cos? Как на меня, это проще и доступнее. В CPLD я не разбираюсь, но с AVR я бы потягался.

andrey_als76
boldive:

current set - дословный перевод “установка тока”.

Изврат для установки тока мотора без влезания на плату. К терминалам подсоединяется внешний резистор и все. Не надо ничего мерять и подбирать.

Усилить сигнал с токовых резисторов хорошая идея. Применять еще дополнительные 5В питания не совсем понятно зачем.
Если посмотреть внимательно на плату предложенной выше схемы то видно что проводники от резисторов через всю плату идут к усилителям и потом к компаратору. Какой смысл в такой разводке?

по ссылке я имел ввиду саму схему ,плата там разведена криво. усилитель тока надо располагать прямо возле токового ресистора. 5в для того чтоб улучшить помехоустойчивость по синусу, хотя и 3.3в хватит. в затворы полевиков лучше резисторы всетаки поставить, меньше помех на плм идти будет. резистор R22 раза в 2 уменьшить если усиливать.
Чтобы уменьшить сопротивление земли я применял многожильный провод 1.5мм в нужных местах, сильно помогало. попробуйте соединить проводом землю токового резистора землю компаратора и плм звездой

на вашей схеме стабилизатор напряжения на 0.5В сделан, получается ток 10А 0.05ом*10А=0.5В (написано 1А)

ATLab
Zliva:

Идея использования CPLD хорошая. Респект. Но хотел бы спросить, почему не взять к примеру обычную AVR AT90PWM2 или AT90PWM3 или даже ATMEGA8 и запрограммировать ШИМ на работу с sin/cos? Как на меня, это проще и доступнее. В CPLD я не разбираюсь, но с AVR я бы потягался.

Ну так в чем проблема? AVR в руки и вперед, на штурм CPLD!😁

Zliva

Не понял Вашего сарказма. Мне просто интересно. Почему не AVR, а CPLD. В освоении CPLD тоже не все так гладко. Если не трудно назовите плюсы и минусы. Думаю многим будет интересно. В принципе, я для реализации ТНС думаю использовать AVR. Но если изначально сам процессор будет выбран неправильно, то потом не разгрести проблемы, которые могут появиться.

Аэробус

Дык я так понимаю, можно и на рассыпухе. Темы про драйвера на процах обсуждались. На рассыпухе тоже. Народ осваивает новые горизонты.
Это скорее вопрос религии, кому что нравиться. 😃

mura

У процов есть одно нехорошее свойство - ЗАВИСАНИЕ.
И что-б недопустить дыма необходимо городить огород из рассыпухи, что сводит на нет все прелести проца.
Но это не значит что НЕЛЬЗЯ делать драйвер, можно и нужно.

Перед началом неплохо изучить предмет (читай рынок), я делал кучу разных драйверов и пришел к выводу “Для тока до 3А использовать TA8435, TB6560” и только для больших токов разрабатывать свое. Придется этим заняться т.к. в магазине появились 86-е движки kosmodrom.com.ua/data/cncstepdriver/cnc.php

ATLab
Zliva:

Не понял Вашего сарказма. Мне просто интересно. Почему не AVR, а CPLD…

Сарказма там нет вообще, так, легкая ирония.
Вот к примеру, в “…AT90PWM2 или AT90PWM3…” есть триггеры (я не в курсе, не имел с ними дела)?
А если их нет, как будете реализовывать ШИМ с фиксированным периодом? Ставить рассыпуху?
Какую максимальную частоту STEP можно получить на MK? 200 кГц можно? А 500 кГц?

Вы попробуйте реально попроектируйте схему, попишите программу, там все и прояснится: возможности и недостатки МК в данном применении.

Zliva

В общем суть понятная. Так как буду делать ТНС, то считаю, что синхронизации по STEP и DIR делать не надо. Это избыточно. Посужу над алгоритмом. Посимулирую схему. Может что-то проясниться.

Еще хочу сказать, что автор молодчина, хорошим делом занимается.

21 days later
boldive

Переписал код на 10 микрошагов, плюс добавил переход с микрошага в полный шаг. Размерность шага меняется только после поворота двигателя на 1.8° (полный шаг), менять в пределах шага не стал, хотя это легко реализуемо. Для перехода в микрошаг хотел вначале использовать 3 и 5 гармоники из ряда Фурье, а потом просто взял и по экспоненте вытянул синусоиду в меандр. Теперь вот думаю а как было-бы правильнее переходить из синусоиды в меандр использую все 10 шагов? Симуляция в Modelsim показывает что все красиво и работает так как надо. А когда зашиваю код в CPLD то на выходах A1, B1 неожиданно появляются какие-то непонятные импульсы с шастотой шима (20KHz). В симуляторе их нет. Ну и двигатель соответственно дергается но не крутится.

В общем, есть желающие (со знанием Verilog и Xilinx ISE+Modelsim) поучаствовать в проекте и довести код до ума?

А я пока защиту драйва от всяких замыканий и перегрузок испытаю. Сама схема простая но под нее надо новую плату делать. А это время.