Оружие будущего

Форум про оружие будущего
Текущее время: Ср июн 26, 2019 7:57 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Вт янв 08, 2019 2:57 pm 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 276
Откуда: Местная Метагалактика
Изменил код.
1. Теперь расчетный диапазон имерения скоростей от 1,4 см/с до 938м/с.
Маленький порог нижней скорости позволит проконтролировать точность за счет падения подшипника с заданой высоты. У передыдущего кода минимальная скорость была около 18 м/с.
2. После измерения скорости хрон опять готов измерять скорость. Стреляй хоть очередями- будет показывать. Это удобно. Раньше приходилось сбрасывать питание после каждого измерения.
3. Теперь хрон спрятан в мыльнице и питание от кроны. Затраты на все комплектующие хрона около 450руб.
4. Может измерить порешности хрона на назных скоростях, бросая подшипник с разной высоты? Сделал расчеты скорости какую должен иметь шарик и ту которую он показывает на видео- погрешность доли %. Если надо сделаю на других скоростях.
Я им доволен :D :D :D

Скет ардуино (то что в двойных черточках можно убрать- использовалось для отладки и коментарии):
Код:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // устанавливаем адрес 0x27, и дисплей 16 символов в 2 строки (16х2)
volatile float speed = 0; // вычисленное значение скорости пули m/s
float N=1024.0; // предделитель для кварцевого генератора см.Timer1
//int pin = 13;// отладка прерывания
//volatile int state = LOW; //отладка прерывания
//volatile unsigned int TCNT1_copy=5;// отладка работы счетчика TCNT1

void setup()
{
//Serial.begin(9600);

//------ Timer1 ----------
TCCR1B = 0; //(WGM13:0=0); // Режим normal (счет от 0 до 65535) но тактовые импульсы не проходят на счетчик TCNT1
//TCCR1B |= (1<<CS10); // Тактирование от CLK.
// Если нужен предделитель :
//TCCR1B |= (1<<CS11); // CLK/8
// TCCR1B |= (1<<CS10)|(1<<CS11); // CLK/64
// TCCR1B |= (1<<CS12); // CLK/256
//TCCR1B |= (1<<CS10)|(1<<CS12); // CLK/1024
//TCCR1B &= ~ (1 << CS10); // обнуление CS10(TCCR1B). Теперь 1 только в CS11 (почему-то изначально TCCR1B=3 ) (должно быть TCCR1B=2) теперь CLK/8
TCCR1A &= ~ (1 << WGM10); // обнуление WGM10(TCCR1A). Должно быть первоначально TCCR1A=0, но почему-то TCCR1A=1. Теперь режим normal Timer1 вкл.
TCNT1 = 0; // сброс счетчика TCNT1

//------ LCD ----------
lcd.init(); // инициализация LCD
lcd.backlight(); // включаем подсветку
lcd.clear(); // очистка дисплея
lcd.setCursor(4, 0); // устанавливаем курсор на 1 строку, 4 символ
lcd.print("speed pula"); // вывод надписи
lcd.setCursor(0, 1); // устанавливаем курсор на 2 строку, 0 символ
lcd.print("m/s:");

//pinMode(pin, OUTPUT);// для отладки

attachInterrupt(0, Interrupt0, FALLING);// обработчик прерывания прерывание int0 переход 1->0
attachInterrupt(1, Interrupt1, FALLING);// обработчик прерывания прерывание int1 переход 1->0
}

void loop()
{
//Serial.print("TCNT1=");   
//Serial.println(TCNT1);
//Serial.print("TCCR1A=");
//Serial.println(TCCR1A);
//Serial.print("TCCR1B=");
//Serial.println(TCCR1B);
//Serial.print("N=");
//Serial.println(N);
speed=960000.0/(N*TCNT1); // вычисление скорости пули м/c, растояние между фототранзисторами 0,06м
//Serial.print("speed=");
//Serial.println(speed);
//Serial.println("**********************************");
lcd.setCursor(5, 1);
lcd.print("       ");
lcd.setCursor(5, 1);
lcd.print(speed);
// digitalWrite(pin, state); // отладка работы прерывания 0 и 1
}

void Interrupt0() // обработчик внешнего прерывания int0
{
// state= !state; // для отладки

TCNT1 = 0; // сброс счетчика
TCCR1B |= (1<<CS10)|(1<<CS12); // CLK/1024 тактовые импульсы проходят на вход счетчика TCNT1
// TCNT1_copy=TCNT1; // проверка, что счетчик действительно обнулился
//EIMSK &= ~ (1 << INT0); // Запретить прерывание int0 (для устранения "дребезга")

}

void Interrupt1()// обработчик внешнего прерывания int1
{
TCCR1B = 0;// останов счетчика  TCNT1
// state= !state; // для отладки
// тактовая частота 16Мгц, после предделителя (/1024)
// в TCNT1 количесто этих интервалов

//EIMSK &= ~ (1 << INT1); // Запретить прерывание int1 (для устранения "дребезга")

}


Вложение:
1.JPG
1.JPG [ 356.76 KIB | Просмотров: 234 ]

Вложение:
2.JPG
2.JPG [ 351.08 KIB | Просмотров: 234 ]

Вложение:
3.JPG
3.JPG [ 361.05 KIB | Просмотров: 234 ]

Вложение:
4.JPG
4.JPG [ 349.86 KIB | Просмотров: 234 ]

Вложение:
5.JPG
5.JPG [ 357.82 KIB | Просмотров: 234 ]





Видео:

_________________
Тензорный анализ сетей-30%
Изучение Prolog-60%,
Машинное обучение -60%,
физика-20%
Удачный эксперимент – результат прямизны рук и кривизны извилин,а не наоборот.
Факты могут только опровергать теории, но не подтверждать их.


Последний раз редактировалось persej Пн янв 14, 2019 7:41 am, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Пт янв 11, 2019 11:34 am 

Зарегистрирован: Чт июн 16, 2016 7:46 pm
Сообщений: 8
здраствуйте
я тоже хотел такую штуку сделать но
вопрос а обязательно ставить датчик света или можно сделать
на основе катушки
???
как бы пролетает снаряд уже намагниченный катушками гауса
ток что он будет же вызывать токи
в катушках ???


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Пт янв 11, 2019 4:58 pm 

Зарегистрирован: Пт ноя 14, 2008 10:54 pm
Сообщений: 6888
Откуда: империя зла
На индукционных датчиках не только для гаусса делают хроны, можно любой металлический предмет катушкой обнаружить - по изменению резонанса/добротности и т.д.
Теоретически, в один и тот-же хрон можно самые любые датчики установить, лишь бы формировали пригодный сигнал на ногах микрокотнтроллера. Но как именно будете настраивать магнитные датчики и вообще всю эту аналоговую часть - отдельная задача!

В общем, с оптикой - проще всего. Компоненты доступные, схема включения простая.

_________________
Уверен - стреляй. Не уверен - выстрели еще раз! (С) Я

Колупание STM32 - 2% (мигает светиком).


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron

 

Яндекс цитирования
Русская поддержка phpBB