Импульсный датчик с колеса на PC
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Импульсный датчик с колеса на PC
Так выбери плату ардуино по необходимым арактеристикам, т.е. наличие FT232 конвертера на борту(программируется по USB) и необходимое количество входов. Как чего подключать - есть просто море примеров на ютубе(ану, вот прям сейчас попробуй в ютубе ввести "ардуино"), да и в остальной сети тоже. Преимущество таких плат - они уже имеют на борту программатор, ничего больше не нужно. и среда программирования для них тоже "дуракоустойчивая" - нажал на кнопку и вся твоя писанина прошилась и сразу же заработала. Сделать неработоспособный код который не скомпилируется в этой среде довольно сложно из-за огромного количества примеров в сети.
Но по сути, эти платы - просто распаянный AVR-контроллер на плате с удобными выводами под разъемы. Особым его делает именно изначально прошитый загрузчик, который позволяет заливать собственную прошивку в него БЕЗ ПРОГРАММАТОРА.
Но по сути, эти платы - просто распаянный AVR-контроллер на плате с удобными выводами под разъемы. Особым его делает именно изначально прошитый загрузчик, который позволяет заливать собственную прошивку в него БЕЗ ПРОГРАММАТОРА.
- Реклама
Re: Импульсный датчик с колеса на PC
у меня в бложике как раз написан пост про тупые вопросы на форумах, советую почитатьArtyLight писал(а):Можно просто ответить - "Нужно!"
если бы ты в первом посте написал задачу, то тебе бы конкретно сказали как проще ее реализовать
из твоего ответа я до сих пор нихера не понял
это будет наложение дополнительных данных на видео с регистратора что ли?
тематические ответы только в форуме, в приват не пишите
Re: Импульсный датчик с колеса на PC
А не проще ли для этого использовать GPS? По крайней мере, на расстояниях больше сотни метров точность будет заметно выше! (а ещё, такая функция есть даже в некоторых китайских автомобильных видеорегистраторах...
Re: Импульсный датчик с колеса на PC
Добрый день. Извиняюсь за подъем древней темы, но тут почти мой случай.
Суть задачи: нужно сделать помощник штурману для ралли 3й категории на ретро и классических автомобилях. Возможности как в Halda Speedpilot и Tripmaster, только более автоматизированы и специализированы под конкретное ралли.
Автомобиль любой, но только тросовый привод спидометра и естественно никаких сигналов с датчиков ABS нет.
Информацию о скорости планирую брать с проходного датчика скорости, который будет вставляться в "разрыв троса спидометра".

Далее мне нужно получить информацию с датчика на ноутбуке, которую программа (на Delphi) будет обрабатывать.
Ноутбук, к которому будет подключаться, имеет COM порт, но предпочтительно использовать USB.
Бюджет: хотелось бы не выскочить за пределы 50$ или в крайнем случае вложиться в 100$.
В электронике не силен, но некоторый положительный опыт сборки по доходчивым схемам имеется, и с attiny2313 баловался и даже программатор под него есть.
Собственно вопрос: на базе чего лучше сделать данный адаптер?
Суть задачи: нужно сделать помощник штурману для ралли 3й категории на ретро и классических автомобилях. Возможности как в Halda Speedpilot и Tripmaster, только более автоматизированы и специализированы под конкретное ралли.
Автомобиль любой, но только тросовый привод спидометра и естественно никаких сигналов с датчиков ABS нет.
Информацию о скорости планирую брать с проходного датчика скорости, который будет вставляться в "разрыв троса спидометра".

Далее мне нужно получить информацию с датчика на ноутбуке, которую программа (на Delphi) будет обрабатывать.
Ноутбук, к которому будет подключаться, имеет COM порт, но предпочтительно использовать USB.
Бюджет: хотелось бы не выскочить за пределы 50$ или в крайнем случае вложиться в 100$.
В электронике не силен, но некоторый положительный опыт сборки по доходчивым схемам имеется, и с attiny2313 баловался и даже программатор под него есть.
Собственно вопрос: на базе чего лучше сделать данный адаптер?
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Импульсный датчик с колеса на PC
Сборка схемы готовой это хорошо, но тут пахнет разработкой с нуля, начиная с теории и техзадания. Ведь тут влоб считать импульсы не выйдет - слишком долго на маленькой скорости и недостаточно точно даже на больших скоростях. Штатный спидометр работает за счет силы взаимодействия вращающегося магнитного поля, короткозамкнутой рамки и пружины - быстрее вращается, больше наведённый ток в рамке и сила давления на пружину. Нет, на импульсах тоже можно... но придётся использовать очень большие интервалы интегрирования - по 10-20 секунд... поэтому нужен датчик, который будет давать по 20-50-100 импульсов на оборот, и тогда уже можно считать, уменьшать интервал сбора данных и даже получить приемлемую реакцию и точность. И даже в таком случае предпочтительней не считать импульсы в лоб, а применять другие подходы - измерять период следования импульсов или считать длительность пачек по 10-20-50 импульсов.
- Реклама
- АлександрЛ
- Друг Кота
- Сообщения: 43881
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Импульсный датчик с колеса на PC
Как правило, у "европейских" автомобилей тросик спидометра крутится 1000 оборотов на километр, а у "американцев"- 624 оборота на километр (если я правильно понимаю, то 1000 импульсов на милю)
То есть, один оборот на МЕТР.. Тот датчик, который вы показали- скорее всего- 6 импульсов на оборот.
зы.. 10 километров в час это 2,7777 метров в секунду, или 16,6666(6) герц..
Самый примитивный способ "запихнуть" этот сигнал в компьютер- микрофонный вход.
То есть, один оборот на МЕТР.. Тот датчик, который вы показали- скорее всего- 6 импульсов на оборот.
зы.. 10 километров в час это 2,7777 метров в секунду, или 16,6666(6) герц..
Самый примитивный способ "запихнуть" этот сигнал в компьютер- микрофонный вход.
Re: Импульсный датчик с колеса на PC
Да. Бывают еще 10 импульсов проходные, но их днем с огнем...АлександрЛ писал(а):Тот датчик, который вы показали- скорее всего- 6 импульсов на оборот.
Похоже на то. Тезисные наброски ключевых для меня моментов есть.Alexeyslav писал(а):Сборка схемы готовой это хорошо, но тут пахнет разработкой с нуля, начиная с теории и техзадания.
Посмотрел примеры работы с ДХ на ардуино. Похоже под мои задачи проще сделать автономное устроство без привязки к компьютеру. Заказал UNO и датчик скорости, буду экспериментировать.
- musor
- Друг Кота
- Сообщения: 39197
- Зарегистрирован: Сб сен 13, 2014 16:27:32
- Откуда: СпиртоГонск созвездия Омега
Re: Импульсный датчик с колеса на PC
бля вашу мать вы про автонафигатор слышали7 а их 20 век в зад придумали
и он кроме точных 3 мерных кординат дает точное время и скорость в мировой системе кординат снимай не тока скорость нои направление движухи ну и к видео привязать не сложно вроде были комбики где 3 ф однм нафк-регер+радар
и он кроме точных 3 мерных кординат дает точное время и скорость в мировой системе кординат снимай не тока скорость нои направление движухи ну и к видео привязать не сложно вроде были комбики где 3 ф однм нафк-регер+радар
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Re: Импульсный датчик с колеса на PC
[uquote="musor",url="/forum/viewtopic.php?p=3801939#p3801939"]бля вашу мать вы про автонафигатор слышали7 а их 20 век в зад придумали
и он кроме точных 3 мерных кординат дает точное время и скорость в мировой системе кординат снимай не тока скорость нои направление движухи ну и к видео привязать не сложно вроде были комбики где 3 ф однм нафк-регер+радар[/uquote]
Слышали конечно. И даже пробовали. Для получение первичного опыта он конечно годится, но есть нюансы:
1. Одометр. Пропись легенды судьи осуществляют по механическому одометру, поэтому при езде по GPS расстояния плавают по отношению к легенде даже с учетом тарировочного участка. Ну и помехи в некоторых местах бывают с кратковременной потерей спутников.
2. Автоматизация. В обычном режиме движения со всеми данными по навигатору можно ехать, но стоит выехать на участок с неявно заданным движением, которое пересчитывается по факту его проезда, то тут уже нужна оперативность (в определенной точке с ходу зафиксировать время и расстояние, определить отклонение, и высчитать среднюю скорость с поправкой для пилота).
Это только то что с ходу вспомнил.
Если на gps ориентироваться, то есть и готовые приложения для андроида. Доводилось пользовать разные. Есть неплохие, но опять же со своими нюансами.
и он кроме точных 3 мерных кординат дает точное время и скорость в мировой системе кординат снимай не тока скорость нои направление движухи ну и к видео привязать не сложно вроде были комбики где 3 ф однм нафк-регер+радар[/uquote]
Слышали конечно. И даже пробовали. Для получение первичного опыта он конечно годится, но есть нюансы:
1. Одометр. Пропись легенды судьи осуществляют по механическому одометру, поэтому при езде по GPS расстояния плавают по отношению к легенде даже с учетом тарировочного участка. Ну и помехи в некоторых местах бывают с кратковременной потерей спутников.
2. Автоматизация. В обычном режиме движения со всеми данными по навигатору можно ехать, но стоит выехать на участок с неявно заданным движением, которое пересчитывается по факту его проезда, то тут уже нужна оперативность (в определенной точке с ходу зафиксировать время и расстояние, определить отклонение, и высчитать среднюю скорость с поправкой для пилота).
Это только то что с ходу вспомнил.
Если на gps ориентироваться, то есть и готовые приложения для андроида. Доводилось пользовать разные. Есть неплохие, но опять же со своими нюансами.
Re: Импульсный датчик с колеса на PC
Реализовал на Arduino UNO + LCD 2004 I2C.

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

На примере 10 Гц, что по сути своей и есть 10 импульсов в секунду или 2,671 м/с или 9,615 км/ч.
Единственное пока не придумал как грамотно делать онлайн тарировку одометра. Пока думаю править коэффициент в коде опираясь на прошлогодние легенды.
Код: Выделить всё
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // LCD address 0x27
volatile uint16_t impuls = 0;
uint16_t k = 3744; // 626 * 6 Количество импульсов на 1000 метров пути
uint32_t lastTime = 0;
uint32_t secTime = 0; // Суммарное количество секунд
uint32_t secTime0 = 0; // Время отсечки, [c]
float S = 0; // Расстояние от старта, [м]
float S0 = 0; // Расстояние отсечки, [м]
uint8_t buttonPin = 12; // Номер контакта кнопки отсечки (замыкать на массу)
void pinChange () // Функция обработки прерывания
{
impuls = impuls + 1;
}
void setup (){
attachInterrupt (0, pinChange, RISING); // Вызов обработчика внешних прерываний
lcd.init(); // Инициализация экрана
lcd.backlight(); // Подсветка экрана
pinMode(buttonPin, INPUT_PULLUP); // Встроенный подтягивающий (к +5В) резистор активирован
}
void loop (){
uint16_t secTime1 = 0; // Время с момента предыдущей отсечки, [с]
float S1 = 0; // Расстояние, пройденное с момента отсечки, [м]
float Ss = 0; // Расстояние, пройденное за секунду, [м]
float V = 0; // Средняя скорость, [км/ч]
float Vs = 0; // Текущая скорость, [км/ч]
float V1 = 0; // Средняя скорость отсечки, [км/ч]
while(millis() - lastTime >= 1000){
lastTime = millis();
Ss = ((float)impuls*1000)/(float)k; // Расстояние, пройденное за секунду, [м]
impuls = 0;
secTime = secTime+1;
S = S + Ss; // Расстояние от старта, [м]
V = 3600*S/lastTime; // Средняя скорость [км/ч]
Vs = 36*Ss/10; // Текущая скорость [км/ч]
showTime (12, 1, secTime); // Вызов функции вывода времени на экран (столбец первого символа, строка первого символа, количество секунд)
showTrip (10, 0, S); // Вызов функции вывода расстояния на экран (столбец первого символа, строка первого символа, расстояние)
showSpeed (0, 0, V); // Вызов функции вывода скорости на экран (столбец первого символа, строка первого символа, скорость)
showSpeed (0, 1, Vs); // Вызов функции вывода скорости на экран (столбец первого символа, строка первого символа, скорость)
/* По нажатию кнопки запоминаем время пройденного участка */
if (digitalRead(buttonPin) == LOW){
secTime1 = secTime-secTime0; // Определяем сколько прошло секунд с момента предыдущей отсечки, [с]
secTime0 = secTime; // Делаем новую отсечку времени, [с]
showTime (12, 3, secTime1); // Вызов функции вывода времени на экран (столбец первого символа, строка первого символа, количество секунд)
S1 = S - S0; // Определяем пройденное расстояние с момента отсечки, [м]
S0 = S; // Делаем новую отсечку расстояния, [м]
showTrip (10, 2, S1); // Вызов функции вывода расстояния на экран (столбец первого символа, строка первого символа, расстояние)
V1 = S1/secTime1*3.6; // Средняя скорость отсечки, [км/ч]
showSpeed (0, 3, V1); // Вызов функции вывода скорости на экран (столбец первого символа, строка первого символа, скорость)
}
}
}
/* Функция вывода времени на экран*/
void showTime (uint8_t posCol, uint8_t posRow, uint16_t secTimeShow) {
uint8_t minutes = 0;
uint8_t hours = 0;
uint8_t seconds = 0;
hours = secTimeShow/3600;
minutes = (secTimeShow-(hours*3600))/60;
seconds = secTimeShow-(hours*3600)-(minutes*60);
lcd.setCursor(posCol,posRow);
lcd.print(" ");
if (hours < 10) {
lcd.setCursor(posCol+1,posRow);
}
else {
lcd.setCursor(posCol,posRow);
}
lcd.print(hours);
lcd.setCursor(posCol+2,posRow);
lcd.print(":");
if (minutes < 10) {
lcd.setCursor(posCol+3,posRow);
lcd.print("0");
lcd.setCursor(posCol+4,posRow);
}
else {
lcd.setCursor(posCol+3,posRow);
}
lcd.print(minutes);
lcd.setCursor(posCol+5,posRow);
lcd.print(":");
if (seconds < 10) {
lcd.setCursor(posCol+6,posRow);
lcd.print("0");
lcd.setCursor(posCol+7,posRow);
}
else {
lcd.setCursor(posCol+6,posRow);
}
lcd.print(seconds);
}
/* Функция вывода скорости на экран */
void showSpeed (uint8_t posCol, uint8_t posRow, float VShow){
lcd.setCursor(posCol,posRow);
lcd.print(" ");
if (VShow < 10) {
lcd.setCursor(posCol+1,posRow);
}
else {
lcd.setCursor(posCol,posRow);
}
lcd.print(VShow);
lcd.setCursor(posCol+6,posRow);
lcd.print("km/h");
}
/* Функция вывода расстояния на экран */
void showTrip (uint8_t posCol, uint8_t posRow, float SShow){
lcd.setCursor(posCol,posRow);
lcd.print(" ");
if (SShow < 10000) {
lcd.setCursor(posCol+3,posRow);
}
else {
if (SShow < 100000) {
lcd.setCursor(posCol+2,posRow);
}
else {
lcd.setCursor(posCol+1,posRow);
}
}
lcd.print(SShow/1000);
lcd.setCursor(posCol+8,posRow);
lcd.print("km");
}
На примере 10 Гц, что по сути своей и есть 10 импульсов в секунду или 2,671 м/с или 9,615 км/ч.
Единственное пока не придумал как грамотно делать онлайн тарировку одометра. Пока думаю править коэффициент в коде опираясь на прошлогодние легенды.


