Arduino с 12-битным ЦАП (MCP4725) не работает

У меня есть Arduino Mega AT2560, и мне нужен настоящий ЦАП. Я купил 12-битный ЦАП Sparkfun, однако не думаю, что он работает должным образом.

Я использую библиотеку проводов Arduino для связи с ЦАП. Когда я пишу 0, я ожидаю увидеть 0 В на выводе OUT ЦАП. Однако я вижу какое-то, казалось бы, случайное постоянное напряжение. И наоборот, когда я записываю 4095 в ЦАП, я вижу то же напряжение, что и при записи 0. Я ожидал увидеть 5 В.

  1. Может ли кто-нибудь проверить, правильно ли я подключил?
  2. Может ли кто-нибудь проверить код, который я использую?

12-битный ЦАП с Arduino ATMega 2560

#include <stdint.h>
#include <stdio.h>
#include <Wire.h>

#define MCP4725_ADDR 0x60 // [0000 0110]
/*
* 12 Bit DAC MCP4725 gives a range of 4096 possible values.
* 
*/
void setup() {
  Wire.begin();
  Serial.begin(9600);
}

void loop() {
  Wire.beginTransmission(MCP4725_ADDR);
  Wire.write(64);            // cmd для обновления ЦАП [0100 0000]
  Wire.write(4095 >> 4);        // 8 старших бит...
  Wire.write((4095 & 15) << 4); // 4 младших бита...
  Wire.endTransmission();
}

, 👍1

Обсуждение

Полная шкала должна быть 4095, а не 4096. В шестнадцатеричном формате 4095 имеет идентификатор 0x0FFF, а 4096 — 0x1000. У вас есть диапазон из 4096 возможных значений от 0 до 4095., @Peter Bennett