Riesci a regolare la lampada con fluidità, cambiando i ritardi?
Devo ancora creare la routine per variare la luminosità ma penso che non sia niente di complicato.
Se poi vuoi mi era venuta una ideuzza.
Spara...
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
Riesci a regolare la lampada con fluidità, cambiando i ritardi?
Se poi vuoi mi era venuta una ideuzza.
ricello9 ha scritto:Devo ancora creare la routine per variare la luminosità ma penso che non sia niente di complicato.
ricello9 ha scritto:Spara...




Rerated luminous intensity = (Va/Vd)3.4 to 3.5 × Luminous intensity at design voltage [1][2]
.
const unsigned char DelayCorrection[]={
255, 225, 221, 217, 215, 213, 211, 209, 208, 206, 205, 204, 203,
202, 200, 199, 199, 198, 197, 196, 195, 194, 193, 192, 192, 191, 190,
189, 189, 188, 187, 187, 186, 185, 184, 184, 183, 182, 182, 181, 180,
180, 179, 178, 178, 177, 176, 175, 175, 174, 173, 173, 172, 171, 170,
170, 169, 168, 167, 167, 166, 165, 164, 163, 162, 161, 161, 160, 158,
157, 156, 155, 154, 152, 151, 149, 147, 144, 140, 120, 113, 110, 108,
106, 104, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 92, 91, 90,
90, 89, 88, 88, 87, 86, 86, 85, 85, 84, 84, 83, 83, 82, 82, 81, 81,
80, 80, 79, 79, 78, 78, 77, 77, 76, 76, 75, 75, 75, 74, 74, 73, 73,
73, 72, 72, 71, 71, 71, 70, 70, 69, 69, 69, 68, 68, 68, 67, 67, 66,
66, 66, 65, 65, 65, 64, 64, 63, 63, 63, 62, 62, 62, 61, 61, 61, 60,
60, 60, 59, 59, 59, 58, 58, 57, 57, 57, 56, 56, 56, 55, 55, 55, 54,
54, 54, 53, 53, 52, 52, 52, 51, 51, 51, 50, 50, 50, 49, 49, 48, 48,
48, 47, 47, 47, 46, 46, 45, 45, 45, 44, 44, 43, 43, 43, 42, 42, 41,
41, 40, 40, 40, 39, 39, 38, 38, 37, 37, 36, 36, 35, 35, 34, 34, 33,
32, 32, 31, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 23, 22, 21, 19,
18, 16, 14, 11, 0
};




Semplice: devo dare un ritardo pari a DelayCorrection[93], dove nel vettore DelayCorrection è memorizzata la mia tabella


Usi un contatore ad 8 bit?
Quale valore minimo e massimo di questo contatore imposti per ottenere quei ritardi?
Probabilmente il minimo è zero, ma il massimo?
if(!timer_delay) //questa routine mi definisce il ritardo per l'accensione
{ //del gate, è collegata all'interrupt del timer2
trigger=0; // che è ciclico ogni 100uS
timer_delay=incremento; //la variabile incremento va da 0 a 64
GATE=1;
}
if(!timer_delay_2) // quest'altra routine mi incremento o diminuisce
{ // la variabile incremento che è legata al valore
if(inversione==0) // analogico letto sul potenziometro,
incremento=incremento--; // anche questa funzione è ciclica
if(inversione==1) //ed è gestita dal timer2
incremento=incremento++;
timer_delay_2=valore_medio ;
}
if(!timer_delay_1) //RITARDO SPEGNIMENTO TRIAC DOPO UN MILLISECONDO
{
GATE=0;
timer_delay_1=10;
}
//********************************************************************************
// INTERRUPT TIMER 2
//********************************************************************************
if(PIR1bits.TMR2IF==1) //ciclico ogni 100uS
{
if(trigger==1)
{
if (timer_delay) timer_delay--;
}
if(GATE==1)
{
if (timer_delay_1) timer_delay_1--;
}
if (timer_delay_2) timer_delay_2--;
PIR1bits.TMR2IF=0; //reset flag interrupt timer2
}
s.

Visitano il forum: Nessuno e 54 ospiti