5-Microstep Drive. Xilinx CPLD

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) поучаствовать в проекте и довести код до ума?

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

7 days later
boldive

Для желающих все это дело повторить, выкладываю все необходимое для домашнего изготовления. Описания нет. Но из картинок и схемы все должно быть понятно. Там же включена и схема с платой программатора для прошивки CPLD.

Программатор прямо вставляется в LPT порт компьютера. Минимальная длинна проводов, никаких кабелей длиньше 30см. Программа для прошивки называется iMPACT. Скачивается бесплатно с сайта Xilinx (ISE Design Suite 11 Standalone Programming Tools). Чтобы его скачать отдельно следуйте инструкции. Не забудьте зарегистрироваться на сайте. Это бесплатно и ни к чему не обязывает.

Плата драйва расчитана под ЛУТ, но так делать не советую. Я использовал текстолит с уже нанесенным фоторезистом. Содержимое .pdf файла распечатывается на пленку и засвечивается через DayLight люминисцентную лампу ~10мин. Результат просто отличный. Фотографии уже спаянной платы я вроде выкладывал выше.

В архиве прошивка на 5 микрошагов (5uStep.ipf). Просто подсоединяется в iMPACT и прошивается.

Если собираетесь покупать IRF540N то попробуйте их заменить на STP30NF20. Они подороже, но работать должны получше.

Если будут стоять IRF540 то напряжение на драйв больше 70V подавать не стоит. У IRF540 max 100V, выбросы напряжения при 70В питании будут около 100В, а может и больше. В этих случаях лучше использовать STP30NF20.

После проявления фоторезиста или нанесения тонера, процарапайте дорожки в цепях затворов выходных MOSFET. Это чтобы туда потом либо перемычку впаять либо 10 Ohm - 33 Ohm сопротивление.

Все вопросы задаем в этой ветке.

Архив с файлами берем тут.

vladumur

Добрый день.
К сожалению столкнулся со сложностью регистрации на ксилинке, почемуто не завершается эта регистрация, первый раз такое вижу…ну да это мои трудности.
скачал софт алтеры “макс”, даже мне далекому от этой темы удалось “запихать” и скомпилить код выложеный под алтеру, прошу выложить полный лог компиляции под алтеру, кто уверен на все 100% что у него все правильно, т.к я неуверен. По крайней мере пины и заполнение плис такиеже как у mura…
Просто создал новый проект указал на файл с кодом, никаких ног ничего вручную не заводил, скомпилилось и пишет ошибок 0.
возможно ли в схеме выложеной здесь, заменить ксилинк на алтеру? или для алтеры нужно другую схему?

boldive

Сегодня покрутил свой мотор на Geckodrive G203V. Никакого свиста и шума. Только легкое “шуршание”. Двигатель раскрутился в три раза быстрее чем у меня получилось на текущем драйве.

Будем трудится над печатной платой и бороться с помехами.

ATLab

Интересно. А можно снять осциллограммы с небольшого резистора, включенного последовательно с какой-нибудь обмоткой (осциллограмму тока в обмотке) на скорости 500-600 полных шагов в сек., потом на 1500-2000 и на максимально возможной скорости?

boldive
ATLab:

Интересно. А можно снять осциллограммы с небольшого резистора, включенного последовательно с какой-нибудь обмоткой (осциллограмму тока в обмотке) на скорости 500-600 полных шагов в сек., потом на 1500-2000 и на максимально возможной скорости?

no problem😁