Индукционный хронограф своими руками

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

Самодельный рамочный хронограф для пневматики

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

Существуют различные схемы хронографа, отличающиеся функциональностью, дизайном и ценой реализации.

Преимущества самодельного рамочного хронографа для пневматики со световой схемой:

Недостатки:

Фото самодельного рамочного хронографа
hronograf dlya pnevmatiki

Необходимый материал и детали

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

Обязательно понадобятся следующие компоненты:

Порядок сборки хронографа

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

После установить плату, подключив ее к датчикам и подготовив места ввода питания. Если есть желание составить микросхему самостоятельно, минуя привлечение сторонних специалистов, можно использовать следующую схему (рис. 1).

Рис. 1 Микросхема хронографа
Ris 1 Hronograf shema

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

Принцип действия самодельного хронографа

Измерение скорости производится в несколько этапов:

Схема действия рамочного хронографа
Printsip deystviya ramochnogo hronografa shema i razmeryi

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

На видео испытание самодельного рамочного хронографа:

Источник

Vintikmehanik › Блог › Arduino хронограф

a0f39a4s 100

Старший сынишка увлёкся страйкболом, а как известно в этой военно-спортивной игре главное правильно работающий привод (страйкбольное оружие).

d3be26s 960

О его исправности в первую очередь говорит скорость вылета пульки, 6мм шарика. Чем она выше и стабильней, тем лучше работает привод. Есть куча народных способов проверки, пробивания баночки, бутылочки и т.д. Но они хороши для первичной, приблизительной оценки. Для получения точных значений существует специальный прибор, хронограф.

60bbe26s 960

Цена его колеблется от 20$ до 150$ в зависимости от какчества изделия и наворотов.
Так как пользоваться этим прибором предполагалось эпизодически, отваливать за него 100$ не планировалось изначально. Работа недорогого хронографа мне не понравилась, разброс +/- 10м/с меня сильно смущал.
Так как с недавних пор изучаю arduino решено было сделать прибор самостоятельно, тем более в инете полно готовых примеров.
Первая версия из говна и палок макетки уно и пластиковой трубки заработала через 4 часа после старта проекта. Благо у меня осталось несколько ИК диодов от проекта пульта.
К сожалению фотки не делал, но это была копия популярного в инете проекта из того же материала.
Как она работала? Лучше бы она не работала вовсе. Из 10 выстрелов определялись 2-3, такие большие мертвые зоны у датчиков. Чувствительность была или слишком низкой или слишком высокой, не возможно было чётко настроить момент срабатывания, от этого показания изменялись в диапазоне +/- 15м/с, но определить приблизительную скорость всё же удалось.
Можно было засунуть всё это в коробку из под обуви и наслаждаться результатом, но я принял опрометчивое решение, сделать нормальный хронограф.
Начал с правильной измерительной трубки, с 2х мм пропилами ровно через 100мм, подставок под светодиод для равномерной засветки фотодиодов и кондуктора для фотодиодов. Из старой зарядки планировал сделать раструб, но он впоследствии лопнул.

62bbe26s 960

В качестве индикатора взял модуль часов, валявшийся у меня без дела долгое время.

bebbe26s 960

Лирической отступление: многие считают, что при рассказе о поделках необходимо добавлять схему, прошивку, даташит и т.д. Другие жалуются, что схема, прошивка, даташит занимает много места, нужно добавлять архивом, на облаке. Третьи считают, что ардуино это не контроллер, а остальное они и так знают.
А мне, если честно, харит вообще што либо добавлять, кроме фотографий из которых и так всё понятно. Но уважая мнение читателей, готов прислушаться к их совету, как лучше поступить?

В качестве контроллера выбрал arduini pro mini, из за простоты и дешевизны.
И тут я сделал первую ошибку – вначале припаял к плате ардуинку, а затем начал программировать.
Конченый программатор даже отдельную ардуинку шьет два раза, на третий выходит из строя или портит плату, уничтожая загрузчик. Не покупайте такой ни в коем случае.

407be26s 960

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

187be26s 960

Убитую ардуину пришлось вырезать и припаять с другой стороны платы чудо китайской инженерной мысли – Pro Mikro о которой итальянцы и «среда разработки» даже не слышали, что в последствии сыграет со мной злую шутку. Из плюсов – прямое подключение к компу и удобная отладка. Из минусов – постоянно работающий последовательный интерфейс, передающий на комп непонятные данные.

Читайте также:  Декоративный парашют своими руками

1dfbe26s 960

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

4407e26s 960

// прошивка шарика на палочке, кому интересно
#include «TM1637.h» // Подключаем библиотеку
#define CLK 7 // К этому пину подключаем CLK
#define DIO 6 // К этому пину подключаем DIO

TM1637 disp(CLK, DIO);
int sensorPin = A2;

void setup() // Выполняем процедуру 1 раз
<
// Устанавливаем яркость от 0 до 7
disp.set(5);
disp.init(D4056A);

void loop() // Повторяем в бесконечном цикле
<
sensorValue = analogRead(sensorPin);
disp.display(sensorValue); // Выводим значение
delay(1000); // Пауза 1 сек
>

Проверка показала избыточную мощность светодиодов, потому за время пролёта датчика (около 60 микросекунд) программа определяла шарик не очень чётко. Правильное значение sensorValue = 600, тогда при пролёте шара стабильно получаем логический 0, (значение меньше 500).

Современные гаджеты в основном заряжаются от USB потому решил сделать питание и зарядку USB совместимыми. Готовый повышающий стабилизатор с 3В на 5В найти не сложно, сложней сделать правильное управление питанием.

d0c7e26s 960

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

9a87e26s 960

Точность показаний скорости проверял бросая с метровой высоты шарик в прибор.
Прошивка шарика:

V=√2gh
// V это скорость шарика
// g это ускорение свободного падения
// h это высота падения
Сила сопротивления воздуха направлена против скорости движения, её величина пропорциональна характерной площади S, плотности среды ρ и квадрату скорости V:
X=C*pV²S/2
// C — безразмерный аэродинамический коэффициент сопротивления, получается из критериев подобия, например, чисел Рейнольдса и Фруда в аэродинамике.

// Мощность, требуемая для преодоления данной составляющей силы лобового сопротивления, пропорциональна кубу скорости.
P=X*V=C*pV³S/2

// Но движение у нас не равномерное, скорость постоянно растет, а вместе с ней растет и //сопротивление движению шара в упругой среде.
U=∫˳֮UF(U)dU
// ֮ это значок бесконечности
// Средняя скорость шарика в трубке
Vср= ∆S/∆t
// где ∆S пройденное расстояние в метрах
// ∆t время прохождения участка

unsigned long Foto1Time;
unsigned long Foto2Time;
unsigned long DeltaTime;
void setup()
< pinMode(Foto1Pin, INPUT);
pinMode(Foto2Pin, INPUT);
>
void loop()
<
currentTime = micros();
Foto1PinState = digitalRead(Foto1Pin);
if (Foto1PinState == 0)
Foto2PinState = digitalRead(Foto2Pin);
if (Foto2PinState == 0) if (Foto2Time > Foto1Time)
>

Рассчитав теоретическую скорость шара при падении с высоты 1м, и написав простейший алгоритм, перешел непосредственно к экспериментам.
Каково же было моё удивление, когда из 20 брошенных шаров ни один в трубку НЕ ПОПАЛ. Причиной всего были микро дефекты направляющего аппарата и несимметричность затвора. Шары летели куда угодно, кроме трубки. Пришлось запускать шары с полуметровой высоты.

1847e26s 960

Отклонения составили +/- 2м/с и около 5-8% от измеренной скорости, что очень не плохо для кустарного производства.
Но тут вылезла другая проблема. Пролёт шара определялся не каждый раз. Проблема оказалась в «мониторе последовательного порта». У этой платы он работает даже без команды, а время на передачу данных – несколько миллисекунд, что в 1000 раз больше времени измерения скорости шара, потому прибор и затыкался.
Пришлось опять впаивать новую arduino pro mini, а контакты для программирования выводить на лицевую панель.

Источник

Сообщества › Все о Пневматике и Арбалетах › Блог › Самодельный хронограф

a0f39a4s 100

Старший сынишка увлёкся страйкболом, а как известно в этой военно-спортивной игре главное правильно работающий привод (страйкбольное оружие).

b5d7e26s 960

О его исправности в первую очередь говорит скорость вылета пульки, 6мм шарика. Чем она выше и стабильней, тем лучше работает привод. Есть куча народных способов проверки, пробивания баночки, бутылочки и т.д. Но они хороши для первичной, приблизительной оценки. Для получения точных значений существует специальный прибор, хронограф.

a757e26s 960

Цена его колеблется от 20$ до 150$ в зависимости от какчества изделия и наворотов.
Так как пользоваться этим прибором предполагалось эпизодически, отваливать за него 100$ не планировалось изначально. Работа недорогого хронографа мне не понравилась, разброс +/- 10м/с меня сильно смущал.
Так как с недавних пор изучаю arduino решено было сделать прибор самостоятельно, тем более в инете полно готовых примеров.
Первая версия из говна и палок макетки уно и пластиковой трубки заработала через 4 часа после старта проекта. Благо у меня осталось несколько ИК диодов от проекта пульта.
К сожалению фотки не делал, но это была копия популярного в инете проекта из того же материала.
Как она работала? Лучше бы она не работала вовсе. Из 10 выстрелов определялись 2-3, такие большие мертвые зоны у датчиков. Чувствительность была или слишком низкой или слишком высокой, не возможно было чётко настроить момент срабатывания, от этого показания изменялись в диапазоне +/- 15м/с, но определить приблизительную скорость всё же удалось.
Можно было засунуть всё это в коробку из под обуви и наслаждаться результатом, но я принял опрометчивое решение, сделать нормальный хронограф.
Начал с правильной измерительной трубки, с 2х мм пропилами ровно через 100мм, подставок под светодиод для равномерной засветки фотодиодов и кондуктора для фотодиодов. Из старой зарядки планировал сделать раструб, но он впоследствии лопнул.

6f57e26s 960

В качестве индикатора взял модуль часов, валявшийся у меня без дела долгое время.

2cd7e26s 960

В качестве контроллера выбрал arduini pro mini, из за простоты и дешевизны.

Источник

Airgun.Org.Ru

Предложение для рекламодателей

Часовой пояс: UTC + 3 часа [ Летнее время ]

Индуктивный хрон

file.php?avatar=11114 1253291508

Регистрация: 02.03.2009
Сообщений: 84
Откуда: Киев, Украина
Арсенал: Diana350 magnum+
ПУ 3.5х25 1953г+
Green laser sight module,
Air Arms S410-SL XTRA FAC+
Leapers4-16×50., KENWOOD TK-278 pair, electro compressor HP :))
Nikon Laser 600

file.php?avatar=18133 1306525809

Регистрация: 09.07.2010
Сообщений: 114
Откуда: Воронеж
Арсенал: мурка ап с оптикой.

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

просто хочу похимичить..руки приложить к чему-нибудь..

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

зацените и раскретикуйте идею. ес чо не так поправьте!

_________________
мужик как автомат Калашникова-безотказный!

Читайте также:  Декапе своими руками мк
starКлуб ВОЛПО
file.php?avatar=12970 1303711633

Регистрация: 26.08.2009
Сообщений: 664
Откуда: MSK
Арсенал: M2-Match
MP-572
FWB 300S Universal
Gamo CFX Royal
Air Arms TX200
Haenel Suhl 311
ИЖ-46М
Luger P08-8 Airsoft

starКлуб ВОЛПО
file.php?avatar=12970 1303711633

Регистрация: 26.08.2009
Сообщений: 664
Откуда: MSK
Арсенал: M2-Match
MP-572
FWB 300S Universal
Gamo CFX Royal
Air Arms TX200
Haenel Suhl 311
ИЖ-46М
Luger P08-8 Airsoft

file.php?avatar=11114 1253291508

Регистрация: 02.03.2009
Сообщений: 84
Откуда: Киев, Украина
Арсенал: Diana350 magnum+
ПУ 3.5х25 1953г+
Green laser sight module,
Air Arms S410-SL XTRA FAC+
Leapers4-16×50., KENWOOD TK-278 pair, electro compressor HP :))
Nikon Laser 600

file.php?avatar=11114 1253291508

Регистрация: 02.03.2009
Сообщений: 84
Откуда: Киев, Украина
Арсенал: Diana350 magnum+
ПУ 3.5х25 1953г+
Green laser sight module,
Air Arms S410-SL XTRA FAC+
Leapers4-16×50., KENWOOD TK-278 pair, electro compressor HP :))
Nikon Laser 600

Вложения:
IMG_1.1_1.JPG [ 50.35 Кб | ]
Вернуться к началу

starКлуб ВОЛПО
file.php?avatar=12970 1303711633

Регистрация: 26.08.2009
Сообщений: 664
Откуда: MSK
Арсенал: M2-Match
MP-572
FWB 300S Universal
Gamo CFX Royal
Air Arms TX200
Haenel Suhl 311
ИЖ-46М
Luger P08-8 Airsoft

Часовой пояс: UTC + 3 часа [ Летнее время ]

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Источник

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

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

Существуют различные схемы хронографа, отличающиеся функциональностью, дизайном и ценой реализации.

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

Преимущества самодельного рамочного хронографа для со световой схемой:

Фото самодельного рамочного хронографа

Необходимый материал и детали

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

Обязательно понадобятся следующие компоненты:

Порядок сборки хронографа

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

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

После установить плату, подключив ее к датчикам и подготовив места ввода питания. Если есть желание составить микросхему самостоятельно, минуя привлечение сторонних специалистов, можно использовать следующую схему (рис. 1).

Рис. 1 Микросхема хронографа

Ris 1 Hronograf shema

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

Принцип действия самодельного хронографа

Измерение скорости производится в несколько этапов:

Схема действия рамочного хронографа

Printsip deystviya ramochnogo hronografa shema i razmeryi

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

Помимо всего прочего, нужно запастись такими деталями как:
— провода;
— кусок трубы длиной не менее 10 см (подойдет пластиковая водопроводная);
— все для пайки;
— мультиметр (желательно).

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

1476742838 2

Что касается характеристик, то они подобны ATtiny85, здесь его возможностей хватает с избытком. Микроконтроллер в хронографе всего лишь опрашивает датчики и управляет дисплеем.
Если вы еще ни разу не встречались с Digispark-ом, наиболее важные нюансы можно посмотреть в таблице.

1476742837 3

Важно учитывать тот факт, что нумерация пинов для функции analogRead() имеет отличия. А еще на третьем пине находится подтягивающий резистор номиналом 1.5кОм, поскольку он применяется в USB.

1476742817 4

1476742798 5

Поскольку расстояния между цифрами одинаковые, то при выключенном двоеточии цифры читаются без проблем. Стандартная библиотека способна выводить числа в диапазоне 0-9. буквы в диапазоне a-f, а еще есть возможность для изменения яркости всего дисплея. Значения цифры можно задать, используя функцию display(int 0-3, int 0-15).

1476742803 6

Как использовать дисплей

// 1. Объявить заголовочный файл
#include
// 2. Задать пины
#define CLK 0
#define DIO 1
// 3. Объявить объект
TM1637 tm1637(CLK, DIO);
// 4. Проинициализировать
void setup() <
tm1637.init();
tm1637.set(6); // Яркость
>
// 5. Использовать
void loop() <
// Вывод числа x на дисплей
int x = 1234;
tm1637.display(0, x / 1000);
tm1637.display(1, x / 100 % 10);
tm1637.display(2, x / 10 % 10);
tm1637.display(3, x % 10);
delay(500);
>

1476742788 7

Автор хотел, чтобы на дисплее выводилась и готовая энергия полета пули, что вычислялось бы в зависимости от скорости пули и ее массы. Значения по задумке должны были выводиться последовательно, а чтобы понять, где какое, их нужно как-то отметить, к примеру, с помощью буквы «J». В крайнем случае, можно просто задействовать двоеточие, но автора это не устроило, и он полез в библиотеку. В итоге на базе функции display была сделана функция setSegments(byte addr, byte data), она зажигает в цифре с номером addr сегменты, которые закодированы в dаta:

<
tm1637.start();
tm1637.stop();
tm1637.start();
tm1637.writeByte(addr|0xc0);
tm1637.writeByte(data);
tm1637.stop();
tm1637.start();
tm1637.stop();
>

Кодируются такие сегменты довольно просто, за верхний сегмент несет ответственность младший бит data, ну а далее по часовой стрелке, 7-ой бит несет ответственность за средний сегмент. Символ «1» при кодировке выглядит как 0b00000110. За двоеточие отвечает восьмой старший бит, он используется во второй цифре, а во всех других игнорируется. Впоследствии автор автоматизировал процесс получения кодов, используя Exсel.

1476742814 8

Что же в итоге вышло, можно увидеть на фото

1476742837 9

1476742822 10

#include
#define CLK 0
#define DIO 1
TM1637 tm1637(CLK, DIO);

void setSegments(byte addr, byte data)
<
tm1637.start();
tm1637.writeByte(ADDR_FIXED);
tm1637.stop();
tm1637.start();
tm1637.writeByte(addr|0xc0);
tm1637.writeByte(data);
tm1637.stop();
tm1637.start();
tm1637.writeByte(tm1637.Cmd_DispCtrl);
tm1637.stop();
>

void setup() <
tm1637.init();
tm1637.set(6);
>

void loop() <
// Вывод Hello
setSegments(0, 118);
setSegments(1, 121);
setSegments(2, 54);
setSegments(3, 63);
delay(500);
>


Ну и наконец, датчики

О датчиках точной информации не предоставлено, известно только, что они имеют длину волны 940 нм. В ходе экспериментов было выяснено, что датчики не способны выдерживать ток более 40 мА. Что касается напряжения питания, то оно не должно быть выше 3.3В. Что касается фототранзистора, то он имеет немного прозрачный корпус и реагирует на свет.

1476742853 11

Приступаем к сборке и настройке самоделки:

1476742807 12

1476742828 13

1476742851 14

1476742818 15

1476742883 16

Собирается все из деталей, которые видно на фото. Чтобы все собрать, автор решил использовать макетную доску. Потом вся конструкция для прочности была залита термоклеем. Датчики размещаются на трубе и к ним припаиваются провода.
Чтобы диоды не пульсировали при питании от повербанка, автор установил параллельно светодиодам электролит на 100 мКф.

1476742817 17

1476742858 18

Еще важно отметить, что пин Р2 был выбран не просто так, дело в том, что Р3 и Р4 применяются в USB, поэтому теперь с помощью Р2 есть возможность прошить самоделку уже после сборки.
Еще Р2 является аналоговым входом, поэтому использовать прерывание нет надобности. Можно просто измерять показания между текущем и предыдущем значением, если разница становится выше определенного порога, значит, в этот момент пуля как раз проходит возле оптопары.

Шаг второй. Прошивка

Prescaler является делителем частоты, в стандартных случаях в платах наподобие Arduino он равен 128. Эта цифра влияет на то, как часто идет опрос АЦП. То есть для дефолтных 16 мГц выходит 16/128 = 125 кГц. Каждая оцифровка состоит из 13 операций, поэтому пин может максимально опрашиваться со скоростью 9600 кГц. На практике же это не более 7 кГц. В итоге интервал между замерами составляет 120 мкс, что слишком много для работы самоделки. Если пуля будет лететь со скоростью 300 м/с, она преодолеет за это время путь в 3.6 см, то есть контроллер просто не сможет ее заметить. Чтобы все работало нормально, интервал между замерами должен быть как минимум 20 мкс. Для этого значение делителя должно быть равно 16-ти. Автор же сделал делитель 8, как это сделать, можно увидеть ниже.

Владею пневматической винтовкой, всегда была интересна скорость вылета пули из ствола, это кому-то покажется странным, но у пневмолюбов скорость пули одна из главных тем для членометрии. Погуглив немного нашел несколько вариантов схем на разных микроконтроллерах, так как у меня уже был работы с AVR, без раздумий выбрал вариант на avr. Все необходимые детали я нашел на упоминавшемся уже здесь Taydaelectronics.com. Покупка собрана, оплачена, получена, приступим…

Сразу приложу схему:

e624ab
поподробнее желающие могут посмотреть на

Итак, нам понадобится:

85dd7f
— 1 шт.
— 1 шт.
Пара конденсаторов 330 нФ и 100нФ для регулятора напряжения
(можно запитать всю схему от трех пальчиковых батареек вместо кроны, тогда регулятор и конденсаторы не понадобится)
2 шт.
1 шт.
2 шт.
2 шт.
выключатель, панелька для микроконтроллера, панелька для индикатора, коннекторы для шлейфов, сам шлейф я использовал от старого компьютера. Так же набор резисторов.

Повторил схему в протеусе, подогнал под свои нужды, и вытравил печатную плату

Кое-как расставил компоненты, чтобы иметь примерное представление, как рисовать дорожки. И да, у меня нет принтера, я рисую дорожки перманентным маркером)))

958e1a

Сначала пробую на бумаге

3e2416

Потом переношу на текстолит

3839b3

8fcc58

4423f1

Сверлим. Дрельку делал из патрона и моторчика с фасттека.

a32a2a

Вот все компоненты запаяны на плату, осталось только прошить микроконтроллер

9e7b01

b1bc19

/*
* Прошивка без наворотов, расстояние между датчиками 100мм
* общий анод!
* Updated at: 15.12.2013
*

#define F_CPU 1000000UL

0b00111111
#define LED_1

0b00000110
#define LED_2

0b01011011
#define LED_3

0b01001111
#define LED_4

0b01100110
#define LED_5

0b01101101
#define LED_6

0b01111101
#define LED_7

0b00000111
#define LED_8

0b01111111
#define LED_9

0b01101111
#define LED_DOT

0b01000000
#define LED_E

0b01111001
#define LED_r

0b01010000
#define LED_G

0b00111101
#define LED_o

#define BASE_LENGTH 1000

Typedef struct LedPanel <
int seg1;
int seg2;
int seg3;
> LedPanel;

Void renderSegmentNext() <
static int activeSegment = 0;
activeSegment = (activeSegment + 1) % 3;

Switch (activeSegment) <
case 0:
PORTB = led.seg1;
PORTD =

0b0110000;
break;
case 1:
PORTB = led.seg2;
PORTD =

0b1010000;
break;
case 2:
PORTB = led.seg3;
PORTD =

Void initPorts() <
//init led ports
DDRB = 0xFF;
DDRD |= (0b111 400) <
led.seg1 = LED_MINUS;
led.seg2 = LED_MINUS;
led.seg3 = LED_MINUS;
return;
>

Led.seg3 = digitToLedValue(value % 10);
if (value >= 10) <
led.seg2 = digitToLedValue((value / 10) % 10);
> else <
led.seg2 = LED_EMPTY;
>
if (value >= 100) <
led.seg1 = digitToLedValue((value / 100) % 10);
> else <
led.seg1 = LED_EMPTY;
>
>

ISR(TIMER1_OVF_vect) <
//stop timer and reset value
TCCR1B &=

0b00111111
#define LED_1

0b00000110
#define LED_2

0b01011011
#define LED_3

0b01001111
#define LED_4

0b01100110
#define LED_5

0b01101101
#define LED_6

0b01111101
#define LED_7

0b00000111
#define LED_8

0b01111111
#define LED_9

0b01101111
#define LED_DOT

0b01000000
#define LED_E

0b01111001
#define LED_r

0b01010000
#define LED_G

0b00111101
#define LED_o

#define BASE_LENGTH 1000

Typedef struct LedPanel <
int seg1;
int seg2;
int seg3;
> LedPanel;

Void renderSegmentNext() <
static int activeSegment = 0;
activeSegment = (activeSegment + 1) % 3;

Switch (activeSegment) <
case 0:
PORTB = led.seg1;
PORTD =

0b0110000;
break;
case 1:
PORTB = led.seg2;
PORTD =

0b1010000;
break;
case 2:
PORTB = led.seg3;
PORTD =

Void initPorts() <
//init led ports
DDRB = 0xFF;
DDRD |= (0b111 400) <
led.seg1 = LED_MINUS;
led.seg2 = LED_MINUS;
led.seg3 = LED_MINUS;
return;
>

Led.seg3 = digitToLedValue(value % 10);
if (value >= 10) <
led.seg2 = digitToLedValue((value / 10) % 10);
> else <
led.seg2 = LED_EMPTY;
>
if (value >= 100) <
led.seg1 = digitToLedValue((value / 100) % 10);
> else <
led.seg1 = LED_EMPTY;
>
>

ISR(TIMER1_OVF_vect) <
//stop timer and reset value
TCCR1B &=

(1 Планирую купить +31 Добавить в избранное Обзор понравился +69 +128

Источник

Читайте также:  Инкрустация столешницы своими руками
Делаю сам
Adblock
detector