драйвер на AVR, кто то делал (делает)

petro_fm

Кто нить имеет прошивки драйвера на АВР ???
или исходники посмотреть ???
справится ли одна ATMEGA8 с управлением по 3 осям ???
я вот так вот зделал:

stepsMicro[0] = BIN8(1000);
stepsMicro[1] = BIN8(1100);
stepsMicro[2] = BIN8(0100);
stepsMicro[3] = BIN8(0110);
stepsMicro[4] = BIN8(0010);
stepsMicro[5] = BIN8(0011);
stepsMicro[6] = BIN8(0001);
stepsMicro[7] = BIN8(1001);

while (1) {
//step motor1
if (PINC.0==0) {
if (PINC.1==1){step1++;};
if (PINC.1==0){step1–;};
if (step1==8) {step1=0;};
if (step1==-1){step1=7;};
}
//step motor2
if (PINC.2==0) {
if (PINC.3==1){step2++;};
if (PINC.3==0){step2–;};
if (step2==8) {step2=0;};
if (step2==-1){step2=7;};

PORTD = (stepsMicro[step1]*16+stepsMicro[step2]) ;

  • в Протеусе крутится-вертится
    спаял на макетке+L298 - тоже крутится,но

если управлять с ЛПТ или по кнопкам, то нужно
шаг делать по прерыванию ?
то есть есть сигнал на ножке - прерывание - шаг, ждем дальше сигнала
то есть чтобы кнопку нажал - один шаг, отпустил-нажал - второй, а не нажал - и ШД зделал несколько шагов соответственно периоду когда нажата кнопка.

STEPMOTOR
vadik:

Вот здесь есть схема на AVR complink.narod.ru/text/moye/shd/shd.htm

Если вы хотите нормальный и надежный драйвер то лучше купить готовый промышленного типа. Если вы хотите насладится поиском багов в работе электронной части своего супер станка то можно сделать самому.

Алксандр
petro_fm:

а не нажал - и ШД зделал несколько шагов соответственно периоду когда нажата кнопка.

введите в цикле програмы понятие предыдущего состояния кнопки, и выполняйте действия только если предыдуще состояние было “не нажато”

prev_state=0 // не нажато
while (1)
{

If (key_press) // проверка нажата ли кнопка,
{
if (prev_state==0) // и если она была перед этим не нажата
выполнить требуемые действия
prev_state = 1 //запомнить, что была нажата
}
else
prev_state=0 //кнопку отпустили

}

petro_fm

STEPMOTOR, - быстро,качественно,недорого - выберите две опции 😃)) а хочца три 😦 а такого не бывает
2 vadik - прога типа как у меня , только на асме
Алксандр - с кнопочками разобрались, а как быть с портом ЛТП ???

нужно чтобы управляющая прога, подавала через ЛТП сигнал на ногу контроллера, а контроллер ей - “вас понял,кручу мотор” - сигнал на ногу ЛТП - “ГОТОВ,давай следующий команду”, есть такое в ККам, МакХ … ???

mura
petro_fm:

if (step2==8) {step2=0;};

Эта конструкция долго выполняется, надо так step2 &= 7; если три канала - надо за каждую микросекунду бороться.

petro_fm

Спасибо, поменял !
а по ЛПТ кто чего подскажет, как это организовать !?

Алксандр
petro_fm:

Спасибо, поменял !
а по ЛПТ кто чего подскажет, как это организовать !?

Ну а с портом какие трудности? чтобы по импульсу на порту лпт тоже 1 шаг делался? разве для проца сигнал от кнопки и сигнал от порта лпт не одно и тоже? все аналогично
проверяем требуемый логический уровень, если появился - выполняем действия, запоминаем что выполнили, и дожидаемся пока сигнал не пропадет

petro_fm

та вот у меня вопрос как ДОЛГО сохраняется “требуемый логический уровень” на ножке ЛТП ???
микроконтроллер успеет его обработать ??? не пропустить ??

STEPMOTOR
petro_fm:

та вот у меня вопрос как ДОЛГО сохраняется “требуемый логический уровень” на ножке ЛТП ???
микроконтроллер успеет его обработать ??? не пропустить ??

для этого на вход лучше поставить реверсивный счетчик ! он будет в роли буфера полученных сигналов

Sony
petro_fm:

Кто нить имеет прошивки драйвера на АВР ???
или исходники посмотреть ???

Есть два апноута по управлению ШД с исходниками от Atmel - посмотрите внизу www.avr123.nm.ru/07.htm

petro_fm

нашёл такой avr360.zip
там по прерыванию шаг, на моей Atmeg8 их 2 😦
может есть какая хитрость использования прерываний ???

mura
petro_fm:

нашёл такой avr360.zip
там по прерыванию шаг, на моей Atmeg8 их 2 😦
может есть какая хитрость использования прерываний ???

возми мегу48 или 88 - там можно прерывание с любого пина получить.

Аэробус

А кто нить “взрослую” схемку и прогу для AVR или другого проца, пусть на одну ось, встречал в сети?

STEPMOTOR
Аэробус:

А кто нить “взрослую” схемку и прогу для AVR или другого проца, пусть на одну ось, встречал в сети?

самое приличное что я встречал для шаговика это был драйвер lini stepper.

ATLab
mura:

возми мегу48 или 88 - там можно прерывание с любого пина получить.

IMHO, затея с драйвером на 3 оси хотя и имеет право на существование, порочна, лучше на каждую ось поставить по драйверу со своим микроконтроллером.
Резоны таковы:

  1. Цена микроконтроллера составляет далеко не самую значительную часть в стоимости комплектующих драйвера - цена 2-3 мощных полевых транзисторов
  2. Существенно (чем больше осей тем заметнее) увеличивается время реакции контроллера на сигнал STEP:
  • пусть время реакции на сигнал STEP составляет 10 мкс?
  • предположим, что пришли сигналы STEP на 3 оси сразу,
  • тогда третья ось обработается только через 30 мкс.
    Это существенно ограничивает сверху диапазон скоростей, и приводит к джиттеру (дрожжанию) фазы сигналов управления ШД - из-за неопределенности времени реации на сигнал STEP.
    В этом случае интервал времени между соседними сигналами STEP должен быть существенно больше максимального времени реакции (как в примере, существенно больше 30 мкс).
    А тогда становится проблематичным формирование микрошага на приемлемой скорости.
    Если же микрошаг не нужен, тогда зачем микроконтроллер?

P.S. Здесь уже рассматривалась попытка сделать драйвер на несколько осей на PIC микроконтроллере (его даже продавали) - я не помню, был ли кто, отозвавшийся хорошо.
AVR в этом смысле ничем не лучше, разве чуть дешевле.

Аэробус:

А кто нить взрослую схемку и прогу для AVR или другого проца, пусть на одну ось, встречал в сети?

“Взрослая” схема делается просто:

  • делается (или берется готовая, например на L6203) силовая часть драйвера с требуемым напряжением/током и типом (биполярная/униполярная)
  • добавляется микроконтроллер с формированием сигналов микрошага (SIN/COS и управление).
    И все, фокусник достал кролика из цилиндра!
celladon

Выложил свою схему на AVR в соседнюю тему “Станки с чпу и двигатель шд5”

Baha
celladon:

Выложил свою схему на AVR в соседнюю тему “Станки с чпу и двигатель шд5”

Сам разрабатывал, или опять бездумная, неумелая копия. И почему на письма не отвечаешь, прячемся, на звонки не отвечаешь, Алексей звонил несколько раз.

Baha
celladon:

А по существу вопросы есть? Личные вопросы на celladon@mail.ru

А раньше что не по существу тебе писали, отмалчивался.

Если диалог возможен, то вечером отпишу на мыло.

ATLab
celladon:

Выложил свою схему на AVR в соседнюю тему “Станки с чпу и двигатель шд5”

Критика в той же ветке.

petro_fm

как разобратся с проводами выходящими из ШД ???
раз подключил крутился - счас провода попутал, дьоргается туда сюда, не крутится 😦

STEPMOTOR
petro_fm:

как разобратся с проводами выходящими из ШД ???
раз подключил крутился - счас провода попутал, дьоргается туда сюда, не крутится 😦

тестером “потыкайте”

tscheglow

at90pwm2, at90pwm3 - смотрел ? по моему это специализированные микросхемы из серии Motor Control

maxvovk
tscheglow:

at90pwm2, at90pwm3 - смотрел ? по моему это специализированные микросхемы из серии Motor Control

Выглядит очень красиво. Но сначала стоит почитать про них и про их использование отзывы - и все станет понятно.
На самом деле жаль - камни задумывались классные, но Атмел на этот раз до безобразия обмишурился… 😦

Если кто все-таки рискнет - то только PWM3 с буковкой (ревизия) В. И внимательно (априоре) читать ЕРРАТы 😃.