Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

22/04/2013 #21

Avatar de anthony123

jimmyneutron dijo: Ver Mensaje
este es un generador de la onda seno con el pic16f877. espero les sirva.
ah incluye simulacion en proteus

Este código puede aplicarse con los 16F84 o 628 (con las modificaciones pertinentes, claro está)? Por que quiero generar una frecuencia de 5 a 60Hz para un variador.

Saludos!
19/06/2013 #22


Generar señal senoidal PIC 18F4550
Saludos amigo estoy verificando el programa y se ve muy bueno mañana dios mediante cargo el file .HEX en el f4550, y verifico seria bueno disponer de cuales son las patillas del PIC por donde sale la señal, o el esquema electronico ya que solo en los fil .rar no lo puede visualizar o esta en alguno de file, y se necesita de algun programa para verlos, agradesco su preciada ayuda.

Jhonny Aldana




turkomac dijo: Ver Mensaje
Hola , estoy haciendo un proyecto en el cual la primera fase es sacar dos ondas seno a traves de los puertos del microcontrolador PIC18 , estas ondas la genero con una tabla de valores de seno que hago en matlab y lo que hago sacarlas por los puertos y estos datos va hacia un DAC, este a su salida me estará generando la onda seno.

ADJUNTO el código de lo antes dicho. :

Código:
#include <18f4550.h>
#fuses hspll,mclr,nowdt,noprotect,nolvp,nodebug,usbdiv,pll3,cpudiv1,novregen,nopbaden
#use delay (clock=48000000)
#use standard_io(B)
#use standard_io(C)
#use standard_io(D)


int16 frecuencia=0;
int8 desbordes=0;
int seno[100]={77,82,86,91,96,101,105,109,114,118,122,126,129,133,136,
139,142,144,146,148,150,151,152,153,153,154,153,153,152,151,150,148,146,144,142,
139,136,133,129,126,122,118,114,109,105,101,96,91,86,82,77,72,67,62,58,53,49,44,
40,36,32,28,24,21,18,15,12,9,7,5,4,2,1,1,0,0,1,1,2,4,5,7,9,12,15,18,21,24,28,32,36,
40,44,49,53,58,62,67,72,77};

#int_rtcc
void rtcc_isr(){
        
        frecuencia=read_adc();        
        output_B(seno[desbordes]);
        output_d(seno[desbordes]);
        set_rtcc(frecuencia); 
        desbordes++;
        if(desbordes>=100)
        
        
                     {
                          desbordes = 0;
                        }   
  }

void main()
  {
     setup_adc_ports(all_analog);
     setup_adc(adc_clock_internal);
     set_adc_channel(0);  
     set_tris_b(0x00);
     set_tris_d(0x00);
     setup_counters(rtcc_internal, rtcc_div_4 | rtcc_8_bit);      
     enable_interrupts(int_rtcc);       
     enable_interrupts(global);
     set_rtcc(231);
     desbordes = 0;

   while(true)
   {
   
   }
   }
PREGUNTAS:

los valores de seno en lugar de generarlos por matlab , es posible generar una tabla o Lookup table dentro del mismo y de ahi separarlos en en valores impares y pares. para sacar posteriormente cada arreglo por cada DAC.

Con el esquema que pongo es posible modificar su frecuencia de cierto valor a cierto valor , como configuraria el pic para que este diera su maxima frecuencia posible de salida. tomando en cuenta que la frecuencia maxima de oscilacion del CPU segun microchip es de 48 mhz!
20/06/2013 #23


Hola yv5kg

En el archivo Gnerador3.rar que adjuntó turkomac, en su mensaje #7, trae una carpeta(Fólder) llamada Gnerador3 y dentro de ella hay varios archivos:
Generador1fase.DSN
Generador1fase.C
Estos son los importantes.
El que tiene la extensión .DSN se abre con ISIS de Proteus.
El que tiene la extensión .C se abre con el compilador C.

Abriendo el .DSN con ISIS de Proteus puedes magnificarlo para ver los números de las terminales.

Ojala puedas verlos en la imagen que te adjunto.

saludos
a sus ordenes
Imágenes Adjuntas
Tipo de Archivo: jpg Generador1fase.jpg (248,6 KB (Kilobytes), 265 visitas)
Archivos Adjuntos
Tipo de Archivo: zip Generador1fase.zip (19,2 KB (Kilobytes), 301 visitas)
30/06/2013 #24

Avatar de anthony123

En lugar de usar un conversor analógico digital, tengo pensado usar un 4017 con divisores de tensión en la salida por lo que tengo que sacar una frecuencia 10 veces superior a la necesaria por un puerto del PIC (ejemplo 50Hz para una salida de 5Hz).

Para todo esto he creado un arreglo de periodos para cargárselos al "delay_ms (periodo)"

output_high (salida);
delay_ms (periodo);
output_low (salida);
delay_ms (periodo);

pero tengo problemas con el bucle dado a que la idea es que pueda modificar los valores de periodo para hacer la senoidal variable. ¿Cómo podría hacer en este punto?


Saludos
28/07/2013 #25


caifan dijo: Ver Mensaje
Hola una ves en la escuela nos pidieron generar una señal senoidal con un pic, y lo logramos, usamos un pic 18f2550 y un dac I2C (PCF8591), Aqui les comparto el programa (en PICC) y la simulacion (en isis de proteus v7). el pic esta a 48 MHZ con el PLL con un cristal de 12 mhz. espero que a alguien le sea util

buenas amigo, me ha sido de gran ayuda tu programa pero tengo un problema, la señal que necesito generar debe sere de 400 Khz o por lo menos 200 Khz, pero no he podido hacerlo con tu programas, te agradecería tu colaboración
28/07/2013 #26

Avatar de seaarg

Sugiero una salida PWM de duty cycle variable conectada a un filtro pasabajos RC. Sencillo pero funcional.

Sino, una escalera r2r, donde usaran 8 pines del pic pero es tan simple de usar como escribir un valor en un puerto.

Todo dependera de la perfeccion que se requiera en la senoidal.
29/07/2013 #27


Un conversor digital análogo como el DAC0800 con un filtro pasabajas de orden 2 tipo bessel (revisa http://www.electro-tech-online.com/c...11/sloa088.pdf) es una solucion un tanto elaborada pero da buenisimos resultados.
30/07/2013 #28


Yo en una ocasion genere la onda empleando el DAC del PIC12F1822 para generar tonos DTMF, la onda senoidal la represente en 32 puntos. Pero la frecuencia mas alta era 1.633Khz y el tiempo de muestra era 1/(32*F) = 19.15uS. el PIC trabajaba a 16MHZ y el Tcy = 0.25uS.
Viendo tu caso reconstruir una senal de 200KHz en 32 puntos requiere tiempos de muestra de 0.15uS, lo que veo algo complicado en un PIC comun.
El AN655 de microchip explica los dos metodos ya mencionados PWM y resitencias R2R pero las frecuencias no superan los 4KHz.
Pienso que la solucion pasaria por implementar algun circuito VFO o tal vez un PIC DSP.
Saludos,.
10/10/2014 #29
Moderador general

Avatar de Fogonazo



Tema Cerrado
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.