Определение физических констант с помощью STM32 и светодиода

    Введение


    Светодиод — полупроводниковый прибор, излучающий электромагнитные волны видимого или близкого к нему диапазона. Его работа основана на эффекте рекомбинации носителей заряда в полупроводниковом переходе с излучением фотонов (полное теоретическое объяснение можно найти в соответствующих книгах по физике, здесь оно не описывается). Основные электрические и оптические свойства (при заданной конструкции) определяются фундаментальными физическими постоянными, косвенное измерение которых я и опишу в этой статье. А именно, в итоге определяется значение элеметарного заряда (заряда электрона) и постоянная Планка.

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

    Выбор микроконтроллера


    Так как такая идея пришла мне незадолго до экзамена, нужно было разобраться и реализовать готовую рабочую схему буквально за пару дней. Раньше абсолютно никакого опыта работы с микроконтроллерами у меня не было, поэтому выбирал я по информации из различных статей и форумов. В итоге остановился на семестве 32-битных ARM Cortex от ST — STM32. Есть достаточно большой ассортимент отладочных плат на таких контроллерах, содержащих самое необходимое в удобном виде: сам процессор, простую обвязку, USB-отладчик (STLink). Я взял базовую STM32VLDISCOVERY на основе контроллера STM32F100RB. Основные характеристики: 8 Кб RAM, 128 Кб Flash, 24 МГц по-умолчанию, всякие АЦП/ЦАП, таймеры, десятки пинов GPIO, а также другие интерфесы. Программы обычно пишутся на С, хотя конечно возможен и ассемблер, и С++.

    Подключение и начало работы


    С пол-пинка завести это устройство под Linux у меня тогда не получилось (потом правда всё заработало), поэтому воспользовался средой CooCox CoIDE под винду — она имеет готовые настройки и пример именно для такой отладочной платы, как у меня. Собственно, никаких проблем ни с подключением, ни с компиляцией в ней не возникло — всё работало сразу.

    Для управления процессором и периферией существует достаточный выбор библиотек: CMSIS от ARM и ST, StdPeriph от ST, библиотека от CooCox и другие. Вообще, сейчас мне наиболее правильным и даже простым кажется использование CMSIS: она предоставляет определения используемых структур и констант, которые соответствуют даташиту. Однако, так как написание этого проекта происходило в спешке, я даже не заметил как использовал там все три перечисленные библиотеки :) Конечно, зная внутреннюю структуру можно достаточно легко перенести всё это на базовую CMSIS. Туториалов по началу разработки для STM32 и так хватает, поэтому больше останавливаться на этом я не буду.

    Принципиальная схема


    Раз уж на плате Discovery есть разведённое питание от USB (5 В, а также стабилизатор на 3.3 В), то и измерительная часть схемы питается от этого же источника. Из дополнительных деталей — 3 резистора, 1 конденсатор, 1 транзистор, ну и конечно светодиоды. Электрическая схема очень простая, и я её спаял навесным образом — всё держалось на выводах элементов:

    image

    Здесь выключателем образно обозначено подключение к пину контроллера, на который подаётся 0 или 1. Подтяжка к 5 В использована, т.к. несмотря на то, что большинство пинов поддерживают подачу на них 5 В, сами могут выдать только 3.3. Здесь же, соответственно, при нуле на пине напряжение будет 0, а при единице — почти 5 В. Конденсатор обеспечивает плавное нарастание и снижение напряжения в течение нескольких секунд. Выводы, обозначенные «АЦП» подключаются к любым двум входам АЦП микроконтроллера, и обеспечивают измерение как напряжения, так и тока светодиода: image

    Индикация


    Конечно, можно просто переслать все данные в компьютер, а уже там обработать, но хотелось отображения информации прямо на месте. Для этого я использовал обычный двустрочный текстовый дисплей типа такого: image
    Для передачи данных на него достаточно 6 пинов GPIO, а с программной стороны самый быстрый способ — использовать какую-нибудь библиотеку. Я взял драйвер для HD44780 (это контроллер в дисплее), который в CooCox подключается прямо из меню. Самому написать такой драйвер тоже просто (что я потом, кстати, сделал), но дольше.

    Измерения


    Из теории полупроводников известно (можно прочитать в учебниках), что при малых значениях тока через p-n переход, пока до насыщения далеко, зависимость тока от напряжения экспоненциальная: image, где I — ток через переход, I0 — ток электронов или дырок при отсутствии напряжения, e — заряд электрона, V — напряжение на переходе, kb — константа Больцмана, T — температура. Последние приближённое равенство верно практически точно даже для достаточно малых напряжений (десятые доли вольта).

    Для достаточно больших значений тока, когда наступает насыщение, диод можно представить в виде последовательно включенных постоянного падения напряжения (равного потенциальному барьеру перехода) и резистора, который соответствует сопротивлению полупроводника и контактов. Потенциальный барьер перехода в случае со светодиодом соответствует энергии испускаемых фотонов, т.е. image, где V0 — напряжение перехода, h — постоянная Планка, c — скорость света, image — длина волны излучения светодиода. Собственно, именно светодиод (а не обычный диод) нужен для определения длины волны. Я брал эти данные из даташитов к светодиодам, хотя вообще можно и измерить в домашних условиях — видел несколько статей по созданию спектрометра на основе CD/DVD диска.

    Микроконтроллер же как раз и производит замер ВАХ светодиода, а именно двух её участков: малые токи, и относительно большие. Измерения производятся автоматически после нажатия кнопки, при возрастании тока до 25 миллиампер, а затем при его убывании обратно к нулю. Для интересующих участков ВАХ контроллер затем вычисляет коэффициенты методом наименьших квадратов, а из них простыми арифметическими действиями получаются искомые константы.

    Типичный вид линейного участка ВАХ: image

    И экспоненциального: image

    В итоге значения определяемых констант получились очень близкими к реальным: e=1.54*10-19 Кл, h=5.72*10-34 Дж*с (среднее для всех имеющихся светодиодов, достаточно большой разброс).

    Программирование


    Не хотелось бы много останавливаться на написании кода в данном случае, так как значительная его часть, ответственная за взаимодействие с периферией, взята из различных статей и туториалов — именно поэтому используются различные библиотеки, а не одна :) Статья же и без этого получилась достаточно объёмной. Возможно, в ближайшее время напишу более ориентированную на программирование статью, уже по другому проекту на основе того же микроконтроллера.

    Весь проект (исходники, служебные файлы CooCox, небольшой отчёт) можно просмотреть или скачать на hg.plav.in/stm32_ledcvc/file (отчёт — в папке report).

    Заключение


    Поставленные изначально цели этим проектом достигнуты: я начал разбираться в программировании микроконтроллеров, а также рассказал вопрос по выбору на экзамене :) Конечно, некоторые вещи можно было бы улучшить или сделать по-другому. Например, плавное изменение напряжения можно было сделать через ЦАП микроконтроллера, а не постепенную зарядку конденсатора — тогда можно было бы обойтись меньшим количеством дополнительных деталей. А использование резистора с номиналом больше, чем 27 Ом, дало бы более точные измерения в диапазоне малых токов — но сначала таких измерений я не планировал, а потом переделывать схему было уже поздно. Кстати, такие более точные измерения, возможно, позволят производить измерение температуры (а в приведённой схеме погрешность получилась бы около +-30 градусов, или даже больше).

    Если есть какие-то вопросы по любой части, или есть вещи, которые хотелось бы увидеть в статье, связанной с программированием STM32 — пишите :)
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 44

      0
      Вот это годный вопрос по выбору, не то что стандартные!
      • UFO just landed and posted this here
          0
          Я сначала думал про измерение полевого транзистора, но что там можно «померять», а не просто посмотреть? У светодиода-то в первом приближении происходящие процессы можно достаточно просто описать, и понятно что откуда берётся.
          • UFO just landed and posted this here
          +2
          Вы пишите, что получили значение постоянной Планка с точностью до 2-го знака после запятой как будто знали точное значение длины волны светодиода. Если провели измерения для нескольких светодиодов, то могли бы привести хотя бы среднеквадратичное отклонение искомых значений.
            0
            А за счет чего должна плыть частота излучения перехода при более-менее постоянной температуре?

            Максимальная ширина полосы должна определяться суммой ширины валентной зоны и ширины зона проводимости. Реальная — заполнением, зависящим от температуры, и шириной валентной зоны, как мне кажется.
              0
              В документации на обычные коммерческие светодиоды никогда не указывают точное значение даже для центральной длины волны излучения.
                +1
                Я уже понял, что протупил. Т. к. частота излучения зависит от свойств перехода, а не собственных величин запрещенной зоны полупроводников. Разброс по частоте может зависеть от непостоянных характеристик легирования, как минимум.
                  0
                  В даташитах нашлась длина волны максимального излучения (которую я и использовал), доминирующая длина волны, и полуширина спектра (которую считал за погрешность).
                    –1
                    Считать спектр излучения за погрешность доминирующей длины волны — это очень интересный подход. И какое же вероятностное распределение у этой «погрешности»?? Я понимаю если бы спектральные компоненты были бы как-то распределены во временной области, но для простого излучения простого светодиода все спектральные компоненты существуют единовременно.
                      0
                      Я неявно предполагал, что излучение для всех экземпляров конкретной модели светодиода практически одинаковое, и имеет максимум в одной и той же длине волны максимального излучения. В интервале полуширины спектра находится значительно бОльшая часть излучения, и я считал, что одной из этих длин волн соответствует энергии фотонов eU. При таких предположениях эта полуширина как раз и будет погрешностью, если я правильно помню как определяется полуширина.

                      Другое дело, что эти предположения сделаны без строгого обоснования, но разве на самом деле энергия излучаемых квантов не будет соответствовать eU? У нас теории полупроводников не было, но из того что я прочитал я понял так.
                        –1
                        Найдите мне хотя бы одно упоминание того, что полуширину спектра излучения можно считать за погрешность измерений.
                          0
                          Какая «конструктивная» критика :) Я же написал в прошлом комментарии, какие предположения были неявно сделаны. Лучше бы указали, какое из них неверно, и почему.
                            –1
                            Если считать, что приложенному напряжению сооветствует только одна длина волны в выходном спектре излучения светодиода, то расчеты наверное можно считать правильными. Называть спектр излучения погрешностью измерений нельзя.
                              0
                              С учётом приведённых выше предположений, это именно что погрешность: ведь считаем, что реальное значение длины волны находится в пределах этой полуширины.
                      –1
                      2 знака после запятой при вычислении постоянной Планка предполагает, что вы измерили длину волны тоже с точностью 2-х знаков после запятой, а именно с точностью до 0.01нм.
                        +1
                        С чего? О_о Длину волны с таким же успехом можно и в метрах мерять — и что, двух дробных знаков хватит? А если в фемтометрах — и там нужны 2 знака после запятой? :)
                          –1
                          Запишите формулу, по который считали постоянную Планка и посмотрите как влияет погрешность длины волны на результат. Сейчас пересчитал, получилось примерно 0.5нм, а не 0.01нм.
                            –1
                            Что там считать-то: погрешность в 1 нм при длине волны 572 нм даёт погрешность в 0.01 при значении постоянной Планка 5.72. Только вот не совсем понимаю, к чему вы это? Наличие 3 значащих цифр в ответе не предполагает, что все они заведомо такие, это нормальная практика оставлять несколько больше. Например, в википедии дано на 2 цифры больше, чем заведомо известно (и не только там). Ведь есть же разница, к примеру, 1.5+-0.2 и 1.55+-0.2 — хотя по-вашему третий знак писать не нужно.
                              0
                              1.55+-0.2 — так не пишут, следует писать 1.55+-0.20
                                0
                                Погрешность всё равно оценивается приближённо, тем более здесь — чем не хватает одной значащей цифры? Да и зачем здесь придираетесь по пустякам — лучше бы по сути что-то написали.
                  0
                  Значение постоянных вовсе не получилось совпадающим с реальными с точностью до 2 знаков после запятой — например, постоянная Планка у меня 5.72, а на самом деле 6.63. Написал я результат с 2 знаками только потому, что всё-таки есть разница, к примеру, между 1.54 и 1.5.
                  +3
                  Ооо, вот это правильное мигание светодиодом!
                    0
                    ширина запрещенной зоны зависит от температуры — чем ниже температура, тем запрещенная зона шире и энергия фотонов больше, значит частота больше — если окунуть красный светодиод в жидкий азот — можно из него зеленый сделать — так что тут еще нужно частоту реальную померить. Так как сам кристалл имеет разную температуру в зависимости от протекающего через него тока. Короче прикольно, молодец, но если поразбираться — с хорошей точностью померить — задача нетривиальная, что за ВУЗ?
                      –3
                      Ширина запрещенной зоны от температуры не зависит.
                        +1
                        авторитетное заявление
                          0
                          Если, конечно, её понимать как разницу между верхней границей валентной зоны и нижней границей зоны проводимости. Сейчас нашел ещё вариант с разницей между верхней границей валентной зоны и верхней заполненной в среднем границей зона проводимости. До этого не встречал второй вариант.
                            –2
                            да как вы не понимайте — зависит все равно — чтобы не утомлять выкладками квантовой физики — просто есть факт — при температурах абсолютного нуля полупроводник становится диэлектриком, диэлектрик от полупроводников отличается лишь шириной запрещенной зоны, значит ширина зависит от температуры, вы разберитесь что это такое — на википедии статья по зонной теории вполне ничего, могу книжки посоветовать
                              +2
                              Как появляются электроны в зоне проводимости я прекрасно понимаю. Что заполнение зоны проводимости меняется с изменением температуры мне тоже очевидно.

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

                              Также стоит понимать, что в светодиоде:
                              — примесные полупроводники
                              — энергия рекомбинации электронно-дырочной пары зависит не от ширины запрещенных зон собственно полупроводников, а от сдвига уровней на p-n переходе.
                                0
                                ну раз вы понимаете — то наверное понятно, что ширина запрещенной зоны так же зависит от минимального расстояния между двумя соседними атомами решетки(постоянной решетки), а это расстояние в свою очередь непостоянно и зависит от температуры
                              • UFO just landed and posted this here
                                  0
                                  ну тут соглашусь — аргумент поспешный и неверный привел, но как тогда объясните изменение частоты излучения светодиода?
                                    +1
                                    Смещение квазиуровней ферми в примесных полупроводниках. Они, очевидно, должны зависеть от температуры. Энергия рекомбинации зависит от смещения зон полупроводников по разные стороны перехода.
                                    • UFO just landed and posted this here
                                    +1
                                    при температурах абсолютного нуля полупроводник становится диэлектриком, диэлектрик от полупроводников отличается лишь шириной запрещенной зоны, значит ширина зависит от температуры
                                    Пропустил такую прекрасную фразу… Извините. Думал, что разговариваю со студентом хотя бы второго-третьего курса, который про зонную теорию не только на википедии читал.

                                    Рекомендую заглянуть в какой-нибудь учебник по физике. Если на пальцах: проводимость материала определяется количеством электронов (заполненностью) зоны проводимости. В проводниках там всегда есть большое количество электронов, вне зависимости от температуры. В диэлектриках и полупроводниках — есть запрещенная зона. Распределения электронов по энергии похоже на статистику Ферми-Дирака: в нуле температуры стремится превратиться в «ступеньку», т. е. все электроны находятся на минимальных возможных уровнях энергии, валентная зона полностью заполнена, в зоне проводимости пусто. При росте температуры электроны за счёт тепловой энергии оказываются в небольшом количестве в зоне проводимости, и чем больше температура, тем больше электронов при той же ширине запрещенной зоны. Чем больше запрещенная зона — тем меньше электронов обладают достаточной энергией, чтобы оказаться в зоне проводимости. Именно это отличает диэлектрики от полупроводников.

                                    Общепринято называть диэлектриками то, что при 300 К имеет малую проводимость (удельное сопротивление порядка 10^10-10^16 Ом*м при н. у.), т. к. количество электронов в зона проводимости пренебрежимо мало, а полупроводниками то, что имеет удельное сопротивление порядка 10^-3-10^7 Ом*м.

                                    Это если говорить о собственной проводимости.

                                    Id est то, что полупроводник около 0 К ведет себя, как диэлектрик не означает, что у него сколь либо изменяется ширина запрещенной зоны в том смысле, что я указал выше и видел в литературе по физике. Судя по всему, в технической литературе под шириной запрещенной зоны часто понимают немного иное, что я для себя сегодня открыл.
                                    +2
                                  0
                                  Измерения проводились всё-таки при нормальной комнатной температуре, для которой производители светодиодов и указывают значения. Для учёта этого фактора, а также более точного значения длины волны, по сути, нужен дополнительно только спектрометр — ничего нетривиального, вроде. И, кстати, это относится только к половине эксперимента, а именно определению постоянной Планка. Заряд электрона же определяется не используя длину волны.
                                  МФТИ, ФУПМ (так что я не особо физик :) ).
                                  0
                                  Хотело бы фотографий устройства в посте. Можно снятые на зажигалку
                                    0
                                    Увы, не подумал сделать. На самом деле, выглядело всё достаточно просто — плата Discovery, к контактам которой припаяны короткие проводки а) к LCD дисплею и б) к части схемы, которая нарисована в посте. Никаких печатных плат, ничего такого. На самом экзамене для демонстрации использовал ещё USB-аккумулятор.
                                      0
                                      А что за вуз?
                                        +1
                                        МФТИ, факультет ФУПМ.
                                          0
                                          Крепко жму руку :)
                                    0
                                    Блин, вот это я понимаю моргание светодиодом, самому как-то в голову не приходило что фундаментальные физические константы можно измерить светодиодом и парой проводов. Всегда считал что для измерения таких штук нужен какой нибудь синхрофазотрон как минимум. Интересно, а что ещё такого можно измерить в домашних условиях?
                                      0
                                      Да в общем-то много лаб по электричеству, например, можно спокойно сделать в домашних условиях (идеи можно посмотреть в лабниках каких-нибудь институтов). Механику тоже, при прямых руках и наличии инструментов :) Ну и из других тем тоже, как эта например — квантовая физика.

                                    Only users with full accounts can post comments. Log in, please.