# Cómo generar señales con un pic



## tomsander (Sep 18, 2009)

hola a todos!!!
me gustaria que me ayudaran a saver como puedo generar una señal cuadrada con  un pic, dicha señal cuadrada debera estar variando su amplitud de 1.6 a 6 volt, y ciclarse con incrementos de 0.01 y con frecuencia de 2kHz. si alguien pudiera decirme como hacerlo de manera que muy precisa lo agradeceria mucho, es importante que la onda cuadrada sea exacta en su amplitud, ya que para la aplicacion que la utilizare no puede por ningun motivo recibir un voltaje en cd, por que se arruina el instrumento. 

agradesco de antemano, espero su pronta respuesta


----------



## Chico3001 (Sep 18, 2009)

Bueno, con el PIC puedes generar la onda cuadrada de 0 a 5V y despues puedes "procesarla" para darle las caracteristicas que requieres usando amplificador operacionales....


----------



## tomsander (Sep 19, 2009)

la duda que tengo es como hacerle para para hacegurarme de que a amplitud de la onda cuadrada se mantenga en el valor que se desea, y si combiene mejor utilizar dac para poder variar cnmas precicion el voltaje en incremenos de 0.1, y si tene algunos ejemplos en donde se halla trabajado en es pues mucho mejr, el otro problema que tengo es la cominicacion con la pc, es decir para que me lo reconosca com dispositibo usb


----------



## Chico3001 (Sep 19, 2009)

Sip... puedes usar un DAC con una red R-2R para controlar el voltaje de salida... incluso usar el convertidor ADC para tener una retroalimentacion de voltaje y hacer una medicion confiable

En cuanto a la comunicacion USB ya hay un tema dedicado a eso.. lo puedes encontrar mirando en los temas destacados....


----------



## tomsander (Sep 23, 2009)

si alguin tiene algunos ejemplos de los cual pueda guirme para generar una onda cuadrada y a aprtr d ella generar un senoide, porfa, si pueden donarlo , me serian de mucha ayuda ya que tengo uns problemas de programcion,


----------



## tomsander (Sep 23, 2009)

hola, kiesiera que me ayudaran a generar una nda cuadrada de 2 khz de frecuencia cn la posiblidad de controlar la amplitud, 
este es un codigo que supuestamente deberia de generarme una onda cuadrada, pero no c en donde tenga io el problema que no me sale
la onda, pretendo utilizar un pic18f4550


```
#int_rtcc

interrupcion_timer0() 

{ 

if(input(pin_c3)==1) 
{ 

output_low(pin_c3); 

} 

else 

{ 

output_high(pin_c3); 

} 

set_rtcc(5); /*vuelvo a cargar el tmr0

he cambiado el 6 por un 5 para que sea más preciso*/ 

}



void main() 

{ 



set_tris_c(0x00); /*configuro el puerto c como salida

aquí tenías otro fallo, si pones 0xFF configuras el puerto como entrada*/ 



// he borrado varias líneas que no eran imprescindibles



setup_counters(RTCC_INTERNAL,RTCC_DIV_2|RTCC_8_BIT);

set_rtcc(5); /*cargo el tmr0 a este valor*/ 

ENABLE_INTERRUPTS(INT_RTCC); 

ENABLE_INTERRUPTS(GLOBAL); 

output_low(pin_c3); /*pongo el puerto de salida a 0 inicialmente*/ 



while (1) // añado un bucle sin fin porque de lo contrario el programa finaliza

   {}
```


----------



## monica15 (Abr 13, 2013)

tomsander dijo:


> hola a todos!!!
> me gustaria que me ayudaran a saver como puedo generar una señal cuadrada con  un pic, dicha señal cuadrada debera estar variando su amplitud de 1.6 a 6 volt, y ciclarse con incrementos de 0.01 y con frecuencia de 2kHz. si alguien pudiera decirme como hacerlo de manera que muy precisa lo agradeceria mucho, es importante que la onda cuadrada sea exacta en su amplitud, ya que para la aplicacion que la utilizare no puede por ningun motivo recibir un voltaje en cd, por que se arruina el instrumento.
> 
> agradesco de antemano, espero su pronta respuesta





hola que tal yo hice algo como eso pero con un pic16f84a
es sacar una señal cuadrada por RB3 y  el codigo lo hice en mplab
 te lo adjunto


----------



## pitoshky (Mar 26, 2014)

Hola gente, escribo para hacer una consulta sobre Mplab, a la hora de simular mi código necesito generar dos pulsos cuadrados (en Ra0 y Ra1) desfasados en 90° grados, no me manejo mucho con el uso de los estímulos, así que agradecería mucho su ayuda, desde ya les doy las gracias, saludos!


----------



## juan_g (Mar 26, 2014)

Hola, ¿qué tal?
No sé si lo querés programar en assembler o c, o en qué lenguaje...
La verdad es que hace bastante que no programo pic, pero te puedo dar una orientación de cómo lo encararía al problema.

Por empezar, te preguntaría si lo que querés hacer es dos trenes de pulsos periódicos en el tiempo, que estén desfasados uno respecto al otro en 90º, o si querés hacer dos pulsos únicos desfasados 90º uno respecto al otro. En todo caso, el planteo en cuanto a algoritmo no varía mucho (lo único que cambia es que uno reptite indefinidamente lo que el otro hace una sola vez).

Si lo que se quiere es hacer dos salidas de pulsos cuadrados periódicos sólo se necesitan dos niveles, el alto y el bajo (en tu caso calculo que será +Vcc y 0v).
Por otro lado, el que sean cuadrados significa que el tiempo que está en "1" es le mismo que el que está en "0" (apagado). Llamenos a este tiempo "t1".
Para que el desfasaje sea de 90º, uno debe estar "retrasado" respecto al otro en 1/4 de período (el período en este caso es 2*t1), o sea 2*t1/4 = t1/2 . Entonces, si la salida 1 se pone a "1" en el tiempo t=0, la salida 2 se pondrá a "1" en el tiempo t=t1/2. En el tiempo t=t1, la salida 1 debe apagarse y en el tiempo t=3*t1/2, se apaga la salida 2. Luego en el tiempo t=2*t1 se vuelve a encender la salida 1 y comienza el ciclo nuevamente.


- Enciendo salida 1
- Espero tiempo t1/2
- Enciendo salida 2
- Espero tiempo t1/2
- Apago salida 1
- Espero tiempo t1/2
- Apago salida 2
- Espero tiempo t1/2
- Vuelvo al inicio


Espero que se haya entendido.
Saludos!


----------



## pitoshky (Mar 26, 2014)

Hola juan_g, creo que no me explique bien, a todo esto, si se entiende lo que me explicaste pero no es lo que necesito , lo que necesito hacer es configurar la opción "stimulus" de MPLAB para simular dos trenes de pulsos que entren por rb0 y rb1 al micro y que estén desfasados en 90°, eso es lo que me tiene complicado u.u


----------

