Перейти к содержанию

Разработка Нч Генератора


svip

Рекомендуемые сообщения

Вот уж не знаю чего-там за визорд... Может где-то "потерялся" делитель тактовой для таймера?

Допустим у тебя кварц 8МГц. Это 0.125 мкс. Если испльзовать максимальный делитель 1024 (для таймера0 регистр TCCR0, биты CS00 CS01 CS02 =101), то получим тактовую для таймера 0.125*1024=128мкс. Тогда максимальный период срабатывания таймера 128*256=32768мкс, это 30.517578125 Гц.

Если после каждого срабатывания таймера писать в его счетчик 103, то ему останется тикнуть 256-103=153 раза по 128мкс=19584мкс, это как раз 51,062Гц

Согласен, что точно подгонять под любую нужную частоту не получится, хотя смотря какая точность тебе нужна.

Если ШИМа достаточно 8-разрядного, то берем освободившийся 16-разрядный таймер для генерации отсчетов, тут уже намного точнее получится.

В конце концов, можно завести дополнительную переменную, сколько надо-разрядную. Пусть таймер работает с макс. частотой и меняет эту переменную, а по ней уже выдавай отсчёты синуса.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов 50
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Жду Ваше мнение уважаемые специалисты.

Нафига тебе внешний ЦАП? :blink: В Mege16 есть встроенный ШИМ, и если мне не изменяет память, два из них аж 16-разрядные!! И вообще, зачем Mega16 ??? - просто под столом завалялась? В копеечном ATtiny2313 есть те же два 16-разрядных ШИМа (там есть еще два 8-разрядных). А 2к флеши хватит вполне для твоей задачки вместе с таблицей синуса. Тем более, что достаточно прописать только 1/4 периода.

На ШИМе с RC цепочкой (двойной) получится отвратительная синусоида. Лучше использовать внешний ЦАП.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Ну дык после внешнего ЦАПа - те же ступеньки будут. Смысл какой?

Ну если с внешним ЦАПом можно сюда посмотреть: http://www.telesys.ru/electronics/projects.php?do=p035 Правда там нижняя частота 1Гц, зато шаг 0.01Гц! Может как-нить малой кровью переделать программу получится для нужных частот.... и еще выкинуть всякие навороты.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Ну дык после внешнего ЦАПа - те же ступеньки будут. Смысл какой?

Ну если с внешним ЦАПом можно сюда посмотреть: http://www.telesys.ru/electronics/projects.php?do=p035 Правда там нижняя частота 1Гц, зато шаг 0.01Гц! Может как-нить малой кровью переделать программу получится для нужных частот.... и еще выкинуть всякие навороты.

Спасибо. схема полезная. особенно фильтр на ОУ. Вот плохо что ASM не знаю :( на си пишу. Но это не проблема буду разбираться

тут поступило предложения юзать шим и чтобы добится точность частоты делать задержку не использываю прерывания таймера.

Просто перебирать массив синусоиды и delay_ms(x);

Потому что точную частоту на таймере не получишь, а нужно особо точно ведь прибор для больницы делается.

Как Вам такое предложение?

Ссылка на комментарий
Поделиться на другие сайты

Ну, точность - понятие относительное...

А разрядность ШИМ = 8 устроит (т.е. +-127 по уровню)? Если да, то какие проблемы? Используй свободный в этом случае 16-разрядный таймер. Вот калькулятор, чтобы легче было считать цепляю...

AvrCalc.rar

У меня вот что получилось:

Кварц 8МГц, делитель тактовой таймера =8

F | F перезаписи рег. ШИМ (F*256)| в регистр сравнения таймера (HEX)| F реальная

0.2 | 51.2 | 4C4B | 0.2000

0.4 | 102.4 | 2625 | 0.40003

0.6 | 153.6 | 196E | 0.60004

0.8 | 204.8 | 1312 | 0.80013

В третьем столбце писал, что грузить в регистр сравнения. Так проще и код будет на пару команд меньше. В этом случае используем прерывания таймера1 не по переполнению, а по совпадению.

Ссылка на комментарий
Поделиться на другие сайты

svip !

Довольно странно, что вы не можете получить от МК точного значения частот. Возможно, вы используете встроенный RC-генератор. Для точного значения частоты его нужно "кварцевать".

Кроме ШИМ есть еще метод прямого цифрового синтеза (DDS). Но там нужен ЦАП и МК. Вместо МК можно применить и "жесткую логику". Существуют готовые микросхемы для DDS. Например AD9850. При частоте квантования 120 МГц может формировать частоты от 0.02793967723846435546875 Гц до 30 МГц с шагом 0.02793967723846435546875 Гц. При частоте квантования 40 МГц нижняя граница получается 0.00931322574615478515625 Гц. Перестройка идет с таким же шагом. Управляется от МК. Довольно дорогая вещь. Если по цене не проходит, то рекомендую разобраться в ее принципе работы и реализовать такое на МК+ЦАП. Частоты у вас низкие, так что такая разрядность как в AD9850 вам не понадобится.

Изменено пользователем Andrey Z
Ссылка на комментарий
Поделиться на другие сайты

svip !

Довольно странно, что вы не можете получить от МК точного значения частот. Возможно, вы используете встроенный RC-генератор. Для точного значения частоты его нужно "кварцевать".

"Кварцеванием" легко получаем стабильность частоты, а трудность (относительная) именно в точности.

При частоте квантования 40 МГц нижняя граница получается 0.00931322574615478515625 Гц. Перестройка идет с таким же шагом.

Ну и какая ближайшая к 0.2Гц получится при таком шаге? 0,19557... следующая 0,20489...

Ссылка на комментарий
Поделиться на другие сайты

При частоте квантования 40 МГц нижняя граница получается 0.00931322574615478515625 Гц. Перестройка идет с таким же шагом.
Ну и какая ближайшая к 0.2Гц получится при таком шаге? 0,19557... следующая 0,20489...

А при частоте квантования 1 МГц можно получить:

0.20000152289867401123046875 Гц

0.4000030457973480224609375 Гц

0.60000456869602203369140625 Гц

0.800006091594696044921875 Гц

Если нужно абсолютное совпадение, то требуется генератор с дробным значением частоты.

Есть еще вариант. Частоту 192 Гц делите счетчиком Джонсона. На выходе каждого разряда резисторный ЦАП. Подобный метод формирования сигналов применялся в BayCom-модеме, разработки Миши Хохлова (опубликована на BBS RK9CWW@SWR.RUS.EU (Не путать данную запись с e-mail-ом!!! Доступа из и-нета к ней нет). Если интересно, то могу попробовать с ним связаться. В вашем варианте это наименее выгодный способ, так как тянет большое количество микросхем.

Еще вариант. Генератор - счетчик - ПЗУ - ЦАП. В ПЗУ записаны значения синусов сигнала. Вместо пары генератор-счетчик-ПЗУ можно использовать МК.

Изменено пользователем Andrey Z
Ссылка на комментарий
Поделиться на другие сайты

Да я согласен, что вариантов много. Просто я предложил дешёвый, простой, доступный и достаточно качественный. К тому же автор вопроса не обозначил конкретно в цифрах требования к точности/стабильности/стоимости...

Ссылка на комментарий
Поделиться на другие сайты

Коллеги! Читаю и диву даюсь - две страницы обсуждений и советов по стандартному В ОБЩЕМ решению, а вопрос по параметрам сигнала решили выяснить лишь в конце. Аффтар, аууу! Намек на высокую точность может сейчас вырасти в совершенно небюджетное решение... Пока не будет исходных данных по параметрам, советовать что либо - бред сумашедшего...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

2 my504

Полный респект.

Тоже читаю и .....!

Уважаемые все на много проще, если использовать ШИМ.

Никто не пробывал делать это с дискретизацией 16кГц.

Посмотрите обычный звук в редакторе (куледит к примеру)

И вы поймете как построен звук.

Тоже конечно можно сделать и с применением ЦАП.

Просто это еще один корпус+лишний ток потребления+лишний обвес+увеличение ПП+пару$ затрат (зависит от места приобретения микрухи).

Решать Вам уважаемый автор.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

Ну общими фразами легко говорить. Я именно так и начал, если вы не обратили внимания. Но автор почему-то не понял, как с помощью ШИМ сделать синус. Я предложил простейший вариант, когда вся программа собственно будет состоять из инициализации и двух строчек внутри прерывания одного таймера.

Ссылка на комментарий
Поделиться на другие сайты

YurkaM

Какие общие фразы? Тема про инфранизкие частоты. Там по существу постоянный медленно меняющийся ток. И загадочная фраза про высокую точность. Осталось только узнать о подавлении всех видов помех децибел эдак на 100 ... 110 .... Какой, млин, ШИМ из пика?... Неизвестно на что вся эта бодяга нагружена...

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Народ, изучаем теорему Котельникова. Больше слов нет.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

И чего говорит теорема Котельникова применительно к нашему случаю?

Ну это намек на большой разнос спектров в ШИМе для данного случая. Легко вырезать ВЧ палки.

Правда как убрать постоянную составляющую от ШИМа без заметного дрейфа нуля?

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Путем высокой частоты дискетизации

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

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Блин. Извините, мо я сейчас не готов говорить о ТЛЭЦ и расматривать линейность заряда и разряда ёмкостей (мне это придеться делать но несеколько позже). Блин человек делал генератор на ШИМ - результат отличный. Я не знаю, что там кому мешает, если хотите делать на ЦАП - то флаг вам в руки. Это дело только того, кто делает данный девайс.

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

Уважаемые специалисты, извеняюсь за долгий ответ. Дело в том что этот генератор разрабатывается для больницы для стимуляции желудочного тракта. Я сам не врач и поэтому мало чего знаю в медицине, а просто разрабатываю для них прибор. Ездил в больницу на консультацию к специалисту в этой области. Немного изменилось само решение прибора:

Генератор должен выдавать последовательно четыре синусоиды с разной частотой (от 0,2 до 0.8 герца), амплитудой и длительностью.

Точные данные доктор привезет в понедельник - вторник. Сразу же отпишусь.

По поводу последовательного вывода разных частот и амплитуд думал использовать дополнительный таймер.

Нужная точность будет известна завтра - послезавтра.

Огромное спасибо за помощь Уважаемые специалисты

Ссылка на комментарий
Поделиться на другие сайты

Тогда применяй ЦАП. Я бы не хотел пользоваться прибором, у которого со временем сохли кондеры в фильтре.

ЦАП однозначно!!!

Пишу на Си CCS PICC для PIC, CVAVR для AVR, и иногда IAR для NEC. Особенно привык к SIM300dz.

ICQ: 288449055

Ссылка на комментарий
Поделиться на другие сайты

Уважаемые специалисты, извеняюсь за долгий ответ. Дело в том что этот генератор разрабатывается для больницы для стимуляции желудочного тракта. Я сам не врач и поэтому мало чего знаю в медицине, а просто разрабатываю для них прибор. Ездил в больницу на консультацию к специалисту в этой области. Немного изменилось само решение прибора:

Генератор должен выдавать последовательно четыре синусоиды с разной частотой (от 0,2 до 0.8 герца), амплитудой и длительностью.

Точные данные доктор привезет в понедельник - вторник. Сразу же отпишусь.

По поводу последовательного вывода разных частот и амплитуд думал использовать дополнительный таймер.

Нужная точность будет известна завтра - послезавтра.

Огромное спасибо за помощь Уважаемые специалисты

А вот это по-нашему, по-бразильски...

Сначала Исходные данные потом ТЗ...

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Встретился с доктором и определилось что частоты на порядок другие (вот после этого и доверяй нашим врачям)

В общем частоты

0,02 Гц

0,05 Гц

0,08 Гц

0,12 Гц.

и нужно воздетвовать одновременно 4 частотами, поэтому решил сделать 4 генератора на каждую частоту. на atmega 8 (цена подходит да и ног хватает).

Прошивку наклепал, но частоту работы делаю задержкой delay_ms();

частота камня - 1мгц

Вопрос - как сделать чтобы не указывать задержку через delay_ms(); а использовать прерывания таймера. Как его сконфигурировать, и как использовать

вот массив для синусоиды:

double data[]=				 
{
0.009746289,
0.801242539,
2.853675057,
6.146536616,
10.64692603,
16.3098769,
23.07880689,
30.8860831,
39.65369778,
49.29404785,
59.7108101,
70.7999037,
82.45053008,
94.54628004,
106.9662968,
119.5864838,
132.2807441,
144.922241,
157.3846648,
169.5434951,
181.2772448,
192.4686742,
203.0059623,
212.7838239,
221.7045619,
229.6790433,
236.6275896,
242.4807732,
247.1801111,
250.6786491,
252.9414309,

253.9458476,

252.9414309,
250.6786491,
247.1801111,
242.4807732,
236.6275896,
229.6790433,
221.7045619,
212.7838239,
203.0059623,
192.4686742,
181.2772448,
169.5434951,
157.3846648,
144.922241,
132.2807441,
119.5864838,
106.9662968,
94.54628004,
82.45053008,
70.7999037,
59.7108101,
49.29404785,
39.65369778,
30.8860831,
23.07880689,
16.3098769,
10.64692603,
6.146536616,
2.853675057,
0.801242539,
0.009746289
};

unsigned char len_data = sizeof(data) / sizeof(data[0]);

а вот сама отправка даных в порт

for (i=0;i<len_data;i++)
	{

	 temp=((data[i]-a_center)/koef)+a_center;
	 PORTD=temp;
	 //delay_us(479); // 10 Гц
	 delay_ms(320); // 0,05 Гц
	}

забыл пояснить

temp=((data-a_center)/koef)+a_center;

a_center - среднее значение массива

koef - коэффициент для изменения амплитуды

Ссылка на комментарий
Поделиться на другие сайты

Ужасно любопытно, а что из себя представляет выходное устройство?? Каким образом оно воздействует на человека (или кого там лечат :unsure: ) синусом такой часты? Это что-то гидравлическое/пневматическое или световое? Или непосредственно электроток через органы :wacko:

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...