Цифро-аналоговый преобразователь с DAC5311, есть предложения?
Я создал свой код ЦАП с помощью DAC5311 и Arduino Uno. Я думаю, что это не проблема, но это не работает хорошо. Просто напечатайте 0. (Я использую осциллограф.) Я не знаю, где проблема. Пожалуйста, дайте мне любое предложение.
#include <SPI.h>
#include <math.h>
#define pin_CS 10
#define pin_MOSI 11
#define pin_SCLK 13
#define max_VOLT 5
void setVoltage(float voltage){
if (voltage < 0) voltage = 0;
if (voltage > max_VOLT) voltage = max_VOLT;
uint16_t temp = int(voltage * pow(2, 8) / max_VOLT);
temp = temp << 6;
uint8_t upper = temp >> 8;
uint8_t lower = (temp & 0xff);
digitalWrite(pin_CS, LOW);
SPI.transfer(upper);
SPI.transfer(lower);
digitalWrite(pin_CS, HIGH);
}
void setup() {
Serial.begin(9600);
pinMode(pin_CS, OUTPUT);
pinMode(pin_MOSI, OUTPUT);
pinMode(pin_SCLK, OUTPUT);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
digitalWrite(pin_CS, HIGH);
}
void loop() {
setVoltage(5);
delay(10);
}
@임석빈, 👍0
Обсуждение1 ответ
Классический +/- 1 проблема
Если вы делаете этот расчет вручную, uint16_t temp = int(voltage * pow(2, 8) / max_VOLT);
вы получите temp=256
, и это значение невозможно преобразовать с помощью 8-битного ЦАП.
Попробуйте вместо этого uint16_t temp = int(voltage * (pow(2, 8)-1) / max_VOLT);
.
(или событие лучше для µC uint16_t temp = (uint16_t) (voltage * (255 / max_VOLT));
)
Я пересмотрел его, но он все еще не работал. ㅜㅜ, @임석빈
Поэтому попробуйте SPI_MODE1
или SPI_MODE3
(устройство ожидает действительный бит на падающей тактовой фазе), @theSealion
- Есть ли способ воспроизводить звуки с Arduino без использования звукового экрана?
- Как отправлять данные через I2C без проводной библиотеки?
- Arduino с 12-битным ЦАП (MCP4725) не работает
- ШИМ на выводах не ШИМ
- AnalogWrite(DAC0, X), Аналоговое напряжение на выводе DAC0 выше при меньшем значении X - это нормально?
- Как сканировать сигнал HIGH на digitalRead во время основного цикла, одновременно выполняя другие задачи?
- Использование аналогового компаратора на ATmega32u4
- Как правильно читать АЦП на ATtiny85?
утверждение "это не работает" не имеет смысла... "я пользуюсь осциллографом" также бессмысленно... пожалуйста, объясните, что вы ожидали, что произошло на самом деле и что вы сделали с осциллографом, @jsotola
Извините, я не силен в английском. Так что может быть не понятно. Дело в том, что я хочу выставить напряжение 5, а на выходе DAC5311 ноль. И я проверяю выход осциллографом., @임석빈
теперь это ясно ... пожалуйста, отредактируйте свой вопрос ... ваш английский просто прекрасен ... правильно ли работает ваш осциллограф и правильно ли настроены элементы управления? ... дважды проверьте выход с помощью вольтметра, @jsotola