Olá Pessoal
Embora tenha criado um soft-start para meu pequeno projecto do LASER Show há base de relés, algo não estava a funcionar correctamente.
Uma pilha é responsável para gerar 15V positivos, e a outra 15V negativos.
Em caso algum estas pilhas perdem carga simultaneamente, e aí algo corre mal.
Procurei no google por "symmetrical soft start", não existe, e o que pretendia era algo demasiado especifico, que monitoriza-se também a tensão.
Então resultou neste esquema:
As resistências ás
gates (R1 e R3) devem ser baixas para reduzir o tempo dos transístores desligarem-se, em contrapartida, a dissipação também aumenta e resulta num consumo desnecessário.
A rampa é providenciada via PWM em ambas as polaridades.
'fuses: e-FF h-DF l-E2
$regfile = "ATtiny25.dat"
$crystal = 8000000
Speaker Alias Portb.2
Ddrb = Bits(ddb2 , Ddb1 , Ddb0)
Portb = Bits(ddb1) 'Portb.1 é invertido
Config Adc = Single , Prescaler = 4 , Reference = Internal_2.56_nocap
Enable Adc
Start Adc
Dim Cnt , Cnt2 As Byte
Dim Value As Byte
Dim Esp As Word
Dim Val_pos , Val_neg As Word
Const Adc_pos = 2
Const Adc_neg = 3
Tccr0a = Bits(com0a1 , Com0a0 , Com0b1 , Com0b0 , Wgm01 , Wgm00)
Tccr0b = Bits(cs00)
Ocr0a = 255
Ocr0b = 0
Declare Sub Get_adc
Declare Sub Beep
'Sinal de inicio
Call Beep
Waitms 100
Call Beep
'Soft Start
Value = 0
For Value = 0 To 255
Ocr0a = 255 - Value
Ocr0b = Value
Esp = 255 - Value
Shift Esp , Left , 8
Waitus Esp
Next Value
'Sinal de 100%
Call Beep
Stop Timer0
'Liberta a porta
Tccr0a = 0
Tccr0b = 0
Portb = Bits(ddb0)
Do
Call Get_adc
If Val_pos < 512 Or Val_neg < 512 Then
Portb = Bits(ddb1)
Waitms 500
For Cnt2 = 1 To 4
Call Beep
Waitms 100
Next Cnt2
'No power
Do
Loop
End If
Waitms 100
Loop
Sub Get_adc
Dim Adc_sum As Word
Adc_sum = 0
For Cnt2 = 0 To 63
Adc_sum = Adc_sum + Getadc(adc_pos)
Next Cnt2
Shift Adc_sum , Right , 6
Val_pos = Adc_sum
Adc_sum = 0
For Cnt2 = 0 To 63
Adc_sum = Adc_sum + Getadc(adc_neg)
Next Cnt2
Shift Adc_sum , Right , 6
Val_neg = 1023 - Adc_sum
End Sub
Sub Beep
For Cnt = 0 To 10
Speaker = 1
Waitus 500
Speaker = 0
Waitus 500
Next Cnt
End Sub
sim, está em basic...Após algumas alterações, apresento a placa (face simples) em questão:
O funcionamento é simples, depois da placa alimentada, as saídas passam rapidamente para 0V, envia um sinal sonoro de inicio; então o sinal PWM vai incrementando aos poucos o
duty cycle, após chegar a 100%, o timer responsável pelo PWM é desligado e a porta passa ao estado normal, colocando as saídas das tensões estáveis, sem ruídos. No final é transmitido outro sinal sonoro a avisar desse estado.
As tensões +-15 são monitorizadas em tempo real via ADC, caso alguma desça abaixo de 10V aproximadamente, ambas são desligadas e é enviado novo sinal sonoro a avisar.
obs: todo o projecto foi realizado e testado a 1.5A neste fds, é provável que tenha alguns erros, entretanto tem estado a funcionar bem.
Abr. P.