dott.cicala Inserita: 18 ottobre 2016 Segnala Inserita: 18 ottobre 2016 L'autore non c'è più, ma a me ha fatto nascere una curiosità, come spesso accade leggendo le discussioni sul forum, che ho dovuto assolutamente soddisfare e così, ecco il risultato finale Ho dovuto semplificare perchè il pic usato faceva fatica a calcolarsi i 3 array coeffR[Angolo]=(Offset+(Offset*(sin((float)((Angolo*pi)/180))))); coeffS[Angolo]=(Offset+(Offset*(sin((float)((120+(Angolo*pi))/180))))); coeffT[Angolo]=(Offset+(Offset*(sin((float)((240+(Angolo*pi))/180)))));; quindi, ho eseguito i calcoli in excell ottenendo 3 tabelle da 30 campioni che rappresentano il valore del duty cycle di ogni pwm per ogni passo di 12° int R[30]={511,619,721,813,895,956,1002,1022, 1022,1002,956,895,813,721,619,517, 404,302,210,128,67,21,0,0,21, 67,128,205,302,399}; int S[30]={956,895,813,721,619,517,404,302, 210,128,67,21,0,0,21,67,128,205, 302,399,506,619,721,813,895,956, 997,1022,1022,1002}; int T[30]={67,21,0,0,21,67,128,205,302,399, 506,619,721,813,895,956,997,1022, 1022,1002,956,895,818,726,624,517, 404,302,210,133}; Di conseguenza la routine che viene eseguita in interrupt è molto snella //############################################################################## // Interrupt Routine //############################################################################## void interrupt(){ if(INTCON.TMR0IF) { Angolo=Angolo+1; if(Angolo>29)Angolo=0; PWM1DC = R[Angolo]; PWM2DC = S[Angolo]; PWM3DC = T[Angolo]; PWMLD =0x7; TMR0 = 174; INTCON.TMR0IF = 0; } } e questo è il risultato e rimane abbastanza spazio per fare altro
dnmeza Inserita: 18 ottobre 2016 Segnala Inserita: 18 ottobre 2016 Stefano, oltre che, pignolo, professionista, sei anche BRAVO, non lasciando nulla d'intentato, vuoi sempre arrivare allo scopo, Complimenti
dott.cicala Inserita: 18 ottobre 2016 Segnala Inserita: 18 ottobre 2016 Troppo buono...grazie Nel frattempo...la forma d'onda e il livello d'uscita migliorano ulteriormente ponendo R=10K C=470nF. Misurando la distorsione con la red mi fornisce un bel 0.8% ...e devo fidarmi perché non ho un vero distorsimetro
Livio Orsini Inserita: 19 ottobre 2016 Segnala Inserita: 19 ottobre 2016 Tutto bello Stefano, peccato che chi ha aperto la discussione sia sparito dopo il primo messaggio.
dott.cicala Inserita: 19 ottobre 2016 Segnala Inserita: 19 ottobre 2016 Quote peccato che chi ha aperto la discussione sia sparito dopo il primo messaggio Pazienza Vorrà dire che non continuerò con eventuali miglioramenti. Pensavo di non sprecare i pins liberi e creare un segnale di sincronismo...e rendere variabile la frequenza da 8 a 110Hz.... ...sarà per un'altra volta
morgan.106 Inserita: 24 ottobre 2016 Autore Segnala Inserita: 24 ottobre 2016 Eh ma non posso allontanarmi un mesetto che mi date per disperso :-D ! Scherzi a parte siete straordinari tutti! Alcune soluzioni sono davvero interessanti ma molto sofisticate al punto da dover scegliere quella del motore trifase. È una soluzione che mi garantisce la riuscita. Quanto scritto data voi non è certo vano.... rimane a disposizione di tutti. Grazie.
Livio Orsini Inserita: 24 ottobre 2016 Segnala Inserita: 24 ottobre 2016 Scopo del forum è, soprattutto la circolazione di idee. Una domanda spesso porta a speculazioni intellettuali (tanto per usare parole grosse ) che propongo soluzioni differenti.
morgan.106 Inserita: 25 ottobre 2016 Autore Segnala Inserita: 25 ottobre 2016 La penso come Lei, è da stimolo per tutti. Si può solo crescere in questo gruppo.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora