Обсуждаем электронику на колесах. Нужен увлажнитель воздуха для Камаза? Вам сюда.
Ответить

Re: спидометр для велосипеда на arduino

Вт окт 27, 2020 14:19:30

неплохие... а можно, чтобы к торговцам не ходить, просто из кулера выломать д.х. он с гистерезисом - на колесо повесить 2 магнита, один N, другой S полюсом, они будут этот датчик поочередно переключать...

Re: спидометр для велосипеда на arduino

Вт окт 27, 2020 16:50:05

ФЕЕЕ...
Лучше ужшшш ГЕРКОН, чем то чудище из кулера!
:solder:

Re: спидометр для велосипеда на arduino

Вт окт 27, 2020 19:51:39

почему? по мне, так нормальный д.х. ...

Re: спидометр для велосипеда на arduino

Вт окт 27, 2020 23:25:06

Проект представлялся примерно так.
Экран самый большой из модульных, потомучто они самые прочные, нет торчащих шлейфов и стекло закрыто рамкой, цена 500р. (и то както коцнул и потёк)
(ещё большие только 800х600 чтото вроде 5-6дюймов, и стоят 100 баксов, продают их мало где и там точно надо проц мощнее).
Более современные шлейфовые экраны не рассамтривал, да иони и дороже, и не хочу эту мелкоту.
Итого получаю что мега328 из ардуин почти не имеет аналогов под этот экран, есть только или в дофига раз больше ардуины, а мне столько ног ненадо, или отдельно чуть лучше МК, но тоже лотерея.

Альтернативный проект (который нашёл позже) на 4 строчном знаковом экране. Его модуль не сильно меньше, а вот сам экран меньше на треть, ну и какой в нём смысл.

Итого модуль ST7920 128X64 на mega328 и без вариантов.
библиотека 2 версии в параллельном режиме, портировать было не просто, в разных версиях разные шрифты и все команды и даже синтаксис разный, пришлось не просто переписать, а ещё и перерисовать.
Итого u8glib в последовательном режиме работает быстрее чем в параллельном, в ней параллельный режим вообще не имеет смысла.
u8g2 как раз уже наоборот, полседовательный медленее чем в прошлой версии, а вот параллельный наоборот дают прирост, на нём и остановился. И хоть там говорят что он занимает почти все ноги, их там ещё дофига свободных. Экран занимает 11ног, при желании можно ещё 14 найти.

Хотелось бы видеть реальные секунды, но даже с delay(50) иногда секунды проскакиват через один, так что рассинхрон тоже есть, но уж лучше чем каждые 10-20сек прыгающие через одну. Возможно в будущем вообще секунды уберу, но пока они успевают.

Но вот как оказалось все скетчи работают одинаково, точнее одинаково неработают, хотя и есть упоминания что меньше 10гц они не могут измерять. ну а мудрить с кодом это не моё, я вообще не понимаю как работают эти замерялки, видимо потому и не работают.

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

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

Геркон потомучто он есть и даже работает.
Хочу ещё холла приделать от вертушки, но там надо смеситель выдумать и магнит вешать так чтоб проходил обоими полюсами, в общем геркон, нет у меня холла.

Тот что сейчас от вертушки. При намагничивании одной стороны одним полюсом включает один вход, при намагничивании другим полюсом другой стороны включает второй. Хоть там и возможно схема с ОК, но хрен оно там, запараллелить их нельзя, на них тогда просто ничего нет.
Датчик надо ставить торцом и проносить полюсами последовательно.
Есть датчики триггерные, причём теже самые, это уж как повезёт. Помнится у них подругому работает. Там вроде как пофиг каким полюсом он переключается, или переключается просто по смене полюса, в общем комбинаций у вентиляторных дохрена и что попалось никогда не угадаешь.
Если нужен понятных датчик, его надо покупать, а не дёргать.

А вообще есть готовые комплекты датчика с проводом и магнита с креплением, но какая разница если код не работает.

Re: спидометр для велосипеда на arduino

Ср окт 28, 2020 07:09:19

холл из вентилятора работает так: выходы у него ОК, при подаче питания один из них замыкается на землю. есть 2 точки намагниченности, находящиеся по разные стороны от "0", (каждая точка принудительно включает свой выход) если намагниченность слабее этих точек, то включенным остается тот выход, который и был. (сколько вентиляторов разбирал... всегда попадали такие)
для велосипеда это будет так: д.х. на вилке, а на колесе с противоположных сторон 2 магнита (можно 4, 6, 8... , главное чтоб симметрично) повернуты они поочередно противоположными полюсами, каждый магнит переключает д.х. в свое устойчивое состояние, которое сохраняется до следующего магнита (в любую сторону).
(можно и один магнит, но чтоб поочередно 2мя полюсами проходил - импульсы будут, хоть и не симметричные)
_____
по поводу измерения: очень удобно работать аппаратно, использовав для этого 16 битный таймер с регистром (и ногой) захвата.
не знаю, как отнесётся ардуина к его занятию...
на С сам делал из тини2313 авто тахометр, вроде получалось 60-9999 об/мин измерять с точностью до 1 об/мин (замерял обратным счетом - по времени между импульсами, чтобы увеличить быстродействие), вывод был на 7-сегментники, сейчас того прибора нет, но код помню, могу выложить...

Re: спидометр для велосипеда на arduino

Ср окт 28, 2020 09:27:59

а может светодиод и фототранзистор типа https://aliexpress.ru/item/32591729856. ... nt=1933900


или подороже, данные скорости брать с GPS модуля. А? :roll:

Re: спидометр для велосипеда на arduino

Ср окт 28, 2020 09:31:59

Можно и "комбинированный" вариант - датчик с преобразователем на "мелколапом" МК под ассемблером, а обработку предварительно нормированных данных поручить адуринке с "навороченной" индикацией.
8)
Ежли светодиодный (на просвет и/или отражение) тогда смотрим вот на такое:
https://img.radiokot.ru/files/20529/r2u6lo2fd.GIF
а заодно помним, что велик - не машина с движком на бензине - тягать лишний вес в виде аккумуляторов ради куража....
накладненько для того, кто крутит педальки. Датчик с дополнительным питанием в неразумных пределах не есть хорошо.
Добавим тряску, ударные перегрузки и атмосферные осадки с температурой до +80 (на открытом солнушке летом)...
:wink:
Последний раз редактировалось BOB51 Ср окт 28, 2020 09:44:27, всего редактировалось 1 раз.

Re: спидометр для велосипеда на arduino

Ср окт 28, 2020 09:43:55

А зачем ассемблер для мелколапого? И на Си вполне всё влезет.
А оптический датчик, так засрётся быстро.

Re: спидометр для велосипеда на arduino

Сб ноя 14, 2020 15:50:22

Serzh2000 писал(а):может светодиод и фототранзистор
с разных сторон вилки и считать спицы.

Re: спидометр для велосипеда на arduino

Сб ноя 14, 2020 21:01:05

Спицы МЕТАЛЛИЧЕСКИЕ.
Считать можно и магнитным и индукционным датчиком.
А оптика - штука не для "всепогодного" применения...
:roll:

Re: спидометр для велосипеда на arduino

Вс ноя 15, 2020 02:49:58

Интерессно готовый датчик коленвала или абс прокатит? У него то точно условия пожёсче.

Re: спидометр для велосипеда на arduino

Вс ноя 15, 2020 15:51:15

Скорее индуктивный датчик положения(концевик) от промавтоматики.
https://vk.com/market-79970674?w=produc ... 59%2Fquery
:roll:

Re: спидометр для велосипеда на arduino

Ср дек 02, 2020 11:43:09

Пожалуй поделюсь неплохой новостью, хотя и без когтей в носу.
Гоняя тиньку13 и ища что же с ней такого вытворить, начал искать альтернативу как в неё всё втиснуть и наконец то гугл начал меня понимать и давать чтото не только ардуиновское, ну хотя это не в тему.

В общем нашёл рабочий код и он православный. Прикошачил вариант 2.
Вот только работает он исключительно с 8 ногой ардуины она же ICP, у qfp32 меги328 похоже 14, но суть в том что у камня она всего одна.

Статью недочитал поэтому на кой там pinMode(IR_PIN, OUTPUT); //на выход не знаю, врятли добавит точности.
В коде есть delay(1000) в setup() который я выкинул и delay(500) в loop() который у меня эстетически остался 40.

Строка деления времени в частоту float f = 2000000/float(ttime) ну эт полнейшая фигня. Не понял в чём суть выставления такого числа, но показания были завышены в 2 раза.
Ну если быть точнее то когда выставил 1000000, 8кгц было 8333[3]гц, в общем оно завышает.
Ну а вообще float в этом месте не работает и его надо объявлять за пределами строки,
вывод результата внутри if (ttime!=0) {} тоже нерабочий, его надо делать после. Но у меня экран.
будто бы это какойто другой ардуино.

Поэтому на экран сразу отправлял ttime.
Работает в целом своеобразно, результат стоит на месте, но раз в четверть времени подрагивает.
При 1гц получилось чтото вроде 1002300, не считая последние 3 цифры.
При 4кгц окло 241, при 8к 118, при 32к 27.
Хотя как влиять скважность не знаю.

Ну а теперь костыль с выводом.
Поскольку при 1гц показания должны быть 6.066, то и взял за основу 6066, а подругому я пытался, но никак.
Код:
#define KM_SYM 5
static char SpeedKmHtxt[KM_SYM+1];
Тут кабы борьба за байты, от числа мало что меняется, но если нехватает места, перекашивает весь код и на экране чёрти что, как это связано я не нашёл, но перекашивает всё кроме этой функции.
Код:
SpeedKmH =6087230959/ttime  ;
у меня получилась вот такая цифра и это не точно, на высоких частотах она заметно завышает, подобрать можно толь ко вручную, но на милионы я не готов.
Код:
dtostrf(SpeedKmH/1000,KM_SYM,3,SpeedKmHtxt);
вот такой вот костыль чтоб увидеть десятые, делить именно переменную впихную в функцию.
KM_SYM напрямую связана с этим же числом в переменной, если гдето тесно, начинает округлять результат куда попадя.
Цифру поставлю 2 когда точнее настрою, тогда и KM_SYM можно скинуть до 4, хотя 1 байт мало что даст.

Осталось это дело подключить к датчику и крутануть
----------
Ну в общем оно не работает

Re: спидометр для велосипеда на arduino

Ср дек 02, 2020 12:41:57

У 13-й тиньки только один 8-битовый таймер - а там точности мало.
Да и системная "сетка" тоже на чем-то делаться должна...
Жестковато...
:roll:

Re: спидометр для велосипеда на arduino

Ср дек 02, 2020 13:22:19

Пока я ниодного рабочего кода неувидел.
Этот код как оказалось работает только если частота постоянна, и то он какойто мусор выбрасывает. И это на меге 328 где на экране всё видно.
Ну или я вообще не знаю что за хрень она показывала, хотя показания были верными, вход был подключен к выходу 1307 который я переключал. Но когда отключил, они ещё долго висели, видимо скорость замера там секунд 5.

Наверное уже пора покупать TC9400 или городить чтото вроде на ключах

-----

Ладно, код таки возможно сработает, пропустил его через таймер
Изображение
(втыкнул ногу МК к 3 ноге)

Если импульсы прекращаются, то индикация тупо стоит.
Вот как это победить непонятно

Re: спидометр для велосипеда на arduino

Чт дек 03, 2020 20:24:07

по переполнению (или совпадению, смотря как таймер работает) таймера сбрасывай скорость на 0 и всё...
если уйдёшь с ардуины или сможешь освободить Т1 для своих нужд - дам рабочий код частотомера.
(работает без доп-контроллеров на самой меге и при этом ресурсов потребляет немного).

Re: спидометр для велосипеда на arduino

Пт дек 04, 2020 00:07:32

Ардуиновская D5 ? Можно и её освободить, у меня уже провод торчит на прерывании, освободил, да не пригодилось, пришлось icp освобождать, макетка уже от много чего освобождалась, и от некоторых переходов тоже.
Ещёб был этот рабочий код, ардуина вроде как любой сожрёт.

Между выходом 555 и МК поставил резюк 1к, как оказалось камень поймал радио и пытался изобразить.
СпойлерПричём всё работало пока не стояло где надо, а как приделал, то чертовщина пошла. Втыкаю програмтор, работает, вытыкаваю опять хрень.
Сначало думал сопротивление какое этож нога mosi, так откуда оно если это Z состояние.
Начал по 1 проводку програматор цеплять и оказалось что пофиг какой проводок куда, но любой ткнуть и начинает работать. А проводок от програматора уходил в комп. Кстати голый програматор без компа тоже не хотел работать, видать заземление надо.

Re: спидометр для велосипеда на arduino

Пт дек 04, 2020 08:39:33

посмотри тут я проект выкладывал, думаю тебе метод измерения подойцдёт... там дальше есть и другой проект (я его не смотрел), глянь ты, может он тебе больше понравится.

Re: спидометр для велосипеда на arduino

Чт фев 04, 2021 20:43:54

Короткий итог(проект пока в залёже)
СпойлерИз готовых схем подумывал о TC94xx, а именно TC9400 0.01% самая дорогая, TC9401 0.05%, TC9402 0.25% но это уже многовато.
TC9400 около 4.5 баксов или по 3.3 за 5 штук.
TC9401 из продажи пропали.
TC9402 по 1.7 баксов за 5 штук.
Как пишут она ниже 10гц не видит, так что ей возможно поможет удвоитель импульсов на одной 14 ногой XOR.

Для ваприанта на ключах деталей надо не меньше, это 74HC4052, 74HCT14 пожалуй стоит поискать одиночные мини варианты, наверняка есть, чтото такое в ноутах ставилось не так давно.
Опять же возможно потребуется и удвоитель и делитель, кароче деталей много.
И вот musor, как обычно погнал через пенёк да подальше, откуда я узнал что етсь чтото подобное из наших тараканов.

1108ПП1, 1143ПП1 в чём отличие толком не ясно, может аналоги разных эпох, но похоже во всех корпусах есть обе серии, что это такое не изучал.

УР1301ПП30 чтото монструозное и похоже труднодоставаемое.

К1086ПП1 а вот это уже ближе к подходящему, но что такое частота-ток и где схема непонятно.

По итогу тема кончилась на LM2907N, LM2917N В чём отличие не понятно, может встроеный стабилитрон для питания от нестабильной напруги, но наверно через резистор.
Но они в разных корпусах с 8 ногами и с 10 в 14 ногом корпусе, где некоторые соединены. Вот тут и встрял, не знаю что лучше, в даташите схем нет, попалась только китайская.

Простора для творчества добавилось, но остался вопрос с какой частотой всё это сможет работать. Если это тахометр для мотора, то там большие обороты, про первую микрохему ведь писалось что от 10гц, а мне надо раз в 10 меньше, хотя уже и подзабыл сколько.


Вот знают же, но не говорят, росийские форумы :)

Re: спидометр для велосипеда на arduino

Чт фев 04, 2021 23:07:43

Спойлер#include <Wire.h>
#include <LiquidCrystal_I2C.h>


// указываем пин для геркона(или кнопки для отладки)
#define BUTTON_PIN 3
int clicks = 0;
boolean buttonWasUp = true;

LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
void setup()
{
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
lcd.print("iarduino.ru");
lcd.setCursor(8, 1);
lcd.print("LCD 1602");
}
void loop()
{

// считаем замыкания геркона (нажатие кнопки)
if (buttonWasUp && !digitalRead(BUTTON_PIN)) {
delay(10);
if (!digitalRead(BUTTON_PIN))
clicks = (clicks + 1) % 100;
}
// Устанавливаем курсор на вторую строку и нулевой символ.
lcd.setCursor(0, 1);
// Выводим на экран количество нажатий кнопки с момента запуска ардуины
lcd.print(clicks);
}

вот написал по-быстрому. код сырой, если интересно пиши ченьть поправлю/допишу
деталей нет у меня поэтому проверить работает код или не не могу
Вложения
wire.zip
(16.22 KiB) Скачиваний: 134
1473854197-3978.zip
(19.56 KiB) Скачиваний: 150
Ответить