Rampa de tensión arduino mega+dac

Hola buenas, no tengo mucha idea de arduino y me toca hacer un proyecto, asi que al lio.

Tengo que hacer una rampa de tensión de 0 a 10v de analogica, para lo cual necesitare un dac y un amplificador de ganancia 2.
Me pongo a hacer el programa pero no tengo nidea la verdad, segun e visto debo utilizar este programa para controlar al dac.

#include <Wire.h>
#define DAC 0x62
unsigned int tension;
byte buffer[3];



void setup() {
 Wire.begin();
 Serial.begin(9600);
}

void loop() {
 buffer[0]= 0b01000000;
 Serial.println(tension);
 buffer[1] = tension >> 4;
 buffer[2] = tension << 4;
 Wire.beginTransmission (DAC);
 Wire.write (buffer[0]);
 Wire.write (buffer[1]);
 Wire.write (buffer[2]);
 Wire.endTransmission();
 digitalWrite (13,HIGH);
 delay (100);
 digitalWrite (13,LOW);
 delay (100);
}

En el caso de que eso sea valido, como hago para que eso sea una rampa. Es decir, como consigo repetir todo el rato un aumento en la tension hasta los 10v que quiero?

Muchas gracias a todos los que respondan :wink: :wink:

Moderador: Código editado con etiquetas

Arduinovato:
En el caso de que eso sea valido, como hago para que eso sea una rampa. Es decir, como consigo repetir todo el rato un aumento en la tension hasta los 10v que quiero?

Se supone; aunque no me queda claro si es rampa como "diente de sierra" o triagular.

Y además me gustaría saber de qué DAC estamos hablando, solo para estar seguro de que lo estás controlando adecuadamente (si hay algún método más eficiente); porque no sé hasta cuánta frecuencia pretendes llegar...

PD: si el operacional no es "rail-to-rail", tendrás que alimentarlo con 12v para lograr picos de hasta 10.

Te explico más en detalle mi proyecto:

Debo tengo un tiristor que se activa a una tensión determinada entre 0 y 1500v, para conseguirlos debo llevarle una tensión de 0 a 10v a una PNC y esta regula la tensión.

La cosa es que quiero partir de 0 e ir aumentando la tensión progresivamente. Lo que tenía yo en mente era que arduíno sacara una tensión, vería cual es esa tensión en un display por ejemplo,chequearía que el tiristor se ha activado o no. Si el tiristor está activado, te guarda la tensión y te la enseña en el display y, si no se ha activado, volvería a subir la tensión otra vez repitiendo el proceso hasta que se active(de ahí la rampa de tensión que comentaba). Una vez activado deberá hacer lo mismo para desactivarlo.

Primero deberé aprender a controlar el DAC y de ahí ya veré como hacer el programa.

El DAC es el siguiente: MM110: DIGITAL TO ANALOG CONVERTER BOARD – Velleman – Wholesaler and developer of electronics

Un saludo y gracias

Arduinovato:
Primero deberé aprender a controlar el DAC y de ahí ya veré como hacer el programa.

No es tan difícil. Según la hoja de datos del DAC, hay un "modo rápido" que se usa para inmediatamente cambiar el valor (registro) de la salida analógica, sin tocar la EEPROM que trae; luego están los bits para el apagado y finalmente los 12 bits del DAC.

La siguiente función te facilitará su uso; sólo requiere un valor entero entre 0 y 4095:

void analogI2CWrite(unsigned int val) {
 byte* p = (byte*)&val;
 Wire.beginTransmission(DAC);
 Wire.write (p[1] & 0x0F);
 Wire.write (p[0]);
 Wire.endTransmission();
}

Creo que ya te vas haciendo la idea: incrementas la salida del DAC del 0 al 4095 en un ciclo for; y con no sé que método de entrada, revisarás si el tiristor se ha activado, para así romper el ciclo y reportar el valor necesario.