самодельный станок с ЧПУ, отзывы duxe.ru

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » самодельный станок с ЧПУ, отзывы duxe.ru » Схема контроллера, шаговые двигатели » Оцените контроллер на AVR mega32/mega16


Оцените контроллер на AVR mega32/mega16

Сообщений 31 страница 60 из 72

31

входными данными будут скорее всего абсолютные  координаты

в такой станок благоразумнее будет вставлять относительные координаты , к тому же что мешает для последующего быстродействия станка микроконтроллеру перед выполнением программы рассчитать её и перевести в step/direction и записать в свою память ? к тому же никто не ограничивает в колличестве микроконтроллеров .  вместо той же меги16 поставить несколько к примеру tiny2313 и пусть каждая выполняет свою работу .

Если предложите вариант более простого контроля тока обмоток( без АЦП) - буду весьма благодарен.

а зачем ? раньше с успехом использовалось временное форсирование токов в обмотках . стоят 2 источника питания  , 1 с номинальным для двигателя напряжением , другой - с повышенным . сначала коммутируется повышенное напряжение на какое-то рассчётное время , а затем отключается и действует номинальное . причём если один источник питания , то номинальное можно подавать сразу же с форсировочным .  тут остаётся только правильно рассчитать время форсирования . 
причём я так думаю что это не составит труда сделать экспериментальным путём с помощью того же микроконтроллера - рассчитываем примерное время , а затем экспериментально на МК подгоняем его к наилучшему варианту .

0

32

LINKS_234 написал(а):

в такой станок благоразумнее будет вставлять относительные координаты

Я об этом и говорю.

LINKS_234 написал(а):

что мешает для последующего быстродействия станка микроконтроллеру перед выполнением программы рассчитать её и перевести в step/direction и записать в свою память ?

Да вроде ничего не мешает, если не считать количество шагов и направлений, 
ДАже при однослойной прорисовке это будет большое число. При обычной подаче 200 шагов на мм,
растровая отработка стандартного листа А4 с шагом между строками 0,1 мм потребует
fХ+fY= Ширина*высота*шаг сетки*подача+ высота*подача= 210*270*10*200+270*200=113454000 шагов. Причем столько же бит займут данные направления(если не извращаться). ТО есть в общей сложности это потребует 28 363 500 байт памяти. Напомню, что АТМЕГА адресует только 65535 байт(если не извращаться). НУ а как быть со скоростью? Она ведь "передается" в паузах между шагами.

LINKS_234 написал(а):

а зачем

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

0

33

Нашел время дальше ковырять свой контроллер, в меге16 случайно сделал незапрограмированным бит SPIEN (кто знает как вернуть обратно его малой кровю?) , а транзисторы грелись и ничего не работало изза неправильной прошивки фюзов, т.е сам контроллер не работал.

Была у меня еще мега8, так вот, прицепил туда ирл640,на макетке - работает !
С регулированием мощности,как в прошивке в первом посте, греются транзисторы, за 10 мин работи - нагрев ощутимый, двигатель не греется при значении pwr_motor0=5 , ну и крутящий момент - на глаз (точнее на пальци) менше много,чем просто запитать двигатель от БП (25Вольт).
При отключенном регулировании мощности - греется двигатель, но транзисторы холодные.
Как бы такое придумать, какой то драйвер для транзисторов, чтобы они не грелись ???

ПС: по поводу джойстика, ЛСД монитора - считаю, что этим должен заниматся уже другой контроллер, который будет основному выдавать все те же степ/дир, и все считать, красиво на мониторе все писать или рисовать.
Очень хороший такой контроллер получится с старенького ноутбука :-) , тут тебе и клавиатура, и мишь/джойстик, и ЛСД монитор сразу, по размерам небольшой,не дорогой, програмное обеспечение - "все уже придумано за нас".

Отредактировано petro_fm (2008-07-04 09:57:50)

0

34

petro_fm написал(а):

Нашел время дальше ковырять свой контроллер, в меге16 случайно сделал незапрограмированным бит SPIEN

Странно. Специально проверил имеющиеся микрухи(МЕГА-8,16,32) , у меня он установлен с завода и вообще  недоступенн для программирования. Читал последней версией Pony-Prog.

0

35

Трудоголик написал(а):

и вообще  недоступенн для программирования.

Это в ПОНИ.А другие проггеры шьют его за милую душу!И тогда без внешнего генератора,или паралельного программатора не обойтись.Полезь на Радиокот,там братва об энти грабли шишек насмалила немеряно.

0

36

По фьюзам:

увеличить

0

37

Я использую fuse-kalkulator, который, выяснив, чего я хочу получить от AVR, сам выдает готовое решение.
Кому надо - адреса в личку.

0

38

У кого есть время, силовая часть драйвера, мега 16/32 прошу затестить такую вот прошивку
Исходник  CodeVisionAVR

Код:
#include <mega16.h>
#include <delay.h>

// Declare your global variables here
unsigned char step;
unsigned char tok[32]={0,13,25,37,50,62,74,86,98,109,120,131,142,152,162,171,180,189,197,205,212,219,225,231,236,240,244,247,250,252,254,255};
unsigned char minstep;

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{ 
        

}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T 
PORTB=0x00;
DDRB=0x08;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
// State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0xB0;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=FFh
// OC0 output: Non-Inverted PWM
TCCR0=0x61;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x01;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Fast PWM top=FFh
// OC2 output: Non-Inverted PWM
ASSR=0x00;
TCCR2=0x61;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x03;
MCUCSR=0x00;
GIFR=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
            
OCR0=0x00;
OCR1AL=0x00;
OCR1BL=0x00;
OCR2=0x00;

step=0; 
minstep=0;
// Global enable interrupts
      
#asm("sei")

while (1)
      {  
      
        minstep++;
        if (minstep==32) {
                step++;
                step&=3;
                minstep=0;
        };        
        if (step==0){
                OCR0=tok[31-minstep];
                OCR1AL=tok[minstep];
                OCR2=0;
                OCR1BL=0;
        } else if (step==1) {
                OCR1AL=tok[31-minstep];                
                OCR1BL=tok[minstep];
                OCR2=0;
                OCR0=0;
        } else if (step==2) {        
                OCR1BL=tok[31-minstep];                
                OCR2=tok[minstep];                       
                OCR0=0;
                OCR1AL=0;
                
        } else if (step==3) {        
                OCR2=tok[31-minstep];        
                OCR0=tok[minstep];        
                OCR1AL=0;
                OCR1BL=0;

        }

       delay_ms(1);    
    
}
};

Обмотки подключать к пинам : 4,18,19,21 (по порядку)
Это драйвер с микрошагом - 1/32
двигатель должен медленно вращатся.

PS: контроллер на меге8 работает,но окончательно не протестирован, кому интересно выложу прошивку/схему/разводку

0

39

petro_fm написал(а):

PS: контроллер на меге8 работает,но окончательно не протестирован, кому интересно выложу прошивку/схему/разводку

Интерессно, как-раз есть мега8 и желание научиться программировать :-)

0

40

Исходник прошивки CodeVisionAVR

Код:
#include <mega8.h>
#include <delay.h>

#define dir0  PINC.6
#define dir1  PIND.4

unsigned char stepsMicro[8],steplimit;
unsigned char step0,step1;

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (dir0==1){step0++;} else {step0--;};
        step0 &=steplimit;
        PORTC = stepsMicro[step0]<<1;
        
}
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{ 
if (dir1==1){step1++;} else {step1--;};
        step1 &=steplimit;
        PORTB =stepsMicro[step1]<<1;
        
}

// Declare your global variables here
void main(void)
{

PORTB=0x00;
DDRB=0xFF;

PORTC=0x00;
DDRC=0xFF;

PORTD=0x00;
DDRD=0xFF;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: On
// INT1 Mode: Rising Edge
GICR|=0xC0;
MCUCR=0x0F;
GIFR=0xC0;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

stepsMicro[0] = 0x08;
stepsMicro[1] = 0x04;
stepsMicro[2] = 0x02;
stepsMicro[3] = 0x01;
steplimit=3;

if (PINB.6==1) {   //полный шаг

        stepsMicro[0] = 0x08;
        stepsMicro[1] = 0x04;
        stepsMicro[2] = 0x02;
        stepsMicro[3] = 0x01;
        steplimit=3;
} else if(PINB.5==1){ //полушаг
        stepsMicro[0] = 0x08;
        stepsMicro[1] = 0x0C;;
        stepsMicro[2] = 0x04;
        stepsMicro[3] = 0x06;
        stepsMicro[4] = 0x02;
        stepsMicro[5] = 0x03;
        stepsMicro[6] = 0x01;
        stepsMicro[7] = 0x09;
        steplimit=7;
} else if (PIND.5==1) { //полный шаг,включено по 2 обмотки
        stepsMicro[0] = 0x0C;
        stepsMicro[1] = 0x06;
        stepsMicro[2] = 0x03;
        stepsMicro[3] = 0x09;
        steplimit=3;
}


step0=0;
step1=0;
         
PORTC = stepsMicro[step0]<<1;
PORTB =stepsMicro[step1]<<1;
 
// Global enable interrupts
#asm("sei")
while (1)
      {
     
      };
}

Разводка Sprint Layout
Сразу оговорюсь, что по разводке не делал, у меня на макетке все напаяно, еще раз все проверте перед тем как делать
Три пина портов которые выведены через брюхо меги можно убрать, это у меня на будущее.
Джамперы на пинах 9,10,11 выбирают режим работы
Транзисторы - irl640 при таком использованиие не греются.

Отредактировано petro_fm (2008-07-09 10:06:14)

0

41

petro_fm написал(а):

У кого есть время, силовая часть драйвера, мега 16/32 прошу затестить такую вот прошивку
Исходник  CodeVisionAVR

Можно попробовать.
Только два момента. У меня в плату контроллера RoboCom-32 на ATmega32  впаян кварц на 16 МГц, а не 8, как в программе. И у меня нет Кодевизион.

Можно попросить сделать НЕХ файл с 16 МГц версией?

0

42

Ironfelix написал(а):

Можно попросить сделать НЕХ файл с 16 МГц версией?

Попробуй под мегу32
адрес http://slil.ru/25973799
PS: функция delay в программе не используется,значит подойдет и под 16 МГц:)

0

43

petro_fm написал(а):

Обмотки подключать к пинам : 4,18,19,21 (по порядку)
Это драйвер с микрошагом - 1/32
двигатель должен медленно вращатся.

На четвёртом, восемнадцатом, девятнадцатом и двадцать первом выводах МК никаких сигналов не наблюдается.

Arti написал(а):

PS: функция delay в программе не используется,значит подойдет и под 16 МГц:)

А каким образом генерируются временные интервалы?

0

44

Ironfelix , тебе Arti не тот исходник скомпилировал, вот - этот - микрошаг http://depositfiles.com/files/6537908
Попробуй пжалуста с этой прошивкой !

Отредактировано petro_fm (2008-07-12 16:12:05)

-1

45

я скомпилировал тот где написано "Исходник прошивки CodeVisionAVR":)
извените:)

0

46

petro_fm написал(а):

Ironfelix , тебе Arti не тот исходник скомпилировал, вот - этот - микрошаг http://depositfiles.com/files/6537908
Попробуй пжалуста с этой прошивкой !

Я трижды пытался скачать файл этот  объёмом 1.36 килобайта.  Открылось три окна с предложениями сыграть в казино. И снова открывалась страница с издевательским секундомером. Угадать, какие генерировались коды из четырёх перекрученных букв и цифр, не удалось ни разу.  Загруженный при этом объём трафика в сотни раз превысил размер этого несчастного файла, но сам файл так и остался где-то там.
Трафик у меня платный.
Таким образом, у меня украли деньги.
Трижды.

Если Вы хотите, чтобы я "попробовал данную прошивку", найдите нормальный способ переслать её.

Никакие предложения посетить файлопомойки рассматриваться впредь не будут.

Пользоваться этакими дерьмосайтами для пересылки файлов - значит не уважать тех, кому файл предлагаете.

0

47

Вот,попробуйте отсюда  http://slil.ru/25974967

0

48

petro_fm написал(а):

Вот,попробуйте отсюда  http://slil.ru/25974967

Результат идентичен предыдущему.
На указанных выводах пусто.

0

49

Так вот подключал ??? и пусто  o.O
[url=http://img174.imageshack.us/my.php?image=111cc3.jpg]http://img174.imageshack.us/img174/3622/111cc3.th.jpg[/url

увеличить

0

50

petro_fm написал(а):

Так вот подключал ???

Я ничего не подключал.
Я взял цифровой пробник с 8 уровнями индикации и посмотрел состояние 4, 18, 19 и 21 выводов на системном разъёме контроллера. Пробник не заметил на портах вообще ничего. Просто отключённые порты. Пробник не самодельный. Частоту показывает отдельным индикатором, а 8 светодиодами показывает динамику, можно даже определить скважинность импульсов и их примерную амплитуду.

Использован контроллера RoboCom32 с кварцем на 16 МГц.

Ещё раз задаю вопрос: перед компиляцией программы частота кварца исправлена на 16 МГц или так и оставлена 8 МГц?

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

Отредактировано Ironfelix (2008-07-13 12:11:41)

0

51

Ironfelix посмотри в личку:)

0

52

Arti написал(а):

Ironfelix посмотри в личку:)

Ещё вчера.

Любая функция отсчёта времени, не имеющая отдельного опорного генератора,  использует частоту генератора МК. Поэтому при смене частоты МК (или кварца в схеме контроллера на МК) обязательное условие работоспособности программы - исправление частоты в конфигурации исходника и перекомпиляция прошивки.

Вот контроллер RoboCom32 имеет дополнительный опорный генератор на часовом кварце и это можно использовать в написании программ с отсчётом времени, не зависящим от частоты кварца самого МК.

0

53

Не дождавшись реакции, компильнул исходник для микрошага в GCC  - и без проблем услышал в динамике контроллера похрюкивание, а на всех нужных портах пробником увидел подёргивание сигналов. Заметно, что скважинность плавает.
ШИМ, однако.

Теперь нужно будет подключить этот контроллер к силовым ключам и посмотреть, как будет реагировать ШД на это похрюкивание...

На неделе постараюсь.

0

54

:O  чего же не работал откомпилений, интересно, ну да ладно, заработало - хорошо  !
Если подключиш туда ключи, тогда может быть нужно будет исправить время в последней строчке программы delay_ms(1) .
Буду с нетерпением ждать результат с ключами !
так как у меня двигатели 7,5 град/шаг - "дерганые" какие то :-)
если все заработает, закажу себе мег16,сделаю микрошаговый контроллер 1/32  :glasses:  будет плавно !

И все таки может кто подскажет чего же греются мои irl640 при частом открывании/закрывании их между МК и гейтом ставил 100 Ом, а также между гейтом и землей 100 Ом - также греются,
или может кто подскажет хорошую силовую часть, чтобы не грелась ???

0

55

petro_fm написал(а):

И все таки может кто подскажет чего же греются мои irl640 при частом открывании/закрывании их между МК и гейтом ставил 100 Ом, а также между гейтом и землей 100 Ом - также греются,

Так еще в 14-м сообщении темы тебе написали:

HORROR написал(а):

Обрати внимание на сопротивление канала в открытом состоянии, у него
1,80Ом*1А=1,8Вт
выделяется....многовато а например IRFZ34N:
0,04Ом*1А=0,04Вт....

в 45 раз меньше.,

0

56

Да не 1,8 Ом,у него Rds(on) = 0,18 Ом так что при моих 3,5А*0,18 = 0,63Вт
если бы дело было в сопротивлении в открытом канале, тогда они грелись бы  просто открытие, а они греются именно тогда,когда их быстро открывать/закрывать.

0

57

petro_fm написал(а):

если бы дело было в сопротивлении в открытом канале, тогда они грелись бы  просто открытие, а они греются именно тогда,когда их быстро открывать/закрывать.

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

0

58

petro_fm написал(а):

:O  чего же не работал откомпилений, интересно

Вероятно, кое-кто проигнорировал неоднократные попытки обратить внимание на частоту кварца. Функция delay_ms работает в ОЧЕНЬ узком диапазоне значений.  И уж никак не обязана работать при ДВУКРАТНОМ превышении тактовой частоты относительно расчётной при компиляции.

Я всего лишь прописал свою частоту и исправил мелкие несовпадения синтаксиса этих версий Си.
И больше ничего.
Как только компиляция прошла без ошибок, прошил МК и он захрюкал.

Кстати о птичках (ключах).

У меня в плате ключей, используемых в экспериментах,  стоят на каждом коллекторе КТ829А последовательно диод и резистор 39 ом 7 ватт. А не как в рекомендованном варианте - куча диодов и один резистор.

Вот думаю, это сильно влияет на работу ШД или нет?
Напряжение 12 вольт, ШД на 24 вольта.

Отредактировано Ironfelix (2008-07-14 22:13:10)

0

59

Ironfelix написал(а):

КТ928А

Тут нет ошибки?

Ironfelix написал(а):

Вот думаю, это сильно влияет на работу ШД или нет?

По моему абсолютно не принципиально,если они стоят точно так как описано.
Судя по мощности,такие стоило бы ставить последовательно с обмотками....

0

60

Dj_smart написал(а):

Тут нет ошибки?

Уже нет! :)

Dj_smart написал(а):

Судя по мощности,такие стоило бы ставить последовательно с обмотками....

Они включены параллельно обмоткам, диоды - встречн о по напряжению.

На некоторых экземплярах плат стоят оригиналы (по советской терминологии - аналоги) транзисторов КТ829А. Маркировка на них BD649.
Оригиналы лучше или нет?

Отредактировано Ironfelix (2008-07-15 21:44:11)

0


Вы здесь » самодельный станок с ЧПУ, отзывы duxe.ru » Схема контроллера, шаговые двигатели » Оцените контроллер на AVR mega32/mega16