Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 04.07.2013, 13:11  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

я имею ввиду "точно" применимо к часам Для часов должно сойти? Чтоб за сутки электронные часы и стрелка не расходились на пару часов ))
Реклама:
miwutka вне форума  
Непрочитано 04.07.2013, 13:17  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

пока набросал вот такой код:
PHP код:
switch (step
      { 
         
         case 
0:                                           
                 
A=0;   B=0;   OCR1A=255;    OCR1B=0;       
                 break;
         case 
1:
                 
A=1;   B=0;   OCR1A=255;    OCR1B=0;     
                 break;
         case 
2:
                 
A=0;   B=1;   OCR1A=255;    OCR1B=0;     
                 break;
         case 
3:
                 
A=1;   B=1;   OCR1A=255;    OCR1B=0;        
                 break;
         case 
4:                                           
                 
A=0;   B=0;   OCR1A=0;    OCR1B=255;       
                 break;
         case 
5:                                           
                 
A=1;   B=0;   OCR1A=0;    OCR1B=255;       
                 break;
         case 
6:
                 
A=0;   B=1;   OCR1A=0;    OCR1B=255;     
                 break;
         case 
7:
                 
A=1;   B=1;   OCR1A=0;    OCR1B=255;     
                 break;
         
      
      }; 
поворачивается когда step равно 2,4,6,0.
Подскажите я вроде чтото пропустил? Это получился полношаг, а надо сделать полушаг, чтобы потом ШИМ проверять?


Убрал лишние строки где нет поворотов:
PHP код:
switch (step
      { 
         
         case 
0:                                           
                 
A=0;   B=0;   OCR1A=255;    OCR1B=0;       //25%
                 
break;
         
         case 
1:
                 
A=0;   B=1;   OCR1A=255;    OCR1B=0;     //75%
                 
break;
         
         case 
2:                                           
                 
A=0;   B=0;   OCR1A=0;    OCR1B=255;       //25%
                 
break;
         
         case 
3:
                 
A=0;   B=1;   OCR1A=0;    OCR1B=255;     //50%
                 
break;
        
         
      
      }; 

Последний раз редактировалось miwutka; 04.07.2013 в 13:29.
miwutka вне форума  
Непрочитано 04.07.2013, 14:06  
vspvsp
Вид на жительство
 
Аватар для vspvsp
 
Регистрация: 30.10.2007
Адрес: Ростов-на-Дону
Сообщений: 285
Сказал спасибо: 23
Сказали Спасибо 39 раз(а) в 33 сообщении(ях)
vspvsp на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

Что это за "ужасы нашего городка"?!

Забейте в таблицу значения для адреса и состояния регистра ШИМ и записывайте выбирая из массива по индексу. Соответственно настроив таймер на нужный интервал времени (1с, 0,1с - 60 и 600 значений).

Создаёте 3 массива (адрес, ШИМ А и ШИМ В), записываете туда нужные значения и перебираете индекс, выводя в регистры.

Эти массивы можно сгенерировать автоматически или для начала набить ручками!

const unsigned char addr[60]={0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3...};

const unsigned char pwma[60]={255, 128, 64, 0, ...

const unsigned char pwmb[60]={255, 255, 255, 255, ...

Инициализируем индекс: char ind=0;

Обработчик прерывания с нужной частотой:

int_n()
{
выбираем значения и записываем в регистры

порт куда прикручены адреса 4052 дешифратора = addr[ind];
(тут биты двигать и маски ставить по вкусу)

регистр(ы) ШИМ А = pwma[ind]

регистр(ы) ШИМ B = pwmb[ind]

инкремент указателя и контроль результата

if(ind‹конца_индекса_массива)ind++;else ind=0;

}


сейчас нас выгонят в раздел "радио начинающим"

Последний раз редактировалось vspvsp; 04.07.2013 в 14:10.
vspvsp вне форума  
Непрочитано 04.07.2013, 14:40  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

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

const unsigned char addr[60]={0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3...};

const unsigned char pwma[60]={255, 128, 64, 0, ...

const unsigned char pwmb[60]={255, 255, 255, 255, ...

не могу продлить массивы ШИМов. Покажите плиз как надо написать Пишу свою таблицу, а мотор двигаеться как ему угодно и куда угодно......
miwutka вне форума  
Непрочитано 04.07.2013, 14:50  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

пошел перекушу а то уже совсем туплю )). Кстати
, 255 это 100% или 0% ?? По моей программе это 100%

PHP код:
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x0B;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00
miwutka вне форума  
Непрочитано 04.07.2013, 16:19  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

вообщем понял почему так туго идет процесс у меня .У мотора 6 проводов:
- 2 красных
- 2 желтых
- 2 белых

Белые это средние провода обмоток. Красный-желтый - одна обмотка, красный-желтый - другая обмотка.
На ULN2003 к выходам(1,2,3,4) подключал так - красный, желтый, красный, желтый.
Теперь подключил так - красный, красный, желтый, желтый и получилось сделать полушаговый режим.... Сейчас попробую сделать полушаг, а потом ШИМ буду пробовать, а то изначально была ошибочка у меня в подключении.
miwutka вне форума  
Непрочитано 04.07.2013, 16:30  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

Получилось сделать полушаг. Вот что вышло:
PHP код:
switch (step
      { 
         
         case 
0:                                           
                 
A=0;   B=0;   OCR1A=255;    OCR1B=0;       //25%
                 
break;
         case 
1:                                           
                 
A=0;   B=0;   OCR1A=255;    OCR1B=255;       //25%
                 
break;
         case 
2:
                 
A=0;   B=1;   OCR1A=255;    OCR1B=0;     //75%
                 
break;
         case 
3:
                 
A=0;   B=1;   OCR1A=255;    OCR1B=255;     //75%
                 
break;
         
         case 
4:                                           
                 
A=1;   B=0;   OCR1A=255;    OCR1B=0;       //25%
                 
break;
         
         case 
5:
                 
A=1;   B=0;   OCR1A=255;    OCR1B=255;     //50%
                 
break;
         case 
6:
                 
A=1;   B=1;   OCR1A=255;    OCR1B=0;     //50%
                 
break;
         case 
7:
                 
A=1;   B=1;   OCR1A=255;    OCR1B=255;     //50%
                 
break;
         
                 
      }; 
Ток не ругайте за такой "колхоз" в тексте )). Как отлажу сделаю всё красиво
Теперь буду пробовать ШИМ.
miwutka вне форума  
Непрочитано 04.07.2013, 17:16  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

Получилось сделать микрошаг Сделал его ооочень маленьким - 0,8,16,24,32,40... 255 воть таким спасибо всем и особенно vspvsp,которому хватило терпения со мной возиться позже сделаю видео, может завтра. Сейчас надо найти даташит на "моторчик" ДШ35 0,015 7,5 0,66А РИТМ 10 Ом
я так понимаю в названии 7,5 это градус на который делает один полный шаг? А что такое 0,015? 0,66 А это на одну обмотку или на две? Может кто знает...
miwutka вне форума  
Непрочитано 04.07.2013, 19:51  
vspvsp
Вид на жительство
 
Аватар для vspvsp
 
Регистрация: 30.10.2007
Адрес: Ростов-на-Дону
Сообщений: 285
Сказал спасибо: 23
Сказали Спасибо 39 раз(а) в 33 сообщении(ях)
vspvsp на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

1. Ну вы даёте! Обмотки первым делом нужно было определить!

2. Что принять за 100% 0 или 255 вы сами задаёте битами в регистрах ШИМ и схемой, которая к нему подключена! В вашем случае, думаю, 255=100% (нужно учитывать инверсию выхода ШИМ и каков ключ на обмотки).

3. Массивы ШИМ нужно для пущей гладкости считать по формуле, что дал makakus: U=sin(ωt)+k*sin(3*ωt) соответственно сдвинув фазу следующей обмотки на 90 град. иначе микрошаг будет неравномерен, в середине интервала шаги будут больше. Пример кривой можно глянуть в даташите на A3967 что уже приводили.

Далее я чисто догадываюсь и вообще могу сильно ошибаться, проверяйте математику сами:

4. Чтобы точно заполнить массивы нужно 48 шагов вашего двигателя (если там 7,5 шаг) разделить на 60 (не факт, что получится, двигатель может проскакивать шаги в некоторых местах, так как соотношение 5 частей на 4 шага) или 600, если через 0,1с. частей. Рисуйте на бумажке 4 графика токов обмоток по формуле с синусами на 360 град (это не полный оборот, это 60 град. у вала двигателя, но нет смысла продолжать, так как оно повторяется). Так же туда же пишите 8 смен адреса (проверьте, что 8 ) и на всё это накладывайте 10 (или 100) отрезков, который пройдёт ваша секундная стрелка и всмотрите, какие значения адресного счётчика и уровней ШИМ получаются для этих 10 или 100 точек. Пробуйте вывести формулу, у меня фантазия закончилась!

Последний раз редактировалось vspvsp; 04.07.2013 в 19:54.
vspvsp вне форума  
Непрочитано 04.07.2013, 21:06  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Шаговый мотор (микрошаг) + атмега

vspvsp, спасибо за советы Я обмотки еще за долго определил, вот ток не знал как их подключать )) К атмеге у меня подключен ЖК и я на нем сразу смотрю значения шима и считаю шаги, на глаз. Только хотел спросить формулу для расчета. Завтра буду расчитывать всё. Сделал микрошаг такой: 0,8,16,24,32,40 ... 255 - прошел мотор каждый микрошаг вперед и назад без пропусков. Теперь дело осталось за малым, вроде. Я в экселе начал делать таблицу. Думаю туда забить формулу и так высчитать. Я вообще потом хочу не таблицу забивать, а формулу по которой МК сам будет понимать какой ШИМ давать(если это не ухудшит точность, надо же чтобы целые значения получались). Но всё постепенно. Я ж не такой спец как все тут
miwutka вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Атмега 32а, не известно под какую частоту прошита. sae74 Микроконтроллеры, АЦП, память и т.д 1 10.04.2010 19:33
Шаговый двигатель (РХХ) Bruse82 Производственное оборудование 2 07.05.2008 20:54


Часовой пояс GMT +4, время: 17:51.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot