|
Троичный ЦАП, Ternary DAC R-3R-9R-27R... |
|
|
|
May 4 2010, 05:06
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Генератор синуса 4bit без ступенек на базе интегратора, Atmega32, 1Мгц RC, TDA2030, резисторы в пропорции R-3R-9R-27R. Выход около 300Гц, амплитуда около 0,8Вольт. Превращение инвертирующей схемы в интегратор: резистор обратной связи ОУ заменен кондером 4,7мкФ, с выхода ОУ на минус 0,47мкФ. Синус неправильный, при формировании длительностей не учтены длительности чтения+выполнения самих команд. Помеха на дне отрицательной полуволны искусственная, закодирована. Мой интерес: проггер я никудышный, прошу помощи в написании кодов для этой схемы. В моей проге тупая запись в DDR и PORT. Последние две фотки без кондера 4bit 81step ternary DAC (остальные весовые резисторы отключены)
Сообщение отредактировал Karim - May 4 2010, 05:22
Эскизы прикрепленных изображений
|
|
|
|
|
May 4 2010, 08:41
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Так Вы Hi-Z состояние не получите и вернетесь к двоичке.
|
|
|
|
|
May 4 2010, 10:15
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(Karim @ May 4 2010, 16:41)  Так Вы Hi-Z состояние не получите и вернетесь к двоичке. Использовать дискретные весовые резисторы и именно по схеме R-3R-9R-27R - это обязательное условие? Почему бы не использовать ШИМ для генерации синуса? из схемы останется только интегратор или просто RC цепочка.
|
|
|
|
|
May 4 2010, 12:08
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Честно говоря, точными номиналами не обойтись, придется подстраивать из-за неидентичности сопротивлений открытых ключей. Примерные пропорции сопротивлений обязательное условие, работаем в троичной системе счисления. ШИМ тоже хорошая, но не моя тема. Хотелось попробовать Hi-Z состояние.
|
|
|
|
|
May 6 2010, 18:00
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Одно важное замечание по сообщению #1. Простите, оплошал, поставил в обратку интегратора электролит. После замены на нормальный помехи в синусе должны уменьшиться, жалко, макетку раскидал, как соберу, перефоткаю.
Сообщение отредактировал Karim - May 6 2010, 18:01
|
|
|
|
|
May 7 2010, 01:21
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180

|
Цитата(Karim @ May 7 2010, 03:00)  Одно важное замечание по сообщению #1. Простите, оплошал, поставил в обратку интегратора электролит. После замены на нормальный помехи в синусе должны уменьшиться, жалко, макетку раскидал, как соберу, перефоткаю. Огрехов кроме 82!=81 не вижу, но это мелочь... хотя не совсем, разница равна весу младшего разряда. проверить без фильтрации высоких гармоник, может и тут эти искажения возникать. проверить все резисторы, какая у них точность? счет должен быть до 3^5=243 следит чтоб при бите DDR = 0 в PORT не записать 1 а то внутреннаяя подтяжка в AVR все исказит. в фрагменте данных вроде все правильно. данные в DDR и PORT по таймеру, в прерывании? ну и с электролитами разобраться.
Сообщение отредактировал e-serg - May 7 2010, 01:33
|
|
|
|
|
May 7 2010, 06:17
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Без фильтации ОООчень страШШШШно. Настройка не то, что в R-2R матрице (впаял и забыл), повозиться придется (если нет возможности на kazus.ru ЦАП, DAC посмотреть скажите и я сюда выложу). У меня подстроечник в опорном, и на каждом разряде в макетке. Практически скорее придется после настройки подстроечниками набирать последовательный (параллельный) эквивалент из постоянных резисторов. 5 разрядный в подробностях я свом осциллом не вижу, хотя есть ступеньки которые не смог выровнять. Есть так же в планах несколько направлений дальнейших действий (попробовать использовать пины через один, посмотреть влияние периферии, при разных напругах питания, попробовать симметричную подтяжку из двух одинаковых резисторов в плюс и минус).
Сообщение отредактировал Karim - May 7 2010, 06:28
|
|
|
|
|
May 7 2010, 06:33
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Согласен, мест тонких много. 82 не огрех, и 9,1 тоже, это кажется несбыточная мечта. В моей проге таймер программный.
Сообщение отредактировал Karim - May 7 2010, 06:48
|
|
|
|
|
May 7 2010, 13:12
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Цитата(Karim @ May 7 2010, 09:33)  82 не огрех, и 9,1 тоже. Младший разряд там где сопротивление выше. Старший разряд там где 1кОм. Поэтому 82кОм это +1,2% пятого младшего разряда, а 9,1кОм это +1,1% для третьего разряда, но для пятиразрядного это уже 9* 1,1=9,9%. Не забываем, токи весовых резисторов суммируются в точке с нулевым входным сопротивлением (инвертирующая схема ОУ)
Сообщение отредактировал Karim - May 7 2010, 13:32
|
|
|
|
|
May 19 2010, 17:35
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Уважаемые форумчане, сложно разве?
|
|
|
|
|
May 20 2010, 04:38
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(Karim @ May 20 2010, 02:35)  Уважаемые форумчане, сложно разве? Хотелось попробовать R-3R ЦАП ? - да, попробовали. Интересно ? - да, интересно, но с практической точки зрения: - 8-бит (256 значений) ШИМ не хуже 5-бит троичного ЦАП (243 значения) - нет весовых резисторов и нет необходимости их подбирать - схема проще - программа проще - ресурсов МК расходуется меньше, т.к. ШИМ формируется таймером аппаратно - легко можно поднять качество сигнала, перейдя на 10- или 16-бит ШИМ, т.к. выходная частота низкая - 300Гц.
|
|
|
|
|
May 20 2010, 16:33
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
- 16-бит ШИМ ЦАП хуже 1-бит интегрирующего троичного ЦАП на 1 резисторе и 1 кондере т.к. в первом всегда за увеличением напряжения следует уменьшение, от того и пульсации, во втором после любого изменения можно хранить напряжение Zом
Сообщение отредактировал Karim - May 20 2010, 16:51
Эскизы прикрепленных изображений
|
|
|
|
|
May 21 2010, 02:30
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Что ж Вы утаиваете не выгодные для обычного ШИМ результаты анализа? Во сколь раз палка от Тактовой деленной на два в степени 16 у 16-бит ШИМ ЦАП выше аналогичной 1-бит интегрирующего троичного ЦАП? Так не честно, а если я частоту ZШИМ в 2 раза подниму? Кстати давайте на равных, Вы чем пользуетесь?
Сообщение отредактировал Karim - May 21 2010, 02:32
|
|
|
|
|
May 21 2010, 03:41
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ae_ @ May 20 2010, 07:38)  - ресурсов МК расходуется меньше А частота на которой работает контроллер, это ресурс или нет? это я в тому, что Цитата ... 16-бит ШИМ, т.к. выходная частота низкая - 300Гц. Даже на 300Hz у PWM (и соответственно в случае AVR) и ядра под 20MHz. Причем 300Hz это частота дискретизации. Сколько хотите ступенек на период? тоже соответствующие 16 бит разрядности? Что получаем? Получаем даже не пшик  ибо 300Hz/65536 это менее, чем 0.0046Hz. На 16MHz тактовой 8bit PWM и 256 отсчетах на период максимальная частота 244Hz. Это если атмеговский Fast PWM. Для 'точного' вдвое ниже. Занавес.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 21 2010, 05:15
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Можно конкретнее свою позицию, Вы За или Против PWM с использованием Z . Или Вы хотите выразить свое отношение к Троичному ЦАП? Что Вы думаете по первому посту?
|
|
|
|
|
May 21 2010, 10:10
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Karim @ May 21 2010, 08:15)  Что Вы думаете по первому посту? Хотя к ЦАПу на ШИМ испытываю недоверие, Ваше решение тоже не вдохновляет. Дешевый STM32 обеспечивает два канала синуса с точностью процентов на частоте несколько десятков килогерц без загрузки контроллера. Так что Ваше решение годится в качестве учебной задачи, не более того.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 21 2010, 12:28
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
Что ж Вы так, к своему времени неуважительно. Я ж не спрашиваю Вас " что будет если?", я написал "то-то работает, нужна помощь". А Вы мне что в ответ? Кто не хочет помогать, вон, соседних веток море. Хотим помогать- обсуждаем алгоритм. А кто хочет и схему готовую и прогу пусть ждет в тряпочку. Устроили дискуссию как в доме опытных-переопытных ветеранов с замерзшими паяльниками. Мы же с Вами электронщики, у нас всегда было есть и будет здоровая конкуренция в упряжке с взаимопомощью. Кому понятен первый пост, отвечаем по существу, пожалуйста. Давайте лучше сравним случай записи в DDR PORT готовых кодов из тела программы, когда вся сложность ПО- в предварительном переводе двоички в троичку. Любой для себя это сделает раз в жизни (вдумываясь, дальше на автомате) .....................................троичка......двоичка Комбинаций при 8 битах.......6561.......256 проигрыш в объеме.......... ...2........1 проигрыш в скорости...........2........1 6561:2:2:256=6.4... При одинаковой значимости объема, скорости и количества ступенек выигрыш был бы таким, если бы не помехи переключений. Это отдельный разговор. Но мы же знаем, значимость параметра - это понятие пластилиновое. ................................... троичка....двоичка Комбинаций при 3 битах........27.......8 проиг.в объеме.....................2........1 проиг.в скорости..................2........1 28:2:2:8= 0.875 Это проигрыш если только значимость параметров по 0.333. Даже при явном проигрыше 3 битного при одинаковой значимости параметров, думаю найдется приложение или чел, которым параллельны скорость и объем. Прошу не удивляться если на других форумах найдете меня с одинаковым содержанием постов.
|
|
|
|
|
May 21 2010, 12:58
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Karim @ May 21 2010, 15:28)  Хотим помогать- обсуждаем алгоритм. А кто хочет и схему готовую и прогу пусть ждет в тряпочку. Алгоритм вообще-то зависит от требований к быстродействию. Естественно напрашивается массив значений PORTA/DDRA/константа в таймер. Загрузили константу в таймер -> пришло прерывание -> записали значение PORTA -> записали значение DDRA -> инкремент индекса массива и проверка выход из прерывания поделали что-то полезное прерывание повторяется. Требуется подготовка таблицы, вполне удобен EXEL. Успехов. А от схемы и проги увольте, они никому не нужны.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 21 2010, 14:30
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Karim @ May 21 2010, 15:28)  Прошу не удивляться если на других форумах найдете меня с одинаковым содержанием постов. Прошу не удивляться, что там Вам расскажут много более доходчиво, что думают о таком DAC. Практический смысл равен 0. Все разговоры за экономию тактов и выводов полностью гробятся двухполярным питанием, которое заодно является и опорным, дивным набором резисторов и непредсказуемостью утечек и переходных процессов. Если Вы лично или кто другой загнали себя в угол, например, количеством выводов у контроллера и вместо того того, что-бы взять другой контроллер пусть даже не с DAC, а с количеством выводов достаточным для банальной R-2R матрицы, и вместо этого начали городить дивный набор резисторов и двухполярное питание, то .... воздержусь от дальнейших комментариев.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 21 2010, 17:44
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 15-11-08
Из: Уфа
Пользователь №: 41 659

|
xemul, кроме недостатков вижу способы преодоления некоторых. Dog Pawlowa, спасибо за пожелания и пересказ вложения первого поста. А я юзаю Excel. zltigo, не удивляюсь, всегда знал, что дубину можно рычагом, чтоб подтолкнуть, можно спицей деревянного не совсем круглого колеса, но чтоб катилось, можно поперек этих спиц, а можно и в черно-белую полоску использовать, Вы могли помочь, но не только не помогли, но еще ... За меня не беспокойтесь, не сверну. Чем объяснить, то что гуру, профессионалы и знающие, которые уже помогли сотням и тысячам, ни один не предложил помощи здесь? Некоторым из них времени потребуется в тысячу раз меньше, чем мне. Кроме высказанных ими причин может еще отсутствие библиотечных заготовок? Высшим пилотажем у микроконтроллерщиков считается быстро из либы достать и подладить под себя в эксклюзивном алгоритме. Говоря словами zltigo, заколебался клянчить, наверно придется в однеху маяться. В заключении хочу поблагодарить ARV с форума Радиокот, который просто взял и написал прогу перевода двоички в троичку. Спасибо всем. Кому интересно, что дальше, обращайтесь majorka65@mail.ru zltigo, можно закрывать ветку.
|
|
|
|
|
May 21 2010, 18:01
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Karim @ May 21 2010, 20:44)  ни один не предложил помощи здесь Подобный случай описан у Конан Дойля. Вы, видимо, решили, что когда нищий говорит колкости, ему больше дают. Цитата(zltigo @ May 21 2010, 17:30)  .. дивным набором резисторов ... Мне кажется, тут есть один интересный момент. Если этот ЦАП предназначен только для синуса, то можно установить переменный индивидуальный интервал между моментами установки параллельных данных, компенсируя тем самым особенность набора резисторов. Ностальгия. Мой диплом 30 лет назад был - генерация синуса в цифре
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 21 2010, 18:30
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Karim @ May 21 2010, 20:44)  .. и написал прогу перевода двоички в троичку. Наверное телепат, ибо никто из присутствующих не смог догадаться, что Вы просите этого. Цитата всегда знал, что дубину можно рычагом, чтоб подтолкнуть, можно спицей деревянного не совсем круглого колеса, но чтоб катилось, можно поперек этих спиц, а можно и в черно-белую полоску использовать, ну тогда еще подскажу, что можно зубы через анус лечить - это все именно то, чем Вы занимаетесь  . Цитата За меня не беспокойтесь, не сверну. Дык, это и печально. Цитата(Dog Pawlowa @ May 21 2010, 21:01)  Если этот ЦАП предназначен только для синуса, то можно установить переменный индивидуальный интервал между моментами установки параллельных данных, компенсируя тем самым особенность набора резисторов. А почему синус? Любой сигнал - просто подстройка шириной импульса, т.е. ШИМом нелинейности. Проблема в том, что разрешающую способность таймера надо будет иметь, как у ШИМ. Просто будет ШИМ работающий не на весь диапазон. Круг замкнулся.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 21 2010, 19:58
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Karim @ May 21 2010, 21:44)  xemul, кроме недостатков вижу способы преодоления некоторых. Чтобы удобнее было преодолевать, разделите проблемы на смехотехнические и алгоритмические. Смехотехнические одинаковы для ЦАПов и на R-2R, и на R-3R матрицах - точность матриц, опор, влияние сопротивлений ключей. Здесь у R-3R никаких преимуществ (кроме рукопашного подбора резисторов  ) нет. Алгоритмические... Dog Pawlowa уже описАл алгоритм формирования произвольного сигнала с помощью ЦАП. Основные проблемы - целочисленность таймера и ЦАП, и джиттер выдачи кода в ЦАП. Здесь R-3R от R-2R тоже ничем не отличается. Поэтому и было сказано, что интерес к ЦАПу на R-3R матрице может быть теоретический (типа - так тоже можно), но практического смысла в его реализации чуть да маленько. (все вышенатоптанные буквы - не более, чем хо (humble opinion), не должное остановить полёт мысли)
|
|
|
|
|
May 22 2010, 07:30
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(zltigo @ May 22 2010, 01:18)  Отнюдь не одинаковы. одинаковы. Цитата Троичный принципиально требует ДВУХ опорных четверичный - трёх, пятеричный - четырёх, ... И то при условии, что одно из опорных напряжений = 0, что в общем случае не обязательно. Цитата в данном случае еще и РАЗНЫХ полярностей, не обязательно. Цитата ... Муть. целиком и полностью согласен.
|
|
|
|
|
May 22 2010, 17:03
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(xemul @ May 22 2010, 10:30)  одинаковы. Ну-ну... Закрываем оба глаза? Цитата не обязательно. Да ну? Вперед - рассказывайте как данная конкретная реализация работает без опорных разных полярностей.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 9 2010, 18:50
|
Группа: Новичок
Сообщений: 2
Регистрация: 9-06-10
Пользователь №: 57 827

|
Если можно продолжить тему...Возникла схожая задача. ТЗ - имеется микроконтроллер atmega8535, надо сформировать синус частотой 2кгц, коэффициент гармоник предельный 0.5%, желаемый <=0.3%, амплитуда 2.5В эфф, стабильность амплитуды в диапазоне -45..+85 предельная 0.5%, желаемая <=0.4% Сопротивление нагрузки высокое (буферный ОУ). Способ формирования синуса по минимуму стоимости и наиболее простой настройке схемы.
Не знаю, что выбрать или R2R (С2-29В) или же ШИМ формирование с RC фильтром? Если R2R то можно наверно применить 4-х битовый ШИМ (16 ступенчатый сигнал частота дискретизации 64 кГц) Или же можно применить ШИМ 32 отсчета на период , величина коэффициентов шим от 0 до 64, частота "тиков" шим 32 х 64 =4096 кГц Что посоветуете?
Сообщение отредактировал and_007 - Jun 9 2010, 18:52
|
|
|
|
|
Jun 9 2010, 19:24
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(and_007 @ Jun 9 2010, 21:50)  ТЗ - имеется микроконтроллер atmega8535, На белом свете, вообще-то имеется много разных контроллеров. Под Вас имеются и с DAC на борту и отдельные DAC и источники опорных напряжений. Цитата желаемый <=0.3%, ЛЮБЫЕ несколькоступенчатые генерилки по любому потребуют солидной фильтрации. Цитата амплитуда 2.5В эфф, Очень мило, и как Вы мыслите получить 7 с гаком вольт размах на выходе контроллера с 5V питанием? Цитата стабильность амплитуды в диапазоне -45..+85 предельная 0.5%, желаемая <=0.4% На этом пункте сразу забываем и о PWM и о обвесках пинов из резисторами.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 10 2010, 03:04
|
Группа: Новичок
Сообщений: 2
Регистрация: 9-06-10
Пользователь №: 57 827

|
Контроллер менять не могу по заданию  Генерация синуса его побочная функция по мимо всего прочего. Фильтрация будет активным ФНЧ 1-го или 2-го порядка, пока не считал. Хотелось бы обойтись первым порядком. Коэффициент усиления ФНЧ 1,41 Если температурная стабильность матрицы резисторов С2-29В 50ppm то это грубо составит 5e-05*60=0.3% т.е. должны уложиться. С ШИМ сигналом и RC цепочкой стабильность амплитуды должна быть хорошей, если частота среза в несколько раз превышает частоту сигнала. Если можно, такой вопрос, учебник или хорошую статью по аналитическому расчету спектра ШИМ сигналов не посоветуйте?
Сообщение отредактировал and_007 - Jun 10 2010, 03:22
|
|
|
|
|
Jun 10 2010, 07:02
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(and_007 @ Jun 10 2010, 06:04)  Контроллер менять не могу по заданию  Даже, если Вас съели, у Вас есть ДВА выхода. Цитата Генерация синуса его побочная функция по мимо всего прочего. Ах еще и побочная  типа с частотой дискретизации, которую Вы хотите иметь в 64KHz этот контроллер должен между делом забрасывать, не особо важно куда в PWM или DAC отсчеты синусоиды, пусть даже она и будет фиксированной частоты и амплитуды и их не надо будет считать. Цитата Фильтрация будет активным ФНЧ 1-го или 2-го порядка, пока не считал. Хотелось бы обойтись первым порядком. Да, Да, "пока не считал", это пять баллов! Цитата Если температурная стабильность матрицы резисторов С2-29В 50ppm то это грубо составит 5e-05*60=0.3% т.е. должны уложиться. Да, а о том, что на этой матрице напряжение берется с пинов контроллера и в свою очередь от некоего блока питания, об этом Вы пока и не подозревали  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|