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

Форум про оружие будущего
Текущее время: Вт авг 21, 2018 9:11 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
 Заголовок сообщения: Хрон на arduino nano
СообщениеДобавлено: Пт авг 29, 2014 10:15 am 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
Попробовал реализовать хрон на arduino nano 3.0.
Электрическая схема:
Вложение:
электрическая схема хрона.JPG
электрическая схема хрона.JPG [ 81.34 KIB | Просмотров: 10536 ]


Расстояние между датчиками 6см.
Порядок сборки:
Вложение:
IMG_20140815_161148.jpg
IMG_20140815_161148.jpg [ 1006.05 KIB | Просмотров: 10536 ]

Вложение:
IMG_20140815_161240.jpg
IMG_20140815_161240.jpg [ 759.16 KIB | Просмотров: 10536 ]

Вложение:
IMG_20140815_161329.jpg
IMG_20140815_161329.jpg [ 962.35 KIB | Просмотров: 10536 ]

Вложение:
IMG_20140815_180428.jpg
IMG_20140815_180428.jpg [ 1.29 MIB | Просмотров: 10536 ]

Вложение:
IMG_20140815_195304.jpg
IMG_20140815_195304.jpg [ 1.26 MIB | Просмотров: 10536 ]

Вложение:
IMG_20140828_230400.jpg
IMG_20140828_230400.jpg [ 1.17 MIB | Просмотров: 10536 ]

Вложение:
IMG_20140828_230737.jpg
IMG_20140828_230737.jpg [ 1.19 MIB | Просмотров: 10536 ]

Вложение:
IMG_20140828_230912.jpg
IMG_20140828_230912.jpg [ 796.16 KIB | Просмотров: 10536 ]

Вложение:
IMG_20140828_231200.jpg
IMG_20140828_231200.jpg [ 944.38 KIB | Просмотров: 10536 ]

далее...

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Пт авг 29, 2014 10:54 am 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
Вложение:
IMG_20140828_231224.jpg
IMG_20140828_231224.jpg [ 1.05 MIB | Просмотров: 10533 ]

Вложение:
IMG_20140828_233306.jpg
IMG_20140828_233306.jpg [ 844.69 KIB | Просмотров: 10533 ]

Вложение:
IMG_20140828_234258.jpg
IMG_20140828_234258.jpg [ 797.81 KIB | Просмотров: 10533 ]

Вложение:
IMG_20140828_234448.jpg
IMG_20140828_234448.jpg [ 1.09 MIB | Просмотров: 10533 ]


Видео теста хрона:
https://yadi.sk/i/YIVEyKHNad6GP

Скетч который записывался в ардуино:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // устанавливаем адрес 0x27, и дисплей 16 символов в 2 строки (16х2)
volatile float speed = 0; // вычисленное значение скорости пули m/s
volatile int N=8; // предделитель для кварцевого генератора см.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) установка в 0 после первоначального сброса
//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 вкл.

//------ 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.println(TCNT1);
//Serial.println(TCCR1B);
lcd.setCursor(5, 1);
lcd.print(TCNT1);
// digitalWrite(pin, state); // отладка работы прерывания 0 и 1
}

void Interrupt0() // обработчик внешнего прерывания int0
{
// state= !state; // для отладки
// TCNT1 = 0; // сброс счетчика
// TCNT1_copy=TCNT1; // проверка, что счетчик действительно обнулился
// EIMSK &= ~ (1 << INT0); // Запретить прерывание int0 (для устранения "дребезга")

}

void Interrupt1()// обработчик внешнего прерывания int1
{
// state= !state; // для отладки
speed=960000/(N*TCNT1); // вычисление скорости пули м/c, расстояние между фототранзисторами 0,06м
// тактовая частота 16Мгц, после предделителя (/8) дает время увеличения значения счетчика TCNT1 на 1 за 8*1/16*10^-6 c
// в TCNT1 количество этих интервалов
EIMSK &= ~ (1 << INT1); // Запретить прерывание int1 (для устранения "дребезга")


}


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

Только сейчас нашел ошибку в скетче- :facepalm: На LCD надо выводить переменную speed, а не TCNT1-счетчик импульсов! :facepalm:
То-то при десяти выстрелах LCD выводил целые числа.
Заново постреляю с воздушки МР-512 не раньше, чем через неделю и предоставлю фото и видео.

Итак воздушка МР-512 должна давать около 170м/с по паспорту.
Результаты 10 тестовых выстрелов по LCD:
16, 22, 37, 65, 43, 111, 112, 25, 36, 121.
Поставив в формулу speed=960000/(N*TCNT1) пересчитаем на m/s.
Жаль, но скорости получаюся за 1000м/c. где-то ошибка. :mad:
Надо доводить, но в чем проблема, может фототранзисторы?

Еще нашел ошибки:
Заменить
void Interrupt0() // обработчик внешнего прерывания int0
{
// state= !state; // для отладки
// TCNT1 = 0; // сброс счетчика
// TCNT1_copy=TCNT1; // проверка, что счетчик действительно обнулился
// EIMSK &= ~ (1 << INT0); // Запретить прерывание int0 (для устранения "дребезга")

на

void Interrupt0() // обработчик внешнего прерывания int0
{
// state= !state; // для отладки
TCNT1 = 0; // сброс счетчика
// TCNT1_copy=TCNT1; // проверка, что счетчик действительно обнулился
EIMSK &= ~ (1 << INT0); // Запретить прерывание int0 (для устранения "дребезга")

С проверками увлекся выключил лишнее :facepalm:

Обновленный скетч проверю не раньше чем через неделю. :mad:

Насчет цены:
Arduino nano 3.0 стоит около 110руб на алиэкспресc
LCD был в наборе тоже возможно по такой цене
остальное копейки

Как рассказывал вроде Задорнов: один из чиновников или депутатов сказал-"Нано нам нано". Что и пытаюсь реализовать ;)

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


Последний раз редактировалось persej Ср сен 03, 2014 4:19 am, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Пт авг 29, 2014 12:25 pm 

Зарегистрирован: Пт ноя 14, 2008 10:54 pm
Сообщений: 6778
Откуда: империя зла
Только светики обычно топят в трубу - что они в канал за габарит внутренней стенки не торчат. Очень помогает от случайного отстрела этих самых светиков :)

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

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Вс сен 07, 2014 8:41 pm 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
Обновленный скет для ардуино нано 3.0

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // устанавливаем адрес 0x27, и дисплей 16 символов в 2 строки (16х2)
volatile float speed = 0; // вычисленное значение скорости пули m/s
volatile int N=8; // предделитель для кварцевого генератора см.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) установка в 0 после первоначального сброса
//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 вкл.

//------ 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.println(TCNT1);
//Serial.println(TCCR1B);
lcd.setCursor(5, 1);
lcd.print(speed);
// digitalWrite(pin, state); // отладка работы прерывания 0 и 1
}

void Interrupt0() // обработчик внешнего прерывания int0
{
// state= !state; // для отладки
TCNT1 = 0; // сброс счетчика
// TCNT1_copy=TCNT1; // проверка, что счетчик действительно обнулился
EIMSK &= ~ (1 << INT0); // Запретить прерывание int0 (для устранения "дребезга")

}

void Interrupt1()// обработчик внешнего прерывания int1
{
// state= !state; // для отладки
speed=960000.0/(N*TCNT1); // вычисление скорости пули м/c, растояние между фототранзисторами 0,06м
// тактовая частота 16Мгц, после предделителя (/8) дает время увеличения значения счетчика TCNT1 на 1 за 8*1/16*10^-6 c
// в TCNT1 количесто этих интервалов

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


}


Результаты 10 выстрелов:
127,66
124,48
118,34
127,25
131,87
117,53
0,00
0,00
124,35
115,16

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

Воздушка по заявлению была со слабой пружиной, поэтому среднии показания меньше паспортного значения. Относительный разброс вроде небольшой и скорее связан с воздушкой. Конечно, можно было бы провести статистический анализ, найти дисперсию, СКО...
Короче, вроде датчик скорости на arduino nano 3.0 работает.
Фото одного из результатов:
Вложение:
IMG_20140907_235544.jpg
IMG_20140907_235544.jpg [ 978.38 KIB | Просмотров: 10492 ]

Вложение:
IMG_20140907_235614.jpg
IMG_20140907_235614.jpg [ 1.39 MIB | Просмотров: 10492 ]

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Вт мар 08, 2016 11:29 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
Persej:
не могли бы Вы прояснить один вопрос:
откуда Ардуино Нано знает на каких дискретных входах будет прерывание?
в вашем коде:
attachInterrupt(0, Interrupt0, FALLING);// обработчик прерывания прерывание int0 переход 1->0
attachInterrupt(1, Interrupt1, FALLING);// обработчик прерывания прерывание int1 переход 1->0
А сигнал с опто-датчиков подается на Д2 и Д3.
Ни где в Вашем коде не виду описание входов Д2 и Д3.

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Ср мар 09, 2016 5:39 am 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
attachInterrupt(0, Interrupt0, FALLING);// обработчик прерывания прерывание int0 переход 1->0
0- смотрится вход пин Д2, Interrupt0- вызывается функция, если было событие типа FALLING (переход 1->0).
У ардуино нано только 2 внешних входа на прерывание.
Для пина Д3 соответствено меняется первая цифра на 1.
attachInterrupt(1, Interrupt1, FALLING);// обработчик прерывания прерывание int1 переход 1->0
Других входов внешнего прерывания нет.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Ср мар 09, 2016 8:21 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
Persej, спасибо за Ваш ответ.
Да, эту информацию я тоже сегодня нашел в описании функции attachInterrupt0,1 для УНО (у меня УНО 3 версии).
ЗЫ: Вы что-то еще на Ардуино делали, реализовывали?

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Чт мар 10, 2016 6:23 am 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
Делал измеритель емкости и индуктивности. В обоих случаях показания имеют те значения которые в номиналах с небольшой ошибкой.
Сделал автомат освещения- заходиш в коридор 220 В лампы загораются на 30 сек. Но днем работа блокируется от светодиода. Работает от ИК датчика движения.
На дверь поставил сканер пальца- поставил палец, замок щелкнул, дверь открыл. На чужой палец разумеется замок не открывает.
С внутренней стороны нажал на кнопку- замок щелкнул, дверь открыл. Использовал какой-то замок обычный + в нем электромагнит на 12В

Внутрь моделей самолетов(те что покупают и склеивают), наставили разные датчики, LCD, ардуино нано 3.
Одна модель измеряет высоту на поверхностью землей по давлению воздуха. И выводит высоту в метрах на LCD.
Другая с ультразвуковым датчиком как измеритель истинной высоты.
....
Также действующая модель автопилота. При отклонении от горизонта отклоняются рули (за счет шаговых двигателей)таким образом, что если бы был напор воздуха модель вернулась бы к горизонту.
Все было на ардуино нано 3. Купил на алиэкспресс где то то за 1000р 10 шт.
Плюс экранчики и датчики, шаговые двигатели были куплены.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Чт мар 10, 2016 8:33 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
Persej, а для гауса?

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Пт мар 11, 2016 7:04 am 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
CLON, пока руки не дошли. Хотя может быть попробую потом как мозг для управления ступенями. Видимо надо оптроны не только на входе (датчики) но и выходе (управление оптотранзисторами) Arduino nano.
Хотя может быть напрямую подавать на затворы полевых транзисторов выходные ножки Arduino nano (если помехи не сильные).

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Чт мар 17, 2016 8:29 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
Собрал свой Хронограф на Ардуино УНО версия 3.
Оптический датчик: 2 ИК-ЛЕД + 2 ИК-фототранзистора,
на расстоянии 60 мм с диаффрагмой шириной 1 мм.
Работают с параметром время: Т1 и Т2 с минимальным шагом 4 микросекунды.
На ЛСД-экран вывожу скорость в м/с, и интервал времени Т1-Т2= в микросекундах.
Сейчас хочу это все "чудо" перенести в корпус.

ЗЫ: Оттестировал на тестовом одноступе: получил КПД одноступа под 0.6%. Уныло. :)

persej, ты программу своего Хрона не улучшал? Ни каких новых фишек не делал?
У меня бывают сбои, когда второй опто-датчик не срабатывает, то на ЛСД выводит число в 4 300 000 000 (70 минут),
а следующий замер не стирает последние цифры. Поэтому надо каждый раз зачищать ЛСД-экран.

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Сб мар 19, 2016 7:37 am 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
Программу пока не улучшал (Так как уже давно хрон не использовал).
Практически финишурую с полным изучением языка Python 3.4. Есть идея(мечта) написать код хрона, управления гауссом на языке Python. Но сейчас все усилия бросил на завершение изучения этого языка. Запросто на Рython можно реализовать искуственные нейронные сети (искуственный интелект). Искуственные нейронные сети не программируются, а обучаются.

CLON попробуй проверить командой digitalRead() пины D2, D3 c выводом на экран компьютера.
И вставляй карандаш в ствол. Должны быть четкие переходы 1111111111111111111100000000000000000000.
Я когда писал программу в первую очередь проверил нормальную работу оптронов. Каждое написание строки кода - контроль результата путем вывода на экран компьютера. Только так я думаю надо писать программу. Некоторая неприятность была при работой с регистрами. Но путем контроля каждого шага все устранил. Переходить к дальнейшему усложнению только тогда когда контроль показал правильность всех других строк. Некоторые элементы котроля оставил в коментариях.
С другой стороны я проверял хрон при стрельбе с воздушки- так никаких электромагнитных наводок. Ты стрелял с гаусса, возможно пролезли электромагнитные помехи?. Но сначала проверь оптроны путем просовывания карандаша- если все нормально, то искать ошибку в коде или попробовать экран (или фильтры) от электромагнитных помех на хрон.
У тебя хрон питается от автономного источника питания?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Сб мар 19, 2016 3:03 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
persej, функция Time() работет по другому - это не двоичный счетчик (а время самого контроллера с шагом 4 мкс, с максимум 70 минут).
Да на экран выводил - все работает как надо, но проблемма именно с очиской экрана ЛСД.

persej, Ты не знаешь с какой частотой опроса аналоговых входов А0 - А5 работает АЦП Ардуино?
Можно ли менять эту частоту опроса аналоговых входов?
С дискретизацией в 1023 уровня, в шагом 4.88 мВ (от 5.0 В).

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Сб мар 19, 2016 5:15 pm 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
на UNO
1. Максимальная частота опроса АЦП около 9кГц.
2. Это предельная частота ограниченная внутреней АЦП микропроцессора (см. дейтшит на микроконтроллер)
3. АЦП и так имеет разрядность 10 бит (1024 уровня).

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Сб мар 19, 2016 11:29 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
Persej, огромное спасибо за данную информацию.
Ты бы не мог уточнить 9 кГц - это всего АЦП или каждого канала по 9 кГц (а АЦП 54 кГц = 6 каналов х 9 кГц)?
Или тогда на каждый канал только 1.5 кГц, а всего АЦП - 9 кГц (а АЦП 9 кГц = 6 каналов х 1.5 кГц)?
Да, а можно менять частоту опроса АЦП программно?

ЗЫ: Хочу в следующем проекте попробовать релизовать преобразование Фурье на УНО,
для контроля напряжения 1 фазной или 3-х фазной сети.

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Вс мар 20, 2016 11:51 am 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
CLON если очень сильно надо увеличить скорость работы АЦП, то можно увеличить, для этого надо переписать коэффициент деления в регистре делители для АЦП, хотя может пострадать точность.
http://rc-master.ucoz.ru/publ/19-1-0-39

Тебе соответсвенно надо посмотреть дейтшит для твоего микроконтроллера. Как записывать коэфициент деления в регистр для делителя АЦП.
Но так как ты работаешь с частотой 50Гц, тебе вполне хватит и обычной (по умолчанию) скорости АЦП в 9кгц.

Для Atmega328P
8-канальный 10—разрядный АЦП в корпусах TQFP и QFN/MLF
6-канальный 10—разрядный АЦП в корпусе PDIP

Дейтшит 238стр.
Вложение:
27.png
27.png [ 96.41 KIB | Просмотров: 8801 ]


Как видно по рисунку АЦП только один, только за счет мультиплексора подключается один из 6 или 8 входов.
Это не 6 или 8 паралельно работающих АЦП.
Думаю, что не получится подключить новый канал, AnaloRead() "подвисает" пока не подберет нужный двоичный код в текущем канале. Хотя ...более подробно см. datasheet.
https://yadi.sk/i/JUYXXzOOqKyb5

Убыстрение переключения между каналами возможно при увеличении скорости работы АЦП и(или?) некоторое шаманство с кодом AnalogReed() (см. выше предпоследнюю ссылку)

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Вс мар 20, 2016 12:49 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
persej, огромное Вам спасибо.

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Пн мар 28, 2016 6:15 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
Закончил свой хронограф версия 1.2.
Запихнул в корпус. Оттестировал - работает как часы.
Теперь можно гаусс оптимизировать.

persej, ты не пробовал хронограф переделать с управлением прерывания одним сигналом от
РС - тригера. Это позволяет высвободить второй прерыватель, для замера еще одного интервала или скорости.

Насчет АЦП. В описании написано, что АЦП работает с частотой до 200 кГц, а время преобразования от 4..5 до 26 тактов.
АЦП только однополярный, от 0 до +5В Хотя в описании +5В можно увеличить (изменить) дополнительным входом АРЕФ. Но вот насколько можно увеличить? Можно ли увеличить до 10В?

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Вс апр 03, 2016 7:58 pm 
Аватар пользователя

Зарегистрирован: Вс янв 10, 2016 12:50 pm
Сообщений: 20
persej, после 2-х дней тестирования хронографа, выползи следующие косяки:
1. Очень чувствительный вход Инт0 и Инт1 - ловят помехи и хрон показывает нереальные значения скорости и интервала времени.
2. Бысро разряжает батарейку 9 В. Крона сдохла за 2 дня.
Поэтому решил в программе и устройстве сделать дополнительные фишки.
1. Сделать экранированный кабель до опто датчика.
2. Програмный сброс результатов, если скорость замера более 600 м/с или дельтаТ12 меньше 100 мкс.
и если скорость замера менее 0.01 м/с или дельтаТ12 больше 6 с.
3. Конроль напряжения питания батарейки (на аналоговый вход с делителя 1/3).
+ Сообщение при напряжении Кроны менее 7 В.
persej, у тебя тоже были такие косяки у хрона? И если были как решал?

_________________
Любое устройство должно иметь критерии оптимизации.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Хрон на arduino nano
СообщениеДобавлено: Ср апр 13, 2016 3:20 pm 
Аватар пользователя

Зарегистрирован: Вс янв 02, 2011 4:31 pm
Сообщений: 260
Откуда: Местная Метагалактика
CLON, в datasheet не нашел сколько именно максимально можно подать на AREF. Написано, что он свободный. При соответствующей установке битов ADMUX можно его подключить. См. рисунок выше.
Может попробовать бы сам опытно подать на этот вход 10 В и смотреть какие значения выдает АЦП в порт. Но возможно придется рискнуть платой ;) . На свой страх и риск.
Подключение через AVcc больше чем 5,5 В не даст для масимума АЦП преобразования (datasheet).

Насчет хрона снимал значения когда былы нужны показания. Было все нормально. Правда не сотни показаний снимал.

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


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

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


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

Найти:
cron

 

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