• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


Bandpass
#61
.... es ist so schrecklich einsam hier oben.... Sad Cool
 
#62
Da der Hamburger Hafen befüllt ist mit einer elektrolytischen Flüssigkeit, könnte man, unter Verwendung eines gut lackierten Containerschiffes, die passende Gegenelektrode einer größeren Kapazität schaffen. Die Abstimmung erfolgt dann über die Eintauchtiefer, d.h. die Beladung.
...mit der Lizenz zum Löten!
 
#63
Das ist gar nicht so dumm.

Doppelschichten können selbst mit winzigen Elektroden viele nF oder gar Mikrofarad bewirken.

Probleme gibts mit hohen Frequenzen und die Nebenreaktionen sind auch nicht ohne.

Feuchte Elektronik ist meist auch nicht langzeitstabil.
 
#64
Warum schalte ich nicht einfach mit einer festen Frequenz einen Analogschalter, der das zu analysierende Signal auf einen Integrator (RC-Glied) weiterleitet, dessen Signal ich dann einfach messe. Also ein Korrelator.

Und die Bandbreite dieses Korrelators kann ich auch vorgeben. Durch Schaltfrequenzhopping oder Frequenwobbeln. Das kann alles mein Funktionsgenerator.

Sollte es so simpel sein? Und warum komm ich da jetzt erst drauf? misstrau

Ein Bandpass mit allem Pipapo ist also nur ein Analogschalter? überrascht überrascht überrascht überrascht
 
#65
Das klingt ein bisschen nach Switched Capacitor...
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#66
Warum nicht Analogschalter, PWM Modulator und State-Variable Filter ?

Das Summieren von Hoch- und Tiefpass gibt übrigens ein schönes Notch Filter.

Gruss

Charles
 
#67
Zitat:Original geschrieben von woody
Das klingt ein bisschen nach Switched Capacitor...

Eher "Korrelator" oder "multiplikative Mischstufe" oder "Direktmischer".
 
#68
Zitat:Original geschrieben von phase_accurate
....und State-Variable Filter ?
Weil ich da Dreher und Schalter und Firlefanz brauch. Das fällt bei meiner Idee doch ganz weg.

Ich brauch nur eine Mischerfrequenz und einen dem Analogschalter nachgeschalteten Tiefpass (kann auch gerne die Trägheit eines Drehspulinstrumentes sein). Wenn mir ein Analogschalter zu aufwendig ist, dann nehm ich nen Fet.

Also exakt ein Bautel!

 
#69
Planst du schon einen Graukasten?
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#70
Das wär der Hammer.. ein 1-Bauteil-Graukasten lachend
 
#71
Und ich dachte immer, dass ich mit den rund 20 Bauteilen des oberen Gerätes schon den Vogel abgeschossen hätte.

[Bild: 1_lcr8.JPG]

Ich müsste den nFET dann aber irgendwie mit Klanglack in einer Mu-Metall-Schelle festmachen. misstrau
 
#72
Ich stell mir das so vor..... Klirrmessung: Ein Generator speist feinsten Sinus ins Messobjekt.

[Bild: 1_1375452409_logik13.JPG]

Parallel zum Eingang befindet sich der CPLD-Graukasten und triggert den Sinus. Im Graukasten dann VHDL zur Bildung einer digitalen PLL in allen geraden und ungeraden Frequenzvervielfachungen. Einer von den Ausgängen steuert dann den einen Analogschalter, dessen NF-Eingang mit dem Messobjektausgang verbunden wird. Welchen Klirr man gerade analysiert, kann auf der Frontplatte ausgewählt werden.


Also so in etwa (nur geklaut):

-- Digital PLL based on the 74LS297 architecture

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_misc.all;
use IEEE.std_logic_unsigned.all;

entity PLL1 is
port (
clk: in STD_LOGIC; -- clock for k and id counter
f_in: in STD_LOGIC; -- input signal
f_out: inout STD_LOGIC -- output signal
);
end PLL1;

architecture PLL1_arch of PLL1 is

-- enter PLL parameters here

constant Kbit: integer:=8; -- bitwidth of the K_counter
constant N_mod: integer:=9; -- modul of N_counter
constant f_in_mod: integer:=8; -- modul of reference prescaler
constant f_out_mod: integer:=8; -- modul of DCO_postscaler

-- do not change source code below here ((uunless you know what you are doing ;-)

signal dn_up: std_logic; -- selects up or down counter of k_counter
signal ca: std_logic; -- carry out of k_counter
signal bo: std_logic; -- borrow out of k_counter

signal N_cont: integer range 0 to N_mod-1; -- N counter
signal f_in_scale: integer range 0 to f_in_mod-1; -- reference prescaler
signal f_out_scale: integer range 0 to f_out_mod-1; -- DCO postscaler
signal f_in_s, f_out_s: std_logic; -- prescaler outputs

signal k_up: std_logic_vector (Kbit-1 downto 0); -- up counter in k_counter
signal k_dn: std_logic_vector (Kbit-1 downto 0); -- down counter in k_counter

signal c1,c2,c3,c4: std_logic; -- shift register of carry
signal b1,b2,b3,b4: std_logic; -- shift register of borrow
signal id_out: std_logic; -- output of id_counter

begin

-- K_counter

k_cnt: process (clk)
begin
if clk='0' and clk'event then
if dn_up='1' then
k_dn<=k_dn+1;
else
k_up<=k_up+1;
end if;
end if;
end process;

ca<=k_up(kbit-1);
bo<=k_dn(kbit-1);

-- ID_counter

id_cnt: process (clk)
begin

if clk='1' and clk'event then -- positive edge controlled

c1<=ca;
c2<=c1;
c3<=c2;
c4<= ( (not c1) and c2 and id_out ) or ( (not c2) and c3 and id_out );

-- in the schematic of the 74LS297 the c4 uses the invertet output
-- for some strange reason we can not invert c4 here, this will eliminate 2 FFs

b1<=bo;
b2<=b1;
b3<=b2;
b4<= ( (not b1) and b2 and (not id_out) ) or ( (not b2) and b3 and (not id_out) );

-- here is a JK-FF, maybe we need a better construction in the future
-- we use the inverted signals of c4 and b4

if c4='1' and b4='1' then
id_out<=id_out;
elsif c4='0' and b4='1' then
id_out<='1';
elsif c4='1' and b4='0' then
id_out<='0';
elsif c4='0' and b4='0' then
id_out<= not id_out;
end if;

-- end of JK-FF
end if;
end process;

-- The original schematics of the 74LS297 produces a gated clock,
-- which may result in timing problems
-- We better use id_out as an clock enable for the N counter
-- ID-out is the inverted clock enable; clk is the inverted clk


-- simple XOR phase detector

-- dn_up<=f_in_s xor f_out_s; -- iff you want to use the EXOR PD, just uncomment this
-- but think about the EXOR limitations!!!!

-- edge controlled phase detector
ECPD: block is
signal pd1,pd2,rpd: std_logic;
begin
rpd<=pd2;
dn_up<=pd1;

process (rpd, f_out_s) -- a leading negative edge of
begin -- f_out sets the phase detector
if rpd='1' then
pd1<='0';
elsif f_out_s='0' and f_out_s'event then
pd1<='1';
end if;
end process;

process (rpd, f_in_s) -- a negative edge of f_in resets
begin
if rpd='1' then -- the phase detector
pd2<='0';
elsif f_in_s='0' and f_in_s'event then
pd2<='1';
end if;
end process;
end block;

-- prescalers

process (f_in)
begin
if f_in='1' and f_in'event then
if f_in_scale=f_in_mod-1 then
f_in_scale<=0; f_in_s<='0';
elsif f_in_scale>=(f_in_mod/2-1) then
f_in_scale<=f_in_scale+1; f_in_s<='1';
else
f_in_scale<=f_in_scale+1; f_in_s<='0';
end if;
end if;
end process;

process (f_out)
begin
if f_out='1' and f_out'event then
if f_out_scale=f_out_mod-1 then
f_out_scale<=0; f_out_s<='0';
elsif f_out_scale>=(f_out_mod/2-1) then
f_out_scale<=f_out_scale+1; f_out_s<='1';
else
f_out_scale<=f_out_scale+1; f_out_s<='0';
end if;
end if;
end process;

-- Divide by N counter

-- this implementation differs a lot fromm the logic in the 74LS297
-- which uses a gated clock (ID output), tthat is deadly for very high clock rates
-- (up to 180MHz in Spartan 2)
-- here we use clock enable on the N counntter

process (clk, id_out)
begin
if clk='0' and clk'event then
if id_out='0' then
if N_cont=N_mod-1 then
N_cont<=0; f_out<='0';
elsif N_cont>=(N_mod/2-1) then
N_cont<=N_cont+1; f_out<='1';
else
N_cont<=N_cont+1; f_out<='0';
end if;
end if;
end if;
end process;

end PLL1_arch;

 
#73
Na... so ganz perfekt ist die Idee noch nicht. Der so geildete Korrelator ist empfindlich gegen Spiegelfrequenzen. Formell bräuchte ich noch einen analogen Vorfilter. Mal gucken, ob mir ein IQ-Mischer dabei helfen könnte...
 
#74
Der IQ Mischer würde Diur definitv dabei helfen, den korrekten Amplitudenwert zu bilden ohnen dass Du exakt sysnchronisieren musst.
 
#75
Hmmm... interessante Gedankenansätze.... misstrau

Weil woody auch gerade an einer digitalen PLL sitzt (bzw. darüber nachgrübelt), will ich damit mal anfangen. Schon um besser mit Xilinx klarzukommen.

Nachdem ich begriffen hab, dass man 99,9% der vielen hundert Knöpfchen gar nicht braucht, flutscht die Erstellung kleiner Progrämmchen schon richtig fix. Ohne Simulation krieg ich schon kleine selbst gestellte Aufgaben innerhalb von zwei bis drei Minuten kodiert und in den Chip gebrannt. Ich seh diese Verwirrungen der Oberfläche gar nicht mehr.

Das ist wohl wie Radfahren. Wenn mans erstmal kann, dann fällt man nicht mehr um.

Besonders beeindruckt war ich von der Möglichkeit, sich den synthetisierten Schaltplan anzeigen zu lassen, bis runter auf Register- und Gatterebene. So erkennt man die dramatische Wirkung einer einzelnen Zeiile Code am besten. Eine Zeile... und man hat seitenweise Gatter und Flipflops generiert.

Ich bin allerdings auch jedesmal fasziniert, wenn eine simple C-Zeile zig Zeilen von Assempblercode auslöst...

....ich bin halt leicht zu beeindrucken lachend

Wie auch immer.. Xilinx und ich haben Burgfrieden geschlossen. misstrau Man kann damit produktiv werden.
 
#76
Naja...

[Bild: 1_1376056700_bandpass20.png]

Links erzeuge ich eine sich zwischen 0 und 10kHz verändernde Frequenz, die von der mit 1kHz angesteuerten multiplikativen Mischstufe schon ganz gut erkannt wird.

Nur leider kommen eben auch "falsche" Anzeigen durch. Zu stark, um damit Klirrfaktoren bestimmen zu können.

Mal IQ-Systeme probieren... misstrau