реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ШИМ для сервомашинки на attiny13
evgenui
сообщение May 24 2013, 14:05
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963



Здравствуйте, при выполнении дипломной работы(макет комнаты) столкнулся с проблемой создания ШИМ для управления сервомашинкой. Имею в наличии МК attiny13. пробывал программировать сам не вышло. в связи с этим прошу помощи в програмировании.
Прикрепленное изображение

работать должно так при нажатии кнопки на серво должены постоянно поступать импульсы в 1 мс с интервалом в 20мс. при размыкании кнопки импульсы в 2 мс. с интервалом в 20мс.
писать нужно на си или ассемблере. заранее благодарю.


Сообщение отредактировал Herz - May 29 2013, 11:15
Причина редактирования: Самоцитирование
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 24 2013, 14:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(evgenui @ May 24 2013, 17:05) *
работать должно так при нажатии кнопки на серво должены постоянно поступать импульсы в 1 мс с интервалом в 20мс. при размыкании кнопки импульсы в 2 мс. с интервалом в 20мс.

Вот, проще не придумаете:
Код
while (1){
if (!PINB.0){ //Button pressed
  PORTB.1 = 1;
  delay_ms(1);
  PORTB.1 = 0;
  delay_ms(19);
             }
else{ //Button released
  PORTB.1 = 1;
  delay_ms(2);
  PORTB.1 = 0;
  delay_ms(18);
      }
          };

http://zalil.ru/34528816

Компилятор - CodeVision ...

P.S. Схема подключения кнопки у вас просто страшная ...
Go to the top of the page
 
+Quote Post
evgenui
сообщение May 24 2013, 15:55
Сообщение #3





Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963



Цитата(kovigor @ May 24 2013, 17:46) *
Вот, проще не придумаете:

http://zalil.ru/34528816

Компилятор - CodeVision ...

P.S. Схема подключения кнопки у вас просто страшная ...


спасибо, а инициализацию , настройку портов и подключение необходимых библитек не напишите, а то не по моей специальности вопрос((?

спасибо, это я писал сам(почти так но с помощью счетчика задержки ), у меня проблема в другом, как я понял, настройка портов и инициализация.
а подключение кнопки на самом деле не такое вместо кнопки я беру сигнал с контроллера фирмы johnsons control, ну и питание не кое конечно, это так для наглядности и симуляции.
если поможете в остальном буду очень признателен


спасибо, это я писал сам(почти так но с помощью счетчика задержки ), у меня проблема в другом, как я понял, настройка портов и инициализация.
а подключение кнопки на самом деле не такое вместо кнопки я беру сигнал с контроллера фирмы johnsons control, ну и питание не кое конечно, это так для наглядности и симуляции.
если поможете в остальном буду очень признателен


глюк какой то 1-м сообщением 1 раз отправил не в той последовательности)))

Сообщение отредактировал Herz - May 29 2013, 11:16
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 24 2013, 16:28
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(evgenui @ May 24 2013, 18:55) *
спасибо, это я писал сам(почти так но с помощью счетчика задержки ), у меня проблема в другом, как я понял, настройка портов и инициализация.

Так я ведь полный проект для CodeVision приложил, там и инициализация есть ...
Go to the top of the page
 
+Quote Post
badik
сообщение May 24 2013, 17:05
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 29-11-06
Из: Екатеринбург
Пользователь №: 22 890



ШИМ это много проще. Делаете в начале инициализацию к примеру Timer 1.

DDRD= 0xFF; // ПОРТ D как выход, выход Timer 1.
PORTD= 0x00;
ICR1= <20мс>;
Timer1_INIT(); // PWM

и сама прога

while (1){
if (!PINB.0) OCR1A = <1мс>;
//Button pressed
else OCR1A = <2мс>;
//Button released
}

<20мс>, ... это константы, зависят от тактовой частоты.
Можно инициализацию Timer взять готовую, интернет завален.
Так делать лучше, меньше грузить проц.
Go to the top of the page
 
+Quote Post
evgenui
сообщение May 24 2013, 17:18
Сообщение #6





Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963



спасибо большое!!! щас попробую
Go to the top of the page
 
+Quote Post
badik
сообщение May 24 2013, 17:29
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 29-11-06
Из: Екатеринбург
Пользователь №: 22 890



Прошу извинить про ШИМ.
ATtiny13 имеет только Timer 0. Сверх компактный.
Но по работе все так же.
ПРИ инициализации PORTD заменить на PORTB, выход Timer 0 - PB0.
В работе OCR1A на OC0A.
Go to the top of the page
 
+Quote Post
evgenui
сообщение May 29 2013, 10:06
Сообщение #8





Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963



доброго времени суток, помогите еще раз, задача все таже, но серва быстрая слишком, не может кто-нибудь изменить исходный код(который мне собственно написал kovigor,спасибо ему)так, чтобы при нажатии и отжатии кнопки импульсы изменялись плавно(за 3-5 сек).
http://zalil.ru/34528816
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 29 2013, 10:37
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(evgenui @ May 29 2013, 13:06) *
не может кто-нибудь изменить исходный код(который мне собственно написал kovigor,спасибо ему)

Сейчас попробую ...

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

Я не понимаю задачи. Допустим, кнопка была нажата и на машинку шли импульсы длительностью в 1 мС. Затем кнопку отпустили, но длительность импульса (при той же частоте следования импульсов) должна возрасти до 2-х мС не скачком, а плавно. Так ?
Go to the top of the page
 
+Quote Post
evgenui
сообщение May 29 2013, 11:09
Сообщение #10





Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963



условно говоря так чтобы сигнал изменялся и процесс изменения чтобы занял 3 сек или 5
http://www.fayloobmennik.net/2893724
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 29 2013, 11:14
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(evgenui @ May 29 2013, 14:09) *
условно говоря так чтобы сигнал изменялся и процесс изменения чтобы занял 3 сек или 5

Понял, сейчас подумаю ...
Как остановить машинку ? Как запустить ее в ход ? Или остановка не предусмотрена (включили прибор, и она сразу вертится, причем скорость верчения зависит от того, нажата или не нажата кнопка, и меняется только по нажатию/отпусканию) ? Поверьте, я не экстрасенс ...
Go to the top of the page
 
+Quote Post
evgenui
сообщение May 29 2013, 11:46
Сообщение #12





Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963



запускать не нужно, нужно выполнение вышеперечисленых условий:
1) работает сразу, включать не нужно
2) кнопка нажата- импульсы 2 мс, не нажата 1 мс.
3) при нажатии на кнопку, или ее отжатии импульс от 1 до 2-х мс (и в обратном порядке) изменялся постепенно( удлинялся или сокращался, в зависимости от того нажата кнопка или нет) в течении 3-5с. примерно как на моем рисунке
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 29 2013, 11:48
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(evgenui @ May 29 2013, 14:46) *
запускать не нужно ...

Понял ...
Go to the top of the page
 
+Quote Post
evgenui
сообщение May 29 2013, 11:50
Сообщение #14





Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963



т.е требуется замедлить процесс поворота сервы. а для этого необходимо плавное нарастание длинны импульса, или его плавное сокращение
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 29 2013, 12:44
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(evgenui @ May 29 2013, 14:50) *
т.е требуется замедлить процесс поворота сервы. а для этого необходимо плавное нарастание длинны импульса, или его плавное сокращение

Пробуйте:
http://zalil.ru/34540707

Не забудьте сообщить о результате, мне интересно ...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 21:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01705 секунд с 7
ELECTRONIX ©2004-2016