Генератор в лаборатории радиолюбителя один из полезных инструментов, а зачастую и жизненно необходимый. Но не все могут обзавестись таким прибором. Так же для некоторых задач, особенно в цифровой техники, достаточно генератора только одних прямоугольных импульсов — ТТЛ (ШИМ) генератора.
Простой TTL генератор на stm32f030f4p6
Предлагаю конструкцию компактного и простого ТТЛ генератора на базе микроконтроллера stm32f030f4p6. Простого в виду функционала, т.к. он позволяет генерировать меандр с частотой от 0.1Гц до 200кГц с изменяемой величиной заполнения и фиксированной амплитудой.
Такой генератор может быть полезен во время разработки, настройки и отладки схем с элементами требующими задания частоты. Для таких задач применяют или готовые генераторы или при их отсутствии собирают генерирующие схемы из имеющихся элементов: на микроконтроллерах или таймерах.
Примеры применения:
Количество выходов | 1 |
Частота рабочая | 0,1Гц-100кГц |
Частота максимальная | до 1МГц |
Заполнение | 0.1 — 100% |
Шаг скважности | От 0.1 до 50%, зависит от рабочей частоты |
Напряжение питания | 3.5-12В |
Выходное напряжение | = входному-0.3В |
Потребление генератором тока | ~20мА |
Максимальный коммутационный ток | 100мА к (+ питания) 2.5мА к (общему при питании от 5В) |
Схема
Генератор построен на микроконтроллере U1 stm32f030f4p6 в tssop20 корпусе. Вывод картинки производится на oled дисплей 0.91″ 128×32 на контроллере SSD1306 по i2c шине. Дисплей припаивается 14 контактным шлейфом LCD1 прямо на плату. Управление производится по 4-х позиционному джойстику с центральной кнопкой S1 от сотового nokia N73 шириной 7.
5мм, шагом выводов 2мм, точную марку не знаю, так же подходят другие схожие джойстики. Питание схемы осуществляется или через miniUSB разъём X2 или через дополнительный разъём питания X1 на PLS штырях. Для защиты от переполюсовки и превышение тока входное напряжение поступает через диоды D1-D2 BAT54HT1 током до 200мА в корпусе SOD323. Далее напряжение через чип-танталовый конденсатор C1 10мкФ 25В типоразмера A поступает на линейный стабилизатор U2 LP2985AIM3.3 на 3.3В с низким падением напряжения, максимальным входным напряжением 16В, возможно замена LP2980, LP2981. Низкое падение напряжение на стабилизаторе позволяет питать конструкцию от одной банки li-ion аккумулятора. Для дополнительной фильтрации помех по питанию применён LC фильтр на индуктивности L1 1-10мкГн в корпусе 1206 и на танталовом конденсатора C8 22-47мкФ типоразмера A, который ещё выполняет роль основного фильтра по питанию. В обвязке стабилизатора U2 используются 0603 конденсаторы C3, C5, C6 на 0.1мкФ напряжением 25В. В схему заложена возможность измерения входного напряжения, для этого напряжения после защитных диодов D1-D2 через делитель выполненный на резисторах R7 и R8 на 20К и 3.Перечень компонентов:
Микросхемы | |||
STM32F030F4P6 | U1 | TSSOP20 | 1 |
LP2985AIM3.3 | U2 | SOT23-5 | 1 |
LP2980AIM5-3.0 | U3 | SOT23-6 | 1 |
Индикация | |||
Oled SSD1306 0.91″ | LCD1 | 1 | |
LED Red | LED1 | LED0603 | 1 |
Полупроводники | |||
bcr108 | Q1, Q2 | SOT-23 | 2 |
IRLML5103 | Q3 | sot-23 | 1 |
BAT54HT1 | D1, D2 | SOD323 | 2 |
BAT54SLT1 | D3, D4 | SOT-23 | 2 |
Резисторы | |||
220 | R16 | RES-0603 | 1 |
470 | R12 | RES-0603 | 1 |
1K | R5, R6, R13, R14 | RES-0603 | 4 |
2K | R18 | RES-0603 | 1 |
2. 2K | R2, R4 | RES-0603 | 2 |
3.3K | R8 | RES-0603 | 1 |
10K | R1, R3, R9, R10, R11, R17 | RES-0603 | 6 |
20K | R7 | RES-0603 | 1 |
820K | R15 | RES-0603 | 1 |
2K | R19 | RES-0805 | 1 |
Конденасаторы | |||
12pF | C7, C10 | CAP-0603 | 2 |
22nF 25V | C18 | CAP-0603 | 1 |
0.1uF 25V | C2, C3, C4, C5, C6, C9, C11, C12, C15 | CAP-0603 | 9 |
1uF 25V | C13, C16, C17 | CAP-0603 | 3 |
4.7uF 25V | C14, C19 | CAP-0805 | 2 |
10uF 25V | C1 | Tantal A | 1 |
22uF | C8 | Tantal A | 1 |
Установочные | |||
16MHz | Y1 | 5032 | 1 |
Индуктивности | |||
4. 7uH | L1 | 1206 | 1 |
Переключатели | |||
Joystick N73 | S1 | JOYSTICK_N73 | 1 |
Соединители | |||
POWER | X1 | PLS2 | 1 |
miniUSB | X2 | miniUSB | 1 |
RTVG | X3 | PLS4 | 1 |
OUT | X5 | PLS3 | 1 |
Сборочный рисунок
Размер платы 70х20мм. Диаметр крепежных отверстий 2.5мм.
Вид печатной платы:
Вид платы генератора
Платы первой версии генератора отличаются от опубликованной, некоторые из запланированных узлов не заработали должным образом и были удалены.
Прошить контроллер можно двумя способами. Через разъём X4 SWD. Если в прошивке задействована функция quick charge то у программатора должен корректно работать аппаратный сброс по линии RST.
Второй способ прошивки через UART. Для этого можно применить USB-UART преобразователь, например на cp2102 или ft232. Прошивка осуществляется через разъём X3 UART (RTVG — Rx Tx Vdd Gng). Для этого нужно попасть в UART Bootloder, который есть штатно во всех stm32. Нужно на время прошивки замкнуть (запаять) перемычку W1, что переведет вход BOOT0 контроллера в высокий уровень.
Управление генератором производится с помощью 4-х позиционного джойстика с центральной кнопкой. Влево и вправо — производится перемещение между разрядами частоты и заполнения, вверх и вниз изменение значения. Центральная кнопка включает и отключает генерацию ШИМ сигнала. Если изменяемый самый старший разряд числа уменьшается с 1 на 0, то изменение автоматически переключается на следующий меньший разряд.
Если производится манипуляция с частотой менее 1000Гц, на дисплее отображается единица измерения частоты — Hz и между значением и единицей измерения добавляется дополнительный разряд десятых частей герца. Если частота выше 1кГц, то между тысячным и сотым разрядом отображается точка, а единица измерения частоты отображается в kHz. Аналогично для частоты больше 1МГц, разделитель между миллионным и сто тысячными знаками, а единица измерения MHz. Заполнение регулируется в % с шагом 0.1%.
Экраны управления генератором
Новое значение частоты и заполнения применяется сразу после изменения разряда. Само изменение производится не плавно, генерация при каждом применение (изменении значения) начинается сначала.
Значение установленной амплитуды и малых частот можно наблюдать с помощью светодиода LED1 в верхнем правом углу.
Генератор не сохраняет последнее установленное значение, а начинает каждый раз работу с 1кГц 50% ВЫКЛ. Сохранение значений потребует выделение 1КБ из 16КБ драгоценной flash памяти контроллера, что будет расточительно, а так же постоянная перезапись будет уменьшать ресурс выделенного сегмента.
В первой версии прошивки реализован минимально необходимый функционал:
генератор ШИМ с частотой от 0. 1Гц до 8МГц, с шагом 0.1Гц на диапазоне до 1кГц и 1Гц на остальном диапазоне. Регулировка заполнения ШИМ сигнала о 0 до 100% с шагом 0.1%. Но стоит отметить, что регулировка с шагом в 1Гц и 1% осуществляется не на всё диапазоне, с повышением частоты дискретность уменьшается. Это связанно с тем, что для генерации используется не специализированные микросхемы генераторов, не ПЛИС, а штатные средства генерации ШИМ stm32. Контроллер работает на максимальной тактовой частоте 40МГц, а выставляемая частота и заполнение формируются с помощью деления тактовой частоты контроллера, а это деление целочисленное и чем частота больше, тем шаг переключения увеличивается.
До 100Гц | 0.1Гц | 0.1% |
До 5кГц | 1Гц | 0.1% |
До 10кГц | 2Гц | 0. 1% |
20кГц | 10Гц | 0.1% |
40кГц | 40Гц | 0.1% |
50кГц | 62Гц | 0.125% |
100кГц | 250Гц | 0.25% |
200кГц | 1кГц | 0.5% |
500кГц | 6.3кГц | 1.25% |
1МГц | 25.6кГц | 2.5% |
2МГц | 105кГц | 5% |
4МГц | 444кГц | 10% |
8МГц | 20% |
Так же искажения вносит простая схемотехника, особенно существенно это становится заметно с повышением частоты. На частоте в 500КГц меандр превращается в пилу, а свыше 1МГц затухает. Переключающие процессы и емкости вносят задержки.
1кГц 0.1% 50% 99%
10кГц 0.1% 50% 90%
100кГц 10% 50% 77%
500кГц 5% 1МГц 7% 2МГц 7%
Программная корректировка выставляемой частоты и заполнения может быть проведена в следующих прошивках.
Если дальше развивать проект, можно произвести следующие доработки проекта:
Но буду ли продолжать работы по проекту пока неизвестно. Минимальный необходимы функционал получил, нужные задачи решил.
Простая версия ТТЛ (или ШИМ) генератора получилась. Генератор получилось реализовать на базе нишевого микроконтроллера. Устройство работает, с поставленными задачи справляется. Простота питания от 3.5 до 12В, возможность питания от USB, li-ion аккумулятора. Мобильность. Если у Вас нет другого генератора и для ваших задач будет достаточно одного меандра, то он может быть полезен.
Скачать файлы проекта
Содержимое архива:
altium\ | ||
ttl_generator.PcbDoc | PCB, Altium Designer | |
сam\ | ||
CAM_drill.Cam | CAM сверловка | |
CAM_gerber.Cam | CAM gerber | |
gerber\ | ||
pcb.drl | сверловка | |
pcb.gbl | медь, низ | |
pcb.gbs | маска, низ | |
pcb.gbo | шелкография, низ | |
pcb. gko | контур | |
pcb.gtl | медь, верх | |
pcb.gto | шелкография, верх | |
pcb.gts | маска, верх | |
hex\ | ||
simple TTL generator.bin | прошивка bin | |
simple TTL generator.hex | прошивка hex | |
assembled.pdf | сборочный рисунок | |
scheme.pdf | принципиальная схема |
Параметры gerber файла: единицы измерения мм, точность 3:3, удалены незначащие нули вначале чисел.
Номер детали
Код маркировки
Спецификация
Тележка 0
STMicroelectronics — глобальная независимая полупроводниковая компания и лидер в разработке и поставке полупроводниковых решений для всего спектра приложений микроэлектроники. Благодаря непревзойденному сочетанию опыта в области кремниевых и системных компонентов, производственного потенциала, портфолио в области интеллектуальной собственности (ИС) и позиций стратегических партнеров компания STMicroelectronics находится в авангарде технологий систем-на-чипе (SoC), а ее продукты играют ключевую роль в обеспечении сегодняшней конвергенции. тенденции.
22.03.2020, расширитель портов STMicroelectronics GPIO (общий ввод/вывод)
15.03.2023, STMicroelectronics Низковольтный, маломощный 8-разрядный регистр сдвига предназначен для управления любыми промышленными нагрузками, емкостными, резистивными или индуктивными, с заземлением одной стороны
2023-02-21, STMicroelectronics Времяпролетный дальномер
2023-02-20, защита от электростатического разряда ±15 кВ 3 до 5,5 В, 400 кбит/с, автоматическое отключение трансивера RS-232
Просмотреть еще
СТБ95Н3ЛЛХ6
СТП8НМ50
СТБ60НЕ06Л-16Т4
СТД1ХНК60Т4
СТП110Н7Ф6
СТФ8НМ50Н
СТБ4НК60З-1
СТП55НФ06Л
СТИ24НМ60Н
СТД1НК60-1
СТН724
БУЛ1102ЭФП
ДМВ1500ЛФД
BAT54JFILM
СТПС340УЙ
СТТХ8Р04Д
СТПС40Л45КВ
STTh30W02CW
Л9708
Л78Л09АКД
Л4931АБДТ33
СТ1С10ПУР
ТС824АИЛТ-2. 5
ЛМ334Д
Э-УК3842БН
VIPER53EDIP-E
Л6566БТР
М27К801-100К1
М24К32-ВБН6
М27К4001-15Ф1
Просмотреть еще
ДОМ > МАГАЗИН > Модуль HMI с энкодером и батареей 500 мАч (STM32F030)
{% конец%}
{% для варианта в product.variants %} {{variant.title}}{%, если только вариант.доступен %} — {{translation.sold_out}}{% endunless %} {% конец для %}
{%, если box.template.elements содержит ‘цену’ %} first_available_variant.price %} ga-product_have_oldprice {% endif %}»>{{first_available_variant.price | деньги}} {% if first_available_variant.compare_at_price > first_available_variant.price %}{% elsif box.template.id == 2 или box.template.id == ‘2’ %}
{% if box. title и box.title.text и box.title.text != » %}
{% endif %} {% if box.subtitle и box.subtitle.text и box.subtitle.text != » %}
{{box.subtitle.text}}
{% endif %} {% присвоить total_price = 0 %}
{% для продукта в продуктах %} {% присвоить first_available_variant = false %} {% для варианта в product.variants %} {% if first_available_variant == false and variant.available %}{% assign first_available_variant = variant %}{% endif %} {% конец для %} {% if first_available_variant == false %}{% assign first_available_variant = product.variants[0] %}{% endif %} {%, если first_available_variant.available и box.template.selected %} {% присвоить total_price = total_price | плюс: first_available_variant.price %} {% конец%} {% если product.images[0] %} {% assign feature_image = product. images[0] | img_url: ‘350x’ %} {% еще %} {% присвоить Featured_image = no_image_url | img_url: ‘350x’ %} {% конец%}
{% если только продукт.доступен %} {{translation.sold_out}} {% бесконечный %}
{% конец для %}
{%, если box.template.elements содержит ‘цену’ %}
{{translation.total_price}} {{total_price | деньги}}
{% конец%} {%, если box.template.elements содержит ‘addToCartBtn’ %} {% конец%}
{% для варианта в product.variants %} {{variant.title}}{%, если только вариант.доступен %} — {{translation.sold_out}}{% endunless %} {% конец для %}
{%, если box.template.elements содержит ‘цену’ %} first_available_variant.price %} ga-product_have_oldprice {% endif %}»>{{first_available_variant.price | деньги}} {% if first_available_variant. compare_at_price > first_available_variant.price %}{% elsif box.template.id == 3 или box.template.id == ‘3’ %}
{% if box.title и box.title.text и box.title.text != » %}
{% endif %} {% if box.subtitle и box.subtitle.text и box.subtitle.text != » %}
{{box.subtitle.text}}
{% endif %} {% присвоить total_price = 0 %}
{% если только продукт.доступен %} {{translation.sold_out}} {% бесконечный %}
{% if product.id == cur_product_id %} {{translation.this_item}} {% endif %}{{product.title}}{%, если product.available %} — {{translation.sold_out}} {% бесконечный%}
{% присвоить варианты_размера = продукт.варианты | размер %}{% для варианта в product.