|
ШИМ для сервомашинки на attiny13 |
|
|
|
May 24 2013, 14:05
|
Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963

|
Здравствуйте, при выполнении дипломной работы(макет комнаты) столкнулся с проблемой создания ШИМ для управления сервомашинкой. Имею в наличии МК attiny13. пробывал программировать сам не вышло. в связи с этим прошу помощи в програмировании.
работать должно так при нажатии кнопки на серво должены постоянно поступать импульсы в 1 мс с интервалом в 20мс. при размыкании кнопки импульсы в 2 мс. с интервалом в 20мс. писать нужно на си или ассемблере. заранее благодарю.
Сообщение отредактировал Herz - May 29 2013, 11:15
Причина редактирования: Самоцитирование
|
|
|
|
|
May 24 2013, 14:46
|
Гуру
     
Группа: Свой
Сообщений: 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. Схема подключения кнопки у вас просто страшная ...
|
|
|
|
|
May 24 2013, 15:55
|
Группа: Участник
Сообщений: 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
Причина редактирования: Избыточное цитирование
|
|
|
|
|
May 24 2013, 17:05
|
Участник

Группа: Участник
Сообщений: 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 взять готовую, интернет завален. Так делать лучше, меньше грузить проц.
|
|
|
|
|
May 24 2013, 17:18
|
Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963

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

|
доброго времени суток, помогите еще раз, задача все таже, но серва быстрая слишком, не может кто-нибудь изменить исходный код(который мне собственно написал kovigor,спасибо ему)так, чтобы при нажатии и отжатии кнопки импульсы изменялись плавно(за 3-5 сек). http://zalil.ru/34528816
|
|
|
|
|
May 29 2013, 11:09
|
Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963

|
условно говоря так чтобы сигнал изменялся и процесс изменения чтобы занял 3 сек или 5 http://www.fayloobmennik.net/2893724
|
|
|
|
|
May 29 2013, 11:46
|
Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963

|
запускать не нужно, нужно выполнение вышеперечисленых условий: 1) работает сразу, включать не нужно 2) кнопка нажата- импульсы 2 мс, не нажата 1 мс. 3) при нажатии на кнопку, или ее отжатии импульс от 1 до 2-х мс (и в обратном порядке) изменялся постепенно( удлинялся или сокращался, в зависимости от того нажата кнопка или нет) в течении 3-5с. примерно как на моем рисунке
|
|
|
|
|
May 29 2013, 11:50
|
Группа: Участник
Сообщений: 10
Регистрация: 24-05-13
Пользователь №: 76 963

|
т.е требуется замедлить процесс поворота сервы. а для этого необходимо плавное нарастание длинны импульса, или его плавное сокращение
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|