Второй девайс (теория + практика)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

st4lk3r0k писал(а):чёто у меня с ШИМом не получается :( Пробую на лампочке, она просто моргает... может ктонить дать простейший код (на Си, работаю в AvrStudio) для атмеги8? там ШИМ (судя по даташиту) тока на таёмере2 есть а он навороченный какой то я даже не знаю где искать проблему :(

ну или если не код то хотяб объясните мне тупому что там и как....
Она и будет моргать, если частота низкая. Шим есть и на 1 и на 2 таймере, лучше пользовать таймер2 - т.к. 8битный.
Инициализируется таймер в режиме ШИМ, на нужную частоту (предделитель), указывается в OCR2 значение, и собссно он запускается. Коэф заполнения = 256/(1-OCR2) если не ошибаюсь.
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

А сможешь скинуть строку определения таймера как fast PWM ? у меня там почему то СТС выставляется...

я уже кучу настроек перепробовал :( не хочет лампочка быстро моргать и всё тут... правда на данный момент использую 16битный таймер (таймер1)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

outi TCCR2, 0b01111010 ;timer2 - fast PWM, set 1 on MATCH and 0 on TOP, prescaler = 8
outi TCNT2,0 ;timer = 0
outi OCR2,0x80 ;PWM = 50%
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

уже гораздо быстрее, но не достаточно, можно ещё как то ускорить моргание?
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

Тут делитель = 8, если память не подводит - младшие биты (3) регистра. Поставьте 000.
А вообще - в даташите это все прекрасно описано.
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

Так, походу мы друг друга недопоняли :)

у меня от ноги PB3 проводок идёт к резистору 330 Ом, а от него к лампочке... если младшие биты поставить на 010 и в OCR2 запихнуть 255
то лампочка горит прекрасно, а вот если поставить в OCR2 скажем 200, то лампочка начинает моргать.... в способе описанном тут
http://extremeelectronics.co.in/avr-tut ... s-part-ii/

есть видео там лампочка плавно загорается и тухнет :( как мне сделать также?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

Она и будет моргать ;) Только с частотой ШИМ (тактовая частота/(256*делитель)).
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

Ну тогда всё нормуль :) при нажатии на кнопочки частота морганий лампочки меняется... А как дальше? надо как то БП регулировать... но это же не лампочка... не поможете? :)
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

Частота морганий меняться не должна, должно меняться время в течение которого лампочка светится.
Управлять - почитайте о импульсных преобразователях напряжения. И без обратной связи с выхода (через АЦП) здесь - никак.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

Частота морганий меняться не должна, должно меняться время в течение которого лампочка светится.
А это не одно и тоже?

...лана пойду читать :)
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

Мде... однако сложно искать когда не знаешь что ищешь...

Поясните пожалуйста что собственно надо сделать чтобы мой девайс заработал... Тока если кто решится пояснить то с учётом того что электроникой я начал серьёзно заниматься... в четверг. Боюсь что без нормального объяснения не справлюсь :(
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

st4lk3r0k писал(а):А это не одно и тоже?
Нет. Таймер считает от 0 до 255, при этом лампочка загорается при TCNT2=OCR2, и тухнет при обнулении таймера. Или - наоборот, загорается при 0 и тухнет при TCNT2=OCR2
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

Так, вот это было отличное пояснение :) теперь хоть понял как ШИМ работает. Спасибо!

А вот с преобразователем всё ещё не ясно. Можно какойнить пример что ли? Ну или хотяб где о них почитать можно? в гугле у меня найти ничего не получилось.
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

Код: Выделить всё

#define F_CPU 8000000

#include <avr>
#include <util>


void intializePWM(){
	TCCR2 = 0b01111010;
	TCNT2 = 100;
	DDRB |= (1<<PB3);
}

void setOutput(uint8_t num){
	OCR2 = num;
}

int main(void)
{
	uint8_t brightness=0;

	intializePWM();

	while(1){
		for(brightness=0;brightness<255>0;brightness--){	setOutput(brightness); _delay_loop_2(3200);	}
      for(brightness=255;brightness>0;brightness--){	setOutput(brightness); _delay_loop_2(3200);	}
	}
	return 1;
}
Плиз попробуйте ктонить симулировать сей код в протеусе, что то он меня смущает ( атмега8 )
Последний раз редактировалось st4lk3r0k Вс май 24, 2009 15:53:30, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

st4lk3r0k писал(а): Можно какойнить пример что ли?
http://www.toroid.ru/ivanov-ciganov2.html
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

Жаль пиво по майлу отослать не получится! Огромное спасибо. А как с кодом? там всё ок?
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

Смущает условие brightness<255>0. Почему бы просто не сделать одну проверку - <255 ?
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

Привычка :)

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


З.Ы.
А нет более быстрого способа разобраться с БП, чем вы предложили? :)
просто я логику не совсем понимаю, пойму логику - смогу доделать девайс :)
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

Более быстрый способ - внешний ЦАП либо ЦАП из аппноута с использованием АЦП. Который формирует постоянное напряжение, и этим напряжением уже управляется импульсный либо линейный стабилизатор. Такая система надежнее, но сложнее.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Ср июн 25, 2008 17:38:37

Сообщение st4lk3r0k »

А какую систему использовали бы вы?

Есть в сети какие нибудь примеры подобных систем?

Если подумать то мне просто нужно собрать кокой то "блок" который будет принимать ШИМ и в зависимости от частоты ШИМ увеличивать/уменьшать сопротивление на БП, я правильно понял?

Снова повторюсь я в электронике не совсем не силён и как собрать "преобразователь" понятия не имею...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»