За занимания с OCXO генератор CTi OC5SC25 (10 MHz) ми беше необходим индикатор за приключено първоначално нагряване: 5V, ток 0.65A -> 0.26A. Токов датчик с изход към светодиод беше достатъчен.
Предвид консуматора във веригата, исках серийният резистор да е в "горещата страна" (+Vcc) и да има минимална стойност (части от Ома) -> необходим е усилвател. INA1xx, MAX ... са супер за идеята. Но не ми се чакаше поне две седмини за доставка от Китай.
Биполярен транзистор като сравняващ елемент не е ОК: характеристиките са силно зависими от тока/температурата дори като за информация към обикновен LED.
Бързо беше намерено решение, (в простите решения винаги трябва да има поне един микроконтролер

): ток -> ADC в микроконтролер -> индикатор. ATtiny13 беше на работната маса + няколко реда код. LED светва при стартиране (0.65A), изгасва след минута и малко повече, когато токът падне (0.26A) -> OCXO е загрял и можем да работим с изходния му сигнал. (Истинската стабилизация на честотата обаче настъпва много по-късно).
(С идеята за LED към OCXO за състоянието му от далечното минало си спомних работата с немски честотомер (ГДР?) с "много нули" в индикатора: при включване в мрежата LED екрана му (с много сегменти, включително букви?) показваше "OVEN" и нищо друго не функционираше. Трябваше да се чака няколко минути да "загрее" и да се стабилизира).
MicroCore в Arduino IDE за ATtiny13:
Код за потвърждение:
#define I_OCXO_ON (0.6f)
#define R_VCC (0.1f)
#define VCC (5.0f)
#define VOLT_ON (VCC - (I_OCXO_ON * R_VCC))
const uint16_t ON = (uint16_t)(VOLT_ON * 1023.0f / VCC);
uint16_t v = 0;
bool st = false;
void setup() {
pinMode(PB4, OUTPUT);
}
uint16_t readADC() {
uint32_t sum = 0;
for (uint8_t i = 0; i < 16; i++)
sum += analogRead(A3);
return sum / 16;
}
void loop() {
uint16_t v = readADC();
if (v > ON)
st = false;
else
st = true;
digitalWrite(PB4, st);
delay(500);
}