Страница 15 из 18 ПерваяПервая 123456789101112131415161718 ПоследняяПоследняя
Показано с 141 по 150 из 178
  1. #141
    Новичок
    Регистрация
    08.12.2015
    Возраст
    29
    Сообщений
    6
    Вес репутации
    24

    По умолчанию Re: Бортовой компьютер мотоцикла

    Мотоцикл достался с неродными карбюраторами, и я хочу по ШДК оценить зависимость оборотов\дросселя\температур от состава смеси и впоследствии по температуре выхлопа и полученным данным, подобрать жиклеры и настроить иглы. С ШДК постоянно ездить нет возможности. Карбы стоят как полмотоцикла, из-за этого мне и достался с неродными.
    Я понимаю что идея почти бредовая, но надо девайс, и я его ковыряю

  2. #142
    Местный
    Регистрация
    07.12.2014
    Сообщений
    102
    Вес репутации
    55

    По умолчанию Re: Бортовой компьютер мотоцикла

    Нажмите на изображение для увеличения. 

Название:	2016-03-27 15-49-00.jpg 
Просмотров:	168 
Размер:	111.8 Кб 
ID:	18890

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

    Что он умеет.

    Показывать температуру - двигателя, масла, наружного воздуха, напряжение сети
    Предупреждать о превышении температуры : масла, двигателя и о перезаряде или не до заряде АКБ, всплывает сообщение на дисплее и горит светодиод.
    Включать и выключать вентилятор охлажения по заданной температуре (выключить раньше чем заложено в штатный датчик не может, что бы не вторгаться в штатную проводку)
    Показывать литраж в баке в процентах или литрах, датчик в баке поплавковый собственного изготовления.
    Считает пробег одной поездки, при выключении зажигания остаётся включеным на заданное время,что бы счётчик не сбрасывался. (дабы не мучить EEPROM!)
    Из меню можно принудительно включить вентилятор охлаждения
    В панели приборов установлена PRO MINI которая управляет восьми сегментным индикатором это датчик включенной скорости, связь с основным блоком через I2C шину
    Индикатор включенной скорости снабжен блинкером, что бы не забыть переключить скорость на повышенную (дался мне тяжело, затык с таймерами)
    Плюс много полезных функций, для исключения ложных срабатываний меню и устройств

    https://youtu.be/sGv7toyiIVo
    Последний раз редактировалось Oleg_33; 27.03.2016 в 17:16.

  3. #143
    Местный
    Регистрация
    07.12.2014
    Сообщений
    102
    Вес репутации
    55

    По умолчанию Re: Бортовой компьютер мотоцикла

    Сегодня прошли ходовые испытания, в результате которых выявилось куча косяков, один из них: Датчик уровня топлива (резистивный) показывает точное показание только стоя на месте, тк мой алгоритм предполагает средне-арифметическую выборку за 20 секунд. На деле я получил среднее показание.

    Как сделать точную выборку с датчика, что бы показания на дисплее не прыгали (бензин плещется в баке) ?? есть какой нибудь алгоритм ?

  4. #144
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    47
    Сообщений
    13,082
    Вес репутации
    10

    По умолчанию Re: Бортовой компьютер мотоцикла

    Как вариант собрать в массив 100 - 300 замеров и вычислить при помощи функции find_similar часто повторяющиеся значения
    И самое главное керамический конденсатор 1мкФ паралельно входу АЦП поставить нужно
    Последний раз редактировалось Chip; 13.04.2016 в 01:30.

  5. #145
    Местный
    Регистрация
    07.12.2014
    Сообщений
    102
    Вес репутации
    55

    По умолчанию Re: Бортовой компьютер мотоцикла

    Конденсатор это гуд, а насчёт библиотеки непонял

  6. #146
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    47
    Сообщений
    13,082
    Вес репутации
    10

    По умолчанию Re: Бортовой компьютер мотоцикла

    Функция find_similar это фильтр шума
    Эта функция есть в библиотеке CyberLib
    Последний раз редактировалось Chip; 13.04.2016 в 22:16.

  7. #147
    Местный
    Регистрация
    07.12.2014
    Сообщений
    102
    Вес репутации
    55

    По умолчанию Re: Бортовой компьютер мотоцикла

    Придумал свой алгоритм

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

    2. Если передача не нейтральная начинаем высчитывать минимальное и максимальное значение значение с датчика уровня топлива (если появляется значение больше или меньше существующих заменяем) Может нужно выбирать наименьшее значение из максимального и минимального ?

    3. Каждые 200 метров записываем это значение в массив (потому что если мы не едем, топливо не расходуется)

    4. Каждый километр высчитываем средне арифметическое из ячеек массива

    Вот код, не на С++ под рукой больше ничего небыло, для проверки самое то, ардуинки стоят на мотоцикле. Думаю всё понятно, вместо километража таймеры и счётчики

    Как это работает - fuel.zip

    PHP код:
    #NoTrayIcon

    Global $Max 0$Min 500$Random 0$index 0$sa 0
    Global $metr 200 метровый счетчикпримерно по времени 5 секунд =)
    Dim $Array[6]

    $Form1 GUICreate(""241226649150)
    $Label1 GUICtrlCreateLabel(""482015625)
    $Label2 GUICtrlCreateLabel(""484015625)
    $Label3 GUICtrlCreateLabel(""486015625)
    GUISetState(@SW_SHOW)

    While 
    1
        $nMsg 
    GUIGetMsg()
        Switch 
    $nMsg
            
    Case -3
                
    Exit

            Case Else
                If 
    _timer(@MSEC) = 1 Then таймер раз в секунду
                    GUICtrlSetData
    ($Label1"Mаксимальное : " $Max)
                    
    GUICtrlSetData($Label2"Минимальное : " $Min)

                    
    $Random Random(1002501) ; Имитируем АЦП датчика уровня топлива
                    
    If $Random $Max Then $Max $Random
                    
    If $Random $Min Then $Min $Random

                    
    If $index 5 Then $index 0
                    
    If $metr 5 Then $metr 0

                    $Array
    [$index] = ($Max $Min) / Раз в секунду записываем значения в массив
                    $index 
    += 1
                    $metr 
    += 1

                    
    If $metr 5 Then проехали 200 метров (типа 5 секунд прошло =) )
                        
    $sa = ($Array[0] + $Array[1] + $Array[2] + $Array[3] + $Array[4]) / 5
                        GUICtrlSetData
    ($Label3"Среднее значение : " $sa)
                        
    $Max 0
                        $Min 
    250
                    
    EndIf
                EndIf

        EndSwitch
    WEnd

    Func _timer
    ($sec)
        For 
    $i 500 To 520 Step 1
            
    If $sec $i Then
                
    Return 1
            
    EndIf
        
    Next
    EndFunc   
    ;==>_timer 
    Последний раз редактировалось Oleg_33; 17.04.2016 в 14:37.

  8. #148
    Местный
    Регистрация
    07.12.2014
    Сообщений
    102
    Вес репутации
    55

    По умолчанию Re: Бортовой компьютер мотоцикла

    У меня какие то проблемы с библиотекой CyberLib.h

    Ошибку такую выдаёт,что я сделал не так ?
    vc1.ino: In function 'void _fuel_level()':
    vc1.ino:723:49: error: 'find_similar' was not declared in this scope
    Ошибка компиляции.
    "абстрактная часть кода "
    PHP код:
    #include <CyberLib.h>

    #define cFt 250 // Размер массива для считывания уровня топлива

    byte bFUEL_LEVEL;
    int iFuelTripArray 0// Колличество проходов для записи в массив показаний датчика, максимальное значение в cFt
    int aFuelLevel[cFt 1]; 

    void _fuel_level(){
      
      if (
    iFuelTripArray cFt) {
        
    iFuelTripArray 0;
        
    bFUEL_LEVEL find_similar(aFuelLevelcFt,0);
      }
      
      
    iFuelTripArray ++;
      
      
    int val analogRead(FUEL_LEVEL__ANALOG_PIN);
      if (
    val cADC_LIMIT_FUEL_LEVELval cADC_LIMIT_FUEL_LEVEL// ограничение уровня напряжения АЦП 
      
      
    aFuelLevel[iFuelTripArray] = map(valcMIN_ABC_FUEL_LEVELcMAX_ABC_FUEL_LEVEL1000);


  9. #149
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    47
    Сообщений
    13,082
    Вес репутации
    10

    По умолчанию Re: Бортовой компьютер мотоцикла

    А где секция setup и loop?

  10. #150
    Местный
    Регистрация
    07.12.2014
    Сообщений
    102
    Вес репутации
    55

    По умолчанию Re: Бортовой компьютер мотоцикла

    Так то ничего не меняется, как не работал так и не работает

    PHP код:
    #include <CyberLib.h>

    #define cFt 250 // Размер массива для считывания уровня топлива 

    byte bFUEL_LEVEL;
    int iFuelTripArray 0// Колличество проходов для записи в массив показаний датчика, максимальное значение в cFt
    int aFuelLevel[cFt 1];

    void setup() {
    }

    void loop() {
     
    _fuel_level();
    }

    void _fuel_level() {

      if (
    iFuelTripArray cFt) {
        
    iFuelTripArray 0;
        
    bFUEL_LEVEL find_similar(aFuelLevelcFt0);
      }

      
    iFuelTripArray ++;

      
    int val analogRead(3);
      if (
    val 1000val 1000// ограничение уровня напряжения АЦП

      
    aFuelLevel[iFuelTripArray] = map(val1008001000);

    Последний раз редактировалось Oleg_33; 19.04.2016 в 21:58.

Страница 15 из 18 ПерваяПервая 123456789101112131415161718 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Яндекс.Метрика