TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: dielafer en 09 de Febrero de 2011, 12:48:56
-
He estado mirando el datasheet del pic 18f4550 y parece que si se puede hacer un conversor analógico-digital pero no he visto nada sobre uno digital-analógico. Ademas en las librerias para programarlo en c tampoco he visto nada.
Quisiera saber si es posible realizar un DAC con este pic, el cual actuaria como maestro en una cominicación SPI con un mcp4822.
-
Por ejemplo un DAC de 8 bits es muy fácil de implementar utilizando el sistema R-2R. Busca en google que seguro encontrarás algo.
-
También se puede implementar un PWM y un filtro pasa bajos, en el foro Nocturno hizo algo por el estilo. Y sino un C.I. dedicado a ello. ;-)
Saludos!
-
Lo que pasa es que tengo que utilizar el mcp, el mcp4822 o el mcp4921 y la verdad es que no se muy bien como funciona.
Yo le metería la entrada digital por cualquier puerto del pic y despues de meter las instrucciones de configuracion del spi, me haría la conversión a la salida del mcp4921?
Como veis estoy un poco perdido.
-
Busca el datasheet del mcp4822 o el mcp4921, allí está detallado como funciona y como debe trabajarse.
Saludos!
-
Busca el datasheet del mcp4822 o el mcp4921, allí está detallado como funciona y como debe trabajarse.
Saludos!
Ok. Creo que mi problema ahora mismo sólamente es de programación, veremos si consigo solucionarlo.
-
Voy a dejar el código y una captura de como lo tengo. Soy novato así que no os asusteis mucho.
#include <18f4550.h>
#device ICD=TRUE
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
//#include <lcd_portd.c>
//#include <stdlib.h>
#include <mcp4921.c>
void main()
{
int16 a;
setup_spi(spi_master | spi_l_to_h | spi_clk_div_16);
//lcd_init();
init_dac();
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_64);
set_adc_channel(0);
delay_ms(100);
while(1)
{
a=read_adc();
delay_ms(1);
//printf(lcd_putc,"\f %ld",a);
spi_write(a);
delay_ms(100);
}
}
(http://www.todopic.com.ar/foros/imgtiny/16bwr60.png)
-
Digo yo, y talvez este pasando algo por alto, es posible tambien usar las entradas del pic como la parte digital del conversor, asi 4 entradas - 4 bits, 5 entradas - 5 bits... y tener una salida pwm que genere una tension segun las entradas...
Bueno, es una idea.
Saludos.
-
dielafer, SDI es el pin por el cual el dispositivo "saca" la data. O sea, no se puede conectar SDI del PIC con SDI del MCP ;-)
Luego, el pin CS es para habilitar al dispositivo, y si has leído el datasheet sabrás que es activo a nivel bajo. Entonces, antes de comunicarte con el MCP lo habilitas mediante este pin, y al terminas lo des-habilitas llevando a 1 lógico.
Ahora, tienes un include de <mcp4921.c>, revisa esa librería y la ayuda de la misma, seguro tiene las funciones que necesitas para comunicarte con el MCP :shock:
Saludos!