www.kn34pc.com

Форум на силистренските радиолюбители
Дата и час: 20 Юли 2026, 00:04

Часовете са според зоната UTC + 2 часа




Напиши нова тема Отговори на тема  [ 2 мнения ] 
Автор Съобщение
МнениеПубликувано на: 04 Юни 2026, 07:28 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1669
Местоположение: Силистра
За занимания с OCXO генератор CTi OC5SC25 (10 MHz) ми беше необходим индикатор за приключено първоначално нагряване: 5V, ток 0.65A -> 0.26A. Токов датчик с изход към светодиод беше достатъчен.

Предвид консуматора във веригата, исках серийният резистор да е в "горещата страна" (+Vcc) и да има минимална стойност (части от Ома) -> необходим е усилвател. INA1xx, MAX ... са супер за идеята. Но не ми се чакаше поне две седмини за доставка от Китай.

Биполярен транзистор като сравняващ елемент не е ОК: характеристиките са силно зависими от тока/температурата дори като за информация към обикновен LED.

Бързо беше намерено решение, (в простите решения винаги трябва да има поне един микроконтролер :mocking): ток -> 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);
}


Прикачени файлове:
ocxo_current_check.gif
ocxo_current_check.gif [ 30.04 KiB | Прегледано 695 пъти ]
Върнете се в началото
 Профил  
 
МнениеПубликувано на: 10 Юни 2026, 08:07 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1669
Местоположение: Силистра
Въвел съм без да искам допълнителна нестабилност :smt069 . Но захранването се подаваше от 15 cm проводници и така беше лесно :smile .
Uvref трябва да бъде свързан към стабилно напрежение.


Прикачени файлове:
ocxo_current_check_w.jpg
ocxo_current_check_w.jpg [ 100.79 KiB | Прегледано 608 пъти ]
Върнете се в началото
 Профил  
 
Покажи мненията от миналия:  Сортирай по  
Напиши нова тема Отговори на тема  [ 2 мнения ] 

Часовете са според зоната UTC + 2 часа


Кой е на линия

Потребители, разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Форумът се задвижва от phpBB® Forum Software © phpBB Group
Преведено от yarnaudov.com