# output voltaje variable PIC



## xuintuic (Ago 15, 2011)

Buenas.

Perdon por el título, esque no sé como expresar mi duda.

La cuestión es que necesito sacar del PIC un voltaje dinámico entre 0 y 5 v (es decir 1v, 2v, 3v, 4v o 5v por ejemplo), pero he leido por ahí que ningún pic tiene salidas analógicas, entonces...¿es imposible?...

sería como poner una resistencia variable en una señal de 5v y poder regularla manualmente, pero como tengo que tratar una señal a través del pic 18f4550, me gustaría saber si puedo sacarla del PIC...

Cualquier ayuda o suposición sera bien recibida. gracias.


----------



## gonzalocg (Ago 15, 2011)

yo tambien he buscado este tipo de conversores integrados en un pic, pero solo hay de analogico a digital, por lo que la unica opcion es utilizar un conversor D/A externo, busca uno por I2C o por SPI, solo tienes que buscar, o si te sobran pines en tu pic, usa uno paralelo, ocupas menos instrucciones para manejarlo porque solo cargas el valor en el registro W y lo envias al puerto todo solo con 2 instrucciones, y ademas es mas rapido...


----------



## Chico3001 (Ago 15, 2011)

Es simple.. coloca una red R/2R en las salidas de uno de los puertos... hay mucha informacion al respecto en el buscador del foro...


----------



## Psyco83 (Ago 15, 2011)

Utiliza PWM y esa salida del PIC la aplicas a una red RC como filtro pasa-bajo y listo, variando el tiempo que pasa en alto lograrás variar el voltaje desde 0 a 5V. Comparto un enlace donde hay un documento pdf con bastante información al respecto, está en inglés, espero te sirva sino busca en Google "PWM DAC"

PWM as a DAC

Y de que sirve, sirve..... lo he visto aplicado en variedad de circuitos uno de estos es una fuente de alimentación para laboratorio que anda por este foro.

Saludos


----------



## xuintuic (Ago 15, 2011)

buah, pues muchas gracias por la ayuda, que Dios os lo pague con una buena novia...ejeje. 
google cada vez tiene más mierda...he sido incapaz de encontrar una solución sin comprar un DAC en integrado.

saludos!.


----------



## Scooter (Ago 16, 2011)

Puedes poner un DAC y listo, los hay I2C, SPI y de entrada paralelo al gusto. No son demasiado caros.
Si usas PWM luego tendrás que filtrar y según para que sea servirá o no, normalmente si.


----------



## RUIZ13 (Ago 16, 2011)

Hola a todos 
lo quue dice Psico83 es la solucion y varia los tiempos, y Scooter dice una cosa que no sabemos ......para que lo va a utilizar y si explicas Xuintuic para ver que se nos ocurre


----------



## xuintuic (Ago 16, 2011)

Pues la verdad es que nunca he trabajado con el PWM, vamos que no sé ni lo que es, pero siempre hay una primera vez. Quería probar primero lo de la red R/2R.

Lo que estoy intentando hacer es un simulador de una tabla de skate o snowboard como la tabla de la WII. Por eso mediante piezoelectricos detecto en que dirección se carga el peso al mover el cuerpo cuando estoy encima, y de estas 8 señales necesito sacar 2, una que indique el eje X y otra el eje Y para hacer pruebas. 

Luego lo pasaré directamente por el USB al ordenador a modo de mando para juegos, pero no tengo ni idea de hacer un driver ahora mismo y el USB del PIC tampoco sé manejarlo en modo HID de ese que creo que es necesario para que lo detecte windows como gamepad.

Total, que sé que podría hacer un programa guarrero en c# y pasarlo por el usb para hacer prebas, pero ahora mismo lo que necesito saber es como sacar del PIC lo que dije anteriormente 5 voltajes diferentes. 

Si a alguien se le ocurren mas cosas o quiere aportar ayuda específica sobre el tema le estaré eternamente agradecido, yo de momento sigo aquí intentándolo por mi cuenta. ^^.

saludos!


----------



## RUIZ13 (Ago 16, 2011)

Entendi en realidad poco porque en pwm puedes variar los tiempos y le da el voltage pero como eel nombre lo dice P (PULSOS) W (ANCHO) M (MODULACION) en teoria deberia de funcionar pero no te cacho bien la idea, ahora no he probado bien los tiempos porque esto se maneja por desbordamiento del tmr0 enn el pic programando laas interrupciones si me explicas bien el proyecto trataria de ayudarte aunque te repito mi problema es tiempo por el trabajo y 

saludos


----------



## xuintuic (Ago 16, 2011)

claro RUIZ, no me entiendes porque no me puedo explicar con algo que no entiendo...ejeje. Ahora mismo lo tengo hecho con la red r-2r y me funciona sorprendentemente perfecto, mejor de lo que pensaba, pero he gastado 16 patillas del PIC. 

Lo suyo sería hacerlo con el PWM que solo se gastan 2 patillas, pero es que yo soy relativamente nuevo y cuando empiezo a ver que si frecuencias...que si duty cycle...que si aprender a configurar el PIC...que valores necesita el filtro RC... me empieza a doler la cabeza.

Por eso como ahora mismo me funciona lo voy a dejar así, pero antes de hacer la PCB si me gustaría saber como se hace con el PWM. No creo que haga falta que entiendas mi proyecto, basta con que me digas como funciona el PWM (que he estado un rato largo leyendo sobre él y he sacado poco en claro) y que tengo que poner en el código en C del pic para sacar un voltaje entre 0v y 5v por el pin del PWM. 

Mi problema es como digo que no me he aprendido la relación entre frecuencia y voltaje por eso el PWM que trabaja con el ancho de onda según el duty cycle que se configure (o algo así) me desconcierta y ando más perdío que Hugo Chavez en el día del padre .

Gracias por el interés en ayudar. Saludos.


----------



## antiworldx (Ago 16, 2011)

Tan dificil es???







Facil, rapido, lo controlas con cualquier puerto de manera lineal, y sin tanto pleito. Ese DAC es mas comun que las galletas de animalitos y cuestan 2 obamas.


----------



## Chico3001 (Ago 16, 2011)

xuintuic dijo:


> claro RUIZ, no me entiendes porque no me puedo explicar con algo que no entiendo...ejeje. Ahora mismo lo tengo hecho con la red r-2r y me funciona sorprendentemente perfecto, mejor de lo que pensaba, pero he gastado 16 patillas del PIC.



Puedes usar latches tipo D para almacenar el dato o tambien enviar el dato serial a un registro de corrimiento 74LS161 y despues pasarlo a la red r-2r



xuintuic dijo:


> Por eso como ahora mismo me funciona lo voy a dejar así, pero antes de hacer la PCB si me gustaría saber como se hace con el PWM. No creo que haga falta que entiendas mi proyecto, basta con que me digas como funciona el PWM (que he estado un rato largo leyendo sobre él y he sacado poco en claro) y que tengo que poner en el código en C del pic para sacar un voltaje entre 0v y 5v por el pin del PWM.



Es simple, solo velo como un valor codificado en un ancho de pulso... cuando es cero la señal es tierra.. cuando es la mitad (50%) el tiempo que la señal permanece en 1 es identico al que la señal permanece en 0, y cuando es del 100% la señal siempre permanece en 1, despues esta cadena de 1s y 0s se envia a un capacitor donde se promedia, cuando es de 0% el capacitor no tiene carga y la salida sera 0, cuando es 1 el capacitor siempre esta cargado y permanece en 5V, y cuando es del 50% el capacitor solo se puede cargar a la mitad de su voltaje 2.5V


----------



## Psyco83 (Ago 16, 2011)

*xuintuic* te aseguro que es muy sencillo, incluso si revisas el datasheet del PIC18f4550 podrás ver que tiene 2 módulos CCP (Capture, Compare, PWM) solo tienes que configurarlo como PWM, la cantidad de bits a usar, la frecuencia y no me acuerdo que cosa más..... pero todo está en el datasheet.... y tendrás dos salidas que puedes usar en lo que deseas, leíste el documento del link que compartí? sé que no se aplica directamente al PIC pero tiene fórmulas y bastante información para poder usar el PWM como una salida analógica, en el PIC solo cargas el valor en un registro que me parece que es de 10 bits y te olvidas de estar pendiente porque el micro genera solito la señal, y si quieres variar el ciclo de trabajo del PWM y por lo tanto el voltaje de salida, cargas un nuevo valor al registro y listo y así sucesivamente...

Saludos


----------



## Kyrie (Ago 17, 2011)

Este tema lo he estado siguiendo ultimamente. Tienes que configurar el pwm a la maxima frecuencia posible y de ahi variar el DC, con un pic a 20 MHz y un pwm a 70 khz tienes unos 8 bits de resolucion, lo que da 1 o 2 mv por bit. lo que me dejo confundido es cuando empiezan a hablar de harmonicos, y decibelios para tal frecuencia y filtro, cuanto mas frecuencia creo que mejor

AN538 es un application note de microchip sobre este tema


----------



## xuintuic (Ago 23, 2011)

Muchas gracias a todos, aún me sorprende lo fácil que resultan las cosas cuando recibes un poco de ayuda de cracks como vosotros.

Ahora me estoy metiendo en camisa de once varas para crearme un driver de windows...eajeja, pero eso ya en otro foro....


----------

