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

Temas similares

02/11/2016 #661
Moderador

Avatar de D@rkbytes

Jose1306 dijo: Ver Mensaje
Intenté leer 2 puertos por medio de la configuración A/D que me daba la hoja de datos pero me devuelve un error en la simulación,
(Adjunto una foto con el error) pero me lee perfectamente los valores del canal 12 y el 5.
Las advertencias son porque no estás seleccionando los canales adecuadamente.
Si obtienes lecturas puede ser porque estás usando un simulador.
Jose1306 dijo: Ver Mensaje
¿Se puede utilizar mas de un canal A/D a la vez?
Sí, puedes usar todos los conversores disponibles seleccionando qué canal se usará.
Jose1306 dijo: Ver Mensaje
¿Cómo se puede configurar eso?
Con el registro ADCON0

Jose1306 dijo: Ver Mensaje
¿A que se debe ese error?
No son errores, son advertencias.
Cuando se genera un error el simulador deja de funcionar.

Así debe ser el programa para usar los canales 5 y 12:
Código PHP:
Inicio:
    
Dim Valor_ADC1    As Word
    Dim valor_ADC2    
As Word
     
    
    OSCCON 
0b01100000
    
    
While OSCCONbits_IOFS 0       Esperar hasta que el oscilador interno sea estable.
        
Nop
    Wend
    
    ADCON2 
0b10000011             Resultado de la conversión con justificación a la derecha.
 
    
Cls Limpia o inicializa la pantalla.

Programa:
    
ADCON1 0b00000000             Configurar el conversor para leer todos los canales.
    
ADCON0 0b00010100             Activar el canal 5
    
    Valor_ADC1 
ADIn 5             Leer el resultado de la conversión.  
    
    While 
ADCON0bits_GO 1         Esperar a que esté lista la conversión.
        
Nop
    Wend      

    ADCON0 
0b00110000             Activar el canal 12
    
    valor_ADC2 
ADIn 12            Leer el resultado de la conversión.  
    
    While 
ADCON0bits_GO 1         Esperar a que esté lista la conversión.
        
Nop
    Wend 
    
    ADCON1 
0x0F                   Deshabilitar los conversores AD.     
    
    Print 
At 1,1"Canal 05: "Dec4 Valor_ADC1
    
Print At 2,1"Canal 12: "Dec4 valor_ADC2
    
    DelayMS 50                      
Éste retardo se puede omitir.
    
    GoTo 
Programa
    
    End 
03/11/2016 #662


Perfecto ! Muchas gracias D@rkbytes !!
27/01/2017 #663


Hola a todos, hace un tiempo hize un programa en proton de un temporizador de 6 rangos, este funciona perfecto, le intento agregar un pulsador para que active un relay y asignar una potencia en cada etapa del mismo la cual se visualiza con un led en cada estado del relay, en la simulacion funciona bien, arme esta parte en protoboard y la primera vez cambia el relay pero se apaga en segundos, despues se vuelve erratica la funcion del pulsador y el apagado del relay persiste, no se que estoy haciendo mal?????? podria alguien por favor, revisar esta parte del codigo (linea 110, funcion del pulsador) de antemano gracias¡
Archivos Adjuntos
Tipo de Archivo: rar rangos.rar (28,1 KB (Kilobytes), 12 visitas)
28/01/2017 #664
Moderador

Avatar de D@rkbytes

Verifica si con los cambios que realicé al programa, ya funciona correctamente, o al menos un poco mejor.
Archivos Adjuntos
Tipo de Archivo: rar rangos.rar (28,3 KB (Kilobytes), 13 visitas)
29/01/2017 #665


Hola D@rkbytes, mejoro notablemente el programa, sobre todo la funcion del pulsador de cambio, se estabilizo... nunca habia usado el comando button y me parece que es mas estable que if- then....solo tuve que cambiar los valores de delay-rate y obtuve la respuesta que deseaba, te agradesco tomes tu tiempo para compartir tus conocimientos, ! Muchas gracias D@rkbytes !!
29/01/2017 #666
Moderador

Avatar de D@rkbytes

Pablo Tapia dijo: Ver Mensaje
Nunca había usado el comando Button y me parece que es mas estable que if - then.
Sí, así es, ya que produce un anti rebote que mejora las condiciones de contacto del pulsador.

Acabo de ver que tuve un error en las variables para Button.
Las declaré pero sólo usé B0 en todas las comprobaciones.
Eso provoca que no se genere el bucle de comprobación del pulsador.

Actualiza el programa por el siguiente:
Código PHP:
Ver_Rango:  ; Bucle para visualizar el contador.
    
Button P_Mas0255255B00Menos     Verificar si se ha pulsado P_Mas
    Inc Rango   
Incrementar variable "Rango"
    
If Rango 6 Then Rango 0
    GoSub Visualizar
Menos
:                 
    
Button P_Menos0255255B10Enter   Verificar si se ha pulsado P_Menos
    Dec Rango   
Decrementar variable "Rango"
    
If Rango 0 Then Rango 6
    GoSub Visualizar
Enter
:
    
Button P_Enter0255255B20Cambiar Verificar si se ha pulsado P_Enter
    
GoTo Temporizador
Cambiar
:
    
Button P_Cambio0255255B30Salir  Verificar si se ha pulsado P_Enter
    
If Cambio 0 Then
        Cambio 
1
        High Relay
    
Else
        
Cambio 0
        Low Relay
    End 
If
Salir:
    
GoSub Visualizar
    
GoTo Ver_Rango 
Saludos.
30/01/2017 #667


Hola D@rkbytes, buen dia... si, lo note y compile con esos cambios, tambien la declaracion del pull up interno, el compilador me marcaba un aviso (declaracion no reconocida, "en ensamblador") asi que la corregi y pues funciono bien.... de nueva cuenta, gracias por tu ayuda, Salu2
23/03/2017 #668


hola como están, muy bueno este post, para aprender a programar pic en basic , mi consuta es que, me descargue proton IDE SE y no me reconoce el pic 18f4550 cuando lo declaro, por ello consulto que version de proton IDE es la necesaria ? y donde podria descargarla, el post esta un poco inactivo, pero me atrevo a consultar
23/03/2017 #669
Moderador

Avatar de D@rkbytes

Necesitas ser usuario registrado para poder tener acceso a otro tipo de PICs.
Descarga, registro y actualizaciones: Proton Development Suite
23/03/2017 #670


gracias amigo ya logre conseguirlo , intente descargarlo desde hay, pero sin resultado, no pude descargarlo, a lo mejor era mi Internet que es muy lento :/ , mil gracias de nuevo
25/05/2017 #671


mecatrodatos dijo: Ver Mensaje
Que tal amigos anexo la primera parte del tutorial del manejo de proton de 10 partes.
Queridisimo Mecatrodatos, pasaron 7 años desde que enviaste ese comentario, no se si leeras esta cita jajaja Ojala que si ... Estuve rastreando todas las partes y pude descargar hasta la parte 6, me faltarian las 4 restantes. Por favor, ¿Me las podrìas facilitar? desde ya muchas gracias. Y también gracias por iluminar con estos aportes, me sirvieron de mucho!
Hace 4 Semanas #672


Se que el grupo esta inactivo. Pero sino es así, necesito una ayuda o un poco mas informacion de usar el PWM... No el HPWM... O que me aconsejar para varial la luz de un LED? O un motor DC?... He probado usar PWM PORTB.0,150,255 y nada....
Hace 4 Semanas #673
Moderador

Avatar de D@rkbytes

Es mejor usar PWM por hardware (Instrucción HPWM) que por software. (Instrucción PWM)
Si quieres variar la intensidad de un LED, necesitas una variable que modifique el parámetro "Duty"

Parámetros de la instrucción PWM:
PWM Pin, Duty, Cycles

El problema con la instrucción PWM es que únicamente genera pulsos determinados por el parámetro "Cycles"
Por lo tanto, esa instrucción debe estar llamándose constantemente para mantener los pulsos y que se muestren cambios en la intensidad del LED cuando cambie el ciclo activo. "Duty"

Con HPWM no sucede eso, ya que al usarse el módulo CCP, siempre se estará generando PWM.
En este caso, lo único que se tiene que modificar es el parámetro "Dutycycle" (Usando una variable)

Parámetros de HPWM:
HPWM Channel, Dutycycle, Frequency
Hace 4 Semanas #674


D@rkbytes dijo: Ver Mensaje
Con HPWM no sucede eso, ya que al usarse el módulo CCP, siempre se estará generando PWM.
En este caso, lo único que se tiene que modificar es el parámetro "Dutycycle" (Usando una variable)

Parámetros de HPWM:
HPWM Channel, Dutycycle, Frequency
Hola Darkbytes. Quería saber, si en este caso la función HPWM tiene que esperar hasta que el programa pase por la variable que controla el Dutycycle para que haya algún cambio a la salida. Gracias.
Hace 4 Semanas #675
Moderador

Avatar de D@rkbytes

Así es, porque esta instrucción necesita parámetros que únicamente son modificados cuando se invoca.
Sin embargo, mantiene los pulsos constantes, contrariamente a la instrucción PWM.
Hace 4 Semanas #676


D@rkbytes dijo: Ver Mensaje
Es mejor usar PWM por hardware (Instrucción HPWM) que por software. (Instrucción PWM)
Si quieres variar la intensidad de un LED, necesitas una variable que modifique el parámetro "Duty"

Parámetros de la instrucción PWM:
PWM Pin, Duty, Cycles

El problema con la instrucción PWM es que únicamente genera pulsos determinados por el parámetro "Cycles"
Por lo tanto, esa instrucción debe estar llamándose constantemente para mantener los pulsos y que se muestren cambios en la intensidad del LED cuando cambie el ciclo activo. "Duty"

Con HPWM no sucede eso, ya que al usarse el módulo CCP, siempre se estará generando PWM.
En este caso, lo único que se tiene que modificar es el parámetro "Dutycycle" (Usando una variable)

Parámetros de HPWM:
HPWM Channel, Dutycycle, Frequency

Me anduvo bien el PWM, no tengo problema con esto... Pero hay diferencia con HPWM.... Como se usa? Me podrias pasar un ejemplo?, con cualquiera... LED o MOTORDC...


Por que la parte de canal, no se que canal se refiere...
Hace 4 Semanas #677
Moderador

Avatar de D@rkbytes

El uso de todas las instrucciones se encuentra en la ayuda de Proton.
También se incluyen ejemplos en la carpeta PDS\Samples.
La diferencia entre PWM y HPWM, es que la primera genera PWM por software y la segunda por hardware.
Por eso la primer letra de la instrucción tiene una H. (Hardware)
Así que la instrucción HPWM únicamente puede funcionar con PIC's que tengan módulo CCP.
Y como algunos PIC tienen varios módulos CCP, por eso HPWM requiere saber por qué canal se va a generar la señal. (Channel)

Adjunto un ejemplo con HPWM.
Imágenes Adjuntas
Tipo de Archivo: jpg HPWM Samples.jpg (150,5 KB (Kilobytes), 12 visitas)
Archivos Adjuntos
Tipo de Archivo: rar 16F628A Pulsadores y PWM.rar (19,5 KB (Kilobytes), 9 visitas)
Hace 3 Semanas #678


D@rkbytes dijo: Ver Mensaje
El uso de todas las instrucciones se encuentra en la ayuda de Proton.
También se incluyen ejemplos en la carpeta PDS\Samples.
La diferencia entre PWM y HPWM, es que la primera genera PWM por software y la segunda por hardware.
Por eso la primer letra de la instrucción tiene una H. (Hardware)
Así que la instrucción HPWM únicamente puede funcionar con PIC's que tengan módulo CCP.
Y como algunos PIC tienen varios módulos CPP, por eso HPWM requiere saber por qué canal se va a generar la señal. (Channel)

Adjunto un ejemplo con HPWM.
Esta bueno la funcion, la mayorias de mis pic tienen el CCP. Asi que mas tarde me pongo con ese tema. Muy bueno el ejemplo.

Cambiando de tema, tengo un problema, ahora estoy simulando en proteus un servo motor con LCD 16X2, todo bien, pero cuando lo monto en protoboard, el LCD y el led de encendido del trafo parpadea cuando actua el Servo, puede ser que consuma mucho el servomotor?.... He usado la función Servo Port.Pin, Variable .. Si necesitas un vídeo, avísame así lo subo en youtube y veas como actúa físicamente.
Hace 3 Semanas #679

Avatar de pandacba

Sube un esquema de tu proyecto, y fotos del mismo para poder ver como fue implementado en la práctica.
Ya que la fuente de motor debe estar de tal forma que los pulsos que genera no afecten al micro.
Que tipo de servomotor estas utilizando? marca y modelo del mismo por favor
Hace 3 Semanas #680


pandacba dijo: Ver Mensaje
Sube un esquema de tu proyecto, y fotos del mismo para poder ver como fue implementado en la práctica.
Ya que la fuente de motor debe estar de tal forma que los pulsos que genera no afecten al micro.
Que tipo de servomotor estas utilizando? marca y modelo del mismo por favor
1 X ServoMotor MG90S
1 X PIC16F887 con 8MHz y 22pF

Pensaba si 5V alimentar al servo con una PILA 9V con LM7805 y el PIC conectada a otra fuente 5V, andaría me parece... Separar las dos cosas... Y no todo en un mismo lugar....
¿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.