Generatore di forme d’onda programmabile 1 Progetto di un generatore di forme d’onda programmabile Nella figura 1 è riportato lo schema di un generatore di forme d’onda programmabile mediante un Personal Computer. Il generatore è in grado di fornire segnali ad onda quadra, triangolari e sinusoidali con frequenza variabile ed uguale ampiezza. Il progetto può essere suddiviso nei seguenti sottoprogetti: • circuito di decodifica per il generatore di segnali; • convertitori D/A e V/I; • generatore di segnali con frequenze variabili nel campo 0,1 Hz ÷ 20 MHz. Fig. 1 Circuito di decodifica Il circuito di decodifica è costituito da un comparatore digitale ad 8 bit e genera il segnale CS di abilitazione del convertitore D/A AD558 (fig. 2). Fig. 2 Convertitori La tensione d’uscita del convertitore è applicata alla resistenza R1 per ottenere una corrente d’intensità compresa nell’intervallo 0 µA ÷ 748 µA. La resistenza R2 è alimentata dalla tensione di riferimento VREF = 2,5 V ed è attraversata da una corrente d’intensità costante uguale a 2 µA. Pertanto la corrente IIN d’ingresso al circuito integrato MAX038 è IIN = 22 µA ÷ 750 µA. Fig. 3 Generatore di segnali L’integrato MAX038, prodotto dalla Maxim [RS 810-396], genera segnali la cui frequenza è funzione della corrente IIN e del valore della capacità CF (fig. 4). Il suo principio di funzionamento è basato sul fenomeno di carica e di scarica del condensatore. L’onda triangolare e quadra sono generate direttamente, mentre quella sinusoidale è ottenuta dal segnale triangolare mediante circuiti formatori d’onda. Le diverse forme d’onda sono selezionate variando i livelli logici applicati sui pin A1 ed A0 (vedere tabella di fig. 5). Le caratteristiche elettriche del generatore di forme d’onda sono: • • • • • • • • • • Fig. 4 ampiezze dei tre segnali uguali (2 Vpp); segnali simmetrici rispetto a massa; frequenza variabile nel range 0,1 Hz ÷ 20 MHz; forme d’onda triangolare, dente di sega, sinusoidale, quadra e ad impulsi; variazione del duty cycle 15% ÷ 85%; regolazione grossolana e di precisione della frequenza; indipendenza della frequenza dalla regolazione del duty cycle; range della frequenza di sweep 350 ÷ 1; bassa impedenza d’uscita (0,1 Ω); bassa distorsione del segnale sinusoidale (0,75%); • • • • • bassa dipendenza dalla temperatura (200 ppm/°C); tensione di alimentazione max ± 6 V; corrente max ± 50 mA; potenza dissipata 889 mW; temperatura di funzionamento 0 ÷ 700 °C. Nella figura 5 sono riportate le curve caratteristiche I IN /f in funzione della capacità CF. La frequenza f calcolata in corrispondenza del segnale VFADJ = 0 V, che permette la regolazione fine della frequenza, è: VADC VREF + I1IN (variabile) + I2 IN (costante) I R1 R2 f = IN = = CF CF CF dove: • • • • IIN è l’intensità di corrente iniettata nel pin IIN (2 µA ÷ 750 µA); CF è la capacità connessa all’oscillatore interno dell’integrato (20 pF ÷ 100 µF); VDAC è la tensione d’uscita dal convertitore D/A; VREF è la tensione di riferimento generata dall’integrato MAX038. Con VDAC = 1,28 V, R1 = 3,3 kΩ, R2 = 1,2 MΩ, VREF = 2,5 V e CF = 100 pF si ha: VADC VREF + 378 + 2 ⋅ 10 −6 I R1 R2 f = IN = = = 3, 8 MHz CF CF 100 ⋅ 10 −12 ( ) Con R1 = 3,3 kΩ, R2 = 1,2 MΩ, VREF = 2,5 V e CF = 0,01 µF, si ha: IIN [µA] 3,7 350 745 f [kHz] 0,5 44 120 Fig. 5 La sensibilità ∆f del generatore di forme d’onda, con CF = 100 pF, è: ∆f = 8000 ⋅ 103 − 40 ⋅ 103 ≅ 31 kHz 256 Nella figura 6 è riportato lo schema di principio del generatore di forme d’onda proposto. Il programma, riportato di seguito, visualizza il dato per il controllo della frequenza e seleziona il tipo di forma d’onda. Fig. 6 program genfun uses crt; var N, scelta fout, Nr, Cf :byte; :real; begin Cf : = 100E-12; repeat clrscr; writeln ('introduci valore frequ. uscita tra 40E3 Hz e 8000E3 Hz'); readln (fout); until (fout >= 40E3) and (fout <= 8000E3); Nr : = ((fout*Cf – 2E-6)*3300)*100; N : = round (Nr); writeln ('N = ', N); writeln ('scegli forma d’'onda'); writeln ('1] SINUSOIDE '); writeln ('2] QUADRA '); writeln ('3] TRIANGOLARE '); readln (selta); case scelta of 1: port [$31F] : = N; 2: port [$31C] : = N; 3: port [$31D] : = N; end; end.