8-900-374-94-44
[email protected]
Slide Image
Меню

Логический пробник на микроконтроллере avr: Обнаружено потенциально опасное значение Request.Path, полученное от клиента (?).

Кабельный пробник на двух микроконтроллерах ATtiny2313 с функцией отключения питания

В статье этого же автора «Кабельный пробник на микроконтроллерах AVR» описан вариант кабельного пробника на микроконтроллерах ATmega8A-PU в передатчике и ATtiny24A-PU в приёмнике. В этой статье автор предлагает вниманию читателей более простой вариант этого прибора, предназначенный для выполнения сравнительно небольшого объёма работ по изготовлению и ремонту кабелей. Пробник имеет практически те же возможности, но выполнен на двух одинаковых и более распространённых микроконтроллерах ATtiny2313A-PU. Предусмотрен автоматический перевод микроконтроллеров в «спящий» режим с пониженным до предела энергопотреблением, что позволило не отключать батареи питания по завершении работы.

С помощью этого прибора легко находить в многопроводных кабелях нужные провода и проверять их исправность. Для этого на одном конце кабеля к ним подключают выходы передатчика с пронумерованными зажимами «крокодил». Общие выводы передатчика и приёмника (также снабжённые «крокодилами») соединяют вместе, причём использовать для этого можно как один из проводов кабеля, так и отдельный провод. На противоположном конце кабеля поочерёдно касаются его проводов щупом приёмника. При каждом таком касании, если провод исправен, на индикаторе приёмника появляется его номер, соответствующий номеру подключенного к его началу выхода передатчика.

В отличие от первого варианта, из приемника исключен контроль напряжения батареи при включении. Убраны выключатели питания, теперь напряжение батарей подано на приёмник и передатчик непрерывно. Большую часть времени микроконтроллер передатчика находится в режиме Powerdown с минимальным потреблением. Активизируют его и вновь «усыпляют» нажатиями на кнопку.

Микроконтроллер приёмника переходит в активный режим автоматически с появлением на входе импульсов передатчика, а переходит в режим Powerdown после длительного отсутствия этих импульсов. Ток потребления, как передатчика, так и приёмника в этом режиме не превышает 2 мкА. Число проверяемых проводов кабеля уменьшено с 22 до 15. За счёт этого схема передатчика упрощена.

В режим Powerdown приёмник и передатчик переходят автоматически по истечении заданного времени бездействия. Передатчик — через 40 мин с момента включения. Приёмник — через четыре минуты с момента включения или окончания последней операции «прозвонки».

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

Схема передатчика представлена на рис. 1. Его основа — микроконтроллер DD1. Для подключения проводов проверяемого кабеля использованы все линии его портов, которые могут работать как выходы. Это восемь линий порта B и семь линий порта D — всего 15.

Рис. 1. Схема передатчика

 

Для усиления контрольных импульсов применены микросхемы ULN2003AN (DD2, DD3), содержащие по семь транзисторных ключей. Недостающий 15-й ключ выполнен на транзисторе VT1, диоде VD1 и резисторе R4.

На указанных выводах микроконтроллер DD1 формирует пачки импульсов, число импульсов в которых соответствует номеру проверяемого проводника. В цепи начальной установки микроконтроллера имеется кнопка SB1. При нажатии на неё микроконтроллер DD1 переходит в исходное состояние. Начавшая работать программа проверяет, прежде всего, разряд состояния r5.0. Если в нём записана логическая единица, программа заменяет её логическим нулём и продолжает свою работу. При повторном нажатии на кнопку перезапущенная программа обнаруживает, что в разряде статуса записан логический ноль, инвертирует его, а затем переводит микроконтроллер в энергосберегающий режим Powerdown.

Резистор R3 ограничивает ток через проверяемые провода и, следовательно, через ключи микросхем DD2, DD3 и транзистор VT1. Мигание светодиода HL1 сообщает об активной работе передатчика. Погашенный светодиод означает, что передатчик переведён в режим Powerdown. Разъём X1 служит для подключения программатора.

Программа для передатчика написана в среде Algorithm Builder 5.44. Отказ от компилятора BASCOM-AVR 2.0.7, использовавшегося для разработки программы передатчика первой версии прибора, связан с тем, что при начале работы микроконтроллера этот компилятор принудительно заполняет всё его ОЗУ нулями, поэтому невозможно сохранить там информацию, занесённую в предыдущем сеансе работы. Использовать для этого EEPROM микроконтроллера было сочтено нецелесообразным.

Чертёж печатной платы передатчика представлен на рис. 2.

Рис. 2. Чертёж печатной платы передатчика

 

Схема микроконтроллерной части приёмника изображена на рис. 3, а индикаторной — на рис. 4. Их одноимённые выводы a-h, k1, k2, з, к, о должны быть соединены проводами. Импульсы от передатчика приходят на щуп «Х» и на провод «0» с зажимом «крокодил», а затем через оптрон U1 на вход PD2 (вывод 6) микроконтроллера. Супрессор VD1 и резистор R1 защищают вход приёмника от случайной подачи высокого напряжения.

Рис. 3. Схема микроконтроллерной части приёмника

 

Рис. 4. Схема индикаторной части приёмника

 

Двухцветный светодиод HL1 сигнализирует о наличии на входе приёмника импульсов передатчика. Зелёный цвет его свечения указывает на правильное соединение приёмника с передатчиком, при красном цвете нужно поменять местами зажим X1 и щуп X2 Информация о номере провода отображается на семиэлементных светодиодных с общими катодами индикаторах HG1 и HG2. Транзисторы VT1 и VT2 переключают катоды индикаторов, обеспечивая динамическую индикацию.

Нажатием на кнопку SB1 микроконтроллер приёмника принудительно переводят из активного режима в энергосберегающий и обратно. Разъём X3 служит для подключения программатора.

Рис. 5.  Чертёж печатной платы приёмника

 

Рис. 6.  Чертёж печатной платы приёмника

 

Приёмник собран на двух печатных платах, чертежи которых изображены на рис. 5 и рис. 6. Их содержимое соответствует схемам, показанным на рис. 3 и рис. 4. Платы установлены (рис. 7) в готовом корпусе G407, для крепления в них предусмотрены отверстия под саморезы диаметром 2,5…3 мм. Держатель батареи GB1, составленной из трёх гальванических элементов типоразмера AA, приклеен к корпусу термоклеем. Чтобы сделать это, на одной из половин корпуса срезаны два выступа для крепления плат. В этой же половине вырезано и закрыто красным светофильтром прямоугольное окно для индикаторов HG1 и HG2, а также просверлено отверстие под светодиод HL1.

Рис. 7. Монтаж плат приёмника

 

Светодиод АЛ307 в передатчике может быть заменён любым другим подходящего цвета и яркости свечения. Вместо транзисторов КТ315Б подойдут любые кремниевые транзисторы структуры n-p-n с допустимым током коллектора не менее 100 мА. Прямой замены для индикаторов АЛС324А нет, но, переделав плату индикации, можно применить любые подобные индикаторы с общими катодами. Двухцветный светодиод L-3WEGW диаметром 3 мм можно заменить другим трёхвыводным с общим катодом. Супрессор SMAJ5.0CA можно заменить любым другим симметричным супрессором с напряжением пробоя 5 В.

Для выходов передатчика использовано 15 зажимов «крокодил» в защитных оболочках красного цвета, на которые краской нанесены номера проводов. Ещё два «крокодила» в оболочках чёрного цвета предназначены для нулевых проводов передатчика и приёмника.

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

Разряд

Сост.

Разряд

Сост.

CKSEL0

0

BODLEVELO

1

CKSEL1

0

B0DLEVEL1

1

CKSEL2

1

BODLEVEL2

1

CKSEL3

0

WDTON

1

SUT0

0

SPIEN

0

SUT1

1

EESAVE

1

CKOUT

1

DWEN

1

CKDIV8

1

SELFPRGEN

1

RSTDISBL

1

  

0 — запрограммировано;

1 — не запрограммировано

 

Рис. 8. Прибор в сборе

 

Налаживания приёмника и передатчика не потребуется. Необходимо лишь, прикасаясь щупом приёмника к зажимам «крокодил» передатчика при соединённых нулевых проводах (рис. 8), проверить соответствие цифр на индикаторе номерам на зажимах.

Файлы печатных плат прибора в формате Sprint Layout 6.0 и программы его микроконтроллеров имеются здесь.

Автор: С. Рычихин, г. Первоуральск Свердловской обл.

Кабельный пробник на микроконтроллерах AVR

В разные годы в журнале «Радио» было опубликовано несколько описаний приборов для прозвонки многожильных кабелей и жгутов проводов. Автор публикуемой статьи предлагает ещё один с микроконтроллерами в передатчике и приёмнике. Кроме основной функции — определения номеров проводов жгута или кабеля, в пробнике предусмотрен контроль состояния батарей питания приёмной и передающей частей устройства.

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

Питается приёмная часть пробника от трёх гальванических элементов типоразмера ААА. При включении питания индикатор кратковременно отображает напряжение этой батареи с точностью до 0,1 В.

Такая же батарея питает и передатчик. Для проверки её элементы временно переносят в приёмник взамен там имеющихся и включают последний. На индикатор будет выведено напряжение батареи передатчика. Затем на нём появятся два знака минус, показывая, что связи с передатчиком нет.

Рис. 1. Схема передатчика

 

Основой передатчика, схема которого представлена на рис. 1, послужила конструкция, описанная в статье «Кабельный тестер своими руками». — URL:http://cxem. net/comp/comp174.php (28.07.2019). Изменения коснулись цепи питания (напряжение батареи понижено с 9 В до 4,5 В, и исключён стабилизатор напряжения). Светодиод-индикатор наличия напряжения питания перенесён с выхода стабилизатора на выход PB0 микроконтроллера. Теперь он мигает, что экономит энергию батареи и свидетельствует о работе микроконтроллера, генерирующего пачки импульсов на всех линиях портов PB, PC и PD. Добавлен также разъём XP1 для подключения программатора. Конфигурация микроконтроллера должна быть запрограммирована всоответствии с табл. 1.

Таблица 1

Разряд

Сост.

Разряд

Сост.

RSTDISBL

1

BODLEVEL

1

WDTON

1

BODEN

1

SPIEN

0

SUT1

1

СКОРТ

1

SUT0

0

EESAVE

1

CKSEL3

0

B00TS21

0

CKSEL2

1

BOOTSZO

0

CKSEL1

0

BOOTRST

1

CKSEL0

0

 

Микросхемы DD2-DD5 представляют собой наборы из семи транзисторных ключей каждая. Коллекторы транзисторов этих микросхем выведены из передатчика проводами 1-22, заканчивающимися пронумерованными зажимами «крокодил» чёрного цвета. Их удобно подключать к проводам кабеля. Провод 0, заканчивающийся зажимом «крокодил» красного цвета, — общий для всех выходов передатчика. В процессе прозвонки он должен быть соединён с плюсовым проводом входа приёмника, тоже снабжённым красным «крокодилом».

В программу микроконтроллера DD1 не внесено никаких изменений, но печатная плата передатчика изменена и рассчитана теперь на установку микросхем в корпусах DIP. Чертёж её печатных проводников и схема размещения деталей приведены на рис. 2. Плата рассчитана на установку обычных резисторов указанной на схеме мощности с проволочными выводами. Конденсаторы C1 и C2 — оксидные серии SR, а C3 — керамический. Светодиод подойдёт любой маломощный нужного цвета свечения.

Рис. 2. Печатная плата передатчика и размещение элементов на ней

 

Приёмник пачек импульсов существенно отличается от прототипа и собран по схеме, изображённой на рис. 3. Его вход»+» соединяют с проводом 0 передатчика, а вход «-» — с одним из проводов проверяемого кабеля (на его конце, противоположном тому, который подключён к передатчику). Если на проверяемом проводе есть пачки импульсов правильной полярности, мигает зелёный кристалл светодиода HL1. Если полярность подключения неправильна, мигать будет красный кристалл светодиода, а индикатор покажет отсутствие связи с передатчиком.

Рис. 3. Схема приёмника пачек импульсов

 

Супрессор VD1 защищает входную цепь приёмника от выбросов напряжения. Повышенное напряжение на входе приводит к перегоранию предохранительного резистора R1 и разрыву входной цепи. Если такая неприятность случилась в полевых условиях, можно временно выйти из положения, установив перемычку S1, и продолжить работу.

Импульсы, пройдя через оптрон U1, который нужен как гальваническая развязка и пороговый элемент для входных сигналов, попадают на вход PB2 микроконтроллера DD1. Программа ведёт их счёт и выводит результат на индикаторы HG1 и HG2.

Напряжение батареи питания поступает для измерения через резистивный делитель R3R4R6 на вывод 6 микроконтроллера. Этот вывод имеет двойное назначение. В начале работы программа конфигурирует его как вход ADC6 встроенного АЦП, с помощью которого измеряет напряжение батареи GB1. Далее программа превращает этот вывод в простой дискретный выход PA7 и использует его для управления десятичной запятой (элементом H) индикаторов.

Общие катоды индикаторов HG1 и HG2 переключаются транзисторами VT2 и VT1. Отображаемые на индикаторах символы программа задаёт кодами, выводимыми микроконтроллером в порт A. Разъём XP1, как и в передатчике, служит для подключения программатора при загрузке программы в микроконтроллер. Конфигурация микроконтроллера должна быть запрограммирована в соответствии с табл. 2.

Таблица 2

Разряд

Сост.

Разряд

Сост.

SELFPRGEN

1

RSTDISBL

1

CKDIV8

0

DWEN

1

CKOUT

1

SPIEN

 

5UT

1

WDTON

1

SUT0

0

EESAVE

1

CKSEL3

0

BODLEVEL2

1

CKSEL2

0

BODLEVEL1

1

CKSEL1

1

BODLEVELO

1

CKSELO

0

 

Чертёж печатной платы приёмника и схема размещения элементов на ней изображены на рис. 4. Резисторы R1 — R3 и R5-R9 — с проволочными выводами, как и в передатчике, а R10-R17 — типоразмера 1206 для поверхностного монтажа. Подстроечный резистор R4 — СП3-38б или СП3-38г. Конденсаторы — такие же, как в передатчике. Устаревшие индикаторы АЛС324А можно заменить более современными (тоже с общим катодом), но для этого придётся корректировать печатную плату и, возможно, программу микроконтроллера.

Рис. 4. Чертёж печатной платы приёмника и схема размещения элементов на ней

 

При отсутствии ошибок в монтаже передатчик начинает работать сразу после включения, о чём свидетельствуют вспышки его светодиода HL1, и никакого налаживания не требует. Налаживание приёмника начните с калибровки измерителя напряжения батареи питания. Для этого движок подстроечного резистора R4 установите в правое по схеме положение и подайте на приёмник вместо напряжения батареи GB1 напряжение, равное 5 В, от лабораторного источника питания. Наблюдая за показаниями индикаторов и щёлкая кнопочным выключателем SB1, перемещайте движок подстроечного резистора R4 в сторону увеличения напряжения. Найдите границу, на которой показания индикаторов изменяются с 4,9 В на 5 В. На этом калибровка вольтметра завершена. Вставьте на место элементы питания и включите приёмник. Если элементы свежие, индикатор покажет 4,5 В, если частично разряжены, то меньше.

Затем соедините провод 0 передатчика с плюсовым выводом входа приёмника, включите передатчик и, касаясь зажимов на его выходных проводах минусовым щупом приёмника, наблюдайте мигание зелёного кристалла светодиода HL1 приёмника и смену номеров проводов на индикаторах HG1 и HG2. В процессе проверки попробуйте
поменять плюсовой и минусовый входы приёмника местами. Мигание зелёного кристалла светодиода должно прекратиться, вместо него станет мигать красный кристалл, а опознавание проводов выполняться не будет.

Корпус приёмника — G407, а передатчика — G1033B. Держатели для элементов питания — Zh390.

Программы микроконтроллеров приёмника и передатчика имеются здесь.

Автор: С. Рычихин, г. Первоуральск Свердловской обл.

Логический пробник с использованием ATTINY26 | Детали

Логический пробник предназначен для сборки на перфорированной плате, поэтому макет платы отсутствует.

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

  • аналого-цифровой преобразователь
  • внешний контакт прерывания, настраиваемый для обнаружения обоих фронтов
  • таймер с выходным сравнением совпадений, переключающий выходной контакт
  • второй более упрощенный таймер для генерации такта таймера
  • 5 дополнительных контактов ввода/вывода для 3 светодиодов, 1 переключатель и 1 выход для предварительной зарядки датчика

Предохранители микроконтроллера должны быть настроены на работу на частоте 8 МГц внутренний осциллятор.

Сеть резисторов R8, R9 и R10 предварительно заряжает пробник через R1 напряжением, подходящим для обнаружения обрыва цепи. Напряжение для сигнализации неопределенного логического уровня составляет 1,4 В для TTL и 2,5 В для CMOS. Порт A Pin 6 управляет R9high в CMOS-режиме, hi-Z в TTL-режиме.

Светодиоды должны быть слаботочными, так как их резисторы допускают 5 мА при 5 В на светодиод. Вам решать, какими цветами вы хотите сигнализировать о высоком, низком или пульсирующем уровне. Устройство вывода звука представляет собой магнитный преобразователь с сопротивлением 40 Ом. Если вам нужно заменить BJM 05 на другой тип, он не должен иметь более низкий импеданс. В противном случае вам может понадобиться добавить усилитель.

Переключатель S1.1 отключает динамик, если звук раздражает вас или ваших коллег. Переключатель S1.2 выбирает TTL-режим, если включен, CMOS-режим, если выключен. Если вы не хотите использовать TTL-режим, просто оставьте порт A контакт 7 отключенным. В то же время вы можете оставить контакт 6 на том же порту также отключенным и перемкнуть R10 (подключить R9непосредственно в Vcc).

Логический пробник получает питание от тестируемой цепи. Будьте осторожны, чтобы не использовать микроконтроллер за пределами его указанного рабочего напряжения. Не меняйте местами провода Vcc и Ground!

Для всех моих проектов на ассемблере AVR я использую включение с макросами, чтобы лучше структурировать программы с блоками IF-ELSE-END и DO-EXIT-LOOP. Я написал макросы в 2010 году, они называются «Макросы структурированной сборки» и живут в «sam.inc».

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

  • регистр калибровки генератора
  • таймер 0 в качестве таймера 8 мс
  • таймер 1 в качестве генератора частоты для звука
  • АЦП получает опорное напряжение от Vcc, выводит 8 бит в старший регистр АЦП, использует АЦП9 (порт B, контакт 6) в качестве входа, использует 125 кГц в качестве тактового сигнала АЦП и запускает режим автономной работы
  • , чтобы установить флаг INTF0 на оба фронта обнаружены на INT0 (порт B контакт 6)
  • регистров для подсчета выборок, таймера фронта, частоты текущего логического состояния

Основной цикл программы состоит из 3 основных блоков, АЦП завершен, такт таймера 8 мс и обнаружен фронт сигнала.

Блок АЦП сначала решает, какие уровни применять, проверяя переключатель CMOS/TTL. Результат АЦП устанавливает высокий или низкий уровень светодиода и подсчитывает выборки за последние 8 мс такта таймера. Наконец, устанавливается уровень напряжения предварительной зарядки зонда.

Блок таймера 8 мс сначала проверяет, не истек ли срок действия светодиода импульса 100 мс на таймере. Затем количество семплов и таймер импульсов определяют, следует ли включить звук и какую частоту следует использовать. Последняя частота сверяется с текущим выбором, и если она совпадает, импульсный таймер получает приоритет. Это приводит к трели звука, когда обнаруживается импульс хотя бы с одним допустимым логическим уровнем.

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

АЦП выполняет почти 10 000 выборок в секунду при работе на частоте 125 кГц в автономном режиме. В первом из 13 циклов АЦП конденсатор выборки и хранения заряжается от входа АЦП. Какое бы сочетание уровней ни присутствовало в течение этого цикла, оно усредняется, а затем преобразуется. Цикл составляет 8 мкс при частоте 125 кГц. Однако важны только последние 5 мкс цикла выборки, поскольку максимальная частота для АЦП указана на уровне 200 кГц. Так что это будет не очень точно с короткими импульсами или высокими частотами. Например, при прямоугольной волне 2,5 МГц светодиод высокого или низкого уровня не загорается. Однако чем ближе вы подходите ко времени цикла, тем ближе среднее значение к верхнему и/или нижнему пороговым значениям. Это также зависит от мощности управляющего логического выхода. Слабому драйверу, едва достигающему порога, могут также потребоваться полные 5 мкс, чтобы позволить АЦП обнаружить действительный высокий или низкий уровень.

Вывод INT0 вызывает установку флага INTF0 каждый раз при обнаружении изменения уровня. Однако входные контакты тактируются тактовой частотой ввода-вывода ATTINY, которая совпадает с тактовой частотой ЦП 8 МГц. Если импульс полностью укладывается в цикл ввода/вывода продолжительностью 125 нс, он не вызовет срабатывания флага INTF0. Он все еще может срабатывать, если он перекрывает край тактового сигнала ввода-вывода. Можно ожидать, что импульс длительностью 62,5 нс (1/2 от 125 нс) вызовет срабатывание флага INTF0 в 50 % случаев.

Логический пробник с использованием ATTINY26 | Хакадей ио

Логический пробник использует АЦП для обнаружения правильных логических уровней с ~10 тыс. отсчетов на
секунды. Короткие импульсы или высокочастотные изменения могут быть не обнаружены таким образом.
Таким образом, изменение уровня определяется входом INT0 в режиме переключения. На 8 МГц Можно обнаружить
импульса длительностью более 125 нс.

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

Магнитный датчик делает логические уровни и изменения уровня или импульсы слышимыми.
Постоянный низкий уровень = 650 Гц, постоянный высокий уровень = 1750 Гц, изменение только уровня = 1100 Гц.
Низкий с высокими импульсами трели с частотой 650 Гц и 1100 Гц. Высокий с низким импульсом

трель с частотой 1750 Гц и 1100 Гц.

Файлы проекта также доступны по адресу https://github.com/Klaus2m5/Logic_Probe

Детали

Логический пробник предназначен для сборки на перфорированной плате, поэтому макет платы отсутствует.

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

  • аналого-цифровой преобразователь
  • внешний контакт прерывания, конфигурируемый для обнаружения обоих фронтов
  • таймер с выходным сравнением, переключающий выходной контакт
  • второй более упрощенный таймер для генерации такта таймера
  • 5 дополнительные контакты ввода/вывода для 3 светодиодов, 1 переключателя и 1 выхода для предварительной зарядки пробника

Предохранители микроконтроллера должны работать на внутреннем генераторе 8 МГц.

Сеть резисторов R8, R9 и R10 предварительно заряжает пробник через R1 напряжением, подходящим для обнаружения обрыва цепи. Напряжение для сигнализации неопределенного логического уровня составляет 1,4 В для TTL и 2,5 В для CMOS. Порт A Pin 6 управляет высоким уровнем R9 в режиме CMOS, высоким уровнем Z в режиме TTL.

Светодиоды должны быть слаботочными, так как их резисторы допускают 5 мА при 5 В на светодиод. Вам решать, какими цветами вы хотите сигнализировать о высоком, низком или пульсирующем уровне. Устройство вывода звука представляет собой магнитный преобразователь с сопротивлением 40 Ом. Если вам нужно заменить BJM 05 на другой тип, он не должен иметь более низкий импеданс. В противном случае вам может понадобиться добавить усилитель.

Переключатель S1.1 отключает динамик, если звук раздражает вас или ваших коллег. Переключатель S1.2 выбирает TTL-режим, если включен, CMOS-режим, если выключен. Если вы не хотите использовать TTL-режим, просто оставьте порт A контакт 7 отключенным.

В то же время вы можете оставить контакт 6 на том же порту также отключенным и перемкнуть R10 (подключить R9 напрямую к Vcc).

Логический пробник получает питание от тестируемой цепи. Будьте осторожны, чтобы не использовать микроконтроллер за пределами его указанного рабочего напряжения. Не меняйте местами провода Vcc и Ground!

Для всех моих проектов на ассемблере AVR я использую включение с макросами, чтобы лучше структурировать программы с блоками IF-ELSE-END и DO-EXIT-LOOP. Я написал макросы в 2010 году, они называются «Макросы структурированной сборки» и живут в «sam.inc».

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

  • регистр 9 калибровки генератора.0009
  • таймер 0 в качестве таймера 8 мс
  • таймер 1 в качестве генератора частоты для звука
  • АЦП получает опорное напряжение от Vcc, выводит 8 бит в старший регистр АЦП, использует АЦП9 (порт B, контакт 6) в качестве входа, использует 125 кГц в качестве тактового сигнала АЦП и запускает режим автономной работы
  • , чтобы установить флаг INTF0 на оба фронта обнаружены на INT0 (порт B контакт 6)
  • регистры для подсчета выборок, таймер фронта, частота текущего логического состояния

Основной программный цикл состоит из 3 основных блоков, завершения преобразования АЦ, 8 мс таймера и обнаружения фронта сигнала.

Блок АЦП сначала решает, какие уровни применять, проверяя переключатель CMOS/TTL. Результат АЦП устанавливает высокий или низкий уровень светодиода и подсчитывает выборки за последние 8 мс такта таймера. Наконец, устанавливается уровень напряжения предварительной зарядки зонда.

Блок таймера 8 мс сначала проверяет, не истек ли срок действия светодиода импульса 100 мс на таймере. Затем количество семплов и таймер импульсов определяют, следует ли включить звук и какую частоту следует использовать. Последняя частота сверяется с текущим выбором, и если она совпадает, импульсный таймер получает приоритет. Это приводит к трели звука, когда обнаруживается импульс хотя бы с одним допустимым логическим уровнем.

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

АЦП выполняет почти 10 000 выборок в секунду при работе на частоте 125 кГц в автономном режиме.

В первом из 13 циклов АЦП конденсатор выборки и хранения заряжается от входа АЦП. Какое бы сочетание уровней ни присутствовало в течение этого цикла, оно усредняется, а затем преобразуется. Цикл составляет 8 мкс при частоте 125 кГц. Однако важны только последние 5 мкс цикла выборки…

Подробнее »

Посмотреть все подробности

  • 1 × IC1: ATTINY26 микроконтроллер
  • 1 × SP1: BJM 05, Z=40 Ом 5В магнитный преобразователь
  • 3 × LED1, LED2, LED3: слаботочный светодиод на ваш выбор красный, зеленый или желтый
  • 1 × S1: DIP-переключатель 2 переключателя или перемычки
  • 2 × С1, С2: 100 нФ конденсатор фольгированный или керамический >5В

Посмотреть все 12 компонентов

  • Адаптер макетной платы

    Клаус Дорманн • 04. 01.2017 в 10:02 • 0 комментариев

    Вчера я сделал макетный адаптер на перфорированной плате. Он имеет логический пробник и зажим для макета, построенный из небольшой перевернутой секции перфорированной платы с 11 x 4 отверстиями. Зажим крепится к логическому пробнику 4-мя проводами через обе перфорированные платы и припаивается к ним с обеих сторон. 4 контакта подключаются к сигнальным столбцам макетной платы, а 2 контакта с каждой стороны подключаются к рядам шин питания. Я всегда использую условное обозначение заземления на внутренней шине и Vcc на внешней шине. Адаптер также можно использовать для перемычки питания с одной половины шины питания на другую.

    На контакте 9 ATTiny26 имеется разъем для подключения зонда. DIP-переключатели заменены перемычками. На картинках звук включен, уровень CMOS. Светодиоды зеленые для низкого, красного для высокого и желтого для импульса.

  • Расчеты АЦП

    Клаус Дорманн • 24.12.2016 в 11:42 • 0 комментариев

    Возможно, вы заметили, что АЦП используется в 8-битном режиме, поскольку бит ADLAR (результат регулировки левого значения АЦП) установлен в ADMUX. В то же время мы используем ADCH только для определения порогов напряжения. Опорное напряжение установлено на Vcc. Таким образом, мы получаем 0 для земли и 255 для Vcc. Теперь нам нужно использовать правило трех (также называемое правилом пропорции), чтобы найти значения ADCH для определенного процента или напряжения.

    Для CMOS напряжения определяются как <= 30% Vcc для низкого уровня, >= 70% для высокого уровня.

    • ADCth = ADCHmax * Vth% / 100%
    • ADClow = 255 * 30 / 100 = 76,5
    • ADChigh = 255 * 70 / 100 = 178,5

    Так как мы можем сравнивать только целое число с ADCH чтобы обрезать результат до целого числа. Результаты сравнения основаны на флаге переноса сравнения. 0 = такой же или выше, 1 = ниже. Поскольку мы хотим сравнить нижний порог, чтобы он был ниже или равен, нам нужно поднять нижний порог на 1. Я использовал ADClow = 77 и ADChigh = 178.

    Для TTL напряжения определяются как Vcc = 5 В, Vlow = 0,8 В и Vhigh = 2 В

    • ADCth = ADCHmax * Vth / Vcc 5 = 102

    Снова нужно использовать только целую часть и поднять нижний порог на 1: ADClow = 41 и ADChigh = 102

    Почему отрезать, а не округлить? Помните, что 2 младших бита результата АЦП также обрезаются, поэтому результат АЦП 76,75 все же меньше, чем 77. Если бы мы округлили 76,5 + 1, мы бы сравнили с 78, и это на самом деле было бы менее точным.

  • 1к вызов

    Клаус Дорманн • 23. 12.2016 в 11:37 • 0 комментариев

    Размер двоичного кода в нижней части листинга (Logic_Probe.lss):

     Сводка использования памяти "ATtiny26" [байт]:
    Сегмент Начало Конец Код Используемый Размер Данных Используемый%
    -------------------------------------------------- -------------
    [.cseg] 0x000000 0x0000dc 220 0 220 2048 10,7%
    [.dseg] 0x000060 0x000060 0 0 0 128 0,0%
    [.eseg] 0x000000 0x000000 0 0 0 128 0,0%
     

    Я использовал Atmel Studio 6.1 для сборки исходного кода.

  • ТТЛ открытый уровень

    Клаус Дорманн • 22.12.2016 в 13:21 • 0 комментариев

    только что заметил, что входные пороги для TTL несовместимы с сетью резисторов на выводе зонда.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *