Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Progettazione amplificatore classe D

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteIsidoroKZ, Foto UtenteBrunoValente

0
voti

[11] Re: Progettazione amplificatore classe D

Messaggioda Foto UtenteBrunoValente » 24 dic 2020, 18:30

Non so darti una risposta precisa, non credo vengano rispettati degli standard con grande precisione, da quello che ho visto negli anni quando mi è capitato di lavorare con apparecchiature audio non professionali le ampiezze massime dei segnali di un'uscita line o Aux vanno da circa 300mV a circa 1V di valore efficace che per segnali sinusoidali corrispondono a 425mV e 1.41V di picco e a 850mV e 2.82V picco-picco
Avatar utente
Foto UtenteBrunoValente
33,6k 7 10 13
G.Master EY
G.Master EY
 
Messaggi: 6545
Iscritto il: 8 mag 2007, 14:48

1
voti

[12] Re: Progettazione amplificatore classe D

Messaggioda Foto UtenteEcoTan » 24 dic 2020, 19:34

Avendo acquisito una certa esperienza con la regolazione dei motori tramite MicroControllerUnit nel campo dei robottini, è sorta spontanea l'idea di mettere un altoparlante al posto del motore, magari aumentando la frequenza di commutazione. La regolazione, anzi in questo caso la modulazione, viene pilotata da un segnale audio prelevato dall'esterno, per esempio dalla presa auricolare di un qualsiasi apparecchio.

L'hardware e il software sono presi da un robottino già realizzato, apportando soltanto le minime varianti indispensabili:
CLASSED.JPG


Codice: Seleziona tutto
#include "fusebit.c"               //fusebit fastRC wPLL e tutto libero       
#include "p33FJ128MC802.h"         //descrittore MCU
//_FOSCSEL (FNOSC_FRCPLL & IESO_ON)//Oscillatore FastRC 7,37 MHz with PLL
#define ledv PORTAbits.RA2         // RA2 pin9 verde
#define ledr PORTBbits.RB4         // RB4 pin11 rosso
#define dc700 P1DC1 //PWM duty cycle da 700 a 0 polarità -, da 700 a 1400 +
int buf;

int main (void) {     //Main Program
PLLFBDbits.PLLDIV=41; // M=43 PLLDIV=41 clock oscillator Tcy=25 ns
CLKDIVbits.PLLPOST=0; // N1=2  N2=2(default) 7.37*M/N1/N2=79Mhz~40MIPS
while (OSCCONbits.COSC != 0b001){};   // Sure for FastRC w PLL   
while(OSCCONbits.LOCK!=1) {};      // Wait for PLL to lock
AD1CHS0bits.CH0SA = 4;              //AN4 pin 6 chan0 segnale audio
AD1CON1bits.SSRC=7;                 //ADC1 module auto-convert
AD1CON1bits.AD12B=1;                //ADC1 module 12 bit
AD1CON1bits.FORM=1;                 //ADC1 module signed integer
AD1CON3bits.SAMC = 16;              // SAMPLE TIME 16 CK
AD1CON3bits.ADCS = 12; //ADC CK 39.6/(12+1)MHz 14conv+16samp 100 kS/s 10 us
AD1PCFGL = 0b000000000101111;       //analog input AN4 pin6 audio
TRISA = 0b1111111111111011;         //OUT RA2 PIN9 LED2 verde
TRISB = 0b0011111111101111;         //OUT RB4 PIN11 LED2 rosso RB14,15 ponteH
AD1CON1bits.ADON=1;                 //ADC1 module ON

P1TCONbits.PTMOD = 3;  //PWM1 continuous up/down count with double interrupts
P1TPER = 700;          //PWM1 time base half period/Tcy PWM1 30 kHz?
PWM1CON2bits.IUE = 1;  //PWM1 duty cycle immediate update enable
PWM1CON1bits.PEN1H = 1;//PWM1 duty cycle enabled channel 1 pin 25 RB14 high
PWM1CON1bits.PEN1L = 1;//PWM1 duty cycle enabled channel 1 pin 26 RB15 low
P1DTCON1bits.DTA = 63; //PWM1 dead time A =63*Tcy
P1TCONbits.PTEN = 1;   //PWM1 time base enabled
IEC3bits.PWM1IE = 1;   //PWM1 int.enable
dc700=700;

prova: ledr^=1;  //per testare i tempi di elaborazione
goto prova; }

void __attribute__((no_auto_psv)) _ISRFAST _MPWM1Interrupt(void) //PWM1
{   buf=ADC1BUF0;          //legge registro di conversione ADC
    AD1CON1bits.SAMP=1;    //ADC1 module sample start
    dc700=700+(buf/3);     //modula il duty cycle (sarebbe meglio uno shift)
    IFS3bits.PWM1IF = 0; } //ISR esce


Ai capi dell'altoparlante in assenza di segnale audio si ha una portante in onda quadra. In presenza del segnale vengono modulate le durate dei due semiperiodi, lasciando sempre invariata la durata totale dell'intero periodo, ottenendo un risultato lineare senza bisogno di controreazione. Vi è un breve dead time fra i semiperiodi, peraltro la forma d'onda risente della modesta qualità dell'hardware.

Il registro P1TPER del programma, rappresenta la metà del numero degli impulsi di clock contenuti in un periodo della portante. Considerando che il clock va a 40 MHz mentre P1TPER vale 700, risulta una frequenza della portante pari a circa 30 kHz.
P1TPER rappresenta anche la metà del numero dei livelli del segnale audio ottenibili, cioè la risoluzione. Infatti la modulazione avviene variando il duty cycle fra zero e 2 X P1TPER. 1400 livelli significa più di 10 bit (1024 livelli) e meno di 11 bit (2048 livelli).
Data la frequenza del clock, il valore impostato nel detto registro rappresenta quindi un compromesso fra le opposte esigenze che la risoluzione sia elevata, e che la frequenza della portante sia bene al di sopra della banda udibile.

La corrente assorbita, comprendente anche il consumo della MCU e del ponte H, è 390 mA in assenza di segnale, con un altoparlante bicono tipo autoradio, e la prova di ascolto sembra buona. Il tempo di elaborazione è stato verificato esaminando con l'oscilloscopio l'apposita uscita digitale evidenziata nel programma, e risulta che il main program viene soltanto interrotto per un microsecondo o poco meno, ad ogni semiciclo della portante. Pertanto, nei progetti che già prevedono la presenza di una MCU, un simile amplificatore potrebbe essere aggiunto quasi a costo zero. La tensione di alimentazione e la potenza potrebbero essere aumentati anche molto ma non ho provato.

L'articolo completo si trova su:
http://www.grix.it/viewer.php?page=12898&mode=preview
Avatar utente
Foto UtenteEcoTan
5.944 4 10 13
Expert EY
Expert EY
 
Messaggi: 3853
Iscritto il: 29 gen 2014, 8:54

0
voti

[13] Re: Progettazione amplificatore classe D

Messaggioda Foto Utenteabusivo » 24 dic 2020, 19:36

Bello!
Se quello che funziona basta non lo tocca' sennò te lassa!
Avatar utente
Foto Utenteabusivo
12,6k 4 7 10
Master
Master
 
Messaggi: 6721
Iscritto il: 16 ott 2012, 18:43
Località: L'Aquila

0
voti

[14] Re: Progettazione amplificatore classe D

Messaggioda Foto UtenteSediciAmpere » 24 dic 2020, 19:41

Di solito si mette un filtro LC passa-basso sull'uscita
Le persone sagge parlano perché hanno qualcosa da dire.
Le persone sciocche perché hanno da dire qualcosa.
Avatar utente
Foto UtenteSediciAmpere
1.867 4 5 8
Expert EY
Expert EY
 
Messaggi: 2230
Iscritto il: 31 ott 2013, 15:00

0
voti

[15] Re: Progettazione amplificatore classe D

Messaggioda Foto Utenteaddre91 » 30 dic 2020, 15:00

BrunoValente ha scritto:...vanno da circa 300mV a circa 1V di valore efficace che per segnali sinusoidali corrispondono a 425mV e 1.41V di picco e a 850mV e 2.82V picco-picco


Grazie mille per la precisazione.

Nel frattempo per curiosità mi sono messo con oscilloscopio a registrare qualche statistica:

tmpimg.jpg


Effettivamente pare che Vpp sia al massimo di 1.50V circa su entrambi i canale (DX & SX).

A questo punto, visto che voglio alimentare l'amplificatore a 24 V, sceglierei un guadagno dello stadio di 26dB. Così facendo posso anteporre allo stadio di amplificazione uno per la regolazione del volume e uno per la regolazione dei toni.

Può funzionare secondo voi?

Andrea
Avatar utente
Foto Utenteaddre91
90 4
New entry
New entry
 
Messaggi: 82
Iscritto il: 20 apr 2016, 9:36

0
voti

[16] Re: Progettazione amplificatore classe D

Messaggioda Foto Utenteaddre91 » 30 dic 2020, 15:01

EcoTan ha scritto:...Pertanto, nei progetti che già prevedono la presenza di una MCU, un simile amplificatore potrebbe essere aggiunto quasi a costo zero. La tensione di alimentazione e la potenza potrebbero essere aumentati anche molto ma non ho provato.


Ciao EcoTan, grazie per l'articolo. Effettivamente mi chiedo anche io perché non ci sia un filtro RC di uscita.

Andrea
Avatar utente
Foto Utenteaddre91
90 4
New entry
New entry
 
Messaggi: 82
Iscritto il: 20 apr 2016, 9:36

0
voti

[17] Re: Progettazione amplificatore classe D

Messaggioda Foto UtenteEcoTan » 30 dic 2020, 16:42

E va bene, ho messo circa 300 microH con 1 microF. Ma c'è di peggio, quell'hardware non è adatto, ho dovuto aumentare il dead time a ben 6 microsec per avere una corrente a vuoto più ragionevole. Dovrei fare un ponte H più serio coi MosFet e ci vorrebbe anche una MCU ancora più veloce. E magari chiudere il tutto in un loop di reazione.
Ma la cosa va presa per quello che è, un esperimento abbastanza nuovo e subito abbastanza riuscito.
Avatar utente
Foto UtenteEcoTan
5.944 4 10 13
Expert EY
Expert EY
 
Messaggi: 3853
Iscritto il: 29 gen 2014, 8:54

0
voti

[18] Re: Progettazione amplificatore classe D

Messaggioda Foto Utenteaddre91 » 7 gen 2021, 18:08

Buonasera a tutti e buon anno!

Il progetto non è morto, sto solo raccogliendo le idee.

Avrei bisogno di una delucidazione:

Il TPA3116/3126 ha due ingressi differenziali, uno per ogni canale (DX e SX). Volendo io anteporre uno stadio per la regolazione del volume (potenziometro doppio) + uno stadio per la regolazione dei toni (Baxandall attivo probabilmente) sono obbligato a trasformare il segnale differenziale in single-ended. Il TPA funziona correttamente anche riferendo a massa i relativi ingressi negativi dei canali ma, a livello pratico, ci possono essere ripercussioni? Mi viene in mente una maggiore suscettibilità ai rumori ma nient'altro..

Grazie!
Avatar utente
Foto Utenteaddre91
90 4
New entry
New entry
 
Messaggi: 82
Iscritto il: 20 apr 2016, 9:36

0
voti

[19] Re: Progettazione amplificatore classe D

Messaggioda Foto UtenteEcoTan » 7 gen 2021, 21:23

Dal link relativo al giradischi abbiamo questa informazione:
"Connessione phono posteriore per collegare il giradischi allo stereo di casa."
Se il segnale è sbilanciato in origine, e resta tale lungo la linea di collegamento, direi che tanto vale rinunziare all'ingresso differenziale anche nell'amplificatore.
Avatar utente
Foto UtenteEcoTan
5.944 4 10 13
Expert EY
Expert EY
 
Messaggi: 3853
Iscritto il: 29 gen 2014, 8:54

0
voti

[20] Re: Progettazione amplificatore classe D

Messaggioda Foto Utenteaddre91 » 8 gen 2021, 14:49

In realtà il giradischi ha due uscite RCA, una per canale. Quindi direi che le uscite sono differenziali.
Avatar utente
Foto Utenteaddre91
90 4
New entry
New entry
 
Messaggi: 82
Iscritto il: 20 apr 2016, 9:36

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Google Adsense [Bot] e 44 ospiti