Цифровой синтез частоты на МК atmega16
Многие робототехники используют в своих роботах ИК бамперы на TSOP’ах, как известно, TSOP’ы воспринимают только ИК излучение, промодулированное сигналом некой частоты (частота зависит от TSOP’a). Например для популярного среди робототехников TSOP1736 частота сигнала равна 36 кГц. Генератор на 36 кГц как правило делается на логических элементах, но в небольших роботах место ограничено, поэтому предлагаю синтезировать сигнал с частотой 36 кГц при помощи микроконтроллера atmega16 (если у вас BEAM робот, то эта статья для вас не актуальна :)). У каждого таймера этого микроконтроллера есть режим CTC, который создан как раз для цифрового синтеза частоты.
Формулы для расчета частоты есть в даташите, их совсем не сложно найти.
Рассмотрим пример настройки таймера 2 для синтеза сигнала частотой 36 кГц. Частота зависит от значения в регистре OCR2 и рассчитывается по формуле:
f = fclk/ (2 * N * (1 + OCRn)) , где N – делитель тактовой частоты, fclk – тактовая частота МК
Нам нужно получить частоту 36 кГц, тактовая частота МК 8 МГц, N=1, выражаем из формулы OCRn :
OCRn = ( fclk / ( 2 * N * f ) ) – 1 = (8000000 / (2 * 1 * 36000)) – 1 = 110,111111…
Результат округляем до целых, получаем 110.
Код программы:
/*
Code Vision AVR C Compiler
MCU: ATMEGA16
CLOCK: 8 MHz
*/
#include<mega16.h>
void main (void)
{
DDRD.7=1; //конфигурируем PD7 на выход, на этой ноге появится сигнал частотой 36 Кгц
//Настройка таймера 2, N=1, таймер работает на частоте 8 МГц
ASSR=0x00;
TCCR2=0x19;
TCNT2=0x00;
OCR2=110;
while(1);
}
Максимально возможная частота 5 МГц, таким способом можно легко и просто сгенерить сигнал для любого TSOP’a.
Здравствуйте, я только изучаю шим, но не могли бы вы сказать, это аппаратный или программный шим?
С уважением Robomir
[Ответить]
Евгений Reply:
Октябрь 19th, 2010 at 5:14 пп
Привет, робомир, к ШИМу CTC отношения не имеет.
Это один из режимов таймера, который создан специально для аппаратного синтеза сигнала прямоугольной формы, точнее меандра.
[Ответить]
Спасибо, именно это я и хотел узнать
Сайту и автору большущий респект!
[Ответить]
Добрый день. Прошу вас помочь в реализации пректа фотобарер на Tiny45, со схемотехникой проблем нет, но с программированием не очень, к большому сожалению, подскжите как это можно реализовать. Большое спсибо.
[Ответить]
Евгений Reply:
Май 27th, 2012 at 5:49 пп
Фотобарьер? По подробнее расскажите.
[Ответить]
Добрый день Евгений. Это мне для дома в кладовку. При входе на двери стоит ф-барер, (к сожалнию после ремонта нехочется долбить стены). Лампа люминисцентная (я делал на фотодиоде есть ложные срабатывания) тоисть зашол включилось на 2мин, а потом автоматом выключилось.
Спасибо.
PS Подскажите литературу по Атмел.
[Ответить]
Евгений Reply:
Май 30th, 2012 at 11:50 дп
Стоит поставить инфракрасный датчик движения и не городить ничего
Литература: http://easyelectronics.ru/
[Ответить]
Спсиба
[Ответить]
Об этом датчике я тоже знаю, хотелось с чегото начать изучать МК, а не слепо копировать.
В любом случае спасибо что откликнулись.
Удачи
[Ответить]