Клуб DiyAudio

Разное и полезное => Микроконтроллеры и их программирование => Тема начата: Althair от 08 Ноября 2015, 15:42:46

Название: Четыре независимых генератора частот на разных ногах AVR
Отправлено: Althair от 08 Ноября 2015, 15:42:46
Имеем atmega328 на 16 мгц.
Надо: на четырех трех портах независимо генерить меандр с произвольной частотой 1..16000 гц, считая при этом кол-во импульсов и параллельно умудряясь гонять данные через UART.
Может у кого-нибудь есть идеи, или наработки?
Предупреждая вопросы: ворочу контроллер управления осями фрезера. Готовое не предлагать, это крайний случай.
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: ToxiN от 08 Ноября 2015, 15:59:26
Предлагаю более извращенский вариант: три отдельных контроллера на чем-нить попроще и один общий, который усе обрабатывает и с компом по телефону болтает.

и добавил...
А еще ИгорьПалыч, глянь здесь, может, идея полезна будет
easyelectronics.ru/upravlenie-mnozhestvom-servomashinok.html
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: Althair от 08 Ноября 2015, 16:04:44
Тоже вариант, но увязать их воедино будет весьма непросто. Ибо ровный круг провести по двум осям - это нужно раздавать пинки этим "отдельным", и получится немногим проще. А драйвера двиглов имеют управление step-dir, что малость ограничивает пространство для манёвра

и добавил...
Сервомашины не требуют частот. Частота сигнала фиксированная, обычно 50 Гц, а сама рулёжка выполняется длительностью импульса. Посему - не то
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: ToxiN от 08 Ноября 2015, 16:10:35
Я не про сервы, а про общий смысл формирования хрен-знает-чего на всех копытах разом.

и добавил...
Это тебе в Тушино надо. С товарищем Шендриком из Вымпела пообщаться :) у него 4 вентильных дрыгателя с одной ПЛИСины рулятся с отслеживанием ускорений и положения.

и добавил...
В смысле положения руля (или закрылка, не знаю, как они правильно зовутся)
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: Althair от 08 Ноября 2015, 16:45:23
ПЛИС
На этом тему Вымпела можно закрывать, ибо
Имеем atmega328 на 16 мгц.


и добавил...
хрен-знает-чего на всех копытах разом.
В том-то и мякотка, что на всех копытах, но произвольно.
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: xar от 08 Ноября 2015, 18:44:21
Althair, предложу что то более современное использовать вместо аврки...
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: boroda от 09 Ноября 2015, 12:30:57
АВР-ка тут уже не покатит, надо что-то более ответственное, реалтайм надо блюсти.
А то бабка снесёт инструмент.
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: Althair от 09 Ноября 2015, 14:06:30
Я уже примерно накидал принцип... Прерывание, на нем аналог системного таймера. Вспомню школу, как на Z80 каждый такт учитывал  :cr:

и добавил...
Есть ещё вариант стырить алгоритм из GRBL, но это не по-джедайски  :laugh:

и добавил...
Там у них вообще частота пинков двигателей до 30 кгц
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: xar от 09 Ноября 2015, 14:16:12
Althair, а почему именно произвольно?

и добавил...
честно говоря не совсем понял задачу. если step-dir то для каждого фронта step надо еще и dir выставить, так что грубо говоря 8 каналов  ???
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: Althair от 09 Ноября 2015, 18:26:33
Dir выставляется по факту, ему не надо раздавать пинки на каждый шаг. А вот step нужно дергать постоянно, причём разом на всех двиглах, и желательно одновременно.
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: lgedmitry от 09 Ноября 2015, 18:33:40
Althair, Гоша, а MSP430F5529 не рассматривал, как вариант? Она и в виде готовой платки а-ля ардуина встречается ;-[
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: xar от 09 Ноября 2015, 20:27:40
Dir выставляется по факту, ему не надо раздавать пинки на каждый шаг. А вот step нужно дергать постоянно, причём разом на всех двиглах, и желательно одновременно.
то есть все таки одновременно или независимо? В этом вся муля. Путаешь синхронное с асинхронным. А так - заводим таймер на нужную частоту равную максимальной скорости подачи. Настраиваем прерывание на сравнение и переполнение. Сравненте вымтавляем в половину переполнения. По прерыванию сравнения выставляем все нужные ноги. По сбросу сбрасываем ноги. Я бы еще одно сравнение добавил для выставления направления чуть раньше шага.
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: Althair от 09 Ноября 2015, 21:28:35
Не. Движки могут шагать с разной частотой. Скажем, на 100 шагов по Х, придётся 30 шагов по Y. Рулятся движки раздельно. Если бы движение было всегда прямолинейным - было бы проще, но траектория может быть любой. Отсюда и грабли.
Естественно, ИМПУЛЬСЫ на степ идут синхронно, но с разной частотой. Я уже почти решил проблему - каждый элемент в буфере кусается на вектора и понеслась. Типа на А шагов по Х приходится В шагов по Y, соответственно и счетчики инициализируются соответствующими аргументами.
Название: Re: Четыре независимых генератора частот на разных ногах AVR
Отправлено: xar от 10 Ноября 2015, 06:25:09
Не. Движки могут шагать с разной частотой. Скажем, на 100 шагов по Х, придётся 30 шагов по Y. Рулятся движки раздельно. Если бы движение было всегда прямолинейным - было бы проще, но траектория может быть любой. Отсюда и грабли.
Естественно, ИМПУЛЬСЫ на степ идут синхронно, но с разной частотой. Я уже почти решил проблему - каждый элемент в буфере кусается на вектора и понеслась. Типа на А шагов по Х приходится В шагов по Y, соответственно и счетчики инициализируются соответствующими аргументами.
дак я и говорю. в прерывании сравнения выставляешь только те ноги, которые нужны. точнее ноги тех каналов, которые должны сделать шаг. как именно вычислять - другой вопрос. я бы взял за базовую частоту скорость по вектору перемещения, а реальные скорости - проекции на оси x, y, z. получим синхронно и без лишних затрат.