Схема простого частотомера
Схема частотомера довольно простая, большинство функций выполняет микроконтроллер. Единственное, для микроконтроллера необходим усилительный каскад, чтобы увеличить входное напряжения с 200-300 мВ до 3 В. Транзистор, включенный по схеме с общим эмиттером, обеспечивает псевдо-TTL сигнал, поступающий на вход микроконтроллера. В качестве транзистора необходим какой-нибудь «быстрый» транзистор, я применил BFR91 – отечественный аналог КТ3198В.
Напряжение Vкэ устанавливается на уровне 1.8-2.2 вольта резистором R3* на схеме. У меня это 22 кОм, однако может потребоваться корректировка. Напряжение с коллектора транзистора прикладывается к входу счетчика/таймера микроконтроллера PIC, через последовательное сопротивление 470 Ом. Для выключения измерения, в PIC задействываются встроенные pull-down резисторы. В PIC реализован 32-битный счетчик, частично аппаратно, частично софтово. Подсчет начинается после того, как выключаются встроенные pull-down резисторы микроконтроллера, продолжительность составляет точно 0.4 секунды. По истечении этого времени, PIC делит полученное число на 4, после чего прибавляет или отнимает соответствующую промежуточную частоту, для получения реальной частоты. Полученная частота конвертируется для отображения на дисплее.
Для того, чтобы частотомер работал правильно, его необходимо откалибровать. Проще всего это сделать так: подключить источник импульсов с заранее точно известной частотой и вращая подстроечный конденсатор выставить необходимые показания. Если данный метод не подходит, то можно воспользоваться «грубой калибровкой». Для этого, выключите питание прибора, а 10 ножку микроконтроллера подсоедините на GND. Затем, включите питание. МК будет измерять и отображать внутреннюю частоту.
Если вы не можете подстроить отображаемую частоту (путем подстройки конденсатора 33 пФ), то кратковременно подсоедините вывод 12 или 13 МК к GND. Возможно, что это нужно будет сделать несколько раз, так как программа проверяет эти выводы только один раз за каждое измерение (0.4 сек). После калибровки, отключите 10 ногу микроконтроллера от GND, не выключая при этом питания прибора, чтобы сохранить данные в энергонезависимой памяти МК.
Печатную плату рисовал под свой корпус. Вот что получилось, при подаче питания выскакивает кратковременно заставка и частотомер переходит в режим измерения, тут на входе нет ни чего:
Задержка выключения освещения
Рейтинг: 5 / 5
- Подробности
- Категория: схемы на ATtiny
- Опубликовано: 30.09.2017 14:45
- Просмотров: 4011
Процедура закрытия дверей в потемках – затея не из приятных. Закрыть две двери, затем ролету (неудобная штука даже при свете, скажу вам), затем собрать с крыльца ноутбук и прочие пакеты, при этом умудриться удержать на поводке собаку норовящую “грызнуть” проходящего мимо прохожего (издержки воспитания) при этом имея над головой на крыльце свежевыключенную лампочку… Рано или поздно такая процедура достанет кого угодно. Мне всегда было интересно почему действие которое нужно провести последним при уходе и первой при приходе – выключить и включить соответственно свет – перенесли в другой конец логической последовательности? Правильно! Потому что выводить выключатель на улицу – не позволяют “ценности” основной массы нашего общества. А жаль… Но это вопрос скорее философский. Как говорил наш когда-то любимый президент – “маемо що маемо”, и решать придется проблему с другой стороны. Длинноватое получилось предисловие для устройства, которое до меня придумали раз -надцать.
Использование инструментальных средств с управлением через командную строку
http://www.gaw.ru/html.cgi/adv/soft/avr/astudio.htm
В состав пакета входят новые прошивки для инструментальных средств, которые необходимы для разрешения калибровки. Обновление прошивки инициируется автоматически при первом соединении инструментального средства с AVR Studio 4.11 SP1 (или выше). Альтернативно обновление может быть выполнено вручную, как описано в помощи к AVR Studio.
В состав исходного кода входят три командных файла. В этих файлах показывается, как использовать интерфейс командной строки для программирования калибровочного кода в целевой микроконтроллер, выполнить калибровку, а затем перепрограммировать микроконтроллер конечной прошивкой. Три командных файла управляют калибровкой ATmega16 посредством STK500/ISP, JTAGICE и JTAGICE mkII, соответственно. Изучите данные командные файлы и интегрированную помощь в AVR Studio, чтобы понять, как использовать инструментарий командной строки STK500/ISP, JTAGICE и JTAGICE mkII. В таблице 2 представлен перечень новых команд для exe-файлов, касающихся выполнения калибровки.
Таблица 2 – Специфические опции калибровки нового генератора в stk500.exe и jtagice.exe
Команда | Описание |
-Z | Чтение калибровочного байта из памяти ЭСППЗУ. ‘addr’ – адрес байта. Операция чтения выполняется перед выполнением команды “chip erase” (стирание кристалла). Использование ‘-S#’ приведет к перезаписи значения во флэш-памяти или ЭСППЗУ после стирания кристалла. |
-Y | Выполнение последовательности калибровки генератора. Данная команда перекрывает все другие операции. exe-файл возвратит ошибочный уровень 1, если от целевого микроконтроллера не будет принят сигнал подтверждения. |
Обзор RC-генераторов
В процессе развития AVR-микроконтроллеров в них встраивались различные RC-генераторы. Обзор микроконтроллеров и их RC-генераторов представлен в таблице 1. Перечень, представленный ниже, отсортирован по типу генераторов, что в какой-то мере соответствует дате выпуска. В таблице представлены только микроконтроллеры с регулируемыми генераторами.
Таблица 1 – Частота генераторов различных версий и особенности микроконтроллеров
Версия генератора | Микроконтроллер | Частота RC-генератора, МГц | CKDIV | PRSCK |
1.1 | ATtiny12 | 1.2 | — | — |
1.2 | ATtiny15 | 1.6 | — | — |
2.0 | ATmega163 | 1.0 | — | — |
2.0 | ATmega323 | 1.0 | — | — |
3.0 | ATmega8 | 1.0, 2.0, 4.0 и 8.0 | — | — |
3.0 | ATmega16 | 1.0, 2.0, 4.0 и 8.0 | — | — |
3.0 | ATmega32 | 1.0, 2.0, 4.0 и 8.0 | — | — |
3.1 | ATmega64 | 1.0, 2.0, 4.0 и 8.0 | — | XDIV(1) |
3.1 | ATmega128 | 1.0, 2.0, 4.0 и 8.0 | — | XDIV(1) |
3.0 | ATmega8515 | 1.0, 2.0, 4.0 и 8.0 | — | — |
3.0 | ATmega8535 | 1.0, 2.0, 4.0 и 8.0 | — | — |
3.0 | ATtiny26 | 1.0, 2.0, 4.0 и 8.0 | — | — |
4.0 | ATmega162 | 8.0 | Есть | Есть |
4.0 | ATmega169 | 8.0 | Есть | Есть |
4.0 | ATmega165 | 8.0 | Есть | Есть |
4.1 | ATtiny13 | 4.8 и 9.6 | Есть | Есть |
4.2 | ATtiny2313 | 4.0 и 8.0 | Есть | Есть |
5.0 | ATmega48, ATmega88, ATmega168 | 8.0 | Есть | Есть |
5.0 | ATtiny25, ATtiny45, ATtiny85 | 8.0 | Есть | Есть |
5.0 | ATmega325, ATmega3250, Atmega645, Atmega6450 | 8.0 | Есть | Есть |
5.0 | ATmega329, ATmega3290, Atmega649, Atmega6490 | 8.0 | Есть | Есть |
5.0 | AT90CAN128 | 8.0 | Есть | Есть |
5.0 | AT90PWM2, AT90PWM3 | 8.0 | Есть | Есть |
Прим.: 1. XDIV — название регистра предделителя.
Характеристики генераторов
Частота внутреннего RC-генератора зависит от температуры и от рабочего напряжения. Пример такой зависимости представлен на рисунке 1, на котором показана частота RC-генератора на 8МГц микроконтроллера ATmega169. Как видно из данного рисунка частота увеличивается с увеличением температуры и слегка снижается при увеличении рабочего напряжения. Данные характеристики отличаются для разных типов микроконтроллеров. Подробности по интересующему типу микроконтроллера необходимо искать в документации на него.
Рисунок 1 – Зависимость частоты калиброванного RC-генератора на 8МГц микроконтроллера ATmega169 от рабочего напряжения и температуры.
Все микроконтроллеры с регулируемыми генераторами содержат регистр OSCCAL для настройки частоты генератора. Увеличение значения в OSCCAL приводит к «псевдомонотонному» увеличению частоты. Причиной употребления термина «псевдомонотонный» является то, что при некоторых единичных приращениях значения OSCCAL частота не будет увеличиваться или будет слегка снижаться. Но при следующем единичном увеличении рост частоты возобновится. Другими словами, увеличение значения регистра OSCCAL на 1 не увеличивает частоту, но увеличение значения OSCCAL на 2 будет всегда увеличивать частоту
Данную информацию важно учесть при поиске наилучшего калибровочного значения для достижения заданной частоты. Пример псевдомонотонности зависимости между значением OSCCAL и частотой RC-генератора на 8МГц микроконтроллера ATmega169 приведен на рисунке 2
Обратите внимание, что в микроконтроллере ATmega169 используется только 7 разрядов регистра OSCCAL. Таким образом, максимальной частоте соответствует значение OSCCAL = 128
Рисунок 2 – Зависимость частоты калиброванного RC-генератора микроконтроллера ATmega169 от значения OSCCAL.
Для всех регулируемых генераторов очень важно учесть, что не рекомендуется настраивать генератор на частоту, отличающуюся более чем на 10% от основной, приведенной в технических характеристиках на микроконтроллер в документации. Причиной этому является зависимость внутренней синхронизации микроконтроллера от частоты RC-генератора.. Зная фундаментальные характеристики RC-генераторов есть возможность создать эффективную калибровочную процедуру, которая калибрует RC-генератор на заданную частоту, которая отличается не более чем на 10% от основной, при любом рабочем напряжении и температуре с точностью +/-1%
Зная фундаментальные характеристики RC-генераторов есть возможность создать эффективную калибровочную процедуру, которая калибрует RC-генератор на заданную частоту, которая отличается не более чем на 10% от основной, при любом рабочем напряжении и температуре с точностью +/-1%.
Необходимые материалы и комплектация для изготовления
Чтобы собственноручно сделать станок для намотки проволоки на круглый каркас, понадобится несколько деталей.
Станина из листового материала, скрепленного сварочным методом. Оптимальная толщина основания – 15 мм, боковых частей – 6 мм. Устойчивость конструкции обеспечивается ее тяжестью:
- Боковые части прикладывают друг к другу, одновременно просверливают в них отверстия.
- Подготовленные элементы приваривают к основанию.
- В высоко расположенные пробоины монтируют втулки, в нижние – подшипники, которые можно взять из использованного дисковода.
- Крепежные детали с внешней стороны боковин надежно фиксируют крышками.
Важные составляющие конструкции станка – валы:
- Верхний вал диаметром 12 мм держит каркас катушки. Его роль может исполнять аналогичная конструктивная деталь вышедшего из строя матричного принтера.
- На средний вал такого же диаметра опирается устройство подачи длинномерного материала. Перед вводом в эксплуатацию его желательно отполировать.
- Нижний вал является подающим элементом. Его размеры зависят от шага резьбы.
Втулка укладчика диаметром и длиной по 20 мм. Ее внутренняя резьба совпадает с резьбой нижнего вала.
Шкивы – трехступенчатые, выточенные из стали, общей толщиной не более 20 мм. В противном случае придется увеличить хвостовики верхнего и нижнего валов. Каждый блок содержит три канавки с разным диаметром, в зависимости от сечения проволоки. Их ширина определяется пассиками. Такая комбинация обеспечивает большое разнообразие шагов намотки провода.
Счетчик витков намоточного станка на attiny2313
Схема счетчика представлена на рисунке. Шесть линий порта В (РВ2— РВ7) и пять линий порта D (PDO, PD1, PD4—PD6) использованы для организации динамической индикации результата счета на светодиодный индикатор HL1. Коллекторными нагрузками фототранзисторов VT1 и VT2 служат встроенные в микроконтроллер и включенные программно резисторы, соединяющие соответствующие выводы микроконтроллера с цепью его питания. Увеличение результата счета N на единицу происходит в момент прерывания оптической связи между излучающим диодом VD1 и фототранзистором VT1, что создает нарастающий перепад уровня на входе INT0 микроконтроллера. При этом уровень на входе INT1 должен быть низким, т. е. фототранзистор VT2 должен быть освещен излучающим диодом VD2. В момент нарастающего перепада на входе INT1 при низком уровне на входе INT0 результат уменьшится на единицу. Другие комбинации уровней и их перепадов на входах INT0 и INT1 результат счета не изменяют.
По достижении максимального значения 9999 счет продолжается с нуля. Вычитание единицы из нулевого значения дает результат 9999. Если обратный счет не нужен, можно исключить из счетчика излучающий диод VD2 и фототранзистор VT2 и соединить вход INT1 микроконтроллера с общим проводом. Счет будет идти только на увеличение.
Как уже сказано, детектором снижения напряжения питания служит встроенный в микроконтроллер аналоговый компаратор. Он сравнивает нестабилизированное напряжение на выходе выпрямителя (диодного моста VD3) со стабилизированным на выходе интегрального стабилизатора DA1. Программа циклически проверяет состояние компаратора. После отключения счетчика от сети напряжение на конденсаторе фильтра выпрямителя С1 спадает, а стабилизированное еще некоторое время остается неизменным. Резисторы R2—R4 подобраны так. что состояние компаратора в этой ситуации изменяется на противоположное. Обнаружив это, программа успевает записать текущий результат счета в EEPROM микроконтроллера еще до прекращения его функционирования по причине выключения питания. При последующем включении программа прочитает число, записанное в ЕЕРРОМ, и выведет его на индикатор. Счет будет продолжен с этого значения.
Ввиду ограниченного числа выводов микроконтроллера для подключения кнопки SB1, обнуляющей счетчик, использован вывод 13, служащий инвертирующим аналоговым входом компаратора (AIM) и одновременно — «цифровым» входом РВ1. Делителем напряжения {резисторы R4, R5) здесь задан уровень, воспринимаемый микроконтроллером как высокий логический При нажатии на кнопку SB1 он станет низким. На состояние компаратора это не повлияет, так как напряжение на входе AIN0 по-прежнему больше, чем на AIN1.
При нажатой кнопке SB1 программа выводит во всех разрядах индикатора знак «минус», а после ее отпускания начинает счет с нуля. Если при нажатой кнопке выключить питание счетчика, текущий результат не будет записан в EEPROM, а хранящееся там значение останется прежним.
Программа построена таким образом, что ее легко адаптировать к счетчику с другими индикаторами (например, с общими катодами), с другой разводкой печатной платы и т. п. Небольшая коррекция программы потребуется и при использовании кварцевого резонатора на частоту, отличающуюся более чем на 1 МГц от указанной.
При напряжении источника 15 В измеряют напряжение на контактах 12 и 13 панели микроконтроллера относительно общего провода (конт.10). Первое должно находиться в интервале 4…4.5 В, а второе — быть больше 3,5 В, но меньше первого. Далее постепенно уменьшают напряжение источника. Когда оно упадет до 9… 10 В, разность значений напряжения на контактах 12 и 13 должна стать нулевой, а затем поменять знак.
Теперь можно установить в панель запрограммированный микроконтроллер, подключить трансформатор и подать на него сетевое напряжение. Спустя 1,5…2 с нужно нажать на кнопку SB1. На индикатор счетчика будет выведена цифра 0. Если на индикатор ничего не выведено, еще раз проверьте значения напряжения на входах AIN0.AIN1 микроконтроллера. Первое должно быть больше второго.
Сборка
Сборка прибора не должна вызвать особых проблем и при отсутствии ошибок монтажа и исправных деталях частотомер должен заработать сразу. В противном
случае, надо покаскадно проверить прохождение сигнала от входа до микроконтроллера. Проще всего сделать это осциллографом.
На плате надо распаять только один из формирователей Analog-1 или Analog-2. Вообще, в использовании оригинального формирователя Analog-2 сейчас нет
никакого смысла (ну разве что отсутствие необходимых для Analog-1 деталей и потребности проверять кварцы).
Плата в сборе:
К сожалению, на изготовленных платах обнаружилось пара ошибок. Первая — в формирователе Analog-1 — вывод резистора R15 (470 Ом) висит в воздухе.
Исправить можно просверлив рядом отверстие и прокинув небольшую перемычку как показано на фото. Как вариант, можно кинуть провод через одно из
свободных отверстий чтобы не сверлить новые.
Вторая ошибка — пропущено соединение между выводом 5 микросхем 74hct132 и выводом 2 микросхемы 74hct93, для исправления надо кинуть проводок
как на фото:
Метод определения частоты генератора
Сравнение частот калибровочной синхронизации и внутреннего RC-генератора выполняется с помощью 8-разрядного таймера-счетчика 0 (TC0). 8-разрядный таймер используется в связи с тем, что он присутствует во всех микроконтроллерах с регулируемыми RC-генераторами. Идея заключается в определении отсчета таймера за 40 тактов калибровочной синхронизации и сравнении полученного значения с предустановленными порогами. Частота калибровочной синхронизации в существующей реализации задается в файле-описании интерфейса. Метод определения частоты генератора показан в виде блок-схемы на рисунке 3.
Рисунок 3 – Блок-схема алгоритма определения соотношения между частотами калибровочной синхронизации и внутреннего генератора
В целях охвата полного диапазона частот генератора от 1 до 9,6 МГц выполняется проверка флага переполнения ТС0 (OVF) для увеличения разрядности таймера с 8 до 16. Флаг OVF проверяется каждый полупериод калибровочной синхронизации, чем гарантируется детекция всех переполнений таймера. Относительно 16-разрядного разрешения реализованного таймера следует заметить, что наихудший случай по переполнению таймера возникает при использовании генератора на 9,6МГц и загрузке в регистр OSCCAL значения 0xFF. В этом случае, генератор работает с вдвое большей частотой, а таймер дойдет до значения 23541, что с запасом охватывает 16-разрядный таймер.
Аналогичным образом необходимо рассмотреть случай минимальной частоты. Минимально возможная частота генерируется при записи в OSCCAL значения 0x00. В этом случае результирующая частота вдвое меньше от номинальной. Поскольку состояние флага OVF проверяется каждый полупериод, то потенциально потребуется не более 7 тактов ЦПУ на манипуляцию с флагом OVF и детекцию следующего фронта синхронизации (при заданной частоте 1 МГц). Данное временное ограничение выполняется, если флаг OVF не установлен, в случае же его установки потребуется 8 тактов. Это может привести к небольшой ошибке в детекции синхронизации, но не повлияет на конечный результат: генератор будет корректно определен как слишком медленный.
Благодаря использованию метода двоичного поиска вряд ли придется столкнуться с данными крайностями. Однако их рассмотрение может быть уместно при модифицировании калибровочного метода.
Характеристики калибровочной программы
При написании кода достигалась его максимальная эффективность. Весь процесс калибровки должен быть достаточно быстрым. Таким образом, к характеристикам относятся размер калибровочной прошивки и длительность калибровки.
Калибровочная прошивка занимает 183…240 байт, а фактический размер зависит от типа выбранного микроконтроллера и интерфейса. Таким образом, программирование данной прошивки выполняется очень быстро.
Процедура калибровки завершается менее чем за 1024 калибровочных такта. Минимальная продолжительность зависит от длительности нахождения подходящего значения OSCCAL и времени записи ЭСППЗУ. В предлагаемом исполнении при использовании STK500.exe или JTAGICE.exe калибровка завершается не более чем за 32 мс.