roboforum.ru

Технический форум по робототехнике.
Текущее время: 21 май 2025, 05:23

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Atmega16 ШИМ, Вопрос
СообщениеДобавлено: 03 фев 2012, 15:54 
Не в сети

Зарегистрирован: 12 янв 2010, 10:56
Сообщения: 4
Откуда: SPb
Разбираюсь с работой аппаратного ШИМ на atmege16, взял один из примеров, рассмотренных в интернете, код на сях такой:

Код:
#include <avr/io.h>
//Програма инициализации ШИМ
void init_pwm (void)
{
  TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ
  TCCR1B=(1<<CS10);       //Делитель= /1
  OCR1A=0x00;         //Начальное значение
}

//Основная програма
int main(void)
{
unsigned char i;

DDRD=0x32;            //Инициализация PD5 (OC1A) как выход
init_pwm();
OCR1A=0x40;

while (1)
  {

  }

return 1;
}


Компилирую всё это дело в AVRStudio, схему тоже взял из примера:
Изображение

В примере объяснений мало и ничего не понятно. Пытаюсь менять по-разному значение OCR1A, но закономерность интуитивно не могу понять.
Может кто-нибудь внятно объяснить что означает каждая строчка в подпрограмме инициализации (init_pwm), какие параметры ФНЧ(R и C) и значение OCR1A мне нужно брать , допустим, если я хочу получить на выходе PD5 сначала 1В а потом 3В (т.е. прошу два примера для ясности)?

Спасибо заранее!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Atmega16 ШИМ, Вопрос
СообщениеДобавлено: 03 фев 2012, 16:42 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
Питание сколько?
А вообще закономерность простая - выходное = питание * OCR1A / 256 , поскольку ШИМ у тебя восьмибитный. ФНЧ влияет только на пульсации и быстродействие. Постоянная времени фильтра T=R*C, частота среза F=1/T. При изменении ШИМ резко с 0% на 100% выход поменяется с 0 до примерно 60-70% за время Т. Частота среза должна быть меньше частоты ШИМ в несколько раз.

Значение 1 и 2 строчек в инициализации смотри в даташите, стр 110: 16-bit Timer/Counter1 - 16-bit Timer/Counter Register Description. Там задается все - и частота, и разрешение, и какие выходы задействовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Atmega16 ШИМ, Вопрос
СообщениеДобавлено: 03 фев 2012, 16:57 
Не в сети

Зарегистрирован: 12 янв 2010, 10:56
Сообщения: 4
Откуда: SPb
Да, совсем забыл, питаемся от 5В


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Atmega16 ШИМ, Вопрос
СообщениеДобавлено: 03 фев 2012, 17:45 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
а для чего кондер аж на 10000мкФ ?

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Atmega16 ШИМ, Вопрос
СообщениеДобавлено: 03 фев 2012, 18:53 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
ойеее, щас токо заметил - у RC фильтра R=0 :) Незаработает, а в реале можно спалить порт или светодиод. Обязательно нужен резистор не менее 200-300 ом. Последовательно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Atmega16 ШИМ, Вопрос
СообщениеДобавлено: 08 фев 2012, 21:44 
Не в сети

Зарегистрирован: 12 янв 2010, 10:56
Сообщения: 4
Откуда: SPb
Мда, получилось как в анекдоте: "сопротивление бесполезно" =)))
Окей, схему поменял на вот такую:

Изображение

Теперь в программе берём значение OCR1A=0x40.
Как сказал boez
Цитата:
выходное = питание * OCR1A / 256

0x40 переводим в десятичную систему - это будет 68.
Теперь сделаем расчёт по вышеупомянутой формуле: 5 * 68 / 256 = 1.32
А на деле в протеусе получается 1.24:
Изображение

Пробовал разные значения ставить, ни разу не совпало =(
К примеру: ставил OCR1A=0x99. По рассчётам должно получиться 2.98, а на деле - 2.18

Где ещё может быть ошибка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Atmega16 ШИМ, Вопрос
СообщениеДобавлено: 09 фев 2012, 00:07 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
светодиод как стабилитрон.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Atmega16 ШИМ, Вопрос
СообщениеДобавлено: 09 фев 2012, 12:56 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
http://ru.wikipedia.org/wiki/%D0%A4%D0% ... 0%BE%D1%82

Напряжение будет строго по формуле, если выкинуть светодиод и резистор перенести на место (в последней схеме все равно R=0 и нога нагружена напрямую на конденсатор, это плохо). А светодиод является нелинейной нагрузкой, и напряжение, а тем более яркость (она определяется током) будут меняться нелинейно и сильно зависеть от цвета светодиода. Правильно делать так: с ноги резистор последовательно, потом конденсатор на землю, дальше опять последовательно резистор, того же сопротивления, и светодиод. Светодиод будет светиться так, как если бы он был подключен через эти же 2 резистора к источнику постоянного напряжения, вычисленного по формуле что я давал.

Ну а сам светодиод можно в первом приближении считать стабилитроном на (ИК - 1.2, красный - 1.7, зеленый - 1.9, синий/белый - 3) вольта, яркость пропорциональна току. Т.е. ниже указанных напряжений СД не светится вообще, выше - считаем ток на резисторах по закону Ома и узнаем яркость. Как-то так.

А, да, а еще мелкое замечание - для плавной регулировки яркости СД это исходно неправильный подход :) Выкинуть вообще конденсатор и оставить просто светодиод и резистор, расчитанный на максимальную яркость светодиода. Выдал шим 50% - СД 50% времени светится на полную, 50% потушен. Глаз видит 50% яркости.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO