segunda-feira, 20 de dezembro de 2010

WTF?????????

Vou fazer um e-mail para tentar explicar o que estou precisando, por favor imprima e mostre para eles, vamos lá

Bem eu estou usando um PIC16F628A e PicBasic.

Basicamente eu quero controlar um Motor DC 12V com PWM, de maneira que eu tenha uma rampa de aceleração de 0V a 12V em um tempo relativamente rápido, fiz uma rotina para incrementa de 1 em 1 o PWM como a variável e Byte, ou seja de 0 a 255 o motor estava demorando muito para subir, esqueci a idéia.
Partir para a idéia de fazer tipo speed control, mais ai ficou muito rápido, acelera muito rápido, como esse motor e tipo bomba acaba enchendo muito rápido de combustível e encharca.

O que eu preciso e criar um delay ou uma curva exponencial para atrasar o aumento da variável.

Vou explicar como funciona o sistema, um radio de aeromodelismo solta um sinal de pulso que eu transformei em uma variável chamada ( Acel ) com um intervalo de 54 a 140, explico qual foi a minha continha.

se o radio estiver em posição de mínimo = 54 então:
54 * 18 = 972 / 10 = 97,2 = ( i0 = 92,2 )

se o radio estiver em posição de Maximo = 140 então:
140 * 18 = 2520 / 10 = 252 = ( i0 = 252 )

O que acontece e que quando eu acelero de maneira moderada o PWM incrementa legal, mais quando acelero de uma vez o motor acaba apagando pois encharca de combustível.

Agora vamos a minha pergunta:

Existe alguma maneira de criar uma rotina para que eu defina a velocidade de incremento do PWM, de maneira que mesmo que eu acelere de uma vez o radio o PWM incremente em uma velocidade predefinida, não sei se estou sendo claro mais e o seguinte e mais ou menos assim:

If 'eu acelero em uma velocida moderada ate ? Then 'incrementa tanto ate a posição da variável acel endif
If 'eu acelero todo de uma vez ate ? Then 'incrementa conforme velocidade moderada endif

Resumo eu quero e, seu eu acelero moderadamente o PWM acompanhe o radio se eu acelero de uma vez o PWM alcance o radio com um incremento predefinido.

Porque isso: No aeromodelismo não tem como em voou você acelerar moderadamente todo o tempo, exemplo no pouso caso de alguma coisa errada sua primeira atitude e acelerar de uma vez para arremeter, do jeito que esta se eu fizer isso a turbina ira apagar e o final você já sabe.

Código Abaixo

funcionando:

if rd > 109 and rd < 194 and rd > rd_ant then 'modo speed aceleração
i0 = (acel * 18)/10
hpwm 1, i0 , 2000
Pause 5
endif
rd_ant = rd

if rd > 109 and rd < 194 and rd < rd_ant then 'modo speed desaceleração
i0 = (acel * 18)/10
hpwm 1, i0 , 2000
Pause 24
endif

if rpm > 52 and rpm < 54 and rd < 110 then 'trava de marcha lenta
i0 = marca
endif
hpwm 1, i0 , 2000
goto loop

Caso possam me ajudar eu agradeço

Abraço

Hudson Alesse de Araújo Pinheiro
Dep. Eletromecânico
Projetista Eletricista
ENGEVIX Engenharia S/A
(61) 3961-0623 ou (61) 8406-2117
hudson.araujo@engevix.com.br

Nenhum comentário:

Postar um comentário


web site estatísticas