Зарегистрируйтесь и откройте для себя мир пневматического оружия
Регистрация

Войти

Меню
Просм.: 1845|Ответить: 0

Хронограф на основе ардуино,

[Скопировать ссылку]
Опубликовано 2012-4-3 20:23:21 | Показать все сообщения |Режим чтения

Зарегистрируйтесь сейчас, чтобы найти еще больше друзей, и получить полноценный доступ ко всем функциям сайта!

Для просмотра Вам необходимо авторизироваться.
Если Вы еще не зарегистрированы, перейдите по ссылке: Регистрация.

x
Я  порылся по интернетам и нашел несколько интересный вариантов исполнения хронографов на основе микроконтроллеров atmel atmega   которые  собстно и являются мозгом  ардуино. Почему  я   говорю  про  ардуино - потому что на этапе  экпериментирования   можно использовать  платку  ардуино  "uno "   или  любую  другую , с   контроллером  в  панельке .  а потом  изготовить  нормальную  печатную плату и  воткнуть в нее  прошитый  через  ардуино ide  контроллер .
итак  первый проект  
Основная идея:
Черная ПВХ труба послужит корпусом приспособлениея для измерения скорости снаряда.
Внутри трубы устанавливаем 2 пары  фотодиод/светодиод расположенных на заданном расстоянии (пока не определено).
Arduino будет измерять показания из аналоговых сигналов, полученных от фотодиодов. затем будет вычислить разницу во времени между двумя этими значениями  и, наконец, определять скорость, используя заданное расстояние между датчиками  в футах в  секунду и метрах в секунду.
Материалы:
- Arduino
- 2x Ярко-белых светодиода
- 2x Фотодиода
-  ПВХ труба
- ЖК-экран (16х2)
Дополнительные примечания:
еще  нужно подготовить материалы для корпуса устройства
В основном это список вещей, которые будут необходимы для того, чтобы закончить этот проект.
  • Arduinouno (самая дорогая часть проекта) -от 800р до  1800р
    • вы  можете использовать ее  только для отладки , а в последствии использовать  другой   прошитый  МК
  • LCD 16x2 - 200-500р
  • труба ПВХ - можно найти  бесплатно
  • 1/2 х 1/2 "трубы адаптер - CA $ 0,69 х2 = CA $ 1,38
  • Фотодиоды - 5 р шт
  • 100Ω резистор 2шт - 3 р
  • 330Ω резистор - 2 шт  - 3р
  • сведодиоды - 2 шт  - 30р
  • Провода  -  бесплатно
  • припой - бесплатно
  • Соединители

Первоначальный проект
Прежде всего, давайте рассмотрим понятие:
Идея заключается в том, чтобы создать устройство, способное измерять скорость небольших объектов и отображать эту скорость на дисплее.
В частности, идея заключается в измерении скорости снаряда - пульки
Идея проста, у нас есть два световых датчиков (фото диоды), расположенных на внутренней стороне трубы из ПВХ.
Эти датчики разнесены на 6 дюймов и оба освещенны светодиодами на противоположной стороне ПВХ  трубы.
Теперь, когда что-то пересекает  первый датчик  мы начинаем отсчет времени, который идет, пока снаряд не пересекает  второй датчик, после чего вычисляется скорость.
С этими фактами , мы можем приступить к построению устройства.
Тело
Теперь мы можем начать реальное строительство.

CIMG3516.JPG CIMG3518.JPG CIMG3519.JPG CIMG3520.JPG CIMG3522.JPG CIMG3521.JPG CIMG3523.JPG CIMG3524.JPG CIMG3526.JPG CIMG3532.JPG CIMG3528.JPG
Мозги
Как это уже отмечали , мозг всего этого Arduino, которая на самом деле микроконтроллер ATMega. Этот процессор работает на тактовой частоте 16Mhz что позволит нам измерять скорость   260-320FpS.
  1. /********************************************************
  2. * Paintball Chrono
  3. * v1.0 - 09/03/2010
  4. *
  5. * by
  6. * Jamil Ben Alluch (c)2010, All Rights Reserved
  7. * jamil@osdevforums.com
  8. *
  9. * Platform: Arduino Mega - pin numbers may change for
  10. * other versions of arduino.
  11. *
  12. * Description : Paintball speed chronometer
  13. * Calculates speed in feet & meters per second for a
  14. * paintball
  15. *
  16. * Program free for use and redistribution. Please keep
  17. * this info when using and/or modifying the program.
  18. *
  19. *********************************************************/

  20. #include

  21. #define FPS2MPSCOEFF 0.3048

  22. // LCD Settings
  23. LiquidCrystal lcd(46, 53, 28, 26, 24, 22);

  24. int photorespin1 = 11; // Analog pin 11
  25. int photorespin2 = 12; // Analog pin 12
  26. int val1, val2;        // Variable to read the value from the analog pin
  27. int thresh1, thresh2;  // Threshold variables
  28. int startChrono;       // Chrono flag
  29. unsigned long startTime, stopTime, elapsed;  // Speed calculation variables
  30. double fpsSpeed, mpsSpeed;  // Speed Variables

  31. void setup()
  32. {
  33.   // Initialize LCD && Print Initial Messages
  34.   lcd.begin(16, 2);
  35.   lcd.setCursor(0, 0);
  36.   lcd.print("Paintball Chrono");
  37.   lcd.setCursor(0, 1);
  38.   lcd.print("v1.0 - 10/03/09");
  39.   delay(1500);
  40.   lcd.setCursor(0, 0);
  41.   lcd.print("by              ");
  42.   lcd.setCursor(0, 1);
  43.   lcd.print("Jamil Ben Alluch");
  44.   delay(2000);
  45.   lcd.clear();
  46.   lcd.print("Initializing...");
  47.   delay(1000);

  48.   // Get Initial threshold values
  49.   thresh1 = analogRead(photorespin1)*0.7;
  50.   thresh2 = analogRead(photorespin2)*0.7;

  51.   // Initialize Variables
  52.   startChrono = 0;
  53.   elapsed = 0;
  54.   fpsSpeed = mpsSpeed = 0;

  55.   // Print Ready Message
  56.   lcd.setCursor(0, 0);
  57.   lcd.print("Ready.          ");

  58. }

  59. void loop()
  60. {
  61.   // Get analog values
  62.   val1 = analogRead(photorespin1);
  63.   val2 = analogRead(photorespin2);

  64.   // Start counting when the measured values is inferior to the threshold
  65.   if(val1 < thresh1 && startChrono == 0)
  66.   {
  67.     startTime = micros();  // Count microseconds since start
  68.     startChrono = 1;       // Set Chrono flag
  69.   }

  70.   // Stop counting and calculate speed
  71.   if(val2 < thresh2 && startChrono == 1)
  72.   {
  73.     stopTime = micros();  // Count microseconds since start
  74.     startChrono = 0;      // Clear Chrono flag
  75.     elapsed = stopTime - startTime;  // Calculate elapsed time (in us)

  76.     fpsSpeed = (0.5*(1000000))/elapsed;  // Calculate speed in feet per sec
  77.     mpsSpeed = fpsSpeed/FPS2MPSCOEFF;    // Calculate speed in meters per sec

  78.     // Print obtained values
  79.     lcd.clear();
  80.     lcd.print("FpS: ");
  81.     lcd.print(fpsSpeed);
  82.     lcd.setCursor(0, 1);
  83.     lcd.print("MpS: ");
  84.     lcd.print(mpsSpeed);    //*/
  85.   }
  86. }
Скопировать код
Собираем все вместе
Пришло время собрать все вместе.
Мы создали чувствительный орган, теперь пришло время добавить электронику и подключить все это к Arduino.
Прежде всего, вот схема системы:
PaintballChrono_bb.png



процесс подключения




CIMG3531.JPG





И, наконец, общая картина  всего проекта:







РезультатыВремя завершения: ~ 4 часа
Вы можете быть удивлены, что результаты были получены.Точность показаний   проверенная  с помощью шаров для пейнтбола брошенных сверху через датчик  достаточно верная
CIMG3538.JPG CIMG3537.JPG CIMG3539.JPG CIMG3534.JPG
CIMG3533.JPG ===
В планах
опорная рама для хронографа
рама для датчиков
хороший корпус
9В батарея питания
=====================================

Это проект   достаточно интересный  и очень простой , он демонстрирует  гибкость платформы Ардуино,  простоту написания  микропрограммы   , и легкость подключения внешних элементов,  чуть позже  рассмотрим еще несколько  вариантов исполнения хронографов на микроконтроллерах атмел атмега , ну  и других   изделий  выходящих  за рамки данной темы .
Я люблю Airgunstyle.ru !
Чтобы ответить, вам надо авторизироваться в системе Вход | Регистрация

Правила начислений

Магазин|Связь с дилером|Темный угол|Мобильная версия|Архив|Карта|AIRGUNSTYLE.ru Яндекс.Метрика

Сайт может содержать контент, запрещенный к просмотру лицам до 18 лет!

GMT+3, 2019-9-20 23:33 , Processed in 0.238959 second(s), 19 queries .

Copyright © 2013 airgunstyle.ru | foundcore studio

Powered by Makray on Discuz X3.1 Licensed

Быстрый ответ Вернуться к началу Назад к списку