„Laboratórium 2 - 7. Mérés: A/D D/A átalakítók vizsgálata” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
(Új oldal, tartalma: „{{GlobalTemplate|Villanyalap|Labor2Meres7}} Sziasztok! {{InLineFileLink|Villanyalap|Labor2Meres7|Labor_2_07_FKA.zip|itt}} egy kis segédanyag: ell kérdések kidolgo…”)
 
 
(21 közbenső módosítás, amit 8 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{GlobalTemplate|Villanyalap|Labor2Meres7}}
+
{{Vissza|Laboratórium 2}}
  
 +
== Gondolatok a mérésről, tippek és tapasztalatok ==
  
Sziasztok!
+
* A Matlab ábráinak tengelyeit érdemes szépen feliratozni és normálisan skálázni, mert ha lemarad, azt nem szeretik.
 +
* A DNL-es mérésénél egymás után következő pontok között kell meghatározni a DNL-t. Érdemes úgy trükközni, hogy felhasználjuk az INL mérési adatvektorát, majd mérünk még egyet, ahol ugyanakkora lépésköz mellett, pont 1-el elcsúsztatott kódvektorral gerjesztjük a DAC-ot. így széles tartományban kapunk egymás mellett lévő kódpárokhoz tartozó kimeneti értékeket.
 +
* A glitch mérésénél, a DAC0 kimenetről le lehet venni egy szinkron trigger jelet. Érdemes ezt a szkóp 2-es csatornájára kötni és erre triggerelni, mert önmagában a DAC1-en megjelenő glitch néhány milivoltjára elég nehéz rátriggerelni.
 +
* A glitch mérésnél a szkópra AC csatolással kell rákötni a DAC1 kimenetet! Így ugyanis kiszűrődik a körülbelül 1-1,5V nagyságú egyenkomponens, így közvetlenül meghatározható a néhány millivolt amplitúdójú glitch területe, akár a szkóp integrál funkciójával is.
  
{{InLineFileLink|Villanyalap|Labor2Meres7|Labor_2_07_FKA.zip|itt}} egy kis segédanyag: ell kérdések kidolgozás + HF
+
== Beugró kérdések ==
  
Chris
+
*[[Laboratórium 2 - 7. Mérés ellenőrző kérdései|Ellenőrző kérdések kidolgozása]] - '''''<span style="color: darkgreen">Szerkesszétek, bővítsétek!</span>'''''
 +
* Beugró kérdések voltak:
 +
** Szinte csak az ellenőrző kérdésekből kérdeztek, viszont elég kevés időt adtak rá.
 +
** Nem szeretik ha rizsázunk vagy ha nem konkrétan arra válaszolunk amit kérdeznek. Minden pontatlanságért vonogatnak le negyed/fél pontokat.
 +
** Kérdezték bónuszban, hogy mi a Glitch! ''Nem mindegy hogy glitch-et vagy glitch energiát kérdezik. A kettő nem ugyanaz, bár ez a mérés elméleti összefoglalójában nincs így kiemelve. A beugróban levonnak érte ha nem a megfelelőt írod le.''
 +
** Pótmérésen kérdezték: Mi a hisztogram? Hogy néz ki a szinuszjel hisztogramja?
  
2011.03.27.
+
== Házi feladathoz segítség ==
  
  
----
+
{{Rejtett
 +
|mutatott='''Egy kompakt Matlab kód a házihoz, katt a jobb oldali "kinyit" linkre! - Hibák lehetnek benne!!!'''
 +
|szöveg=
 +
<syntaxhighlight lang="matlab" style="font-size: 140%;">
  
'''Egy kompakt megoldás a házira, de ugyanazt csinálja, mint az alsó'''
+
% Szinuszjel illesztése a mintavételezett jelre
  
<pre>
+
% Ha hibát találsz, vagy ez alapján csinálod, de nem valamit hibásnak vélnek
% szinuszjel illesztese a mintaveteleztett jelre
+
% a mérésen, akkor kérlek javítsd!
N = 5; %ADC bitszáma
+
 
fin = 5; % a jel frekvenciája
+
N = 5;     % ADC bitszáma
fs = 1024; % mintavételi frekvencia
+
fin = 5;   % a jel frekvenciája
U = 2.5; % referencia feszültség
+
fs = 1024; % mintavételi frekvencia
 +
M = 1024;  % minták száma
 +
U = 2.5;   % referencia feszültség
  
 
load ad1.txt;
 
load ad1.txt;
omin = 2* pi * fin / fs;
+
omin = 2 * pi * fin / fs;
i=1:1024;
+
i=1:M;
 
u1=cos(omin * i)'; u2=sin(omin * i)';
 
u1=cos(omin * i)'; u2=sin(omin * i)';
u = [u1 u2 ones(1024,1)];
+
u = [u1 u2 ones(M,1)];
 
p = u \ ad1;
 
p = u \ ad1;
a=sqrt(p(1)^2 + p(2)^2) * U/(2^N);
+
a=sqrt(p(1)^2 + p(2)^2);
 
fi = atan2(-p(2),p(1));
 
fi = atan2(-p(2),p(1));
offs=p(3) * U/(2^N);
+
offs=p(3);
 
b = a*cos(omin*i + fi)+ offs;
 
b = a*cos(omin*i + fi)+ offs;
  
disp('A jel amplitudoja: a =');disp(' ');disp(a);
+
fprintf('A jel amplitudoja: a = %f\n', a);
disp('A jel fazistolasa: fi =');disp(' ');disp(fi);
+
fprintf('A jel fazistolasa: fi = %f\n', fi);
disp('A jel offsetje: offs =');disp(' ');disp(offs);
+
fprintf('A jel offsetje: offs = %f\n', offs);
  
e = sum((ad1 - b').^2 / size(b,2)) * U/(2^N); % szumma hibanegyzet
+
e = 1/M * sum((ad1 - b').^2);                 % szumma hibanégyzet
sinad = 10* log10((a^2 / 2)/e); % signal-to-noise and distrotion ratio
+
sinad = 10* log10((a^2 / 2)/e);               % signal-to-noise and distrotion ratio
Neff = N - log2(e / ((U/2^N)/sqrt(12))); % effektív bitszám
+
Neff = N - log2( sqrt(e) / (1/sqrt(12)));     % effektív bitszám (ez nem biztos, hogy jó! )
  
 
disp('sinad = ');disp(' ');disp(sinad);
 
disp('sinad = ');disp(' ');disp(sinad);
46. sor: 60. sor:
 
figure; plot(i,ad1,i,b);grid;
 
figure; plot(i,ad1,i,b);grid;
 
title('A mintavételezett és illesztett jel');
 
title('A mintavételezett és illesztett jel');
</pre>
+
</syntaxhighlight>
-- [[JantekBalazs|jantek]] - 2007.04.21.
+
}}
 
 
y=load('G:\labor2_7\ad8.txt');
 
 
 
Q=1;
 
N=5;
 
 
 
u=ones(1024,3);
 
 
for i=1:1024
 
 
  u(i,1)=cos(2*pi/1024*5*i);
 
 
 
end;
 
 
for i=1:1024
 
 
  u(i,2)=sin(2*pi/1024*5*i);
 
 
 
end;
 
 
 
p=u\y
 
 
 
p1=(u'*u)^(-1)*(u'*y)
 
 
 
p2=zeros(3,1);
 
 
 
for i=1:1024
 
 
  p2(1,1)=2*cos(2*pi/1024*5*i)*y(i)+p2(1,1);
 
  p2(2,1)=2*sin(2*pi/1024*5*i)*y(i)+p2(2,1);
 
  p2(3,1)=y(i)+p2(3,1);
 
 
 
end;
 
 
 
p2=p2/1024
 
 
 
A=sqrt(p(1,1)^2+p(2,1)^2)
 
 
 
fi=atan2(-p(2,1),p(1,1))
 
 
 
C=p(3,1)
 
 
 
i=1:1024;
 
 
 
x=A*cos(2*pi*5/1024*i+fi)+C;
 
 
 
figure(1);
 
plot(i,x,i,y); grid;
 
 
 
eq=sum((y-x').^2)/1024
 
 
 
SINAD_dB=10*log10(A^2/2/eq)
 
 
 
N_eff=N-log2(eq/Q/sqrt(12))
 
 
 
f=19.531250;
 
%f=20;
 
 
 
i=0:4095;
 
z=sin(2*pi/8000*i*f+pi/2);
 
 
 
figure(2);
 
plot(z);
 
 
 
sz=fft(z);
 
 
 
figure(3);
 
plot(abs(sz));
 
 
 
fm=4000*10/2048
 
 
 
-- ken - 2007.03.12.
 
 
 
 
 
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
 
 
 
p, p1, p2 ugyanaz, csak 3 féleképpen kiszámolva, elég a legegyszerűbbet használni, p=u\y, a többi kihagyható!
 
 
 
U kiszamolása helyesen (Laboron így csináltuk):
 
  
for i=1:mintákszáma
+
*[[Media:Labor2_hf_7.pdf‎|Kidolgozott házi feladat, hibátlan eredménnyel (2021)]]
u(i,1)=cos(2*pi*f_jel/f_mintavétel*i);
+
*[[Media:Labor2_mérés7_házi1.pdf‎|Kidolgozott házi feladat]] - '''Hibák vannak benne!'''
end;
+
** A koherens mintavételezés egyedüli feltétele, hogy egész számú teljes periódust mintavételezzünk, azaz hogy J és M pozitív egész számok legyenek. Az hogy J és M relatív prímek legyenek (minden periódusban más fázisban mintavételezünk), csak egy méréstechnikai fícsőr, ami pontosabb mérést eredményez, de nem szükséges feltétele a koherens mintavételezésnek.
for i=1:mintákszáma
+
** Az effektív bitszám számítása a PDF-ben rossz. A másik kidolgozás Matlab kódjában viszont helyesen szerepel.
u(i,2)=sin(2*pi*f_jel/f_mintavétel*i);
 
end;
 
  
x helyesen:
+
*[[Media:Labor2_mérés7_2014_03_16_házi.pdf‎|Kidolgozott házi feladat a fenti hibák javításával]] - ''ha van más hiba is, jelezzétek (mérésen nem javítottak bele)''
x=A*cos(2*pi/mintákszáma*i*periódusokszáma+fi)+C;
+
*[[Media:Labor2_mérés7_2014_05_06_házi.pdf‎|Kidolgozott házi feladat ]] - '' ha van benne hiba, jelezzétek (mérésen nem javítottak bele)''
 +
** Mindegyik háziban rossz: az fft számítást le kellene osztani a vektor hosszával (fft definicióban is ez van + Matlab dokumentáció). A spekrumban 2db 0,5V amplitúdójú tüske lesz
  
N_eff szintén:
+
*'''Házi írásnál különösen figyeljetek oda,''' hogy ne egyszerűen innen másoljátok, mert nagyon szigorúan nézik. Nálunk konkrétan a fele csapatot kidobták (gyakorlatilag emiatt).
neff=(SINAD-20*log10(A*2/mintákszáma)-1.76)/6.02;
 
  
Koherens mintavétel feltétele:
+
== Ellenőrző mérés ==
fi=J/M*fs, ahol fi a jel frekvenciája , J a mintavett periódusok száma, M a vett minták száma, fs  a mintavételi frekvencia. A koherecia teljesül, ha J=fi/fs*M egész szám.
 
  
-- [[PerneczkyMiklosTamas|Miki]] - 2007.03.20.
+
*[[Media:Labor2_mérés7_jegyzőkönyv1.docx|Jegyzőkönyv (2011)]]
  
 
  
 +
*Ide jöhetnek kitöltött jegyzőkönyvek
 +
*Ide lehet gyűjteni:
 +
**Milyen feladatot adtak az ellenőrző mérésen
 +
**Mire érdemes figyelni
 +
**Hibák, amiket nem kéne elkövetni és megoldási javaslat/trükk
  
[[Category:Villanyalap]]
+
[[Kategória:Villamosmérnök]]

A lap jelenlegi, 2021. február 21., 09:56-kori változata

← Vissza az előző oldalra – Laboratórium 2

Gondolatok a mérésről, tippek és tapasztalatok

  • A Matlab ábráinak tengelyeit érdemes szépen feliratozni és normálisan skálázni, mert ha lemarad, azt nem szeretik.
  • A DNL-es mérésénél egymás után következő pontok között kell meghatározni a DNL-t. Érdemes úgy trükközni, hogy felhasználjuk az INL mérési adatvektorát, majd mérünk még egyet, ahol ugyanakkora lépésköz mellett, pont 1-el elcsúsztatott kódvektorral gerjesztjük a DAC-ot. így széles tartományban kapunk egymás mellett lévő kódpárokhoz tartozó kimeneti értékeket.
  • A glitch mérésénél, a DAC0 kimenetről le lehet venni egy szinkron trigger jelet. Érdemes ezt a szkóp 2-es csatornájára kötni és erre triggerelni, mert önmagában a DAC1-en megjelenő glitch néhány milivoltjára elég nehéz rátriggerelni.
  • A glitch mérésnél a szkópra AC csatolással kell rákötni a DAC1 kimenetet! Így ugyanis kiszűrődik a körülbelül 1-1,5V nagyságú egyenkomponens, így közvetlenül meghatározható a néhány millivolt amplitúdójú glitch területe, akár a szkóp integrál funkciójával is.

Beugró kérdések

  • Ellenőrző kérdések kidolgozása - Szerkesszétek, bővítsétek!
  • Beugró kérdések voltak:
    • Szinte csak az ellenőrző kérdésekből kérdeztek, viszont elég kevés időt adtak rá.
    • Nem szeretik ha rizsázunk vagy ha nem konkrétan arra válaszolunk amit kérdeznek. Minden pontatlanságért vonogatnak le negyed/fél pontokat.
    • Kérdezték bónuszban, hogy mi a Glitch! Nem mindegy hogy glitch-et vagy glitch energiát kérdezik. A kettő nem ugyanaz, bár ez a mérés elméleti összefoglalójában nincs így kiemelve. A beugróban levonnak érte ha nem a megfelelőt írod le.
    • Pótmérésen kérdezték: Mi a hisztogram? Hogy néz ki a szinuszjel hisztogramja?

Házi feladathoz segítség

Egy kompakt Matlab kód a házihoz, katt a jobb oldali "kinyit" linkre! - Hibák lehetnek benne!!!
% Szinuszjel illesztése a mintavételezett jelre

% Ha hibát találsz, vagy ez alapján csinálod, de nem valamit hibásnak vélnek
% a mérésen, akkor kérlek javítsd!

N = 5;      % ADC bitszáma
fin = 5;    % a jel frekvenciája
fs = 1024;  % mintavételi frekvencia
M = 1024;   % minták száma
U = 2.5;    % referencia feszültség

load ad1.txt;
omin = 2 * pi * fin / fs;
i=1:M;
u1=cos(omin * i)'; u2=sin(omin * i)';
u = [u1 u2 ones(M,1)];
p = u \ ad1;
a=sqrt(p(1)^2 + p(2)^2);
fi = atan2(-p(2),p(1));
offs=p(3);
b = a*cos(omin*i + fi)+ offs;

fprintf('A jel amplitudoja: a = %f\n', a);
fprintf('A jel fazistolasa: fi = %f\n', fi);
fprintf('A jel offsetje: offs = %f\n', offs);

e = 1/M * sum((ad1 - b').^2);                  % szumma hibanégyzet
sinad = 10* log10((a^2 / 2)/e);                % signal-to-noise and distrotion ratio
Neff = N - log2( sqrt(e) / (1/sqrt(12)));      % effektív bitszám (ez nem biztos, hogy jó! )

disp('sinad = ');disp(' ');disp(sinad);
disp('Effektív bitszám Neff = ');disp(' ');disp(Neff);

figure; plot(i,ad1,i,b);grid;
title('A mintavételezett és illesztett jel');
  • Kidolgozott házi feladat, hibátlan eredménnyel (2021)
  • Kidolgozott házi feladat - Hibák vannak benne!
    • A koherens mintavételezés egyedüli feltétele, hogy egész számú teljes periódust mintavételezzünk, azaz hogy J és M pozitív egész számok legyenek. Az hogy J és M relatív prímek legyenek (minden periódusban más fázisban mintavételezünk), csak egy méréstechnikai fícsőr, ami pontosabb mérést eredményez, de nem szükséges feltétele a koherens mintavételezésnek.
    • Az effektív bitszám számítása a PDF-ben rossz. A másik kidolgozás Matlab kódjában viszont helyesen szerepel.
  • Házi írásnál különösen figyeljetek oda, hogy ne egyszerűen innen másoljátok, mert nagyon szigorúan nézik. Nálunk konkrétan a fele csapatot kidobták (gyakorlatilag emiatt).

Ellenőrző mérés


  • Ide jöhetnek kitöltött jegyzőkönyvek
  • Ide lehet gyűjteni:
    • Milyen feladatot adtak az ellenőrző mérésen
    • Mire érdemes figyelni
    • Hibák, amiket nem kéne elkövetni és megoldási javaslat/trükk