I did not read REW help and I have no idea what indicates the window you asked for. I simply don't need to know that as many others things in REW(there are a lot of tools&options). I guess "Fs" could be "Full Scale", actually, to me "Fs" is always like a Frequency of Sampling.
Ok, one more time, what I have:
1) AP SYS2522 output with 1.8mVrms feeds the Cosmos APU with 60db gain to Cosmsos ADC with 1.7Vrms sensitivity.
2) I clicked on [Calibrate level] button in REW, and entered 1.8mV. After the calibration REW starts to show 1.8mV level the same as AP.
3) With a shorted APU input the APU+AP noise results vs Cosmos APU+ADC results have just .4db mismatch.
Ok, one more time, what I have:
1) AP SYS2522 output with 1.8mVrms feeds the Cosmos APU with 60db gain to Cosmsos ADC with 1.7Vrms sensitivity.
2) I clicked on [Calibrate level] button in REW, and entered 1.8mV. After the calibration REW starts to show 1.8mV level the same as AP.
3) With a shorted APU input the APU+AP noise results vs Cosmos APU+ADC results have just .4db mismatch.
Now it is clear - if you did calibration with known level from AP then noise level is corectly displayed in nV.I did not read REW help and I have no idea what indicates the window you asked for. I simply don't need to know that as many others things in REW(there are a lot of tools&options). I guess "Fs" could be "Full Scale", actually, to me "Fs" is always like a Frequency of Sampling.
Ok, one more time, what I have:
1) AP SYS2522 output with 1.8mVrms feeds the Cosmos APU with 60db gain to Cosmsos ADC with 1.7Vrms sensitivity.
2) I clicked on [Calibrate level] button in REW, and entered 1.8mV. After the calibration REW starts to show 1.8mV level the same as AP.
3) With a shorted APU input the APU+AP noise results vs Cosmos APU+ADC results have just .4db mismatch.
With 60 dB of APU and 1,7 V of ADC I expected FS (Full Scale level in V rms) in REW for this combination around 1,7 mVrms. It seems that there is some deviation in ADC sensitivity (or APU gain), so for propper V/dBV/dBu indication some basic calibration is needed.
BTW, great tools what you offer for DIY community.
Thank you.
Martin
Re noise measurement- I find it most useful to use a variable resistance source (decade in my case) and starting with a short increase the resistance until the average noise has increased 3 dB. At that point the the equivalent input noise will be the same as that of a resistor of the current value. Its a good way to avoid keeping track of multiple gains etc. Also doesn't need any exotic stuff.
So far only in our discord channel, I think. I did not prepare the product page so far.
Actually, I already described that simple stereo preamp for Cosmos ADC yesterday as I think.
Min gain 0db, max 26db thru 16 log steps
Zinput 200k/100k balanced/unbalanced
Zout 20ohm
USB-C powered 200mA
Max input level 10Vrms
Max output level 10Vrms(actually up to 20Vrms but Cosmos ADC doesn't need >10V)
Residual noise with shorted inputs 250nVrms(A)
3 Levels LED indication, Blue if 1.7Vrms<output<4.5Vrms, Green if 4.5Vrms<output<10Vrms, Red if >10Vrms. So, there are 3 thresholds, the middle one is the Auto-range target.
Calibration mode activating after 5 times switches from "0db" knob's position to the "Auto" i.e. 0/Auto/0/Auto/0/Auto/Auto/0/Auto/0
in the calibration-mode Scaler will turn White LEDs, and measure its output voltage and memorize that as a new threshold value. After 128 times level AVGed, White LEDs are Off and Scaler back to the normal mode. If during the calibration process the output voltage was <1Vrms, all 3 thresholds will be presented to the default 1.7/4.5/10.
By the default blue=1.7V, green=target=4.5V, red=10V. If you like to change the target for the 9V, as an example, you need to feed Scaler with that voltage sine, 5 times switch manual/auto/manual/auto/manual/auto/manual/auto/manual/auto during 2s. LED will change color for the white for about 2.6S, after that red LEDs will do flashing during 1s. That means that the red-LED threshold has been updated from default 10V to 9V and the target changed from default 4.5V to the 9v. If you'll give Scaler 2V instead of 9v, you'll see 2.6S white LED, next 1s of blue-LEDs flashing i.e. blue-LEDs threshold now is 2V(and the target for the autorange too) instead of 1.7V etc.
The C code of the calibration:
//CALIBRATION MODE ***********************************************************************************************************************************************************************************************************
while(sw>9)// entering into the calibration mode
{
// setting for the gain=0db
GPIOB->ODR |= (uint8_t)GPIO_PIN_5;// RELAY1 On
GPIOB->ODR |= (uint8_t)GPIO_PIN_4;// RELAY2 On
GPIOA->ODR |= (uint8_t)GPIO_PIN_1;// RELAY3 On
GPIOA->ODR |= (uint8_t)GPIO_PIN_2;// RELAY4 On
DELAY_B=8;
GPIOA->ODR |= (uint8_t)GPIO_PIN_3;// RED LEFT ON
GPIOD->ODR |= (uint8_t)GPIO_PIN_4;// RED RIGHT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_7;// BLUE LEFT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_6;// BLUE RIGHT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_3;// GREEN LEFT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_5;// GREEN RIGHT ON
while(DELAY_B){}// waiting for the relay settling
DELAY_B=128;
oldDELAY_B=128;
avg=peak;
while(DELAY_B)// calibration timeout 2s
{
if(DELAY_B!=oldDELAY_B)
{
avg=avg+(uint32_t)peak;
oldDELAY_B=DELAY_B;
}
}
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_7);// BLUE LEFT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_6);// BLUE RIGHT OFF
GPIOA->ODR &= (uint8_t)(~GPIO_PIN_3);// RED LEFT OFF
GPIOD->ODR &= (uint8_t)(~GPIO_PIN_4);// RED RIGHT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_3);// GREEN LEFT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_5);// GREEN RIGHT OFF
avg=avg>>7;
while (!(FLASH->IAPSR & 0x08))// unlock flash
{
FLASH->DUKR = 0xae;
FLASH->DUKR = 0x56;
}
if (avg<50 || avg>1000)// if the target is out of range
{
for (i=0; i<8; i++)
{
(PointerAttr uint8_t) (uint16_t)(0x004000+i) =(uint8_t)0;// fill all thresholds with default zeros
DELAY_B=2;
while(DELAY_B){}
}
FLASH->IAPSR &= ~0x08; // flash lock
WWDG->CR=128;// reset MCU exit of calibration mode
}
(PointerAttr uint8_t) (uint16_t)(0x004006) =(uint8_t)avg&0x000000FF;// write target LSB
DELAY_B=2;
while(DELAY_B){}
(PointerAttr uint8_t) (uint16_t)(0x004007) =(uint8_t)(avg>>8);// write target MSB
DELAY_B=2;
while(DELAY_B){}
thr[3]=(uint16_t)avg;
if (thr[3]<thr[1] && thr[3]<thr[2])// if green>new_value<red
{
(PointerAttr uint8_t) (uint16_t)(0x004000) =(uint8_t)avg&0x000000FF;// write target to the min-blue LED LSB
DELAY_B=2;
while(DELAY_B){}
(PointerAttr uint8_t) (uint16_t)(0x004001) =(uint8_t)(avg>>8);// write target to the min-blue LED MSB
DELAY_B=2;
while(DELAY_B){}
for (i=0; i<5; i++)
{
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_7);// BLUE LEFT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_6);// BLUE RIGHT OFF
DELAY_B=10;
while(DELAY_B){}
GPIOC->ODR |= (uint8_t)GPIO_PIN_7;// BLUE LEFT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_6;// BLUE RIGHT ON
DELAY_B=10;
while(DELAY_B){}
}
}
else if (thr[3]>thr[0] && thr[3]>thr[1])// if blue<new_value>green
{
(PointerAttr uint8_t) (uint16_t)(0x004004) =(uint8_t)avg&0x000000FF;// write target to the max-red LED LSB
DELAY_B=2;
while(DELAY_B){}
(PointerAttr uint8_t) (uint16_t)(0x004005) =(uint8_t)(avg>>8);// write target to the max-red LED MSB
DELAY_B=2;
while(DELAY_B){}
for (i=0; i<5; i++)
{
GPIOA->ODR &= (uint8_t)(~GPIO_PIN_3);// RED LEFT OFF
GPIOD->ODR &= (uint8_t)(~GPIO_PIN_4);// RED RIGHT OFF
DELAY_B=10;
while(DELAY_B){}
GPIOA->ODR |= (uint8_t)GPIO_PIN_3;// RED LEFT ON
GPIOD->ODR |= (uint8_t)GPIO_PIN_4;// RED RIGHT ON
DELAY_B=10;
while(DELAY_B){}
}
}
else//
{
(PointerAttr uint8_t) (uint16_t)(0x004002) =(uint8_t)avg&0x000000FF;// write target to the mid-green LED LSB
DELAY_B=2;
while(DELAY_B){}
(PointerAttr uint8_t) (uint16_t)(0x004003) =(uint8_t)(avg>>8);// write target to the mid-green LED MSB
DELAY_B=2;
while(DELAY_B){}
for (i=0; i<5; i++)
{
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_3);// GREEN LEFT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_5);// GREEN RIGHT OFF
DELAY_B=10;
while(DELAY_B){}
GPIOC->ODR |= (uint8_t)GPIO_PIN_3;// GREEN LEFT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_5;// GREEN RIGHT ON
DELAY_B=10;
while(DELAY_B){}
}
}
FLASH->IAPSR &= ~0x08; // flash lock
WWDG->CR=128;// reset MCU exit of calibration mode
The gain steps in dB are roughly: 0 7 9.4 12 13.6 14.85 16.3 17.5 18.5 19.3 20 20.8 21.5 22.15 22.5 23 23.5 24 24.5
Actually, I already described that simple stereo preamp for Cosmos ADC yesterday as I think.
Min gain 0db, max 26db thru 16 log steps
Zinput 200k/100k balanced/unbalanced
Zout 20ohm
USB-C powered 200mA
Max input level 10Vrms
Max output level 10Vrms(actually up to 20Vrms but Cosmos ADC doesn't need >10V)
Residual noise with shorted inputs 250nVrms(A)
3 Levels LED indication, Blue if 1.7Vrms<output<4.5Vrms, Green if 4.5Vrms<output<10Vrms, Red if >10Vrms. So, there are 3 thresholds, the middle one is the Auto-range target.
Calibration mode activating after 5 times switches from "0db" knob's position to the "Auto" i.e. 0/Auto/0/Auto/0/Auto/Auto/0/Auto/0
in the calibration-mode Scaler will turn White LEDs, and measure its output voltage and memorize that as a new threshold value. After 128 times level AVGed, White LEDs are Off and Scaler back to the normal mode. If during the calibration process the output voltage was <1Vrms, all 3 thresholds will be presented to the default 1.7/4.5/10.
By the default blue=1.7V, green=target=4.5V, red=10V. If you like to change the target for the 9V, as an example, you need to feed Scaler with that voltage sine, 5 times switch manual/auto/manual/auto/manual/auto/manual/auto/manual/auto during 2s. LED will change color for the white for about 2.6S, after that red LEDs will do flashing during 1s. That means that the red-LED threshold has been updated from default 10V to 9V and the target changed from default 4.5V to the 9v. If you'll give Scaler 2V instead of 9v, you'll see 2.6S white LED, next 1s of blue-LEDs flashing i.e. blue-LEDs threshold now is 2V(and the target for the autorange too) instead of 1.7V etc.
The C code of the calibration:
//CALIBRATION MODE ***********************************************************************************************************************************************************************************************************
while(sw>9)// entering into the calibration mode
{
// setting for the gain=0db
GPIOB->ODR |= (uint8_t)GPIO_PIN_5;// RELAY1 On
GPIOB->ODR |= (uint8_t)GPIO_PIN_4;// RELAY2 On
GPIOA->ODR |= (uint8_t)GPIO_PIN_1;// RELAY3 On
GPIOA->ODR |= (uint8_t)GPIO_PIN_2;// RELAY4 On
DELAY_B=8;
GPIOA->ODR |= (uint8_t)GPIO_PIN_3;// RED LEFT ON
GPIOD->ODR |= (uint8_t)GPIO_PIN_4;// RED RIGHT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_7;// BLUE LEFT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_6;// BLUE RIGHT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_3;// GREEN LEFT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_5;// GREEN RIGHT ON
while(DELAY_B){}// waiting for the relay settling
DELAY_B=128;
oldDELAY_B=128;
avg=peak;
while(DELAY_B)// calibration timeout 2s
{
if(DELAY_B!=oldDELAY_B)
{
avg=avg+(uint32_t)peak;
oldDELAY_B=DELAY_B;
}
}
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_7);// BLUE LEFT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_6);// BLUE RIGHT OFF
GPIOA->ODR &= (uint8_t)(~GPIO_PIN_3);// RED LEFT OFF
GPIOD->ODR &= (uint8_t)(~GPIO_PIN_4);// RED RIGHT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_3);// GREEN LEFT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_5);// GREEN RIGHT OFF
avg=avg>>7;
while (!(FLASH->IAPSR & 0x08))// unlock flash
{
FLASH->DUKR = 0xae;
FLASH->DUKR = 0x56;
}
if (avg<50 || avg>1000)// if the target is out of range
{
for (i=0; i<8; i++)
{
(PointerAttr uint8_t) (uint16_t)(0x004000+i) =(uint8_t)0;// fill all thresholds with default zeros
DELAY_B=2;
while(DELAY_B){}
}
FLASH->IAPSR &= ~0x08; // flash lock
WWDG->CR=128;// reset MCU exit of calibration mode
}
(PointerAttr uint8_t) (uint16_t)(0x004006) =(uint8_t)avg&0x000000FF;// write target LSB
DELAY_B=2;
while(DELAY_B){}
(PointerAttr uint8_t) (uint16_t)(0x004007) =(uint8_t)(avg>>8);// write target MSB
DELAY_B=2;
while(DELAY_B){}
thr[3]=(uint16_t)avg;
if (thr[3]<thr[1] && thr[3]<thr[2])// if green>new_value<red
{
(PointerAttr uint8_t) (uint16_t)(0x004000) =(uint8_t)avg&0x000000FF;// write target to the min-blue LED LSB
DELAY_B=2;
while(DELAY_B){}
(PointerAttr uint8_t) (uint16_t)(0x004001) =(uint8_t)(avg>>8);// write target to the min-blue LED MSB
DELAY_B=2;
while(DELAY_B){}
for (i=0; i<5; i++)
{
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_7);// BLUE LEFT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_6);// BLUE RIGHT OFF
DELAY_B=10;
while(DELAY_B){}
GPIOC->ODR |= (uint8_t)GPIO_PIN_7;// BLUE LEFT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_6;// BLUE RIGHT ON
DELAY_B=10;
while(DELAY_B){}
}
}
else if (thr[3]>thr[0] && thr[3]>thr[1])// if blue<new_value>green
{
(PointerAttr uint8_t) (uint16_t)(0x004004) =(uint8_t)avg&0x000000FF;// write target to the max-red LED LSB
DELAY_B=2;
while(DELAY_B){}
(PointerAttr uint8_t) (uint16_t)(0x004005) =(uint8_t)(avg>>8);// write target to the max-red LED MSB
DELAY_B=2;
while(DELAY_B){}
for (i=0; i<5; i++)
{
GPIOA->ODR &= (uint8_t)(~GPIO_PIN_3);// RED LEFT OFF
GPIOD->ODR &= (uint8_t)(~GPIO_PIN_4);// RED RIGHT OFF
DELAY_B=10;
while(DELAY_B){}
GPIOA->ODR |= (uint8_t)GPIO_PIN_3;// RED LEFT ON
GPIOD->ODR |= (uint8_t)GPIO_PIN_4;// RED RIGHT ON
DELAY_B=10;
while(DELAY_B){}
}
}
else//
{
(PointerAttr uint8_t) (uint16_t)(0x004002) =(uint8_t)avg&0x000000FF;// write target to the mid-green LED LSB
DELAY_B=2;
while(DELAY_B){}
(PointerAttr uint8_t) (uint16_t)(0x004003) =(uint8_t)(avg>>8);// write target to the mid-green LED MSB
DELAY_B=2;
while(DELAY_B){}
for (i=0; i<5; i++)
{
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_3);// GREEN LEFT OFF
GPIOC->ODR &= (uint8_t)(~GPIO_PIN_5);// GREEN RIGHT OFF
DELAY_B=10;
while(DELAY_B){}
GPIOC->ODR |= (uint8_t)GPIO_PIN_3;// GREEN LEFT ON
GPIOC->ODR |= (uint8_t)GPIO_PIN_5;// GREEN RIGHT ON
DELAY_B=10;
while(DELAY_B){}
}
}
FLASH->IAPSR &= ~0x08; // flash lock
WWDG->CR=128;// reset MCU exit of calibration mode
The gain steps in dB are roughly: 0 7 9.4 12 13.6 14.85 16.3 17.5 18.5 19.3 20 20.8 21.5 22.15 22.5 23 23.5 24 24.5
that's tricky but works only for the flat noise floor yet.Re noise measurement- I find it most useful to use a variable resistance source (decade in my case) and starting with a short increase the resistance until the average noise has increased 3 dB. At that point the the equivalent input noise will be the same as that of a resistor of the current value. Its a good way to avoid keeping track of multiple gains etc. Also doesn't need any exotic stuff.
I would say it may be tricky, because the resistor has only resistor Johnson thermal noise. When put into any electronic circuit, we should consider contribution of Johnson noise, voltage noise and current noise, the last two added by the electronic active device.
Using resistors to calibrate REW noise measurement is not tricky at all. If your DUT has low noise as displayed in your graphs then e.g. 1k resistor would show practically only Johnson thermal noise so you would see a relatively flat noise density at about 4 nV/rtHz or 570nVrms total noise in 20k bandwidth. You can "calibrate" the display by changing the "FS sine Vrms" value.
yeah, everyone has 2-5Vrms DAC, just add some R/R divider to get 1-5mVrms and calibrate the LNA, that's it.
I offered a classic calibration that let you measure not only sine-tone but noise as well. What I'll get after I adjust the resistor on the LNA's input, what is the precision of that method if 1/f noise isn't included in the account as well as LNA current noise?
Using resistor at LNA input is perhaps not the most precise but it is the easiest way to get a "ballpark" calibration.
I do not want to complete account registration at discord, because after e-mail verification they moreover request a phone number. This combination is too much to be disclosed to a Chinese server, so no chance to check your posts at discord.So far only in our discord channel, I think.
I created a Discord account, but cannot access your channel because Discord either is super paranoid and I constantly fail their safety requirements or due to some technical issues; I don’t know.
Is there a way to make the channel public for reading?
Is there a way to make the channel public for reading?
If you are in China, probably GFW stops your foreign traffic, otherwise, that link will bring you to the E1DA channel.I created a Discord account, but cannot access your channel because Discord either is super paranoid and I constantly fail their safety requirements or due to some technical issues; I don’t know.
Is there a way to make the channel public for reading?
https://discord.gg/AAus72ZEpu
Hi, I also have problem with accessing discord; at first there is an email verification, then 'strange traffic' warning pops out, and after that it wants my phone number
problems started aprox. month ago; i live in Poland
no strange behavior from my side 🙂
problems started aprox. month ago; i live in Poland
no strange behavior from my side 🙂
100% same scenario here. And I will not accept their conditions. I think than Ivan should look after a professional platform rather than these free sites. Even I do pay for my own web domain, to keep it all under my control.
- Home
- Vendor's Bazaar
- Cosmos APU a notch+LNA $70 to outperform APx555b for $30,000