• These commercial threads are for private transactions. diyAudio.com provides these forums for the convenience of our members, but makes no warranty nor assumes any responsibility. We do not vet any members, use of this facility is at your own risk. Customers can post any issues in those threads as long as it is done in a civil manner. All diyAudio rules about conduct apply and will be enforced.

Cosmos APU a notch+LNA $70 to outperform APx555b for $30000

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.
 
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.
Now it is clear - if you did calibration with known level from AP then noise level is corectly displayed in nV.
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
 
Member
Joined 2004
Paid Member
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

Cosmos_Scaler2.jpg


Cosmos_Scaler1.jpg


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



2022-01-08_17-57-41.jpg
 
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.
that's tricky but works only for the flat noise floor yet.
 
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.
 
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?
If you are in China, probably GFW stops your foreign traffic, otherwise, that link will bring you to the E1DA channel.
https://discord.gg/AAus72ZEpu
2022-05-28_20-01-12.jpg