В школе увлекался микроэллектроникой, ходил в радиокружок, собрал несколько простых устройств. Затем ВУЗ, работа, женитьба и о своем хобби очень редко вспоминал.

С появлением в моем доме интернета я узнал подробности о микроконтроллерах, посмотрел цены и загорелся желанием собрать что-нибудь на AVR или STM. Перечитал много форумов и подборок проектов на микроконтроллерах, но все было что-то не то, а понять «что не так» не мог. Вроде интересная вещь музыкальный плеер проигрывающий файлы с карты памяти, или часы будильник с термометром, да много еще чего, но ощущения что вот это я хочу так и не возникало…

Наткнулся на несколько статей о часах на газоразрядных индикаторах серии ИН и подобных, всплыло воспоминание из детства как в магазине я разглядывал цифры на весах, а они там отдельные в виде тонких проволочек и одна из них светится.

Решено — буду делать часы. Газоразрядные индикаторы работают при напржении около 180 вольт, поэтому для согласования с контроллером чаще всего используется микросхема к155ид1 — единственная высоковольтная микросхема, двоично-десятичный дешифратор. Для получения высокого напряжения в большинстве проектов также используется отдельная специализированная ШИМ микросхема. А во многих проектах еще и часы реального времени в виде отдельной микросхемы или готовой сборки.

Читая описание на сайте магазина для простого Atmega8 представлял себе что там и аналого-цифровой преобразователь и широтно-импульсная модуляция, последовательные интерфейсы и т.д., а используются они чще всего только для выполнения программы часов, даже дешифратор для индикатора ставится внешний. Обидно стало за микроконтроллер, он такой «могучий» а ему развернуться не дают.

В итоге минуя схему сразу стал рисовать печатную плату в SprintLayout и за пару недель родилась вот эта:

Изображение из фотоальбомов E1.ru

На одной плате все вместе с питанием, на другой только индикаторы:

Изображение из фотоальбомов E1.ru

В микроконтроллере atmega8 в данном проекте используются все три таймера, один из которых асинхронно работает от внешнего часового кварца. Сам контроллер работает на частоте 8 мегагерц от внутренней RC цепочки. ШИМ используется для генерации высокого напряжения в бустерном преобразователе, а напряжение контролируется аналоговым входом, и при необходимости корректурется скважность. Ну и 28 ног хватило чтобы засветить четыре индикатора ИН 12, и еще на пару лампочек осталось.

Вот как это выглядит в собранном виде:

Изображение из фотоальбомов E1.ru

И светится:

Изображение из фотоальбомов E1.ru

Часть функций контроллера конечно остались не использованными, но уже не так обидно когда рядом не стоят отдельный ШИМ и RTC.

Добавил ВВ часть схемы, рисовал в протеусе, чета трудно пошло:


Схему ключей брал отсюда

Код проекта на СИ
#define F_CPU 8000000UL

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

//Программа инициализации ШИМ

void init_pwm (void)
{
//Инициализация порта
DDRB=0xFF; //OC1A,OC1B,OC2 — выхода
TCCR1A=(1<<COM1B1)|(1<<WGM10)|(1<<WGM11); //Конфигурация счетчика OC1A
TCCR1B=(1<<CS10)|(1<<WGM12)|(1<<WGM13); //Конфигурация счетчика OC1B

//Установка начальных значений счетчиков
OCR1A=250;
OCR1B=215; //Выключен 0 от 200/170 до 250/215
}

volatile unsigned char second, minute, hour, h, m;
int voltage_ADC, dimm;
// Прерывание по переполнению Т2
ISR (TIMER2_OVF_vect)
{
if(second++ >= 59)
{
second = 0;
minute++;
}
if(minute > 59)
{
minute = 0;
hour++;
}
if(hour > 23)
hour = 0;

//set_time(hour,minute,second); // Выводим данные на дисплей
}

ISR (TIMER0_OVF_vect)
{

PORTC |= (1 << PC2);

}

ISR (ADC_vect)//прерывание по завершению преобразования АЦП
{
voltage_ADC = ADCW;//считываем значение АЦ преобразования

if(voltage_ADC<260 && OCR1A<300){OCR1A++;OCR1B=OCR1A-dimm;}
if(voltage_ADC>260 && OCR1A>170){OCR1A--;OCR1B=OCR1A-dimm;}

ADCSR |= (1<<ADSC);//запускаем очередное преобразование
}

//Основная программа

int main(void)
{
unsigned char r;
unsigned char mode;
init_pwm(); //Инициализация ШИМ каналов
PORTD=0x00; //Выставляем все выходы порта D на 0, то есть выключаем весь порт D
DDRD=0xFF; //Делаем порт D как выход, чтобы на выходах порта было напряжение 5В
PORTC = 0b00000000; DDRC = 0b11101111;

TIMSK &= ~(1 << OCIE2)|(1 << TOIE2); // Запрещаем прерывания по T2
ASSR |= (1 << AS2); // Включаем асинхронный режим T2
TCNT2 = 0; // Сбрасываем регистр счета
TCCR2 |= (1 << CS22)|(0 << CS21)|(1 << CS20); // Предделитель на 128-(32768/128 = 256 тиков/c)
TIMSK |= (1 << TOIE2); // Разрешаем прерывание по переполнению Т2

TCCR0|=(0<<CS02)|(1<<CS00);
//TIMSK |= (1 << TOIE0); // Разрешаем прерывание по переполнению Т2

//ads
ADMUX|= (1<<REFS0)|(1<<REFS1)|(1<<MUX2); //ВНУТРЕННЕЕ ОПОРНОЕ
//ADCSRA|=(1<<ADEN)|(1<<ADFR)|(1<<ADIE)|(1<<ADPS1)|(1<<ADPS0);
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
sei(); // Глобально разрешаем прерывания

hour = 23; // Начальная установка времени
minute = 13;
second = 23;

mode=1;

while (1) //Вечный цикл
{
/*
PORTD |= (1 << PD1); // установка бита 1
PORTD &= ~ (1 << PD1); // сброс бита 1
*/
dimm=35;
PORTC &= ~ (1 << PC2);
if(mode==1){m=minute; h=hour;}
if(mode==2){m=second; h=minute;}
if(mode==3){m=voltage_ADC%100; h=voltage_ADC/100;};

for (r=0;r<4;r++)
{
if(r==1)
{
PORTC |= (1 << PC3);//минуты десятки
if (m/10==0) PORTD |= (1 << PD3);//0
if (m/10==1) PORTD |= (1 << PD2);//1
if (m/10==2) PORTB |= (1 << PB1);//2
if (m/10==3) PORTB |= (1 << PB3);//3
if (m/10==4) PORTB |= (1 << PB4);//4
if (m/10==5) PORTD |= (1 << PD5);//5
if (m/10==6) PORTD |= (1 << PD6);//6
if (m/10==7) PORTD |= (1 << PD7);//7
if (m/10==8) PORTB |= (1 << PB0);//8
if (m/10==9) PORTD |= (1 << PD4);//9

}

if(r==0)
{
PORTC |= (1 << PC5);//минуты единицы
if (m%10==0) PORTD |= (1 << PD3);//0
if (m%10==1) PORTD |= (1 << PD2);//1
if (m%10==2) PORTB |= (1 << PB1);//2
if (m%10==3) PORTB |= (1 << PB3);//3
if (m%10==4) PORTB |= (1 << PB4);//4
if (m%10==5) PORTD |= (1 << PD5);//5
if (m%10==6) PORTD |= (1 << PD6);//6
if (m%10==7) PORTD |= (1 << PD7);//7
if (m%10==8) PORTB |= (1 << PB0);//8
if (m%10==9) PORTD |= (1 << PD4);//9
}

if(r==2)
{
PORTD |= (1 << PD1);//часы десятки
if (h/10==0) PORTD |= (1 << PD3);//0
if (h/10==1) PORTD |= (1 << PD2);//1
if (h/10==2) PORTB |= (1 << PB1);//2
if (h/10==3) PORTB |= (1 << PB3);//3
if (h/10==4) PORTB |= (1 << PB4);//4
if (h/10==5) PORTD |= (1 << PD5);//5
if (h/10==6) PORTD |= (1 << PD6);//6
if (h/10==7) PORTD |= (1 << PD7);//7
if (h/10==8) PORTB |= (1 << PB0);//8
if (h/10==9) PORTD |= (1 << PD4);//9

}

if(r==3)

{
PORTD |= (1 << PD0);//часы единицы
if (h%10==0) PORTD |= (1 << PD3);//0
if (h%10==1) PORTD |= (1 << PD2);//1
if (h%10==2) PORTB |= (1 << PB1);//2
if (h%10==3) PORTB |= (1 << PB3);//3
if (h%10==4) PORTB |= (1 << PB4);//4
if (h%10==5) PORTD |= (1 << PD5);//5
if (h%10==6) PORTD |= (1 << PD6);//6
if (h%10==7) PORTD |= (1 << PD7);//7
if (h%10==8) PORTB |= (1 << PB0);//8
if (h%10==9) PORTD |= (1 << PD4);//9
}

_delay_ms(3);
PORTC &= ~ (1 << PC3);
PORTC &= ~ (1 << PC1);
PORTC &= ~ (1 << PC5);
PORTD &= ~ (1 << PD1);
PORTB=0x00;PORTC=0x00;PORTD=0x00;
_delay_ms(1);
}

}
}

Комментарии (50)


  1. jar_ohty
    20.11.2015 11:33
    +4

    Схему!!! По плате, конечно, можно нарисовать, часть номиналов с фотографии платы снять, часть из справочника Лихтаренко и общих соображений, но…


    1. iliasam
      20.11.2015 11:36
      +1

      Вот-вот, иначе статья практически бесполезна.


      1. DeadikGudwin
        20.11.2015 19:02
        +1

        К тому же все проекты подобных часов что ранее всречал выглядят довольно монструозно и громоздко из за питания ламп, а здесь весьма компактная и приятная на ид плата.


    1. amartology
      23.11.2015 10:51

      Автор прямо в статье и написал: «В итоге минуя схему сразу стал рисовать печатную плату в SprintLayout и за пару недель родилась вот эта»
      Постарайтесь никогда так не делать. Не только для статей, но и вообще, особенно если собираете что-то сложнее часов или чаще, чем один раз в жизни.
      То, что плата без схемы, без моделирования, без отладки кода сразу заработала — это событие с вероятностью «чудо».


      1. Alexeyslav
        23.11.2015 14:49

        Я бы сказал с точностью до наоборот, вероятность конструкции заработать выше чем если бы она делалась через промежуточный этап схема -> плата. В такой простой схеме как эти часы многие ньюансы реальности не учитываются на этапе рисования схемы, реализация сразу в железе неожиданно оказывается более простой чем синтез печатки с уже готовой схемы.


  1. kuld
    20.11.2015 12:13
    +2

    Да, присоединяюсь к предыдущем комментаторам, на схемку бы взглянуть.
    Особенно интересует как реализовано питание индикаторов.


  1. alexhott
    20.11.2015 12:55
    +1

    Ну тогда подскажите в чем проще всего схемы рисовать. Чтобы не изучать ПО методом тыка.


    1. kuld
      20.11.2015 13:57

      Я в этом fritzing.org/home рисовал


    1. ploop
      20.11.2015 13:59

      sPlan (если чисто рисовать)


    1. x8973
      20.11.2015 14:26
      +1

      Раз осилили Sprint Layout, то осилите и sPlan.


    1. radiolok
      20.11.2015 18:25
      +4

      Попробуйте DipTrace — забудьте уже про этот SprintLayout.


      1. Bluewolf
        20.11.2015 23:59

        Поддерживаю. Официально бесплатная версия до 300 узлов, очень дешевые лицензии, хорошая документация на русском. В целом всё есть необходимое и довольно удобно. Можно использовать и ка SL, просто рисовать плату напрямую.


    1. stripe
      21.11.2015 00:22

      Я раньше пользовался eagle, он бесплатен для двуслойных плат до 10х8 см.
      Последний раз пользовался KiCAD, он бесплатный, GPL, есть под винду, линукс и мак. И в последней версии уже весьма неплох. Собираюсь дальше пользоваться им.
      Ну и их оба можно использовать для рисования плат по имеющейся схеме.


      1. ploop
        21.11.2015 10:02
        +1

        KiCAD уже давно допилили до рабочего состояния. Для профессионального использования может чего-то и не хватает, но для хобби его за глаза.
        Из минусов — своеобразные редакторы, надо привыкнуть. Но стоит научиться — скорость работы возрастает в разы. Ещё мне не нравятся УГО в стандартных библиотеках, но при частой работе постепенно можно перерисовать их.


    1. Deranged
      23.11.2015 10:32

      Жесть, 2015й год на дворе, а народ еще рисует в DipTrace и программирует на Delphi…
      Юзайте Altium Designer, или бесплатный Circuit Maker (http://www.circuitmaker.com), если не охота пиратить. Это тот же Altium только прибитый гвоздями к облачному репозиторию компонентов и схем.


      1. ploop
        23.11.2015 11:28

        Altium Designer
        Угу, запускать этот комбайн, чтобы развести диодный мост? Задачи-то разные, и если инструмент старый, это не значит, что он плохой.


  1. alexhott
    20.11.2015 14:05
    -5

    Просмотрел процесс обновления по диагонали
    чета я сомневаюсь что вин1 и вин 10 в принципе могли бы жить даже поочереди на одном железе


  1. Alexeyslav
    20.11.2015 14:16
    +1

    Странно, установлено 4 индикатора а основная плата рассчитана и распаяна под 5 индикаторов! (5 высоковольтных ключей).

    Организация высокого напряжения почти как классика, но я бы использовал импульсный трансформатор. У дросселя должна быть высокая добротность чтобы так сильно повышать напряжение.

    RTC ставят не зря — чтобы часы шли даже если их отключить от сети и не надо потом вводить снова время. А так то да, если электричество есть вечное и бесперебойное то можно обойтись и без отдельного RTC.


    1. ploop
      20.11.2015 14:20

      RTC ставят не зря — чтобы часы шли даже если их отключить от сети и не надо потом вводить снова время. А так то да, если электричество есть вечное и бесперебойное то можно обойтись и без отдельного RTC.

      Так это можно и на контроллере реализовать, но сложнее. Ну и ещё не все RTC поддерживают программную коррекцию точности хода, а на МК руки развязаны.


      1. jar_ohty
        20.11.2015 14:41

        На МК реализовать программную коррекцию точности хода и с RTC проще простого. RTC считает себе по-своему, а контроллер пересчитывает с учетом поправки.


        1. ploop
          20.11.2015 23:05

          Ну я не работал так уж плотно с RTC, но с которыми имел дело — просто выдают время и дату. Некоторые принимают программную коррекцию в качестве настройки. Если пересчитывать на МК — ошибка будет накапливаться, и рано или поздно придётся обнулять её и записывать новое значение времени (например, когда накопится до секунды).


    1. alexhott
      20.11.2015 14:43

      Пятый ключ для секундных точек, лампочки не нашел, на плате индикатора видна разводка.

      В итоге так и сделал — автотрансформатор. или дроссель с отводом.
      с 5 вольт до 180 не удалось поднять

      Позже заменил питание на 12 вольт — заработало с дросселем

      Можно и сюда было батарейку вставить. там вроде как таймер работает в одном из полусонных режимов


      1. Alexeyslav
        20.11.2015 15:27

        контроллер, даже во сне потребляет гораздо больше энергии чем специализированный RTC. Там батарейки хватает на работу в течении 10 лет… часы устареют раньше чем батарейка сядет.


  1. makaroff
    20.11.2015 18:49

    Использованы ИН-15А?
    Схему бы, список деталей, да печатки… Был бы премного благодарен.


    1. alexhott
      20.11.2015 20:52

      Схему пытаюсь нарисовать в чем нибудь, как только так сразу выложу


    1. alexhott
      20.11.2015 20:55

      индикаторы ИН12Б запятую не использую


  1. gleb_l
    20.11.2015 19:30

    Менять ИД1 на десяток транзисторов с обвязкой — имхо не выигрышное решение. Корпусов ИМС, конечно, формально становится меньше, но размер платы существенно возрастает. Для катодных коммутаторов (при динамической индикации) можно использовать емнип к1109кт* или например счетверенный высоковольтный оптрон в DIP-исполнении (если к старым советским ИМС есть предубеждение) — номер навскидку не помню — можно найти параметрическим поиском. А вот программно-управляемый преобразователь — да, хорошая вещь — должен уменьшать потребляемый ток от +5 при зажженных коротких анодах (цифры 1, 7) :)


    1. alexhott
      20.11.2015 20:54

      ид1 в екате не нашел сразу, да и пишут что она 60-ти вольтовая и поэтому вызывает синее свечение в индикаторах. а транзисторы в магазине были


      1. gleb_l
        20.11.2015 23:39

        1. что будет, если PWM-счетчик зависнет в состоянии высокого уровня на выходе? Это, конечно, не вычислительное ядро — таймеры практически не виснут, но все же — подозреваю, что спалится источник питания 5V. Хорошо бы вотчдог и… резистор в роли предохранителя :)

        2. динамическую индикацию делать в основном цикле и на основе spin-wait задержек — это как жировать на избытке нефти. Благо, что main_loop у вас ничего не делает — как только там появится хоть какой-то более-менее развесистый конечный автомат — придется переписывать индикацию по-нормальному — на прерывание от системного таймера. Контроль за питанием можно будет тоже спрятать в базовый обработчик таймера, и делать синхронно (например, с частотой 1000 гц). В текущей реализации АЦП все время стреляет прерываниями — а нужна ли эта скорострельность для данной мощности генератора и заданного номинала выходного конденсатора преобразователя?


        1. alexhott
          21.11.2015 11:52
          +1

          про вотчдог то я забыл, это ведь еще одна фича контроллера неиспользованная осталась.


      1. gleb_l
        21.11.2015 00:06

        и насчет дешифрации — один-к-одному обычно управляют выводами 7-сегментного индикатора — там это позволяет вывести не только цифры, но и некоторые слова на английском, типа 5toP — но управлять напрямую несинтезирующим индикатором выглядит несколько неожиданно. Насчет ИД1 — у нее есть встроенные ограничительные стабилитроны, так что и 150 вольт ей не страшны, но — кратковременно (наработка до 500 часов).
        ТУ предлагают внешние ограничительные цепочки, однако при динамической индикации можно применить один трюк, позволяющий сэкономить горсть стабилитронов и/или резисторов — так как напряжение на зажженном аноде становится меньше 60 вольт, то для работы ИМС в режиме нужно, чтобы в каждый момент времени хотя бы в одной лампе светилась хотя бы одна цифра. Это условие будет соблюдаться, если не гасить незначащий ноль в разряде десятков часов и в динамической индикации не делать пауз (втч для понижения яркости). В случае же, если по какой-то причине контроллеру надо погасить все индикаторы, то можно программно просто понизить генерируемое анодное напряжение до 60 вольт. В качестве катодных ключей, чтобы не паять много транзисторов и резисторов, можно поставить высоковольтную счетверенную оптопару tlp627-4 — ее выходные транзисторы держат Uкэ до 300 вольт


        1. alexhott
          21.11.2015 11:54

          немного не понял что имеется ввиду насчет управлять напрямую?
          или вы про то что в коде предусмотрен вывод любой цифры на любом индикаторе, даже если на десятках чаов используется только три цифры?
          если про последнее то я индикатор использовал как дисплей при отладке ШИМ и выводил на него замеры АЦП


  1. altexxx
    20.11.2015 19:51

    Тоже хочу упомянуть про RTC

    В даташите на atmega8 написано про точность внутренних RC часов, что точность у них с учётом программной корректировки — 1%

    «At 5V, 25?C and 1.0MHz Oscillator frequency selected, this calibration gives a frequency within ±3% of the nominal frequency.
    Using run-time calibration methods as described in application notes available at www.atmel.com/avr it is possible to achieve ±1% accuracy at any given VCC and Temperature.»

    Это значит, что за сутки такие часы могут давать погрешность в 14 минут.


    1. alexhott
      20.11.2015 21:02
      +1

      в вашем тексте упоминается кварц на 1 мегагерц,
      я использовал часовой кварц, и таймер в асинхронном режиме.
      Не читал даташит на эту тему но за сутки точно меньше минуты, не засекал


      1. altexxx
        20.11.2015 22:58

        Вы правы. Я был не внимателен, и не сразу заметил внешнего часового кварца на вашей схеме.
        Цитата из даташита и весь мой комментарий был не про кварц, а про внутренний RC-генератор.


    1. ploop
      20.11.2015 22:54

      Ну кто же часы делает на RC-генераторе? Кварц, или общий, или часовой асинхронно на таймер.


      1. altexxx
        20.11.2015 23:01

        Конечно. Я не сразу заметил внешний кварц.


  1. Nick0las
    20.11.2015 20:14

    Красивое решение, компактное и максимально использует возможности МК. Еще корпус сделать и будут отличные часы. Выставлять время планируется через разьем программирования? По SPI или просто кнопками?

    Есть пара замечаний по схеме.
    Первое — зачем пищалку включать через эммитерный повторитель? Ведь напряжение на ней будет 5в — падение на переходе база-эмиттер при открытом транзисторе. А если поставить в коллектор, оно будет равно питанию.

    Второе — такая же проблема с управлением затвором полевика. Мало того, что напряжение на затворе в открытом состоянии маленькое, так еще при закрытии затвор разряжается только через ресистор а не через драйвер. А наличие индуктивной нагрузки и заметная емкость сток-затвор могут приводить к проблемам с быстрым закрытием ключа. Это может быть одной из причин, почему при низком питании простого дросселя не хватало для получения высокого. Хотя автотрансформатор на мой взгляд предпочтительнее в любом случае. Еще из мелких замечаний — не помешал бы керамический конденсатор 0.1мкф по питанию процессора (можно напаять smd1206 с обратной стороны платы), его ставят для исключения случайных сбоев, хотя как схема и без него работает.


    1. alexhott
      20.11.2015 21:11

      выставлять время планируется кнопками подключенными в разъем программирования.
      насчет схемотехники — за основу брал части разных схем. Пищалку с эммитерным повторителем гдето нашел и такую схему включения полевика тоже. Позже уже поизучал подробнее, нашел с двумя транзисторами.
      А так действительно пришлось резистор мезду эммитером и затвором почти в ноль поставить и около 300 ом для разряда затвора.
      Примерно так получилось в итоге
      Изображение из фотоальбомов E1.ru"


      1. alexhott
        20.11.2015 21:15

        синим на ноге контроллера желтым на затворе


    1. alexhott
      20.11.2015 21:17

      а тут на затворе и на дросселе
      Изображение из фотоальбомов E1.ru


      1. Nick0las
        20.11.2015 21:52

        Судя по осцилограммам схема в итоге неплохо работает. Но будете делать другие схемы с силовыми ключами — обащайте внимание на то, как идет раскачка затвора. И для высоковольтных ключей, работающих на больших токах 4.5..5в на затворе бывает мало.


        1. alexhott
          21.11.2015 11:55

          действительно мало, после повышения до 12 преобразоватеь потребляет гораздо меньше тока.


          1. Nick0las
            21.11.2015 19:23

            Вы на затворе повысили до 12 или питание довели до 12? Если у вас схема такая как на плате в статье, то напряжение на затворе выше 5в не будет. При повышении питания в любом случае перобразователь будет жрать меньше тока, потому что КПД при повышении питания не падает, а то и растет. Другое дело, что при 5в на затворе ключ может входить в режим насыщения (смотрите даташит на ключ, там обычно рисуют ВАХ исток-сток для разных напряжений на затворе). Для вашего приложения в насыщение ключа неприятно но не смертельно. В мощной электронике насыщение обычно приводит к мгновенному выходу из строя ключа, иногда с фейрверком.


            1. gleb_l
              21.11.2015 23:17

              при 5в на затворе ключ может входить в режим насыщения
              — наоборот же — имеется в виду неполное открытие канала недостаточным напряжением затвор-исток — то есть «хвост» линейного режима. А насыщение для ПТ — это режим, при котором dS / dUзи -> 0 — то есть проводимость канала перестает меняться при изменении напряжения затвор-исток — что и используется для минимизации активных потерь при работе ПТ в ключевом режиме


              1. Nick0las
                22.11.2015 01:17

                Может я неправильно выразился, и мы запутались в терминологии. Давайте посмотрим выходную ВАХ.

                При фиксированом напряжении V_gs на затворе при малых токах стока I_d канал имеет почти линейную ВАХ, V_ds=R_ds*I_d. На графике эта область названа linear region. При этом вообще говоря R_ds не константа, и зависит от V_gs. Но для каждого V_gs ток стока I_d не может быть выше некоторого предела, называемого током насыщения I_d_sat(V_gs). Когда ток стокадостигает тока насыщения, он не может расти дальше даже если напряжение исток-сток вырастет. На графике эта область называется saturation region. В комментариях уровнем выше я имел в виду именно этот режим, хотя насыщением иногда называют и другие режимы, вы имели в виду режим когда R_ds(V_gs) достигает предела и перестает меняться с ростом V_gs, поэтому мы не сразу поняли друг друга.


                1. gleb_l
                  22.11.2015 02:05

                  А, понял, имеется в виду насыщение по току в короткозамкнутом включении (то есть область работы ПТ в режиме стабилизатора тока) при недостаточном Uзи и большом Uси. Оно наступает гораздо позже, чем просто неполное открытие (то есть с точки зрения ключевого режима — повышенное Rси), о котором говорил я — на ВАХ это как раз видно разными углами наклона начальных частей кривых, а исходно я имел в виду график Rси = f(Uзи), и под насыщением понимал отсутствие дальнейшего уменьшения сопротивления канала при априори заданном Uси и увеличивающимся Uзи.
                  Но если есть устоявшаяся терминология в плане насыщения, как именно выходной характеристики — то спорить не буду — лучше съем свою шляпу :)

                  Вообще, выходная характеристика — это работа ПТ на нулевое сопротивление нагрузки, поэтому в реальных условиях загнать его в область ограничения тока можно только при условии импульсной работы с многократным превышением пикового тока канала над средним. Впрочем, импульсный преобразователь — как раз такое применение и есть.


            1. alexhott
              23.11.2015 05:44

              Трансформатор заменил. Вместо 220х6 поставил 220х12


            1. alexhott
              23.11.2015 05:52

              Трансформатор заменил. Вместо 220х6 поставил 220х12.
              Транзистор rf740 на ощупь не греется совсем — градусов 30, дроссель и трансформатор градусов до 45 греются


  1. serafims
    22.11.2015 13:29

    Можно ещё неонки подключить для индикации точек между разрядами… Хорошая реализация.