Forum Suzuki SV - SVforum.pl
https://svforum.pl/

Wyswietlacze biegów (różne modele, różni producenci)
https://svforum.pl/viewtopic.php?f=10&t=287
Strona 29 z 40

Autor:  Janek87 [ 11 lut 2015, o 23:26 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Spoko, nie mówię, że to będzie problem. Wszystko zależy od wrażliwości procka i prowadzenia zasilania. W SV też są dwie osobne cewki więc odpadają zakłócenia z rozdzielacza. Może jedynie trochę z alternatora.
W każdym razie jednak można by się pokusić o podglądniecie zakłóceń na linii zasilającej. Pamiętam, że kumpel przy telemetrii miał z tym w samochodówce trochę problemów.

Autor:  bula87 [ 11 lut 2015, o 23:49 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Wiadomo, jak będę już to testował na żywym organiźmie to pewnie zerknę, oscyloskop jakiś tam mam to może coś wypatrzę ;)

Autor:  Vieha [ 12 lut 2015, o 11:13 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

kempes napisał(a):
Czy ten wyświetlacz będzie pasował bez zbędnych kombinacji? Niby do czujnikach na rezystorach, ale wolę się upewnić. Wystarczy tylko przylutować go w odpowiednie miejsca?
http://www.robgie.pl/index.php?id_produ ... er=product

Mam taki lub podobny i działa bezbłędnie, natomiast po montowaniu go stwierdzam że drugi raz bym robić tego nie chciał, biorąc pod uwagę rozwiązanie które proponuje soldyy lub to nad którym pracuje bula, nie warto się wqrwiać z wydłubywaniem pasty i lutowaniem kabelków, sposób montażu określiłbym jako rzeźbiarski

Autor:  danielo [ 12 lut 2015, o 12:40 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Ja bym nie rezygnował z OLED'a. Można potem rozwijać projekt i dodać tam inne czujniki, czy godzinę, cokolwiek.
Spoiler:

Autor:  danielo [ 12 lut 2015, o 21:21 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

bula87 napisał(a):
Wiadomo, jak będę już to testował na żywym organiźmie to pewnie zerknę, oscyloskop jakiś tam mam to może coś wypatrzę ;)


Jaki sygnał jest podawany prze czujnik biegów, analogowy czy cyfrowy? Sam chciałbym się pobawić w wolnym czasie.

http://www.trackdayelectronics.com/forum/viewforum.php?f=3

Chyba mam

Autor:  bula87 [ 12 lut 2015, o 23:26 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Pewnie jak już zauważyłeś to podawane tam jest różne napięcie w zależności od wbitego biegu.
Teraz pracuję nad opcją auto uczenia się proca i niwelacją skoków napięcia na różowym kablu żeby przekłamań nie było.
W weekend postaram się wrzucić tu kod tak więc będziecie mogli popatrzeć i dodać coś od siebie żeby w wyniku powstał rock-solid wyświetlacz :D

Autor:  danielo [ 13 lut 2015, o 01:52 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Super. Może wykrywać skoki napięcia (pochodną) tak aby pomiar napięcia był uniwersalny. Neutral ma największą wartość, a 1 najmniejszą. Przy wbijaniu 1 z N od razu mamy odczytane maksymalne poziomy napięcia.

Trochę drogie ale jak ktoś by miał kasę i napięcia by się zgadzały to można nad tym pomyśleć.
https://vimeo.com/89389708

Autor:  bula87 [ 16 lut 2015, o 02:58 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Wyświetlacz nabiera kształtu:


Dodałem auto uczenie, zapis do eepromu, próbkowanie pomiaru 100*10, gdzie brany jest najmniejszy pomiar z 10 próbek, a potem wyciągana jest średnia ze 100 przebiegów. To powinno wyeliminować część przekłamań.

Kod wrzucę za parę godzin/jutro bo teraz pić idę ;)

Autor:  bula87 [ 16 lut 2015, o 05:51 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Tak jak obiecałem, jest i kod. Jeszcze nie dodałem opcji automatycznego wchodzenia w tryb uczenia, więc aktywuje się to flagą "goLern". Myślę, że będzie trzeba skopiować to od TeeRivera i aktywować tryb uczenia gdy się odpali moto na 6 biegu.
Łatwo można dodać też tryb sprawdzania poziomu napięcia akumulatora przy starcie, z tym, że wiązało by się to koniecznością podpinania jeszcze jednego kabla do proca.

Kod pisany na szybko i nie koniecznie na trzeźwo... dlatego wszelkie poprawki mile widziane. W moim testowym środowisku działa więc przynajmniej tyle.
Kod:
#include <EEPROMex.h>
#include <EEPROMVar.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Wire.h>

// OLED varables and configs
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

// Defines
#define HIGH_GEAR 4.0
#define GEAR_COUNT 6

// Variables
float val = 0, sumVal = 0;
char lastGear = 0, currGear = 0;
int raw = 0, minVal = 9999;
int i = 0, j = 0;
float gearsTab[GEAR_COUNT] = {0};

void setup()
{
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // Setup oled i2c address
  pinMode(A0, INPUT);  // Set A0 like analog input - ADC
 
  float check = 0;
  val = getVoltage();
  if ( val > HIGH_GEAR ) lernGears();
  else
  {
    EEPROM.readBlock(0, gearsTab);
    for(i=0;i<GEAR_COUNT;i++)
    {
      check += gearsTab[i];
    }
    if( 0 == check ) lernGears();
  }
}

void loop()
{   
  val = getVoltage();
 
  // Match voltage to gear
  if (val <= gearsTab[0]+((gearsTab[1]-gearsTab[0])/2)) 
  {
    if('2' != lastGear)  currGear = '1';
  }
    else if (val <= gearsTab[1]+((gearsTab[2]-gearsTab[1])/2)) 
    {
      if('1' != lastGear)  currGear = '2';
    }
      else if (val <= gearsTab[2]+((gearsTab[3]-gearsTab[2])/2)) 
      {
        currGear = '3';
      }
        else if (val <= gearsTab[3]+((gearsTab[4]-gearsTab[3])/2)) 
        {
          currGear = '4';
        }
          else if (val <= gearsTab[4]+((gearsTab[5]-gearsTab[4])/2)) 
          {
            currGear = '5';
          }
            else if (val <= gearsTab[5]+0.30) 
            {
              currGear = '6';
            }
              else 
              {
                currGear = 'N';
              }
             
  // If gear has changed -> refresh display
  if( currGear != lastGear )
  {
    reset();
    lastGear = currGear;
   
    drawGear(currGear);           
    delay(10);
  }
}

void lernGears()
{
  int gCount = 0;
  int check = 0;
 
  while( gCount < GEAR_COUNT )
  {
    val = getVoltage();
    check = 0;
    for(i=0;i<6;i++)
    {
      if( 0 != gearsTab[i] && ( val <= gearsTab[i]+0.25 && val >= gearsTab[i]-0.25 ))
      {
        check = 1;
        break;
      }
    }
    if( 0 == check )
    {
      gearsTab[gCount]=val;
      gCount++;
    }
    delay(1000);
    showGears();
  }
  sort(gearsTab,GEAR_COUNT);
  EEPROM.updateBlock(0, gearsTab);
}

void showGears()
{
  reset();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print(gearsTab[0]);   
  display.setCursor(0,10);
  display.print(gearsTab[1]);   
  display.setCursor(0,20);
  display.print(gearsTab[2]);   
  display.setCursor(68,0);
  display.print(gearsTab[3]);   
  display.setCursor(68,10);
  display.print(gearsTab[4]);   
  display.setCursor(68,20);
  display.print(gearsTab[5]);     
  display.display();
}

void sort(float a[], int size)
{
  for(int k=0; k<(size-1); k++)
  {
    for(int o=0; o<(size-(k+1)); o++)
    {
      if( a[o] > a[o+1] )
      {
        float t = a[o];
        a[o] = a[o+1];
        a[o+1] = t;
      }
    }
  }
}

float getVoltage()
{
  sumVal = 0;
  minVal = 9999;
  for(i=0; i< 100; i++)
  {
    for (j=0; j < 10; j++){
        raw = analogRead(A0);
        if(minVal>raw) minVal = raw;
    }
    sumVal += minVal * (5.0 / 1023.0);
  }
  return (sumVal / 100);
}

void reset()
{
  display.clearDisplay();
}

void drawGear(char arg)
{
  display.setTextSize(6);
  display.setTextColor(WHITE);
  display.setCursor(display.width()/2-display.width()/4+18,11);
  display.drawRoundRect((display.width()/2)-(display.width()/4), 0, (display.width()/2), display.height(), display.height()/6, WHITE);
  display.drawRoundRect((display.width()/2)-(display.width()/4)-1, 1, (display.width()/2)+2, display.height()-2, display.height()/6, WHITE);
  display.print(arg);   
  display.display();
}

void drawFloat(float arg, int x, int y)
{
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(x,y);

  display.print(arg);   
  display.display();
}


Edit:
1. Dodałem breake przy jechaniu po tablicy w funkcji uczenia, tak jest optymalniej.
2. Dodałem aktywację uczenia poprzez odpalenie moto na wysokim biegu (5 lub 6 -> powyżej 4V na ADC) lub automatyczne wejście do trybu uczenia jeśli wykryje same 0 w pamięci. Plus trochę optymalizacji.
3. Bazując na doświadczeniu innych dodałem warunek, że bieg '1' i '2' nie mogą być wbite bezpośrednio z siebie. Między nimi jest bardzo mała różnica napięć więc czasem wyświetlacz by skakał między 1, a 2, a że między tymi biegami fizycznie jest luz więc można to wykorzystać. Zmiana jeszcze nie testowana.

Autor:  bula87 [ 17 lut 2015, o 18:56 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Doszedł do mnie wreszcie nowy procek: Arduino Nano v3
Po wstępnych testach wydaje się działać bez problemu, bez żadnych zmian w kodzie.
Tak więc moja aktualna konfiguracja:
Procek: http://www.aliexpress.com/item/ATmega328P-Nano-V3-Controller-Board-Compatible-Arduino/32279934557.html
Wyświetlacz: http://www.aliexpress.com/item/Free-shipping-1Pcs-white-128X64-OLED-LCD-LED-Display-Module-For-Arduino-0-96-I2C-IIC/32234039563.html
Koszt: ~ 7 $ -> ~ 26 zł
Plus parę kabli.

Jakby ktoś miał w domu jakiekolwiek Arduino to mógłby przetestować czy zadziała to w rzeczywistym środowisku. Ponieważ może się okazać, że wymagane będą jakieś dodatkowe filtry aby oczyścić zasilanie z moto albo sygnał podawany na ADC.

Obrazek

Autor:  Dziaku [ 17 lut 2015, o 21:54 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

bula87 napisał(a):
Doszedł do mnie wreszcie nowy procek: Arduino Nano v3
Po wstępnych testach wydaje się działać bez problemu, bez żadnych zmian w kodzie.
Tak więc moja aktualna konfiguracja:
Procek: http://www.aliexpress.com/item/ATmega328P-Nano-V3-Controller-Board-Compatible-Arduino/32279934557.html
Wyświetlacz: http://www.aliexpress.com/item/Free-shipping-1Pcs-white-128X64-OLED-LCD-LED-Display-Module-For-Arduino-0-96-I2C-IIC/32234039563.html
Koszt: ~ 7 $ -> ~ 26 zł
Plus parę kabli.

Jakby ktoś miał w domu jakiekolwiek Arduino to mógłby przetestować czy zadziała to w rzeczywistym środowisku. Ponieważ może się okazać, że wymagane będą jakieś dodatkowe filtry aby oczyścić zasilanie z moto albo sygnał podawany na ADC.

Obrazek



Zamówiłem właśnie, jak przyjdzie to dam znać ;)

Autor:  bula87 [ 17 lut 2015, o 22:13 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Good, ja też za jakieś 3 tygodnie powinienem być już w Polsce i mieć dostęp do moto wiec postaram się zrobić jakieś testy.

Żeby nie zgubić to wrzucę tu jeszcze pinologię:
Wyświetlacz ma 4 piny: GND, VCC, SCL i SDA.
Podpinamy je następująco:
OLED Proc
GND - GND
VCC - 5V
SCL - A5
SDA - A4

Różowy kabel z moto podpinamy do portu A0 w procku.
+12 z moto do portu Vin w procu, a mase z moto do GND na procu.

Autor:  bula87 [ 13 mar 2015, o 13:49 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Mały update. W weekend miałem chwilę przy moto więc podpiąłem testowo proca z wyświetlaczem żeby sprawdzić co się stanie. Ogólnie byłem zaskoczony bo procek wydawał się działać całkiem stabilnie po podpięciu bezpośrednio do akumulatora. Nawet odpalenie mu nie przeszkodziło.
Problem był natomiast przy zmianie biegów, robiłem to na sucho, ręcznie kręcąc opona więc może to wpływać na pomiary ale ogólnie wyszło mi że nawet przy zmianie biegów z 3->4, 4->5 itp zaraz po zmianie biegu, a w momencie gdy koło się nie obraca na różowym kablu pojawia się 5V, dopiero gdy koło zacznie się obracać następuje zmiana napięcia.
Przy jeździe nie powinno być tego problemu ale generuje to problemy przy programowaniu napięć na poszczególnych biegach.
Przy kolejnym podejściu dodam start programowania na przycisk i w ten sposób spróbuję zaprogramować proca podczas jazdy. Zobaczymy co z tego będzie.

Autor:  Dziaku [ 17 mar 2015, o 19:02 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Mi dzisiaj przyszedł OLED... szkoda że bez procka :obity: bula87, a jak podłącze już i wrzucę moto na podnośnik i na załączonym silniku wbije biegi to nie powinno być problemu z programowaniem procka ?

Autor:  bula87 [ 17 mar 2015, o 23:03 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

W sumie nie wiem jak zachowa się opona na podnośniku jak wbijesz luz przy zmianie biegu, koło dalej będzie się kręcić? :D Jeśli tak to powinno dać radę, ja na wielkanoc znów będę przy moto więc znów będę testował.

Autor:  Dziaku [ 17 mar 2015, o 23:18 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Powinno się kręcić dalej. Okej jak przyjdzie Arduino to spróbuje to podłączyć i dam znać

Autor:  Dziaku [ 25 mar 2015, o 16:53 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Przyszedł procesor dziś, ale wezmę się za to w sobotę dopiero. Ma ktoś pomysł gdzie można upchnąć OLED'a żeby było estetycznie ? Zobaczę czy w zegary wejdzie ale jest za duży chyba ...

Autor:  bszpyt [ 25 mar 2015, o 18:24 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Jak nie wejdzie w zegar to w owiewkę go wkomponuj :)

Autor:  bula87 [ 26 mar 2015, o 11:47 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Za zrobiłem sobie mini obudowę do wyświetlacza póki co, wrzucę fotkę jak wrócę z roboty.
I fotka:
Obrazek

Dodatkowo znalazłem coś takiego:
http://www.seeedstudio.com/depot/05-inch-OLED-display-Arduino-shield-p-2194.html
Taki mały można by ładnie upchać w obudowie jak wcześniej ludzie upychali wyświetlacz segmentowy. Tylko cena lekko odstrasza :/

Autor:  Dziaku [ 28 mar 2015, o 18:20 ]
Tytuł:  Re: Wyswietlacze biegów (różne modele, różni producenci)

Ten duży też się zmieści tylko trzeba troche porzeźbić w obudowie zegarów :obity:

@edit
Dzisiaj to podłącze ale nie mam podnośnika narazie (inny motocykl na nim stoi) więc nie będzie testów.

Strona 29 z 40 Strefa czasowa: UTC + 1 [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/