техника

ЦАП из говна и палок

Обожаю такие вещи. Удивительно, но в первый раз о таком узнал.

Берём кучку резисторов (по два на каждый бит, который хотим перевести в аналог, т.е. для воспроизведения 12-битного звука понадобится 24 резистора), соединяем их специальным образом в резисторную матрицу:

картинка с Вики:

Левый конец заземляем.

Далее на выводы a0..an-1 (в данном случае n = 12) подаём цифровой сигнал в двоичном формате от младшего к старшему (little endian). Т.е. хотим преобразовать число 3 -- подаём 1100 0000 0000, или же везде нули, кроме выводов a0, a1.

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

Собсно, так работала звуковая плата Ковокс, подключающаяся к параллельному порту компьютера. Компьютерщики со стажем, наверное, видели. Руками я её не щупал, но видел Covox как опцию для звука в старых игрушках.

Недостатков, конечно, у неё есть. Шумность, и если хочешь, например, 24-битный звук -- это что ж, здоровенную буханку из 48 резисторов делать? И этой штуке вынь да положь 24 цифровых выхода. Где я их на том же ATTiny возьму?

Но изящности и простоты не отнимешь.
48 резисторов, причем не простых а с 0.000005% прецизионностью...
Ну и типичный цифровой выход - плохой аналоговый ключ (допустим, что источник питания застабилизирован и зафилтрован)...
Это да.

Но зато реально ведь -- из говна и палок :)
Ну, а чего можно ждать от схемы за три копейки? Это же не Бурр-Браун...

Edited at 2016-04-07 06:09 pm (UTC)

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

Угу, но не 24бит а 8...10, шим с RC цепочкой даст похожий результат, и сожрет всего 1 ногу микроконтроллера...
> Недостатков, конечно, у неё есть. Шумность, и если хочешь, например, 24-битный звук -- это что ж, здоровенную буханку из 48 резисторов делать?

Это как это - "шумы" и "24-битный звук"? Прежде чем делать 24-битный звук, надо сначала найти источник "цифры" с максимальным абсолютным отклонением напряжения на выходах от идеального не хуже -144дБ (иначе старший разряд "нашумит" на выход на уровне младших, а при разбросе напряжения на разрядах будет "скрип" при изменении числа на входе), и микроомным выходным сопротивлением (иначе оно добавится к 2R и даст ошибку), ну и как тут уже писали - найти резисторы 0.000005%
А пока эти проблемы не решены - можно делать бит так 10-12, а остальные не подключать вообще - всё равно они в искажениях и шумах скроются :-)

А так - да, помню, когда звуковух не было - паяли 8-битные резисторные ЦАП в LPT-порт, и использовали - в демках, в трекерах и в играх. А потом я купил на рынке К572ПА1 (в керамике, с позолотой), и сделал себе крутой микросхемный ковокс :-)
"Какое время было, блин" :-)
> А пока эти проблемы не решены - можно делать бит так 10-12, а остальные не подключать вообще - всё равно они в искажениях и шумах скроются :-)

Это да -- в-общем-то, 24 бита на таком я бы не стал делать от слова "совсем" :)

> А так - да, помню, когда звуковух не было - паяли 8-битные резисторные ЦАП в LPT-порт, и использовали - в демках, в трекерах и в играх.

Я помню, был драйвер pc-speaker под Win3.1 :) Интересно, под ковокс был?

> А потом я купил на рынке К572ПА1 (в керамике, с позолотой), и сделал себе крутой микросхемный ковокс :-)

Звучание, интересно, улучшилось?

> "Какое время было, блин" :-)

Ну, оно, в принципе, никуда не делось -- тем же самым можно заниматься на микроконтроллерах и прочих ARM-ах, благо цена у них нынче весьма демократическая.
паял себе ковокс в начале 90-х, геймплей улучшился кардинально