научите работать с ЦАП
научите работать с ЦАП
Покопался вообщем на просторах интернета, почитал.
Все что прочел было на тему "железа".
Не нашел статеек по программной части.
Точнее меня интересует реализация ЦАП, допустим на Atmega8.
Почтила про R 2R. тут все понятно. Отдаленно начал представлять что происходит в МК.
Хотелось бы точнее знать, что и как писать.
Поделитесь информацией пожалуйста.(пойдут любые статьи и т.п. на русском языке)
Все что прочел было на тему "железа".
Не нашел статеек по программной части.
Точнее меня интересует реализация ЦАП, допустим на Atmega8.
Почтила про R 2R. тут все понятно. Отдаленно начал представлять что происходит в МК.
Хотелось бы точнее знать, что и как писать.
Поделитесь информацией пожалуйста.(пойдут любые статьи и т.п. на русском языке)
- Реклама
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: научите работать с ЦАП
Аппаратного ЦАП в mega8 нет.
Я решал эту проблему ШИМ-ом + интегрирующая цепочка.
Я решал эту проблему ШИМ-ом + интегрирующая цепочка.
Re: научите работать с ЦАП
Тоесть ты хочешь сказать что нельзя при помощи R2R реализовать ЦАП?)
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: научите работать с ЦАП
При помощи R2R реализовать ЦАП можно, но внутри mega8 его нет. Вот это я и хочу сказать. Хотите городите внешний на резуках (если есть большое желание), но, по моему, это того не стоит. Легче купить внешний готовый.
Re: научите работать с ЦАП
Мне интересно на данный момент как на осциллографе рисуют разную "ахинею" (программная часть)
http://cxem.net/beginner/beginner90-21.png к примеру.
http://cxem.net/beginner/beginner90-21.png к примеру.
- Реклама
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: научите работать с ЦАП
Минусы:
1. Используется количество ног контроллера равное разрядности ЦАП. Если вы хотите получить хорошую разрядность (к примеру, восемь) надо отдать весь порт на отступление ЦАП. Не всегда это возможно.
2. Во второй ссылке, автор ясно говорит что точность так себе. Надо 1% резисторы. От себя могу сказать, что 0.1% еще лучше.
3. Сопротивление резисторов ЦАП надо согласовывать с нагрузкой. Это легко решается буфером на операционнике, но +1 корпус.
Плюсы:
1. Дешевезна.
P.S. Может кто-то что-то добавит к выше перечисленному.
1. Используется количество ног контроллера равное разрядности ЦАП. Если вы хотите получить хорошую разрядность (к примеру, восемь) надо отдать весь порт на отступление ЦАП. Не всегда это возможно.
2. Во второй ссылке, автор ясно говорит что точность так себе. Надо 1% резисторы. От себя могу сказать, что 0.1% еще лучше.
3. Сопротивление резисторов ЦАП надо согласовывать с нагрузкой. Это легко решается буфером на операционнике, но +1 корпус.
Плюсы:
1. Дешевезна.
P.S. Может кто-то что-то добавит к выше перечисленному.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: научите работать с ЦАП
Есть разные виды ЦАП с разными характеристиками. Определитесь что вам надо.
Вот ещё: http://radiokot.ru/circuit/digital/game/03/
Вот ещё: http://radiokot.ru/circuit/digital/game/03/
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: научите работать с ЦАП
2. Скорость вывода значительно выше, чем у PWM+RC.eess9 писал(а):Плюсы:
1. Дешевезна.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: научите работать с ЦАП
ШИМ+ФНЧ.Аlex писал(а):PWM+RC.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: научите работать с ЦАП
Пока задача довольна банальна, управлять напряжением от 0 до 5в. (предположительно)
Портов достаточно, ценовой вопрос играет роль.
Управление 2 кнопки + и - , и еще автоматическая поддержка выбранного уровня исходя из сигнала поступающего с датчика управляемого устройства.
Портов достаточно, ценовой вопрос играет роль.
Управление 2 кнопки + и - , и еще автоматическая поддержка выбранного уровня исходя из сигнала поступающего с датчика управляемого устройства.
Re: научите работать с ЦАП
Да и тут не так важно решение по железу. Мне сейчас важнее освоить сам ЦАП, попутно и АЦП ))))
Все таки в первую очередь я этим занимаюсь для себя нежеле для кого то))
Я вроде уже додумался как надо организовывать программу, но еще не на столько что бы пытаться реализовать что-то.
Тема создана с целью найти хотя бы 1 простенькую программу , желательно для работы с R2R. ибо на подобной проге понятно будет все до безобразия.
Может у кого то есть простенькая прога или хотя бы какой нибудь алгоритм. в GCC ибо АСМ не знаю, пока что))))
А статье в которой разбиралась бы прога и вовсе очень рад был бы)
Все таки в первую очередь я этим занимаюсь для себя нежеле для кого то))
Я вроде уже додумался как надо организовывать программу, но еще не на столько что бы пытаться реализовать что-то.
Тема создана с целью найти хотя бы 1 простенькую программу , желательно для работы с R2R. ибо на подобной проге понятно будет все до безобразия.
Может у кого то есть простенькая прога или хотя бы какой нибудь алгоритм. в GCC ибо АСМ не знаю, пока что))))
А статье в которой разбиралась бы прога и вовсе очень рад был бы)
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: научите работать с ЦАП
R2R ЦАП бывают не только самодельные. К572ПА1 к примеру тоже содержит такую матрицу. Помню также отдельно выпускались и сборки резисторов для построения преобразователей. Но сейчас это уже как динозавры.
На PORTA висит сам ЦАП.
Прога, делающая пилу через ЦАП с периодом 256 мс.foton6 писал(а):Может у кого то есть простенькая прога или хотя бы какой нибудь алгоритм.
На PORTA висит сам ЦАП.
Код: Выделить всё
uint16_t i;
while( 1 )
{
for(i=0; i<256; i++)
{
PORTA = i;
delay_ms( 1 );
};
};Re: научите работать с ЦАП
Да ладно)
у меня весь вопрос шол в выстроении единичек в порту последовательно от меньшей к большей))))
неужто они соответствуют значениям в десятичной виде?)))))
А я уж начал выдумывать как бы побитными операциями двигать нолики и единички по порту)
у меня весь вопрос шол в выстроении единичек в порту последовательно от меньшей к большей))))
неужто они соответствуют значениям в десятичной виде?)))))
А я уж начал выдумывать как бы побитными операциями двигать нолики и единички по порту)
Re: научите работать с ЦАП
тоесть чем больше десятичное число тем соответственно больше напряжение?))))))
А если прогнать с 1 до 256 через синус а получаемое число "втыкать в таймер" то можно получить рисунок синусойды????
А если прогнать с 1 до 256 через синус а получаемое число "втыкать в таймер" то можно получить рисунок синусойды????
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: научите работать с ЦАП
Напряжение выхода обычно пропорционально коду.
0x00 = 0V
0x7F = 2.5V
0xFF = 5V.
Если требуется двухполярный выход(-U...+U), то часто используется дополнительный код. Но это не ваш случай.
Следовательно синусоида для 8-битного значения:
PORTA = sin( x ) * 0xFF;
x=[-1...+1]
Поскольку вычисление синусов для простых микроконтроллеров - сложная и долгая задача, то для ускорения помещают заранее посчитанный массив значений в ПЗУ.
0x00 = 0V
0x7F = 2.5V
0xFF = 5V.
Если требуется двухполярный выход(-U...+U), то часто используется дополнительный код. Но это не ваш случай.
Следовательно синусоида для 8-битного значения:
PORTA = sin( x ) * 0xFF;
x=[-1...+1]
Поскольку вычисление синусов для простых микроконтроллеров - сложная и долгая задача, то для ускорения помещают заранее посчитанный массив значений в ПЗУ.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: научите работать с ЦАП
Хочу отметить, что процессор ничего не знает о десятичных числах. Все представляется в двоичном коде, он же идет в ЦАП.foton6 писал(а):тоесть чем больше десятичное число тем соответственно больше напряжение?))))))
Re: научите работать с ЦАП
Всем огромное спасибо)))))
Особенно за это:
Теперь все стало ясно до нельзя))))
Дальше будем разгадывать осциллограмму обратно в цифру))))
Особенно за это:
Спойлер
uk8amk писал(а):R2R ЦАП бывают не только самодельные. К572ПА1 к примеру тоже содержит такую матрицу. Помню также отдельно выпускались и сборки резисторов для построения преобразователей. Но сейчас это уже как динозавры.
Прога, делающая пилу через ЦАП с периодом 256 мс.foton6 писал(а):Может у кого то есть простенькая прога или хотя бы какой нибудь алгоритм.
На PORTA висит сам ЦАП.
Код: Выделить всё
uint16_t i; while( 1 ) { for(i=0; i<256; i++) { PORTA = i; delay_ms( 1 ); }; };
Дальше будем разгадывать осциллограмму обратно в цифру))))
Re: научите работать с ЦАП
Оу и вопрос на последок)
А ведь проще шимом регулировать от 0 до 5 вольт? (что-то типо автоматического потенциометра)
А ведь проще шимом регулировать от 0 до 5 вольт? (что-то типо автоматического потенциометра)
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: научите работать с ЦАП
Аналог ЦАПа.Gudd-Head писал(а):ШИМ+ФНЧ.


