desktop

Curso de programación de PIC en PICBasic Pro

Hola alguien hizo control de velocidad de un motor de 12VCC 100 RPM con HPWM , miis dudas son las sgts:

1: configurar el HPWM para el pin portd0 y portd1 puesto que los toma por defecto al portc le hize el cambio con el define pero no me sale


2:cuando le da run o inicio y se va ala rutina funciona viste, pero cuando tiene que volver a " inicio" no se apaga sigue generando pulsos , lo que hice fue poner en low esos pines pero sigue andando. Segun lei este comando es programado por hardware es decir genera el pwm y el pic puede hacer al mismo tiempo otaras funciones barbaro ,pero el tema es que nose como detenerlo. :unsure::unsure:
 

Adjuntos

  • hpwm dos motores de 12V -100 RPM.rar
    10.2 KB · Visitas: 75
Miren implemente el siguiente programa y circuito con proteus y microcode .Trata de una matriz de 5x7 donde aparece un muñeco que saluda con movimientos y programación sencilla.
He implementado el circuito pero el puerto a no me responde como salida digital ni para el 16f628a ni para el 16f877a quisiera saber si se trata de un error del microcode . Ya que en la hoja de datos dice que funcionan como entradas y salidas digitales o analogicas gracias.
 

Adjuntos

  • movmatrix.rar
    29.2 KB · Visitas: 79
Miren implemente el siguiente programa y circuito con proteus y microcode .Trata de una matriz de 5x7 donde aparece un muñeco que saluda con movimientos y programación sencilla.
He implementado el circuito pero el puerto a no me responde como salida digital ni para el 16f628a ni para el 16f877a quisiera saber si se trata de un error del microcode . Ya que en la hoja de datos dice que funcionan como entradas y salidas digitales o analogicas gracias.

Hola...verifica en la hoja de datos el puerto A en el pin A.4 es de colector abierto ese es tu problema.
Para la simulación lo puedes resolver del modo que te adjunto.

Saludos.

Ric.
 

Adjuntos

  • MovMatrix.zip
    16.4 KB · Visitas: 80
Última edición:
Hola alguien hizo control de velocidad de un motor de 12VCC 100 RPM con HPWM , miis dudas son las sgts:

1: configurar el HPWM para el pin portd0 y portd1 puesto que los toma por defecto al portc le hize el cambio con el define pero no me sale

Lee la hoja de datos del PIC en cuestión y el hardware esta donde lo pone le fabricante no donde uno quiera definirlo

2:cuando le da run o inicio y se va ala rutina funciona viste, pero cuando tiene que volver a " inicio" no se apaga sigue generando pulsos , lo que hice fue poner en low esos pines pero sigue andando. Segun lei este comando es programado por hardware es decir genera el pwm y el pic puede hacer al mismo tiempo otaras funciones barbaro ,pero el tema es que nose como detenerlo. :unsure::unsure:

Había errores de conexiones en pulsadores, revisa los limites que pueden tomar las variables por que se te desbordaran con resultados aleatorios en la operación, estaba mal la velocidad del reloj en el PIC en la simulación, etc, etc.Hay para seguir trabajando!!!

Saludos.

Ric.
 

Adjuntos

  • HPWM2Motores.zip
    18.4 KB · Visitas: 70
Última edición:
Hola a todos los adictos a la electrónica aquí adjunto archivos de circuitos que quisiera unificar comunicando serialmente 2 pic y visualizar las señales en matlab ademas deseo obtener mientras halla mas temperatura mas intensidad del foco gracias.
 

Adjuntos

  • circuitos y texto a leer.part1.rar
    3 MB · Visitas: 99
  • circuitos y texto a leer.part2.rar
    3 MB · Visitas: 89
  • circuitos y texto a leer.part3.rar
    922.5 KB · Visitas: 86
amigos me pueden decir cual es el problema que tiene esto, es que instalo mplab con el compilador pbp en windows xp y al compilar siempre me sale este error no se por que me pueden ayudar....

saludos
 

Adjuntos

  • Dibujo.jpg
    Dibujo.jpg
    102 KB · Visitas: 29
Hola a todos:El siguiente código sería útil a todos, si me ayudan a mejorarlo.Hasta donde esta corre bien, pero me falta lo siguiente:El tiempo de consigna se escribe en dos dígitos, temporizará de 01 a 99 seg.La velocidad consigna de dos dígitos del 01% al 99%El tiempo se graba en la EPROM interna en las variables t1 y t2 (digito 1 y 2) desde el tecladoLa velocidad se graba en la EPROM interna en las variables v1 y v2 (digito 1 y 2) desde el teclado.El problema es que no está en decimal, (me parece que está en ASCII).¿Cómo convierto los valores (parecido a concatenar en EXCEL) de dos variables a 2 dígitos y en decimal?Ejemplo:T1=0T2=9T=09 (minutos)Les envío el código y la simulación, en la simulación no olviden optar por la opción 2 para poner el set de tiempo y velocidad y luego escoger iniciar (con la tecla 1)Saludos,
De antemano muchas gracias, especialmente al señor Moderador
D@rkbytes que incondicionalmente me ofreció su ayuda anteriormente.
 

Adjuntos

  • mod3.rar
    37.5 KB · Visitas: 103
El problema es que no está en decimal, (me parece que está en ASCII)[/SIZE]
Trabaja el teclado con números enteros, por ejemplo tecla = 1 no tecla = "1"
Y para poder mostrar el valor de las variables en la pantalla debes usar #t1 ó Dec t1
¿Cómo convierto los valores (parecido a concatenar en EXCEL) de dos variables a 2 dígitos y en decimal?Ejemplo:T1=0T2=9T=09 (minutos)
Tan solo tienes que sumarlas.
Si quieres mostrar dos digitos, usa Dec2
Suerte.
 
Última edición:
Estimados amigos:
Continuando y mejorando con mi código, (con ayuda del Sr. Moderador) conseguí las siguientes mejoras:
· Logré introducir variables de tiempo desde el teclado
· Logre mostrar las nuevas variables desde el teclado
· Logre temporizar en minutos según la variable introducida desde el teclado, enciende un led un tiempo en minutos desde el teclado.Ahora se me presenta el siguiente problema:…Donde pongo el siguiente código (corresponde a un motor PAP) que se ejecute mientras el led esté encendido y pare cuando se apague, sin perturbar el tiempo de temporización.El código del motor es.
Código:
giro:
for x = 1 to 6 'Repite 6 veces la parte comprendida entre' FOR y NEXT
portc= %1100
pause v
portc= %0110
pause v
portc= %0011
pause v
portc= %1001
pause v
NEXT
pause 100
for x =1 to 6
portc= %1001
pause v
portc= %0011
pause v
portc= %0110
pause v
portc= %1100
pause v
next
pause 100
GOTO giro:

Otra consulta:
si hago t=99
u=(1/t)*1000
u=10.10101010
el resultado me da con decimales
¿tengo que usar algún artificio para obtener la parte entera (como lo hace int o entero en excel) o PBP sobreentenderá y trabajará con la parte entera?
 

Adjuntos

  • mod6.rar
    41.8 KB · Visitas: 60
Última edición por un moderador:
Ahora se me presenta el siguiente problema:…Donde pongo el siguiente código (corresponde a un motor PAP) que se ejecute mientras el led esté encendido y pare cuando se apague, sin perturbar el tiempo de temporización.
Para hacer eso, tendrás que hacer uso de interrupciones, porque las pausas congelaran el proceso.
Puedes hacer uso del TMR1 para generar los tiempos mientras corre tu programa.
Algo así como en este ejemplo Temporizador con TMR1
Otra consulta:
si hago t=99
u=(1/t)*1000
u=10.10101010
el resultado me da con decimales
¿tengo que usar algún artificio para obtener la parte entera (como lo hace int o entero en excel) o PBP sobreentenderá y trabajará con la parte entera?
Con PicBasic Pro no podrás obtener el resultado de esa formula porque PBP no trabaja con punto flotante.
El resultado que obtendrás con PicBasic Pro será u = 0
Posiblemente lo puedas hacer con este otro ejemplo Ejemplo FP.bas
Otra opción más recomendable es migrar a Proton, con ese programa si se puede manejar punto flotante.
Con Proton el resultado si será u = 10.101

Suerte.
 
Última edición:
Hola a todos.
Escribo este primer mensaje como presentación en este magnifico foro.
Estoy haciendo un generador de RF mezcla DDS y VCO's. Utilizare el DDS un ad9850 hasta los 20MHz y los VCO hasta los 200MHz. La parte de los VCO la tengo terminada, y la parte del DDS estoy un poco estancado. Tengo funcionando el AD9850 y un codificador con el siguiente código:
Código:
DEFINE  LCD_DREG        PORTA        ' Puerto de Datos del PIC
DEFINE  LCD_DBIT        0            ' Empieza en PORTA.0 hasta PORTA.3
DEFINE  LCD_RSREG       PORTA
DEFINE  LCD_RSBIT       4             ' Posicion de la linea RS
DEFINE  LCD_EREG        PORTA
DEFINE  LCD_EBIT        5             ' Posicion de la linea E
DEFINE  LCD_BITS        4             ' 4-bit data bus 
DEFINE  LCD_LINES       2             ' LCD lineas
DEFINE  LCD_COMMANDUS   1000         ' Retardo Comandos 
DEFINE  LCD_DATAUS      50           ' Retardo Datos 

DEFINE  OSC 48                        ' Especifica reloj

'_________________________________________________
'   Configuracion  registros PIC   
'_________________________________________________

TRISA  = %00000000           ' Configura in/out  0=salida
TRISB  = %11111111           ' Configura in/out  1=entrada
TRISC  = %00110000           ' Configura in/out   
PORTA   = 0                     
PORTB   = 0
PORTC   = 0
LATA    = 0                  ' Registros Latch
LATB    = 0
LATC    = 0
ADCON0  = $00                ' Deshabilita ADC
ADCON1  = $0F                ' Pines ADC todos digitales
CMCON   = $07                ' Comparador deshabilitado
UCON    = %00000000          ' Deshabilita USB y habilita RC4 e RC5
UCFG.3  = 1                  ' Deshabilita USB Transceiver
INTCON2.7=0                  ' Habilita R de pull-up
'T2CON   = %00000100          ' Prescaler=1 TMR2=ON
PORTA   = 0
PORTB   = 0
PORTC   = 0    

INTCON.7 = 1                 ' Habilita interrupciones globales GIE=1
INTCON.6 = 1                 ' Habilita interrupciones perifericas PEIE=1   
PIE1.5 = 1                   ' Habilita interrupciones recepciones RCIE
' On Interrupt Goto RxService  ' Asignar interrupción

'___________________________________
'   Simbolos del programa
'___________________________________
symbol EA = portc.4             ' Encoder A
symbol EB = portc.5             ' Encoder B
symbol P6 = portb.6             ' Menu
symbol P7 = portb.7             ' 
symbol P0 = portb.0             ' 

'___________________________________
'   Variables del programa   
'___________________________________
  
ValorSinto    VAR   LONG     ' Palabra de sintonia
Frecuencia    var   LONG     ' Valor frecuencia
Control       var   BYTE     ' Registro control DDS
Dato_pin      var   PortC.0  ' Pin de Datos
Reloj_pin     var   PortC.2  ' Pin de Reloj
Carga_Pin     var   PortC.1  ' Pin de actualizacion del DDS
Enc           var   byte     ' Lectura encoder
Ent_Parte     var   word     ' Parte entera division    
Fra_Parte     var   word     ' Parte decimal division

'___________________________________
'   Titulo del LCD en PowerON
'___________________________________

    pause   200
    lcdout  $FE,1, $FE,2     'Limpia LCD y va primera linea
    LCDOUT  "CCT2013 V1.0" 

'___________________________________
'   Inicializa variables   
'___________________________________

    Control=0               ' Ajuste inicial variable modificable       
    Frecuencia=5000000      ' Ajusta frecuenza inicial
    Fre_Rango=2             ' Rango inicial
    Fre_Desplaza=0          ' Modifica simbolo mas significativo
    Carga_Pin= 1    
    pause 2000
    gosub Calcular
    gosub Enviar_DDS
    
'___________________________________
'   Principal
'___________________________________   

Retorno_Menu
    Pause 10
    if p6=0 then Retorno_Menu
    call LCD_Refresco
    
Principal
    if p6=0 then goto Menu
    if ea=0 then goto Enc_Giro
goto principal 

Enc_Giro 
    if EB=0 then Enc_Inc
    
Enc_Dec
    
    Frecuencia = Frecuencia-1 
    GOTO    Enc_Confirm

Enc_Inc    
    Frecuencia = Frecuencia+1  
    goto    Enc_Confirm
    
Enc_Confirm
    if frecuencia>20000000 then frecuencia=20000000 
    if Frecuencia<400000 then Frecuencia=400000    
    call LCD_Refresco
    gosub Calcular
    gosub Enviar_DDS         
       
Enc_Complete    
    if EA=1 and EB=1 then  Principal        
    goto    Enc_Complete   
goto Principal

'___________________________________
'   Gestion pulsadores
'___________________________________   

'___________________________________
'   Gestiona Menus
'___________________________________   
 menu

 goto Principal
'___________________________________
'   Subprograma de calibración
'___________________________________   





'___________________________________
'   Actualizacion LCD
'___________________________________   

LCD_Refresco
    
    lcdout $FE,1, $FE,2
    lcdout "F: "
    
    if frecuencia < 1000000 then
        Ent_Parte = Frecuencia/1000
        Fra_Parte = Frecuencia//1000         
        lcdout #Ent_Parte, "."
        if Fra_parte < 100 then lcdout "0"
        if Fra_Parte < 10 then lcdout "0"
        lcdout #Fra_Parte, "KHz"
    else
        Ent_Parte = Frecuencia/1000000
        Fra_Parte = Frecuencia//1000000         
        lcdout #Ent_Parte, "."
        if Fra_parte < 100 then lcdout "0"
        if Fra_Parte < 10 then lcdout "0"
        lcdout #Fra_Parte, "MHz"
    endif
return

'___________________________________
'   Actualiza frecuencia del DDS
'___________________________________ 

Calcular

    ValorSinto = Frecuencia ** 2251800         

return

'___________________________________
'   Transferir al DDS
'___________________________________   

Enviar_DDS
    SHIFTOUT Dato_Pin, Reloj_pin, 0,[ValorSinto.BYTE0, ValorSinto.BYTE1, ValorSinto.BYTE2, ValorSinto.BYTE3, Control]
    Carga_Pin = 1
    pauseus 10
    Carga_Pin = 0
    pause 1000
return

Utilizo un PIC de la serie 18 para utilizar variables Long
Pero me gustaría ponerle un teclado matricial 4x4 para poder introducir la frecuencia. Por ejemplo escribir "4566000MHz". Me gustaría hacer que tenga barrido, introduciendo la frecuencia de inicio, la frecuencia final y los incrementos de frecuencia.
Todas las ideas serán bienvenidas.
 
Última edición por un moderador:
hola a todos. aquí desparchado sin nada que hacer me dedique a realizar una matriz para adorno de mi banco de trabajo y haciendo pruebas hice 2 programitas uno para una figura fija y otro para una móvil pero: al compilar la fija funciona perfectamente y al compilar la móvil el compilador no hace nada y genera el asm pero no el hex y se queda bloqueado incluso para que funcione de nuevo debo reiniciar el pc como sí se tratara de un virus:cabezon:, sera que alguien me puede ayudar echándole un ojito a mi proyecto? a ver sí puedo hacer funcionar la figura móvil? aquí les subo los archivos para que los vean les agradezco de antemano su ayuda
 

Adjuntos

  • figura fija 16f873a.rar
    17 KB · Visitas: 72
Última edición:
Hola a todos.
Escribo este primer mensaje como presentación en este magnifico foro.
Estoy haciendo un generador de RF mezcla DDS y VCO's. Utilizare el DDS un ad9850 hasta los 20MHz y los VCO hasta los 200MHz. La parte de los VCO la tengo terminada, y la parte del DDS estoy un poco estancado. Tengo funcionando el AD9850 y un codificador con el siguiente código:
Código:
DEFINE  LCD_DREG        PORTA        ' Puerto de Datos del PIC
DEFINE  LCD_DBIT        0            ' Empieza en PORTA.0 hasta PORTA.3
DEFINE  LCD_RSREG       PORTA
DEFINE  LCD_RSBIT       4             ' Posicion de la linea RS
DEFINE  LCD_EREG        PORTA
DEFINE  LCD_EBIT        5             ' Posicion de la linea E
DEFINE  LCD_BITS        4             ' 4-bit data bus 
DEFINE  LCD_LINES       2             ' LCD lineas
DEFINE  LCD_COMMANDUS   1000         ' Retardo Comandos 
DEFINE  LCD_DATAUS      50           ' Retardo Datos 

DEFINE  OSC 48                        ' Especifica reloj

'_________________________________________________
'   Configuracion  registros PIC   
'_________________________________________________

TRISA  = %00000000           ' Configura in/out  0=salida
TRISB  = %11111111           ' Configura in/out  1=entrada
TRISC  = %00110000           ' Configura in/out   
PORTA   = 0                     
PORTB   = 0
PORTC   = 0
LATA    = 0                  ' Registros Latch
LATB    = 0
LATC    = 0
ADCON0  = $00                ' Deshabilita ADC
ADCON1  = $0F                ' Pines ADC todos digitales
CMCON   = $07                ' Comparador deshabilitado
UCON    = %00000000          ' Deshabilita USB y habilita RC4 e RC5
UCFG.3  = 1                  ' Deshabilita USB Transceiver
INTCON2.7=0                  ' Habilita R de pull-up
'T2CON   = %00000100          ' Prescaler=1 TMR2=ON
PORTA   = 0
PORTB   = 0
PORTC   = 0    

INTCON.7 = 1                 ' Habilita interrupciones globales GIE=1
INTCON.6 = 1                 ' Habilita interrupciones perifericas PEIE=1   
PIE1.5 = 1                   ' Habilita interrupciones recepciones RCIE
' On Interrupt Goto RxService  ' Asignar interrupción

'___________________________________
'   Simbolos del programa
'___________________________________
symbol EA = portc.4             ' Encoder A
symbol EB = portc.5             ' Encoder B
symbol P6 = portb.6             ' Menu
symbol P7 = portb.7             ' 
symbol P0 = portb.0             ' 

'___________________________________
'   Variables del programa   
'___________________________________
  
ValorSinto    VAR   LONG     ' Palabra de sintonia
Frecuencia    var   LONG     ' Valor frecuencia
Control       var   BYTE     ' Registro control DDS
Dato_pin      var   PortC.0  ' Pin de Datos
Reloj_pin     var   PortC.2  ' Pin de Reloj
Carga_Pin     var   PortC.1  ' Pin de actualizacion del DDS
Enc           var   byte     ' Lectura encoder
Ent_Parte     var   word     ' Parte entera division    
Fra_Parte     var   word     ' Parte decimal division

'___________________________________
'   Titulo del LCD en PowerON
'___________________________________

    pause   200
    lcdout  $FE,1, $FE,2     'Limpia LCD y va primera linea
    LCDOUT  "CCT2013 V1.0" 

'___________________________________
'   Inicializa variables   
'___________________________________

    Control=0               ' Ajuste inicial variable modificable       
    Frecuencia=5000000      ' Ajusta frecuenza inicial
    Fre_Rango=2             ' Rango inicial
    Fre_Desplaza=0          ' Modifica simbolo mas significativo
    Carga_Pin= 1    
    pause 2000
    gosub Calcular
    gosub Enviar_DDS
    
'___________________________________
'   Principal
'___________________________________   

Retorno_Menu
    Pause 10
    if p6=0 then Retorno_Menu
    call LCD_Refresco
    
Principal
    if p6=0 then goto Menu
    if ea=0 then goto Enc_Giro
goto principal 

Enc_Giro 
    if EB=0 then Enc_Inc
    
Enc_Dec
    
    Frecuencia = Frecuencia-1 
    GOTO    Enc_Confirm

Enc_Inc    
    Frecuencia = Frecuencia+1  
    goto    Enc_Confirm
    
Enc_Confirm
    if frecuencia>20000000 then frecuencia=20000000 
    if Frecuencia<400000 then Frecuencia=400000    
    call LCD_Refresco
    gosub Calcular
    gosub Enviar_DDS         
       
Enc_Complete    
    if EA=1 and EB=1 then  Principal        
    goto    Enc_Complete   
goto Principal

'___________________________________
'   Gestion pulsadores
'___________________________________   

'___________________________________
'   Gestiona Menus
'___________________________________   
 menu

 goto Principal
'___________________________________
'   Subprograma de calibración
'___________________________________   





'___________________________________
'   Actualizacion LCD
'___________________________________   

LCD_Refresco
    
    lcdout $FE,1, $FE,2
    lcdout "F: "
    
    if frecuencia < 1000000 then
        Ent_Parte = Frecuencia/1000
        Fra_Parte = Frecuencia//1000         
        lcdout #Ent_Parte, "."
        if Fra_parte < 100 then lcdout "0"
        if Fra_Parte < 10 then lcdout "0"
        lcdout #Fra_Parte, "KHz"
    else
        Ent_Parte = Frecuencia/1000000
        Fra_Parte = Frecuencia//1000000         
        lcdout #Ent_Parte, "."
        if Fra_parte < 100 then lcdout "0"
        if Fra_Parte < 10 then lcdout "0"
        lcdout #Fra_Parte, "MHz"
    endif
return

'___________________________________
'   Actualiza frecuencia del DDS
'___________________________________ 

Calcular

    ValorSinto = Frecuencia ** 2251800         

return

'___________________________________
'   Transferir al DDS
'___________________________________   

Enviar_DDS
    SHIFTOUT Dato_Pin, Reloj_pin, 0,[ValorSinto.BYTE0, ValorSinto.BYTE1, ValorSinto.BYTE2, ValorSinto.BYTE3, Control]
    Carga_Pin = 1
    pauseus 10
    Carga_Pin = 0
    pause 1000
return
Utilizo un PIC de la serie 18 para utilizar variables Long
Pero me gustaría ponerle un teclado matricial 4x4 para poder introducir la frecuencia. Por ejemplo escribir "4566000MHz". Me gustaría hacer que tenga barrido, introduciendo la frecuencia de inicio, la frecuencia final y los incrementos de frecuencia.
Todas las ideas serán bienvenidas.

Hola...Bienvenido al foro y yo estuve hace tiempo pensando en un proyecto similar pero por aquí se hace muy difícil conseguir en el mercado local los materiales necesarios e imposible importarlos...¿que compilador estas usando? por que ni el Proton ni el PBP (al menos las versiones que yo tengo) reconocen la variable definidas como LONG.
Lo del teclado deberías dejar el puerto B libre y allí colocarlo.
Saludos.

Ric.
 
hola a todos. aquí desparchado sin nada que hacer me dedique a realizar una matriz para adorno de mi banco de trabajo y haciendo pruebas hice 2 programitas uno para una figura fija y otro para una móvil pero: al compilar la fija funciona perfectamente y al compilar la móvil el compilador no hace nada y genera el asm pero no el hex y se queda bloqueado incluso para que funcione de nuevo debo reiniciar el pc como sí se tratara de un virus:cabezon:, sera que alguien me puede ayudar echándole un ojito a mi proyecto? a ver sí puedo hacer funcionar la figura móvil? aquí les subo los archivos para que los vean les agradezco de antemano su ayuda

Hola compañero no veo ningún problema lo único que hice fue apagar todos los fuses y colocar el master clear a 5v es como una carita feliz pero no se mueve lo que hace es como si estuviera hablando o algo así, prueba cambiando eso y me avisas
 
Hola...Bienvenido al foro y yo estuve hace tiempo pensando en un proyecto similar pero por aquí se hace muy difícil conseguir en el mercado local los materiales necesarios e imposible importarlos...¿que compilador estas usando? por que ni el Proton ni el PBP (al menos las versiones que yo tengo) reconocen la variable definidas como LONG.
Lo del teclado deberías dejar el puerto B libre y allí colocarlo.
Saludos.

Ric.
La version del PBP es la 2.60. A partir de esta version puedes declarar variables LONG de 32 bits, siempre que utilizes PIC de la serie 18. La version del Microcode Studio es la 4.0.0.0, y en opciones del compilador tienes que marcar la casilla "use PBPL".
Los materiales los consigo por ebay.
La parte de 20MHz a 200MHz la tengo hecha y funcionando con 4 osciladores (2 VCO de micro-circuits (POS200 y POS100 comprados por internet en una tienda de Australia), y 2 VCO hechos con transistores fet. La parte de 400KHz a 20MHz es la que voy hacer con un modulo DDS AD9850 comprado en ebay por 3€. Luego cuando pase de 20MHz quiero utilizar el DDS como fuente para el PLL y pilotar los otros VCO. Tengo tambien un nivelador de amplitud funcionando perfectamente que conecto a las salidas del DDS y VCO's. Me falta por hacer un amplificador de banda ancha, un atenuador y un medidor de la potencia de la señal.
El teclado lo tengo en el portB, pero no consigo que me funcione bien. Realmente lo que quiero es introducir cualquier numero entre 1 y 200000000, que me lo vaya mostrando en el LCD y cuando pulse por ejemplo "#" que me lo introduzca en la variable "frecuencia".
Piensa que cuando ulitize la funcion de "sweep" (barrido), tengo que introducir 3 frecuencias. A saber: Inicial, Final e Incremento. Tambien quiero poner 2 barridos con frecuencias centrales de 455KHz y 10,7MHz para ajustar los filtros de las FI.
Si estas interesado puedo enviarte mas informacion, aunque la tengo todavia como borrador, y los link donde he comprado las cosas.
Cristobal
 
La version del PBP es la 2.60. A partir de esta version puedes declarar variables LONG de 32 bits, siempre que utilizes PIC de la serie 18. La version del Microcode Studio es la 4.0.0.0, y en opciones del compilador tienes que marcar la casilla "use PBPL".
Los materiales los consigo por ebay.
La parte de 20MHz a 200MHz la tengo hecha y funcionando con 4 osciladores (2 VCO de micro-circuits (POS200 y POS100 comprados por internet en una tienda de Australia), y 2 VCO hechos con transistores fet. La parte de 400KHz a 20MHz es la que voy hacer con un modulo DDS AD9850 comprado en ebay por 3€. Luego cuando pase de 20MHz quiero utilizar el DDS como fuente para el PLL y pilotar los otros VCO. Tengo tambien un nivelador de amplitud funcionando perfectamente que conecto a las salidas del DDS y VCO's. Me falta por hacer un amplificador de banda ancha, un atenuador y un medidor de la potencia de la señal.
El teclado lo tengo en el portB, pero no consigo que me funcione bien. Realmente lo que quiero es introducir cualquier numero entre 1 y 200000000, que me lo vaya mostrando en el LCD y cuando pulse por ejemplo "#" que me lo introduzca en la variable "frecuencia".
Piensa que cuando ulitize la funcion de "sweep" (barrido), tengo que introducir 3 frecuencias. A saber: Inicial, Final e Incremento. Tambien quiero poner 2 barridos con frecuencias centrales de 455KHz y 10,7MHz para ajustar los filtros de las FI.
Si estas interesado puedo enviarte mas informacion, aunque la tengo todavia como borrador, y los link donde he comprado las cosas.
Cristobal

Ok me faltaba lo de la casilla "PBPL" ...te sugiero que pases por aquí (https://www.google.com/url?q=https:...ds-cse&usg=AFQjCNGSuhpCArWCM2eylDGieBx7LF3HeQ ) donde hay un atenuador de RF en distintas versiones que quizás te interese. Entiendo la forma y disponibilidad de materiales desde donde tú resides pero NO es lo mismo desde aquí. Por otra parte en este momento en particular ya no me seria de mucha utilidad mas allá del ejercicio de "hacerlo".
En este mismo hilo hay algunos ejemplos de PBP y el uso de teclado que podrías revisar...utiliza el buscador del foro que es una herramienta invaluable. Tal ves para el amplificador de banda ancha puedas usar algún MMIC tipo MAR X(MAR4,5,6,7,etc).
Saludos.

Ric.
 
Atrás
Arriba