Нужен простой скетч для arduino. Оплата на visa.
- Войдите на сайт для отправки комментариев
Нужен простенький скетч для arduino nano
В автомобиле есть датчик скорости, при движении автомобиля его вращает шестерня коробки передач и он выдаёт импульсы. Количество импульсов на километр фиксированное. В зависимости от скорости вращения изменяется частота на выходе датчика скорости.
Спидометр и тахограф - оценивают частоту с датчика скорости и выводят показание скорости
Проблема в том, что штатный датчик имеет слишком малое кол-во импульсов на километр (1200 импульсов на 1 км) и тахограф его не видит.
Тахографу требуется в 10 раз больше импульсов на километр.
Поэтому нужно на каждый импульс с датчика скорости выдавать десять на тахограф.
Входной сигнал меандр, размах сигнала 5 вольт.
Выходной сигнал должен быть также меандром и подтянут к бортовому питанию автомобиля +12в
5т.р.
Пишем контакты тут
fmv.electronics (gmail) com
Готов обсудить детали
Если время импульса с датчика скорости t, то время импульса на выходе t/10
Т.е. мы сначала измеряем длительность импульса с датчика скорости - потом выдаем наши десять импульсов
Бюджет ограничен 2т.р.
Тогда дольше. Делов то.
Контакты выше.
Всё почти понятно --- но не до конца. тахограф эта та хреновина что рисует типа диаграмму?!
А дуина должна умножить колличество импульсов на 10 ?
А есть уверенностьть, что подача дискретной серии импульсов, не заставит тахограф "задуматься"?
тз в 3 комменте написано, тахограф исполнителя при таком раскладе волновать не должен, потому и 2тыр. :)
p.masyukov, тахограф в данном случае считает импульсы и показывает скорость на основе внутренних настроек в которых каждому импульсу соответствует дистанция. Т.е. зная сколько импульсвов поступило за промежуток времени можно судить о скорости и расстоянии. Тахограф цифровой, он ничего не рисует. Дуина должна умножать импульсы с датчика скорости на 10.
Gippopotam, тахограф от этого "не задумается", все будет корректно работать.
inspiritus, тахограф имеет функцию калибровки при котором каждому импульсу присваивается реальное пройденное расстояние. Всё будет замечательно работать.
Боюсь, что от такой частоты, тахограв все-таки вспотеет.
ну добавить задержки религия не запрещает, главное чтобы в сумме получилось не длинее, чем придет следующий фронт. пусть пробует.
... главное чтобы в сумме получилось не длинее, чем придет следующий фронт...
Так я об этом и писал. Нужно знать максимальную частоту, которую воспримет тахограф и быть уверенным, что пауза после серии, на порядки превышающая паузы между импульсами, не загонит тахограф в ступор.
В процессе аукциона цена снижена с 5 т.р. до нуля.
В процессе аукциона цена снижена с 5 т.р. до нуля.
Именно. Причем самими же исполнителями... Супер бизнесмены - сделать бесплатно то, за что могли получить денежку.
Во вторых: не знаю мнения __Alexander, но как по мне - за такое, деньги можно брать, если только сильно настаивать будут.
Во первых: работать, как хочет заказчик оно не будет. а если заказчик знает, как этот скетч настроить и понимает, как согласовать оборудование - он и сам бы смог этот скетч написать. просто ошибся разделом.
Во вторых: не знаю мнения __Alexander, но как по мне - за такое, деньги можно брать, если только сильно настаивать будут.
я такого-же мнения. даже больше, мне ваще пофиг, т.к. я из Киева и работодатели из России меня ваще не волнуют.
Во вторых: не знаю мнения __Alexander, но как по мне - за такое, деньги можно брать, если только сильно настаивать будут.
Я вам помогу http://forum.easyelectronics.ru/viewtopic.php?f=21&t=26802. Человек крайне нуждается в помощи и настаивает на денежном вознаграждении.
я такого-же мнения. даже больше, мне ваще пофиг, т.к. я из Киева и работодатели из России меня ваще не волнуют.
Чисто интерес, вы какие украинские сайты по ардуино пользуете? Или на каких ищете заказы? :)
Чисто интерес, вы какие украинские сайты по ардуино пользуете? Или на каких ищете заказы? :)
Никакие. Я нормально зарабатываю на основной работе. А здесь бывают люди и из Украины, бывает помогаю, бывает нет. Ну то такэ. (и ваще, пишу в IAR и ардуиновское иде меня кумарит).
Для скорости до 150 км/ч.
Для скорости до 150 км/ч.
delay() в прерывании? мсьё озорник...
Мда... В этом случае тахограф такого нарисует.... Машина прыгала скачками со скоростью 150 км. Не все плохо, господа. Бесплатно сыр только в мышеловке. Тут должна быть адаптивная частота выходного сигнала. Пока её нет, да и фигня эта может прерывания пропускать ;)
ТС небось думает , что ему помогли, а над ним прикололись, может специально, а может по неопытности.
Поверхностно разобрался c arduino, на основе примеров накодил скетч. Все работает на стенде, позже проверю на автомобиле.
Tachograph55, что, правда работает?
Tachograph55, что, правда работает?
Tachograph55, что, правда работает?
Tachograph55, что, правда работает?
В обработчике прерывания millis не работает, сколько раз повторять уже!
Ну он же поверхностно разобрался. Это тут все такие умные сидят:) Всякую хрень за дорого продают..... А он подешевле и получше ищет, и ему кажется, что получается :)
Это не скетч, это издевательство на здравым смыслом :) Флеш-моб блин !
используйте два таймера. одним считайте период, /10, выводите на другой. однозначно будет задержка в показаниях на один период.
maksimovaleksandr@inbox.ru
В автомобиле есть датчик скорости, при движении автомобиля его вращает шестерня коробки передач и он выдаёт импульсы. Количество импульсов на километр фиксированное.
вот если воткнуть механический повышающий редуктор до датчика скорости, 10:1 другое дело, будет точно.
Мне кажется, что эту тему пора перекидывать в общий форум. Во всяком случае, из ветки "ищу исполнителя" она точно ушла.
Мне кажется, что эту тему пора перекидывать в общий форум. Во всяком случае, из ветки "ищу исполнителя" она точно ушла.
человек ищет исполнителя и готов заплатить пусть не большие, но деньги. на счет "простенького", видимо погорячился. простенько из большего сделать меньшее. и не надо ему туда.
то что ТС написал сам это гау-ноу, сори. если хай-так не заработает пишите мне, обсудим. если рядом сообразим
Есть у меня подозрение, что 2 т.р. это бюджет на всё устройство целиком в сборе, ибо в личной переписке мне было сказано, что готовое решение стоит именно столько и ТС таким образом пытается сэкономить. То есть, мало того, что потом, очевидно, намножит этих приблуд, так еще и за разработку заплатить хочет меньше, чем за 1 единицу по розничной цене. Такие дела.
Ну и да, крайне невежливый человек.
Код, бесспорно, унылый у автора получился. Но это был его выбор:)
В обработчике прерывания millis не тикает. Это никак не мешает прочитать значение millis, которое натикало до входа в обработчик.
Код, может, и унылый - но, вообще-то, видели мы и поунылее.
Из явных ошибок сразу вижу изменение переменной taho сразу в двух местах - в обработчике прерывания (taho=10;) и в основном цикле (taho--;). Такой код будет глючить - чаще или реже, в зависимости от конкретных временных интервалов - но обязательно будет.
Если по-простому, нужно, как минимум, запретить прерывания на время выполнения строки taho--;
Ещё, taho=10 я бы заменил на taho+=10.
Ну а дальше - так сразу не скажу, надо поотлаживать. Например, убедиться что та же taho всегда остаётся в допустимых пределах.
Если по-простому, нужно, как минимум, запретить прерывания на время выполнения
и будет он часть импульсов пропускать мимо и не коим образом не реагировать на них....таймеры живут своей жизнью, попробуйте может с ними? но повторюсь: от задерки не уйти.
Да нет, не потеряется ничего. Прерывания же запрещаются всего на несколько тактов - если запрос возникнет в этот момент, он просто обработается чуть позже - сразу после разрешения прерываний.
Хотя, да - я сам стараюсь по возможности обходиться без этих запретов/разрешений.
Ну вообще то для переменных которые меняются из прерываний и вне оных, существует VOLATILE.
И мне тоже кажется, что тему нужно переносить нафиг отсюда. Ничего ТС платить не хотел. Просто тут реакция быстрее. Но и глупостей ему тут напостили изрядно :) Таких "помошников" необразованых нужно наказывать.
Ну вообще то для переменных которые меняются из прерываний и вне оных, существует VOLATILE.
Осторожней, а то так и напишет - заглавными буквами :)))
Хыыыы.... не смекнул :(
Если еще интересно, напишите на почту aleksandr.maidin(at)inbox.ru, есть готовое оттестированное решение. Читает импульсы с датчика, преобразует частоту сигнала.
P.S. код выше перестанет работать через 2 месяца ))
P.S. код выше перестанет работать через 2 месяца ))
Дайте угадаю - вы один из тех, кто считает, что раз значение, возвращаемое millis, переполняется раз в два месяца, то тогда всё - швах? Ничего, что там нормально написано как раз (if current - prev > interval) ? Или вы не сильно знакомы с беззнаковой арифметикой?
Дайте угадаю - вы один из тех, кто считает, что раз значение, возвращаемое millis, переполняется раз в два месяца, то тогда всё - швах? Ничего, что там нормально написано как раз (if current - prev > interval) ? Или вы не сильно знакомы с беззнаковой арифметикой?
Ну почти, у меня глаз зацепился за:
interval=currentMillis-previousMillis;
Посмотрел внимательнее, да, Вы правы, на переполнении не зависнет. Просто не взлетит из-за:
unsigned
long
previousMillis = 0;
void
blink() {
if
(previousMillis > 0)
{
interval=currentMillis-previousMillis;
//длительность импульса на входе
previousMillis = currentMillis;
}
}
Посмотрел внимательнее, да, Вы правы, на переполнении не зависнет. Просто не взлетит из-за:
unsigned
long
previousMillis = 0;
void
blink() {
if
(previousMillis > 0)
{
interval=currentMillis-previousMillis;
//длительность импульса на входе
previousMillis = currentMillis;
}
}
Почему не взлетит? Вы знакомы с беззнаковой арифметикой? Я вас уверяю, что взлетит, и интервал будет корректным, даже если currentMillis будет меньше, чем previousMillis.
Объявляется и инициализируется глобальная переменная:
unsigned long previousMillis = 0;
Срабатывает прерывание, вызывается функция blink(), в которой имеется условие if(previousMillis>0), которое всегда будет false, так как новое значение previousMillis присваивается в теле этого условия.
Или я что-то не так понимаю?
Объявляется и инициализируется глобальная переменная:
unsigned long previousMillis = 0;
Срабатывает прерывание, вызывается функция blink(), в которой имеется условие if(previousMillis>0), которое всегда будет false, так как новое значение previousMillis присваивается в теле этого условия.
Или я что-то не так понимаю?
Не так понимаете. Первый раз условие будет false, потом - true, потому что previousMillis - глобальная, и сохраняет своё значение постоянно. А первый раз - инициализируется нулём, как и прописано в коде.
А где оно в коде сохраняет значение постоянно?
P.S.
А где оно в коде сохраняет значение постоянно?
Внутри себя. Ещё раз: переменная - глобальная. Со всеми вытекающими. Вопросы?
А где оно в коде сохраняет значение постоянно?
Внутри себя. Ещё раз: переменная - глобальная. Со всеми вытекающими. Вопросы?
Я на стороне Алекса) мне больше понравилось вот это
не, ну если автор говорит что все работает что вы к ниму пристали то... просто что то мне подсказывает что данный код будет выдавать 5 импульсов в секунду. почему 5 потому что изначально интервал у нас 1000, и он меняться не собирается по причине указанной Алексом. А 10 раз он меняется с HI на LO, соответственно 5....