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

[Bascom] - Czas wtrysku (wypełnienia)

Juni[]r 03 Paź 2016 08:56 1335 20
  • #1 03 Paź 2016 08:56
    Juni[]r
    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 ?

    0 20
  • #2 03 Paź 2016 12:22
    373522
    Użytkownik usunął konto  
  • #3 03 Paź 2016 15:04
    Juni[]r
    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 ??

    0
  • #4 03 Paź 2016 21:08
    Juni[]r
    Poziom 16  

    Takie coś ??

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    :shii:
    ???

    0
  • #5 03 Paź 2016 23:34
    373522
    Użytkownik usunął konto  
  • #6 04 Paź 2016 00:29
    Juni[]r
    Poziom 16  

    Nie rozumiem tych wstawek asemblera. Więc nie wiem czy są konieczne.

    0
  • #7 04 Paź 2016 08:15
    Juni[]r
    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

    0
  • #8 04 Paź 2016 11:34
    373522
    Użytkownik usunął konto  
  • #9 04 Paź 2016 14:38
    Juni[]r
    Poziom 16  

    Dla ciebie to proste a ja nadal nie qmam tych rejestrów. Mcucr... Itp...

    0
  • #10 04 Paź 2016 15:56
    373522
    Użytkownik usunął konto  
  • #11 04 Paź 2016 17:16
    Juni[]r
    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

    ?

    0
  • #12 04 Paź 2016 17:49
    373522
    Użytkownik usunął konto  
  • #13 04 Paź 2016 22:36
    Juni[]r
    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.

    0
  • #14 11 Paź 2016 20:27
    Juni[]r
    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 ?

    0
  • #15 12 Paź 2016 03:29
    373522
    Użytkownik usunął konto  
  • #16 12 Paź 2016 22:43
    Juni[]r
    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

    0
  • #17 13 Paź 2016 18:11
    373522
    Użytkownik usunął konto  
  • #19 13 Paź 2016 20:59
    373522
    Użytkownik usunął konto  
  • #20 13 Paź 2016 22:11
    Juni[]r
    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

    0
  • #21 14 Paź 2016 05:12
    373522
    Użytkownik usunął konto