logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega16][BASCOM]Prośba o przeanalizowanie kodu - wysypuje się

Mad Jaro 21 Kwi 2012 16:37 7228 48
  • #1 10818623
    Mad Jaro
    Poziom 16  
    Mam prośbę do tych znających lepiej BASCOMA, o przeanalizowanie tego kodu. Program po pewnym czasie wysypuje się. Temperatura co jakiś czas waruje. Podprogramy działają, ale całość nie chce współpracować.

    Z góry przepraszam za jakość kodu.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #2 10818714
    Konto nie istnieje
    Konto nie istnieje  
  • #3 10818922
    Mad Jaro
    Poziom 16  
    Testując dłuższą chwilę wydaje mi się, że teraz na pewno nie wywala się program, i temperatury śmigają aż miło.

    Wyrzuciłem całe obliczenia:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Najpewniej są to za skomplikowane równania i dlatego program się wieszał (nie wyrabiał tego obliczyć)

    Ale teraz pytanie jak to zapisać, żeby to działało poprawnie ?
  • #4 10818992
    Konto nie istnieje
    Konto nie istnieje  
  • #5 10819082
    Mad Jaro
    Poziom 16  
    Najogólniej mówiąc jest to taki oto wielomian:
    [Atmega16][BASCOM]Prośba o przeanalizowanie kodu - wysypuje się
    gdzie x to jest moje napięcie z ADC a y jest wynikiem tego równania.

    Pamiętam, że już kiedyś miałem problem z zapisem tego równania w BASCOM. Ale coś takiego wymodziłem i jak widać nie działa to teraz poprawnie.
  • #6 10819595
    Konto nie istnieje
    Konto nie istnieje  
  • #7 10819910
    Mad Jaro
    Poziom 16  
    Ten wielomian oblicza pewna zaleznosc miedzy napieciem [V] a objetoscia [L]. Innymi slowy mierze napiecie na plywaku i obliczam objetosc w litrach. Posiadam wykres jak zmienia sie napiecie wzgledem objetosci i na jego podstawie mam zrobione to rownanie.
  • Pomocny post
    #8 10821086
    Konto nie istnieje
    Konto nie istnieje  
  • #9 10821390
    Mad Jaro
    Poziom 16  
    Dzięki, poprawiłem te obliczenia, pozbywając się ułamków jak zaproponowałeś.

    Zamieszczam moją tabelkę wartości [V] do [L].
    [Atmega16][BASCOM]Prośba o przeanalizowanie kodu - wysypuje się

    Napięcie max jakie podaje pływak to: 2.82V w tym momencie jest jeszcze około [2.5L] rezerwy, ale pływak nie zejdzie już niżej. Natomiast przy pełnym baku [20L] napięcie [0.86V]

    W tabeli mam obecnie 39 wpisów, spróbuję je jakoś rozszerzyć do 200, akurat dobrze trafiłeś z tą pojemnością baku jest dokładnie 20L.

    Mógłbyś przybliżyć jak wyglądałby taki wpis do tablic w kodzie ? Jeszcze nie miałem odczynienia z tablicami.
  • #10 10821639
    Konto nie istnieje
    Konto nie istnieje  
  • #11 10821717
    Mad Jaro
    Poziom 16  
    Podsyłam to co mam naskrobane w Excelu.

    Myślałem nad wielomianem 2 rzędu jest trochę prostszy i w miarę się zgadza z linią jaką nakreślił potencjometr.

    y = -4,7157x² + 8,155x + 16,698
  • #12 10821866
    Konto nie istnieje
    Konto nie istnieje  
  • #13 10821989
    Mad Jaro
    Poziom 16  
    Chciałbym tylko wiedzieć jak to zrobić :D
    Patrzyłeś może na ten załącznik ?
  • #14 10822284
    Konto nie istnieje
    Konto nie istnieje  
  • #15 10822336
    Mad Jaro
    Poziom 16  
    Wartość z ADC najpierw zamieniam na [V] i podstawiam do wzoru, czyli przyjmując ADC dało mi 1[V] to:

    x = 1

    y = -4,7157 * 1² + 8,155 * 1 + 16,698
    y = -4,7157 * 1 + 8,155 + 16,698
    y = -4,7157 + 8,155 + 16,698
    y = 20,1372

    1[V] = 20,1372[L]

    Patrząc do tabeli mniej więcej tyle wychodzi.
  • #16 10822852
    Konto nie istnieje
    Konto nie istnieje  
  • #17 10825151
    Mad Jaro
    Poziom 16  
    Wieczorem, prawdopodobnie będę miał tabelę 175 napięć od 2.5L do 20.0L co 0.1L

    Lub uproszczony zapis wielomianowy, jeszcze zobaczymy. Bardziej byłbym za tablicą i tylko porównywaniem napięć.
  • #18 10825238
    Konto nie istnieje
    Konto nie istnieje  
  • #19 10825436
    Mad Jaro
    Poziom 16  
    AREF filtruję 100n do GND.
    AVCC mam podciągnięte przez dławik 100u do +5V i odfiltrowany 100n do GND

    Spróbuję zamienić napięcie z tabeli na wartość ADC.

    Kosmicznej dokładności tutaj nie potrzeba. Ma to raczej służyć jako "orientacyjne" wskazanie ponieważ pływak w czasie jazdy cały czas będzie pracować.

    Dlatego tez potrzebować będę średniej z co najmniej 10 pomiarów, tak aby wynik nie skakał w czasie jazdy, przy czym pierwsze 10 wyników będzie odczytywane bez uśredniania. Wszytko po to, aby podczas uruchomienia otrzymać od razu wynik, a nie czekać aż 10 pomiarów się uśredni.
  • #20 10827456
    Konto nie istnieje
    Konto nie istnieje  
  • #21 10828663
    Mad Jaro
    Poziom 16  
    Mam już zrobioną tabelę, ale martwi mnie trochę rozdzielczość ADC np. przy:

    2,7[L] ADC=572
    2,8[L] ADC=571
    ...
    3.0[L] ADC=566
    3.1[L] ADC=565

    całość w załączniku
  • #22 10828872
    Konto nie istnieje
    Konto nie istnieje  
  • #23 10829230
    Mad Jaro
    Poziom 16  
    Na razie pozostanę przy takiej dokładności, sprawdzę jak to będzie działać.

    Mam teraz wszytko poskładane i utrudniony dostęp do płytki (wyprowadzone tylko złącze programatora). Ale jeżeli zajdzie taka potrzeba to dołożę dzielnik, tak aby wypełniał się do max 2,5V. Mierzę też inne napięcie zewnętrzne ładowania do 15V, mam tam zrobiony dzielnik do około 3V, więc też musiał bym zmienić przełączając na wewnętrzny AREF.
    To już tak jak mówię ostatecznie zdemontuję i zmienię, bo mam też problemy ze zliczaniem obrotów z końcówki ICP i nie wiem czy coś na płytce nie jest zamienione.

    Teraz jeszcze mam prośbę jak taką tablicę przepisać do bascoma. I jak zrobić warunki porównywania, oraz wyciągania średniej z 10 pomiarów jak wcześniej wspominałem. Oraz te startowe pomiary...
  • Pomocny post
    #24 10829761
    Konto nie istnieje
    Konto nie istnieje  
  • #25 10850501
    Mad Jaro
    Poziom 16  
    Długo nie miałem jak sprawdzić czy działa. Po wgraniu nie wyświetla prawidłowo napięcia ładowania pokazuje około 0.1V

    Z paliwem jest tak, że pierwsze 10 pomiarów nie wyświetla, dopiero działają uśrednione gdy zliczy 10 i pokazuje myślę poprawnie musiałbym do tankować i sprawdzić.

    Próbowałem też dodać dystans przy średnim zużyciu 6L/100

    Kod: text
    Zaloguj się, aby zobaczyć kod


    ale wychodzą mu cuda, nie wiem czy biorę dane z dobrej zmiennej "tymcz2"
  • #26 10851261
    Konto nie istnieje
    Konto nie istnieje  
  • #27 10852850
    Mad Jaro
    Poziom 16  
    Czyli coś takiego ?
    Chcę aby dystans też obliczany był z tych pierwszych nieuśrednionych jeszcze bo potem już z uśrednionych.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Edit:
    Z wyświetlaniem napięcia ładowania zastosowałem:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    i działa poprawnie wyświetla tyle ile ma wyświetlać. Jeszcze tylko zaokrąglę do jednej po przecinku i będzie ok. Był błąd, bo 4.83 trzeba pomnożyć przez 100 żeby dało 483, a wcześniej mnożyliśmy przez 100000 więc powinno być 483000 a to już duże cyfry wychodzą.
  • #28 10853689
    Konto nie istnieje
    Konto nie istnieje  
  • #29 10853763
    Mad Jaro
    Poziom 16  
    Wlasnie nie liczy tych pierwszych pomiarow. Po wlaczeniu mam przez 10 sekund 0, potem juz normalnie co 10 sekund uaktualnia srednia. Ale tez dzisiaj zalalem do pelna na postoju ialem 18.9(jeszcze moze by sie litr zmiescil) ale jadac to spadalo czasem nawet dl 4L to raczej niemozliwe bo plywak przy max w baku raczej tak nisko nie zejdzie zeby podac taki odczyt. Ogolnie mocno skacze... Moze dac z wiekszej ilosci pomiarow. Ale martwia mnie takie spadki
    Z napieciem ladlwania jest ok.
    Co do deklaracji zmiennych to nie moge dac dword moge tylko word czy to cos zmienia?
  • #30 10854749
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA