LusoRobótica - Robótica em Português
Electrónica => Electrónica Geral => Tópico iniciado por: Sérgio_Sena em 06 de Março de 2011, 00:15
-
Wild electronics ;D a funcionar. Descobri esta relíquia no fundo da caixa de ferramentas. Bem usada nas corridas de carrinhos fotovoltaicos!
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fantoniosergiosena.com%2Ffiles%2Fforum%2FSMPS_BOOST.jpg&hash=92259f7106a29a0bfa752510568e187c7cd831bb)
Input de 8 a 24V, Output sempre de 24V
Boa resposta até 1A.
Sem testes de comportamento THD e eficiência. Funcionou para o que se queria, usou-se e arrumou-se.
Projecto está aqui ::
http://www.antoniosergiosena.com/electronica.htm (http://www.antoniosergiosena.com/electronica.htm)
Mas para quem quiser ver num instante o esquema ::
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fantoniosergiosena.com%2Ffiles%2Fforum%2F037___SMPS_boost_carrinhos.JPG&hash=a9ec66be9a637631259b067dc1e35da1cabd66d5)
Código fonte não limpo, arranjado ou optimizado ::
;-------------------------------------------------------------------------
;
; Controlador de Energia para Carrinhos Solares
;
; 037, v0.1, 16F628A
;
; A. Sergio Sena, [url=http://www.antoniosergiosena.com]www.antoniosergiosena.com[/url], Tel.: 967.033.209
;-------------------------------------------------------------------------
list p=16f628A ;configura o tipo de CPU usado
radix hex ;pre-definicao do tipo de valores numericos usados
include "p16f628a.inc" ;
__config _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _INTOSC_OSC_NOCLKOUT & _PWRTE_ON & _WDT_OFF
;---------------------------
temp equ 0x20 ;define endereco 0x20 com o nome de TEMP
temp2 equ 0x21 ;define endereco 0x21 com o nome de TEMP2
temp3 equ 0x22 ;define endereco 0x21 com o nome de TEMP3
;---------------------------
org 0x0000 ;vector de RESET
goto inicio
org 0x0020
inicio
banksel PORTA
clrf PORTA ;limpa tristates da porta A
clrf PORTB ;limpa tristates da porta B
;configura pinos RA1 e RA2 como entradas analogicas
banksel CMCON
movlw 0x05
movwf CMCON ;move de W para CMCON
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;configura portas A e B como entradas/saidas
banksel TRISA
movlw b'00000110'
movwf TRISA
clrf TRISB ;TRISB toda como saida
movlw 0x12 ;periodo do PWM (faz 52kHz com as configurações do TMR2)
movwf PR2
movlw b'11101100' ;Tensao de Referencia
movwf VRCON
banksel PORTA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
movf CMCON, f ;remove indecisão de leitura
;configura modulo CCP para trabalhar em PWM
movlw 0x0F
movwf CCP1CON
;liga TMR2 e pré-divisor de 1:1
movlw 0x04
movwf T2CON
;duty-cycle do PWM (periodo activo)
movlw .1
movwf CCPR1L
call atraso_2s
;---------------------------------------------------------------------------
volta
call atraso_20m ;espera um pouco
btfss CMCON, 7 ;verifica se ampop2 tem saida activa
goto desce
sobe
incf CCPR1L, f ;aumenta uma unidade
movlw .12 ;se tiver passado o máximo, mantém sempre no máximo
subwf CCPR1L, w
btfss STATUS, Z
goto fim_sobe
movlw .11 ;carrega com o máximo
movwf CCPR1L
fim_sobe
goto volta
desce
decfsz CCPR1L, f ;diminui uma unidade
goto fim_desce
movlw .1 ;carrega com o minimo
movwf CCPR1L
fim_desce
goto volta ;ciclo infinito
;---------------------------------------------------------------------------
atraso_2s
movlw .100
movwf temp3 ;move valor em W para TEMP
call atraso_20m ;
decfsz temp3, f ;decrementa TEMP em uma unidade, coloca resultado em TEMP
;e salta a instrucao seguinte, se o resultado for zero
goto $-2 ; salta para duas instrucoes anteriores
return ;sai fora da rotina de ATRASO
;---------------------------
atraso_20m
movlw .40
movwf temp2 ;move valor em W para TEMP
call atraso_500u ;
decfsz temp2, f ;decrementa TEMP em uma unidade, coloca resultado em TEMP
;e salta a instrucao seguinte, se o resultado for zero
goto $-2 ; salta para duas instrucoes anteriores
return ;sai fora da rotina de ATRASO
;---------------------------
atraso_500u
movlw 0xA5
movwf temp ;move valor em W para TEMP
decfsz temp, f ;decrementa TEMP em uma unidade, coloca resultado em TEMP
;e salta a instrucao seguinte, se o resultado for zero
goto $-1 ;salta para uma instrucao anterior
return ;sai fora da rotina de ATRASO
;---------------------------
end
-
para que serve o pic ou o picaxe neste esquema?
-
Para controlar o IRF530
-
para estar a comutar o mosfet e controlar o motor.
-
Não tem nenhum motor, pelo menos não directamente acho eu, o que o PIC está a fazer é a controlar a modulação PWM do mosfet para alterar a voltagem de saida consoante a de entrada, para a manter constante.
É um conversor de voltagem do tipo boost, ou seja, aumenta a tensão de entrada para um valor constante á saida, que é maior ou igual que a tensão na entrada.
-
Como se chega a relação do pwm com a saida?
exemplo: quanto tempo on tem que estar o mosfet on para ter 1A a saida
-
A voltagem é que é regulada,e não a corrente, penso que a melhor maneira de o fazer é usar um divisor resistivo, e ler a voltagem á saida, enrola-se num PID e controla-se o duty-cycle do pwm para dar a voltagem estabelecida.