Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Bascom] - Czas wtrysku (wypełnienia)

03 Paź 2016 08:56 1572 20
  • Poziom 16  
    Miał bym jedno pytanie. Moglibyście zerknąć na poprawność działania kodu.

    Chodzi o liczenie czasu otwarcia wtrysku...
    Wejście wtrysku przechodzi przez optoizolator który zmienia stan. Podaje wysoki na wyjściu mam niski.

    Podam tylko potrzebne rzeczy bo całość kodu jest dość duża.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Nie wiem czy dobrze mierze czy czasami pomiar nie jest zamiast czas otwarcia wtrysku to czas pomiędzy otwarciami. I jaka mniej więcej wartość wychodzi na ty timerze. Policzyłem ale pewnie źle bo jeszcze nigdy dobrze mi się nie udało. Jak wartość z timera muszę pomnożyć by wyszła mi milisekunda ?
  • Użytkownik usunął konto  
  • Poziom 16  
    Na pewno nie wystarczy zmienić INT2 na ICP1. Czytałem jakiegoś manuala i zrozumiałem to tak. ICP służy do zapisu sygnałów wchodzących na procesor oraz odmierza ich czas trwania bądź momentu w którym wystąpiły. Działa to tak, że Timer1 (16 bitowy) liczy sobie z taką prędkością jaką zadaje mu preskaler. W chwili gdy na wejściu ICP pojawia się zbocze sygnału wartość licznika TCNT1 jest przepisywana do rejestru ICR1. W tym samym momencie może być wywołane przerwanie. Czyli kiedy pojawiło się zbocze i ile trwało ? Ale mógł by ktoś pokazać mi to na przykładzie... Zrozumiałem zasadę działania ale nie wiem jak jej użyć. No i muszę zmienić nogę z PB1, PB2 na PD6. Na szczęśćie jest wolny :D czy wystarczy że zamienię int2 na int1. Bo pod int1 mam podpięte impulsy z drogi auta. Wystarczyło by ??
  • Poziom 16  
    Takie coś ??

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    :shii:
    ???
  • Użytkownik usunął konto  
  • Poziom 16  
    Nie rozumiem tych wstawek asemblera. Więc nie wiem czy są konieczne.
  • Poziom 16  
    A działało by tak ?

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Jeżeli tak było by poprawnie to nie musiał bym przerabiać PCB
  • Użytkownik usunął konto  
  • Poziom 16  
    Dla ciebie to proste a ja nadal nie qmam tych rejestrów. Mcucr... Itp...
  • Użytkownik usunął konto  
  • Poziom 16  
    Czyli wystarczy zmiana z configu z opadającego zbocza na rosnący ? Ale pamiętasz że przed prockiem jest optoizolacja która zmienia stan ?

    Czytam tę note z wielką tabelą rejestrów

    i mam to rozumieć
    Code:

    Address   Name   Bit 7  Bit 6   Bit 5   Bit 4   Bit 3   Bit 2   Bit 1   Bit 0
    $34 ($54) MCUCSR JTD    ISC2    ----    JTRF    WDRF    BORF    EXTRF   PORF

    Adres - to miejsce w pamięci
    Nazawa - to nazwa
    A Bity to włączone lub wyłączone elementy procesora

    ?
  • Użytkownik usunął konto  
  • Poziom 16  
    tam napisane ze i jeden i drugi dobry "The external interrupts can be triggered by a falling or
    rising edge or a low level (INT2 is only an edge triggered interrupt). This is set up as indicated in
    the specification for the MCU Control Register – MCUCR – and MCU Control and Status Register
    – MCUCSR. "

    Czytam to w tym wrogim języku i jak po polsku ciężko mi to zrozumieć to po angielsku zupełnie nie kumam. Zderzam się ze ścianą. Wracam do starego pomysłu i coś pomotam. Może nie zawsze z obowiązującymi standardami ale liczy się efekt.
  • Poziom 16  
    No to jest progres poczytałem kilka "chłopsko" napisanych pdfów i jest światło w tunelu. Chyba nawet zrozumiałem wszystko. Wiem dlaczego problem ze zrozumieniem miałem... Doszukiwałem się czegoś z kosmosu a tu takie proste zagadnienie. Natomiast chciałbym poradzić się odnośnie samego liczenia spalania chwilowego. Wychodzą mi dość wielkie liczby po kalibracji. Coś źle liczę.

    Zrobiłem kalibracje impulsów z prędkości czujnika VSS. Przejechać się 10km w tym czasie dodajemy impulsy i dzielimy przez 10000 i mamy ilość impulsów na metr.

    Teoretyczne też proste jest liczenie stałej wtryskiwacza. Sumuje wartości czasu wtrysku z timera1 przez 100km i podaje wartość ręcznie spalonego paliwa z doświadczenia. np: 10l/100km. Przykładowo wtryski u mnie pracują od 4ms do 16ms max. Przy normalnej jeździe ale ciągłej mam czas rzędu 7ms. Przy 16MHz i 16bitach prescaler 64 dam mi to jakieś 1749 T1. Przy prędkości obrotowej silnika rzędu 3000obr/min da mi 50Hz. Więc 1749*50*60*60=314820000 T1/10l - Jak widzicie wartośc dośc wielka a jak z tego wyliczymy ilośc litrów na 1 T1 da nam większy kosmos 3,176418270757893e-8 litra na 1 T1. Pomożeci mi w obliczeniach ?
  • Użytkownik usunął konto  
  • Poziom 16  
    Wszystko jak na razie OKO ale mam problem z weryfikacją jednej rzeczy.. Chodzi o przetwornik AC/DC I2C PCF8591.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    No niby wszystko się zgadza ale mam w odczycie dziwne wartości skaczą i nie są spójne. Ilość paliwa jest od 0,8V do 4,5 więc nie ma problemu z wielkością napięcia. Jeżeli kod jest dobry to oznacza że coś na PCB. Chodzi mi tylko o potwierdzenie
  • Użytkownik usunął konto  
  • Użytkownik usunął konto  
  • Poziom 16  
    Miałem problem który może być przyczyną LF356 miałem mieć podpięte inaczej zasilanie. Gdy zmieniamy na nim polaryzacje zasilania mamy odwrotny wynik na wyjściu stan hi, lo. I chyba tu miałem błąd. Ale dziś podepnę i zobaczę jak to działa :D
  • Użytkownik usunął konto