roboforum.ru

Технический форум по робототехнике.

Хронограф - помогите, плиз

Хронограф - помогите, плиз

Широкий » 10 фев 2010, 16:20

Делаю хронограф (для измерения скорости пули пневматического оружия).
Хочу сделать на Atmega 8.
Нашел схему рамочного датчика.
Есть вопрос:
1. Можно ли выход датчика присоединить напрямую к входу прерывания?
Вложения
Ramka.jpg

Re: Хронограф - помогите, плиз

galex1981 » 10 фев 2010, 16:24

Можно конечно, но ИМХО лучше через токоограничительное сопротивление делай (100-200 Ом)

Re: Хронограф - помогите, плиз

Широкий » 10 фев 2010, 16:45

Тогда алгоритмический вопрос - 2 рамки, 2 прерывания.
Чтобы не было ограничения на направление стрельбы имхо:
Есть переменная status. Она false если отсчета нет.
По любому прерыванию проверить состояние переменной status.
Если false, то стартуем внутренний таймер и делаем переменную true.
если true, то стопим таймер и записываем его показания во flash как результат измерения.

Чтобы не было зависаний сделать перрывание по переполнению таймера с индикацией ошибки и записью во flash значениея FFFF (типа ошибка).

Правилен ли алгоритмический подход?

Re: Хронограф - помогите, плиз

galex1981 » 10 фев 2010, 16:58

Сходу вороде бы да, практически виднее будет

Re: Хронограф - помогите, плиз

Широкий » 10 фев 2010, 17:23

Прикинул - при базе 10 см (между датчиками) и таймере с частотой 1МГц можно ловить скорости до 1000 м/с.
В АВР формула 0,1/переменная*константа будет считаться?

Re: Хронограф - помогите, плиз

galex1981 » 10 фев 2010, 18:26

Лучше сначала выполнять все умножения а потом минимум делений

Re: Хронограф - помогите, плиз

Широкий » 10 фев 2010, 19:34

Как в атмеге8 реализовать таймер частотой 1Мгц при тактовой частоте 8Мгц ?
Плюс прерывание по его переполнению.

Re: Хронограф - помогите, плиз

boez » 10 фев 2010, 20:54

Для четкого определения интервала вне зависимости от того, чем там занята прога (небось и индикация предполагается?) я бы использовал Input Capture. Таймер молотит с определенной частотой (1 или 8 МГц) непрерывно, а датчик висит на входе compare (у меги8 это ICP0, он же PB0), по которому также настроено прерывание. По приходу прерывания смотрим переменую статус, если там false - переписываем ICR1 в переменную time1 (типа uint_16) и ставим status=true. Если уже true - достаем ICR1, вычитаем из него time1 и получаем время пролета пули в тиках, дальше делаем с ним что хотим. За счет 16-разрядного вычитания переполнение учтется автоматом. Ну и где-то отдельно можно повесить отдельный таймер - если status сильно долго висит в true - снести его в false и индицировать ошибку, это значит один импульс потерялся.

Re: Хронограф - помогите, плиз

vvk74 » 10 фев 2010, 21:28

На фототранзисторах не слишком медленно будет? У меня тоже подобная идея есть я правда думаю сделать контактные рамки из фольги алюминиевой с зазором и две рамки на расстоянии 0.5 м располагать. А с фототранзисторами я делал, пуля у меня правда посерьезней будет (18х45), располагал два фотодатчика в трубке на расстоянии 100 мм и замерял время пролета, датчик оказался одноразовым :D после выстрела вся конструкция вместе с дачиком МК и индикатором улетела на метр оборвав все провода.

Re: Хронограф - помогите, плиз

boez » 11 фев 2010, 12:56

а надо смотреть характеристики конкретных транзисторов. Будет медленно - делать на фотодиодах.

Re: Хронограф - помогите, плиз

Victorovych » 11 фев 2010, 13:35

[quote="Широкий"]...при тактовой частоте 8Мгц ?...quote]
Внутренний RC не используй - плыть будет

Re: Хронограф - помогите, плиз

Master » 11 фев 2010, 13:44

Фотодиод и фототранзистор одно и тоже, полюбому базовую ногу фототранзистора никто не юзает.
Внутренний кварц не юзать - поддерживаю.

Re: Хронограф - помогите, плиз

Широкий » 11 фев 2010, 14:24

Вот потому и рамочный. В него стрелять можно с расстояния (главное попасть куда надо).

Хотел бы найти схему индукционного датчика - было бы ещё кошернее. Толь чтобы рамка индукционная была не меньше чем 20 на 20 см...

По поводу программирования - я думал стартовать таймер если статус 0. А если статус 1 брать его показания. А по переполнению (16 бит) - выдавать ошибку. Так одним 16-битным таймером можно обойтись. Переполнение возникнет (при частоте таймера 1 Мгц) через 0,8 секунды примерно. Что есть гут.

В ППЗУ писать количество тиков таймера замеренное. Пересчитывать при выдаче на индикатор.

По поводу индикатора - у меня валяются 3 принтера старых лазерных. У них ЖК 2 строчки вроде - думал его и примостырить.

Кроме того дома лежит ардуино - на нем прошивку буду тестить.

Re: Хронограф - помогите, плиз

vvk74 » 11 фев 2010, 21:34

Victorovych писал(а):
Широкий писал(а):...при тактовой частоте 8Мгц ?...quote]
Внутренний RC не используй - плыть будет
Вы его в воду не пускайте, он и не уплывет :) а если серьезно, то для такой задачи особая стабильность не нужна, я часы делал с использованием внутреннего генератора (у него кстати стабильность почти как у керамического резонатора) так уход был порядка 1-2 сек в сутки.

Re: Хронограф - помогите, плиз

Широкий » 11 фев 2010, 23:57

Пуля при скорости 300 м/с пролетает расстояние 0,1 м за 0,00033 сеунды. Так что тактовая частота пороговая касательно минимальной погрешности на менее 500Кгц.


Rambler\'s Top100 Mail.ru counter