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

Temas similares

13/04/2015 #1


Poner limite al rango HPWM en Proton IDE
Hola. Estoy leyendo un potenciómetro en la entrada AN0, es como un palanca de neutral donde si el potenciómetro está en 2.5 V, el PIC no hace nada, pero si va subiendo hacia 5 V, se prende la señal de frente y empieza a generar un HPWM desde 5 V y hasta cero.
En el caso de que se mueva de 2.5 V hacia cero, se prende la señal de reversa y empieza a generar el mismo HPWM de 5 V hasta cero.

El problema es que en los extremos, por encima de 4.45 V y por debajo de 0.35 V, el rango del HPWM salta y no se mantiene.

Les dejo el código utilizado.
Saludos y gracias de antemano por cualquier ayuda.
Código:
LECTURA:

    vadc=0
    vadc = ADIn 0 
    If vadc > 530 Then
    GoTo adelante
    ElseIf vadc < 490 Then 
    GoTo atras
    Else GoTo inicio
    EndIf

adelante:
       
       vadc = ADIn 0                 
       ciclo = Abs ((vadc/2)-200)
       ciclo=~ciclo
       HPWM 1,ciclo,1600
       If vadc > 530 Then
       GoTo adelante
       Else GoTo LECTURA
       EndIf
     
atras:
       
       vadc=ADIn 0
       ciclo = Abs ((vadc/2)+220)
       HPWM 1,ciclo,1600
       If vadc < 490 Then 
       GoTo atras
       Else GoTo LECTURA                     
        EndIf     

End
13/04/2015 #2
Moderador

Avatar de D@rkbytes

cesario dijo: Ver Mensaje
El problema es que en los extremos, por encima de 4.45 V y por debajo de 0.35 V, el rango del HPWM salta y no se mantiene.
Debes cuidar que el rango para el ciclo activo no exceda 255 que es el máximo permitido para HPWM.
El Manual de Proton IDE dijo:
Dutycycle is a variable, constant (0-255), or expression that specifies the on/off (high/low) ratio of the signal.
It ranges from 0 to 255, where 0 is off (low all the time) and 255 is on (high) all the time.
A value of 127 gives a 50% duty cycle (square wave).
Si haces una depuración de los valores, verías lo siguiente:
Esto sería cuando la lectura del ADC sea superior a 530.
O sea, en esta parte del programa:
Código:
    If vadc > 530 Then
        GoTo adelante
Y ahora mira los resultados de depuración para una lectura menor a 490:
Que viene siendo en esta parte del programa:
Código:
    ElseIf vadc < 490 Then 
        GoTo atras
Como puedes ver, en ambos procedimientos los valores para el ciclo activo superan 255.

Solución: Trabajar con el ADC a 8 Bits.
13/04/2015 #3


Poner limite al rango HPWM en Proton IDE
gracias por la respuesta..Darkbytes,

ya había visto que se excede el rango, y cada ves que pasa de 255 o de Cero empieza de nuevo, y ese es mi problema, como poner los limites para que no salte........actualmente funciona bien hasta los extremos de lectura del pot, en los extremos salta y eso es lo que no quiero que haga.

por cierto , las ventanitas negras con letras verdes,,,de donde salieron??

Saludos
14/04/2015 #4
Moderador

Avatar de D@rkbytes

Pues tienes 3 opciones:
  1. Corregir las fórmulas para que no se exceda el valor del ciclo activo a más de 255.
  2. Dividir el resultado de la lectura del ADC / 4
  3. Usar el ADC a 8 Bits.
Yo optaría por la tercera opción. ¿Por qué? Porque a 8 Bits, la máxima lectura es de 255.

Las ventanitas negras son recortes del Virtual Terminal de Proteus.
En los PIC se suelen enviar datos por RS-232 para depurar el programa de forma sencilla.
También se pueden depurar los programas en tiempo real usando ICD (In-Circuit Debugger)
Respuesta
¿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.