ЦАП R-2R (DAC R-2R) на Arduino

Создание блока ЦАП R-2R (DAC R-2R) на Arduino UNO, NANO

Создаем свой блок. Вопросы, помощь знатоков.
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ЦАП R-2R (DAC R-2R) на Arduino

#1

Сообщение AVGN » 27.02.2019{, 19:09}

Для регулировки напряжения от 0 до 5 вольт
на просторах буржуинского интернета набрел на темы создания ЦАП 8, 10 bit
и даже по два ЦАП на одной Ардуино
2_R-2R.jpg
2_R-2R.jpg (25.62 КБ) 1724 просмотра
dac_8bit_1_schem_FLp.png
Сделал блок ЦАП R-2R (DAC R-2R) 8 bit , от0 до 255 шагов на выходе получаем от 0 до 5V с шагом 0.02 V
копилируется, но в железе пока не проверил
DAC R-2R 8bit.flp
(300.26 КБ) 107 скачиваний
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Brand2
Лейтенант
Сообщения: 414
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 42
Откуда: Haifa
Имя: Alex

ЦАП R-2R (DAC R-2R) на Arduino

#2

Сообщение Brand2 » 27.02.2019{, 19:26}

В esp32 есть два ЦАП 8 битных,на гитхабе были примеры для синусоиды,пилы и треугольника,макс частота кажется до 1,3-1,5 кгц
СпойлерПоказать

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ЦАП R-2R (DAC R-2R) на Arduino

#3

Сообщение AVGN » 27.02.2019{, 20:05}

Brand2, для регулировки напряжения есть?
Вот сделал блок
Тестируйте.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Brand2
Лейтенант
Сообщения: 414
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 42
Откуда: Haifa
Имя: Alex

ЦАП R-2R (DAC R-2R) на Arduino

#4

Сообщение Brand2 » 27.02.2019{, 21:45}

AVGN, не понял ,что значит для регулировки*?
Можно выставлять любое напряжение от 0-3,2 V
dacWrite(0-255);
вот на ютьюбе есть урок про него
СпойлерПоказать

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

ЦАП R-2R (DAC R-2R) на Arduino

#5

Сообщение diman27 » 28.02.2019{, 10:04}

А 10-bit можно сделать или ограничения есть?

Brand2
Лейтенант
Сообщения: 414
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 42
Откуда: Haifa
Имя: Alex

ЦАП R-2R (DAC R-2R) на Arduino

#6

Сообщение Brand2 » 28.02.2019{, 10:14}

diman27, только 8 бит

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

ЦАП R-2R (DAC R-2R) на Arduino

#7

Сообщение Sancho » 28.02.2019{, 10:29}

diman27 писал(а):
28.02.2019{, 10:04}
А 10-bit можно сделать или ограничения есть?
Brand2 писал(а):
28.02.2019{, 10:14}
diman27, только 8 бит
Други, Вы о какой платформе сейчас спрашиваете/отвечаете?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

ЦАП R-2R (DAC R-2R) на Arduino

#8

Сообщение diman27 » 28.02.2019{, 12:09}

Uno, nano, и т.д.

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

ЦАП R-2R (DAC R-2R) на Arduino

#9

Сообщение Labu559 » 28.02.2019{, 12:22}

diman27 писал(а):
28.02.2019{, 10:04}
А 10-bit можно сделать или ограничения есть?
Попробую теоретически развить эту интересную идею с разрешения Уважаемого AVGN. Наверное можно до скольких угодно, пока не закончатся резисторы и сдвиговые регистры, пересчитав токи (резисторного делителя) и научив програмно Ардуинку управлять сборкой
под спойлером.Показать
74HC595asDAC.jpg
:)
Последний раз редактировалось Labu559 20.09.2020{, 11:01}, всего редактировалось 3 раза.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

ЦАП R-2R (DAC R-2R) на Arduino

#10

Сообщение Sancho » 28.02.2019{, 12:36}

Labu559, И это будет очень быстрый ЦАП. Останется обеспечить очень стабильное питание и подобрать резисторы :)
А почему все резаки одинаковые, не r-2*r ?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ЦАП R-2R (DAC R-2R) на Arduino

#11

Сообщение AVGN » 28.02.2019{, 12:53}

Sancho, Вы видите проблемы запилить используя порты PB+PD?
Вот здесь на Atmega8 задействовали все выходы PD+PC два вывхода.
СпойлерПоказать
R2R.JPG
Есть сомнения?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

ЦАП R-2R (DAC R-2R) на Arduino

#12

Сообщение Sancho » 28.02.2019{, 14:18}

AVGN писал(а):
28.02.2019{, 12:53}
Sancho, Вы видите проблемы запилить используя порты PB+PD?
Нет.
AVGN писал(а):
28.02.2019{, 12:53}
Есть сомнения?
А это к чему?
Исходя из того, что данный блок был сделан Вами в контексте идеи из темы о блоке питания, могу Вам сказать, что я бы использовал внешние ЦАПы, так как мне их потребовалось бы два. Для тока и напряжения. А поддержание заданных значений я переложил бы на внешний аналог. И совсем бы не думал о быстродействии схемы.
Используя указанный Василием вариант внешнего ЦАПа, можно создать трёх-фазный генератор синусоиды с выходной частотой около 1кгц с дискретизацией 256.

Вопрос лишь в количестве каналов/штук.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

ЦАП R-2R (DAC R-2R) на Arduino

#13

Сообщение Labu559 » 28.02.2019{, 14:29}

Sancho писал(а):
28.02.2019{, 12:36}
Labu559, И это будет очень быстрый ЦАП
Ну да, конечно, вообще pinMode(); digitalWrite(); shiftOut(); delay() - "разработаны для высокого быстродействия". Друзья- это же платформа Ардуино, или как говорят "гуру"- функции с проверками на дурака (извините цитата). У нас-же "контруктор Лего" с кубиками-чёрными ящиками в виде пользовательских блоков. Зачем кубики курочить? Кому понятен Си и необходимо быстродействие издеваются над т.н. Ардуинщиками. А те кто спрашивает, что такое переменная, или кто всю жизнь варганил на реле конструкции, нашли этот способ складывая кубики решать задачи и удовлетворены такой скоростью. Каждому - своё. Подумал, может кто-то захочет таким способом регулировать уровень звука в усилителях- типа цифрового потенциометра. Я не читаю темы на форуме, которые мне не интересны и откуда мне знать что эта- продолжение другой про БП? Ниже скетч АрдуиноИДЕ для схемы на сдвиговых регистрах из выше. Будет кому-то нужно- засовывайте в блок (с костылями для переменной word :smile469: ). В Ардуино не заливал, схему не паял, работоспособность не гарантирую- концепт вариант. Резисторы делителя, по нагрузочной способности выходов НС595, не рассчитывал, схему поправил.
Вложения
HC595as16-bitDAC.rar
Fix 02.03.19
(1.01 КБ) 72 скачивания
Последний раз редактировалось Labu559 02.03.2019{, 14:39}, всего редактировалось 3 раза.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ЦАП R-2R (DAC R-2R) на Arduino

#14

Сообщение AVGN » 28.02.2019{, 14:39}

Sancho писал(а):
28.02.2019{, 14:18}
Исходя из того, что данный блок был сделан Вами в контексте идеи из темы о блоке питания, могу Вам сказать, что я бы использовал внешние ЦАПы, так как мне их потребовалось бы два. Для тока и напряжения. А поддержание заданных значений я переложил бы на внешний аналог. И совсем бы не думал о быстродействии схемы.
Расточительно. Народ хотит экономить :smile38:
На подвиги сподвигнул имеено БП вот и блок сделал на 8bit на пути к 10bit.
Но с наскока что то у меня не получилось запилить 10 разрядный цап 2-r2 на портах PD+PC.
Знаете как сделать?

Отправлено спустя 16 минут 16 секунд:
Labu559 писал(а):
28.02.2019{, 14:29}
Резисторы делителя не рассчитывал, - увеличив колличество каналов из схемы Ув.ТС в 2-раза, уменьшил сопротивления, только не разобрался по нумерации резисторов на втором рисунке , исправлю сейчас рисунок.
Сопротивления рассчитывать и не надо.
Резисторная матрица R-2R или ЦАП R-2R так называется из-за номиналов применяемых в нём резисторов с сопротивлениями R и 2*R. Сопротивления по идее могут быть любыми (1k-2k; 10k-20k и т.д).
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

ЦАП R-2R (DAC R-2R) на Arduino

#15

Сообщение Sancho » 28.02.2019{, 15:01}

AVGN писал(а):
28.02.2019{, 14:39}
Знаете как сделать?
Возможно, так:
СпойлерПоказать
setup ()
{

DDRD = 0xFF; // все выход
DDRC = DDRC | 0x03; // 0 и 1 выход
}

loop ()
{
PORTD = a & 0xFF; // здесь младшие
PORTC &= (a>>8 | 0xFC); // грузим только в два младших бита старшие входного
а++;

}
Отправлено спустя 15 минут 28 секунд:
А может и нет, с С, надо слегка подумать...

Отправлено спустя 18 минут 49 секунд:
Обновил, должно.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Mining
Сержант
Сообщения: 148
Зарегистрирован: 31.10.2016{, 15:01}
Репутация: 4
Имя: Алексей

ЦАП R-2R (DAC R-2R) на Arduino

#16

Сообщение Mining » 28.02.2019{, 15:49}

Sancho писал(а):
28.02.2019{, 15:35}
loop ()
{
PORTD = a & 0xFF; // здесь младшие
PORTC = PINC & (a>>8 | 0xFC); // грузим только в два младших бита старшие входного
а++;

}
a = 1024 от нуля?

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

ЦАП R-2R (DAC R-2R) на Arduino

#17

Сообщение Sancho » 28.02.2019{, 16:16}

Mining писал(а):
28.02.2019{, 15:49}
a = 1024 от нуля?
Получим 0, и далее до 1023...

Отправлено спустя 1 минуту 48 секунд:
По кругу, на выходе пила :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ЦАП R-2R (DAC R-2R) на Arduino

#18

Сообщение AVGN » 28.02.2019{, 19:26}

Sancho, Для портов PD0...PD7 + PC2...PC3 так правильно:
СпойлерПоказать

Код: Выделить всё

setup ()
{

DDRD = 0xFF; // все выход
//DDRC = DDRC | 0x03; // 0 и 1 выход
DDRC = DDRC | 0x0C; //устанавливаем цифровые выводы PC2 и PC3 в качестве выходов
}

loop ()
{
PORTD = a & 0xFF; // здесь младшие
PORTC &= (a>>8 | 0xFC); // грузим только в два младших бита старшие входного
а++;

} 

?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

ЦАП R-2R (DAC R-2R) на Arduino

#19

Сообщение Sancho » 28.02.2019{, 19:39}

Немного не до конца. Для С.

Код: Выделить всё

// PORTC &= (a>>8 | 0xFC); меняем на
PORTC &= (a>>6 | 0xF3);
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ЦАП R-2R (DAC R-2R) на Arduino

#20

Сообщение AVGN » 28.02.2019{, 22:02}

Сделал блок ЦАП R-2R (DAC R-2R) 10 bit , от0 до 1023 шагов на выходе получаем от 0 до 5V с шагом 0.005 V
копилируется для UNO, но в железе пока не проверил
DAC R-2R 10bit_test.flp
(344.95 КБ) 90 скачиваний

схемы подключения выходов микросхемы ATmega8, 328
СпойлерПоказать
Изображение
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Ответить

Вернуться в «Разработка пользовательских блоков»