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

[Atmega8] Jak mierzyć czas w Atmega8 dla prędkościomierza z czujnikiem hallotronowym?

bykham 05 Kwi 2012 01:35 6427 26
  • #1 10758555
    bykham
    Poziom 11  
    Witam wszystkich,
    Przymierzam się właśnie do wykonania prędkościomierza opartego na czujniku hallotronowym, procesorze atmega8, oraz wyświetlaczem led 4 cyfrowym. Nie jest to więc skomplikowany układ jednak na co dzień zajmuje się programowanie sterowników B&R w Automotion Studio i jak na razie jestem zielony jeżeli chodzi o mikrokontrolery AVR, a wykorzystanie sterownika PLC tylko do pomiaru prędkości nie ma sensu.
    Dlatego też mam pytanie odnośnie pomiaru czasu a dokładnie czy można zastosować metodę wykorzystywaną w sterownikach PLC czyli inkrementacja zmiennej np. "x" wraz z każdym cyklem sterownika np. 100ms.



    Kod: text
    Zaloguj się, aby zobaczyć kod


    Czy metoda ta ma sens w mikrokontrolerach AVR? czy po 1000 cykli zmienna Y będzie równa 1000? czy jednak lepiej zastosować któryś z timerów T0 lub T1??
    Podam może jeszcze zakładane parametry prędkościomierza:
    -czujnik hallotronowy (1 - 4 magnesy na obwodzie)
    -zakres pomiaru prędkości 0-30 km/h
    -dokładność pomiaru około 0.1 km/h (dla prędkości 0-15 km/h)

    Z góry bardzo dziękuję z pomoc
  • #2 10759058
    Atreyu Makiavel
    Poziom 34  
    bykham napisał:
    Czy metoda ta ma sens w mikrokontrolerach AVR?
    A ja może trochę niezbyt sensownie ale zapytam jaki jest sens mierzyć prędkość w czymś co będzie się poruszało z prędkością nie większą jak 30km/h?
  • #3 10759627
    bykham
    Poziom 11  
    Docelowo urządzenie ma być sterownikiem opryskiwacza i dlatego potrzebny jest dokładny pomiar prędkości.
  • #4 10763924
    Konto nie istnieje
    Konto nie istnieje  
  • #5 10764456
    bykham
    Poziom 11  
    Tylko nie wiem czy mierząc ilość impulsów przypadających na jakiś okres czasu uda się osiągnąć precyzję 0.1 km/h przy tak niskich prędkościach a co za tym idzie obrotach.
    Chyba bardziej precyzyjny był by sposób z pomiarem czasu (z dokładnością do 1ms), między kolejnymi impulsami.
  • #6 10765112
    Konto nie istnieje
    Konto nie istnieje  
  • #7 10767170
    bykham
    Poziom 11  
    Nie wiem czy dobrze to policzyłem ale stosując maksymalnie 4 magnesy 1000 impulsów osiągniemy po 2 minutach. Najważniejszy przedział prędkości to 5-15 km/h i dla 4 magnesów daje od 2 do 7 impulsów na sekundę. I w takim przypadku pomiar prędkości będzie z dokładnością +- 2km/h.

    s [mm] V[km/h] V[m/s] impulsy/s
    535 5 1,4 2,6
    535 6 1,7 3,1
    535 7 1,9 3,6
    535 8 2,2 4,2
    535 9 2,5 4,7
    535 10 2,8 5,2
    535 11 3,1 5,7
    535 12 3,3 6,2
    535 13 3,6 6,7
    535 14 3,9 7,3
    535 15 4,2 7,8
  • #8 10767964
    Konto nie istnieje
    Poziom 1  
  • #9 10768080
    bykham
    Poziom 11  
    Właśnie o to mi chodzi :) pomiar czasu między przerwaniami. Mam jednak mały problem jeszcze nie znam obsługi przerwań ICP1 timer1. Musze poszukać przykładów tego przerwania.

    Nigdzie nie mogę znaleźć tych przerwań ICP1 ale wysmarowałem coś podobnego:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    W symulatorze działa ale czy będzie działać poprawnie na rzeczywistym układzie??[/code]
  • #10 11116377
    bykham
    Poziom 11  
    Miałem ostatnio trochę czasu i udało mi się zrobić wstępny prototyp.

    [Atmega8] Jak mierzyć czas w Atmega8 dla prędkościomierza z czujnikiem hallotronowym?
    Na schemacie tranzystory BC 415 = BC 560 PNP

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wszystko niby działa ale jeszcze parę rzeczy mi się nie podoba i muszę to poprawić. I dlatego mam parę pytań:
    1. Mam problem ze stabilizatorem 7805 gdyż po podłączeniu do akumulatora 12V, po pięciu minutach pracy jest już dosyć mocno nagrzany nawet przy podłączonej tylko 1 diodzie LED. I nie wiem czy dodać wcześniej jeszcze jeden stabilizator np 9V i dopiero później 5V czy może ma ktoś jakiś inny lepszy pomysł
    2. Mam również problem z przyciskiem do zmiany trybu pracy, występuje pewnie wszystkim znane drganie styków i nie wiem czy zastosować może większy rezystor czy dokonać jakiś innych modyfikacji
    3. Chciałbym również zabezpieczyć układ jakimiś bezpiecznikami tylko nie wiem za bardzo jakie zastosować i w którym miejscu
    4. Zastanawiam się również nad dodaniem możliwości dokonywania ustawień obwodu i szerokości oraz zapisem tych danych w pamięci trwałej tylko nie wiem jak najlepiej to zrobić w jakims przerwaniu czy moze jakos inaczej

    Z góry bardzo dziękuje za cenne uwagi :)
  • Pomocny post
    #11 11116459
    arktik1
    Poziom 27  
    Cytat:
    jeszcze jeden stabilizator np 9V i dopiero później 5V czy może ma ktoś jakiś inny lepszy pomysł

    Nic to nie da, po prostu rozłożysz temperaturę na 2 stabilizatory.
    Lepiej przyklej jakiś mały radiator, lub zastosuj przetwornicę.
    Cytat:
    występuje pewnie wszystkim znane drganie styków

    Wystarczy uwzględnić to w programie, wykorzystując np. DEBOUNCE.
    Cytat:
    tylko nie wiem za bardzo jakie zastosować i w którym miejscu

    Jednorazowy, szklany, zwłoczny przed stabilizatorem, uprzednio mierząc pobór prądu.
    Cytat:
    zapisem tych danych w pamięci trwałej

    Możesz to zrobić jak chcesz, zależy to tylko od ciebie.
    Może być pamięć stała, karta pamięci itp.
  • #12 11116864
    bykham
    Poziom 11  
    A jak zastosuję tą przetwornicę to już nie trzeba stabilizatora czy też powinien być żeby Atmega działała stabilnie ??
  • #13 11116887
    arktik1
    Poziom 27  
    Cytat:
    przetwornicę to już nie trzeba stabilizatora

    Przetwornica zamiast stabilizatora.
    Stabilizator to urządzenie liniowe, dlatego się grzeje.
    Przetwornica to PWM i się nie grzeje.
  • #14 11117992
    aaadamw
    Poziom 16  
    bykham napisał:
    Docelowo urządzenie ma być sterownikiem opryskiwacza i dlatego potrzebny jest dokładny pomiar prędkości.


    jeżeli do opryskiwacza, to lepiej zastosować czujnik indukcyjny (ustawiony tak żeby widział śruby mocujące koło - będziesz miał 8 może 10 a może jeszcze więcej impulsów na obrót) niż hallotron. Czujnik będzie łatwiejszy w montażu i odporniejszy na ciężkie warunki pracy maszyny.
    ps. zrobiłem coś podobnego do siewnika zbożowego.

    na ile znam sterowniki opryskiwacza - pewnie chcesz zrobić sterowanie wydajnością opryskiwania w zależności od prędkści jazdy. JAk chcesz rozwiązać regulację wydajności? masz jakieś zawory proporcjonalne? czy na zasadzie PWM sterować jakimiś zwykłymi zaworami?
  • #15 11118364
    bykham
    Poziom 11  
    Również właśnie myślałem o czujniku indukcyjnym i może jednak się na niego zdecyduję. A co do sterowania wydajnością to na dzień dzisiejszy wydaje mi się że jest to przereklamowana sprawa. Badałem ostatnio opryskiwacz u znajomego który ma właśnie firmowo zainstalowany komputer pokładowy i zarówno z instrukcji jak i z praktyki wynika i przykładowo przy zmianie jakiś parametrów (prędkość) czas regulacji wynosi od 5 do 10 sekund. Stąd stwierdziłem że równie dobrze mając jedynie prędkościomierz i dobrze wyregulowany opryskiwacz uzyska się taką samą dokładność bo na danym polu i tak przez 95% czasu tą samą prędkością i z góry założonymi parametrami. Także będzie to miało sens jeśli ktoś potrzebuje w biegu zmieniać dawki na danym polu jeśli nie to nie ma sensu przepłacać :).

    A co do regulacji to wydaje mi się że zastosował bym w tym przypadku regulacje PID. Wykorzystując np. Sterownik PLC Mollera, albo Fatka które są stosunkowo tanie
  • #16 11120351
    aaadamw
    Poziom 16  
    bykham napisał:
    A co do regulacji to wydaje mi się że zastosował bym w tym przypadku regulacje PID. Wykorzystując np. Sterownik PLC Mollera, albo Fatka które są stosunkowo tanie


    ale PID możesz napisać na AVR. bardziej chodzi mi o same zawory i czujniki przepływu/ciśnienia.

    Dodano po 5 [minuty]:

    bykham napisał:
    Stąd stwierdziłem że równie dobrze mając jedynie prędkościomierz i dobrze wyregulowany opryskiwacz uzyska się taką samą dokładność bo na danym polu i tak przez 95% czasu tą samą prędkością i z góry założonymi parametrami

    tutaj nie do końca się z Tobą zgodzę... prędkość to nie jedyny parametr wpływający na ilość wypryskanego oprysku na jednostkę powierzchni... ważna jest jeszcze prędkość WOM czyli pompy opryskiwacza.
    dlatego wydaje mi się że powinien tu być jakiś przepływomierz + pomiar prędkości - wtedy to Ty będziesz regulatorem. Potem wystarczy tylko dodać jakiś fajny elektrozawór i procek może regulować.
  • #17 11186648
    bykham
    Poziom 11  
    Kupiłem właśnie przetwornicę DC/DC 12/5 http://www.tme.eu/pl/details/dc2wsil12_5/przetworniki-dcdc/aimtec/am2d-1205sz/# jednak mam problem z jej podłączeniem. Po podłączeniu zgodnie ze specyfikacją na stronie TME napięcie na wyjściu wynosi 0V. Może ktoś miał do czynienia z tą przetwornicą i wie jak ją podłączyć ?? A i czy ewentualne błędne podłączenie może uszkodzić przetwornicę ??
  • #18 11186673
    dondu
    Moderator na urlopie...
    bykham napisał:
    Może ktoś miał do czynienia z tą przetwornicą i wie jak ją podłączyć ??

    w ten sposób:

    bykham napisał:
    Po podłączeniu zgodnie ze specyfikacją ...

    Sprawdź jeszcze raz dokładnie, a jeżeli nadal nie zadziała, to pokaż swoją pracę na schemacie, PCB, zdjęciach ... bo na razie do wróżenia nas zmuszasz.
  • #19 11186710
    bykham
    Poziom 11  
    Podłączyłem PINY 1 i 2 (patrząc od kropki na obudowie) odpowiednio do MINUSA i PLUSA Akumulatora, a na następnych dwóch PINACH sprawdzałem napięcie próbnikiem.
  • #20 11187267
    LordBlick
    VIP Zasłużony dla elektroda
    bykham napisał:
    następnych dwóch PINACH sprawdzałem napięcie próbnikiem
    A co to jest "próbnik" ? Do elektroników mówisz, tu się używa co najmniej woltomierzy...
    Posiadasz takowy?
  • #21 11188801
    bykham
    Poziom 11  
    Ok dziękuję za uwagę :) ale czy ktoś jest w stanie mi podpowiedzieć jak to prawidłowo podłączyć ??

    Dodano po 23 [minuty]:

    Znalazłem specyfikację na stronie producenta http://www.aimtec.com/am2d-1205sz-2w-12v-input-voltage-5v-output-voltage-1000v-isolation-sip7-dc-dc-isolated-power-supply i niestety różni się ona od tej znajdującej się na stronie sprzedawcy (TME) czyli prawdopodobnie zepsułem przetwornice błędnym podłączeniem :(

    To może zapytam czy ładowarka samochodowa do telefonu 12V-->5V, 500mA, nada się do zasilania atmegi zamiast tej przetwornicy ?? czy lepiej dać sobie spokój i zamówić nową przetwornicę ??
  • Pomocny post
    #22 11197314
    dondu
    Moderator na urlopie...
    Nada się, pod warunkiem, że:
    - nie daje napięcia wyższego niż dopuszczalne dla Twojego urządzenia w tym w szczególności mikrokontrolera,
    - że utrzyma stabilne napięcie w czasie pracy Twojego urządzenia (tutaj zawsze można dodać kondensatory magazynujące, by problem częściowo lub całkowicie załatwić).
  • #23 11235171
    bykham
    Poziom 11  
    Ok mam już ładowarkę samochodową na wyjściu daje napięcie 5V +- 0,1 V oraz prąd max 1A, a i jest jeszcze bezpiecznik 1A. Na schemacie w miejsce podłączenia zasilania dodałem 2 kondensatory i diodę tylko nie wiem czy dobrze to zrobiłem i czy takie kondensatory wystarczą ??
    [Atmega8] Jak mierzyć czas w Atmega8 dla prędkościomierza z czujnikiem hallotronowym?
  • #24 11235412
    dondu
    Moderator na urlopie...
    Dioda spowoduje spadek napięcia o około 0,8V o ile dobrze pamiętam,
    A to oznacza, że przy takim zasilaczu napięcie na mikrokontrolerze może być za niskie a on w tej wersji potrzebuje 4,5V.

    Kondensatory wystarczą, o ile ten zasilacz nie jest jakiejś kiepskiej jakości.

    JP1 - coś przekombinowałeś - możesz wytłumaczyć do czego ma być?
    Sądzę, że chciałeś dać C1 po stronie pinu RESET, ale coś pokiełbasiłeś.
  • #25 11235865
    bykham
    Poziom 11  
    JP1 - zworka która ma odłączać kondensator od pinu reset na wypadek jak bym chciał podłączyć układ do programatora. Czytałem gdzieś na forum że kondensator może utrudnić programowanie i lepiej jest na czas programowania go odłączyć.

    Co do zasilania to w specyfikacji mam napisane że zasilanie Atmegi 8A-PU powinno wynosić 2.7 - 5.5V

    Ale może coś źle przeczytałem, w takim razie co dać zamiast diody? bezpiecznik ? a może nic nie dawać ?
  • Pomocny post
    #26 11235941
    dondu
    Moderator na urlopie...
    bykham napisał:
    JP1 - zworka która ma odłączać kondensator od pinu reset na wypadek jak bym chciał podłączyć układ do programatora. Czytałem gdzieś na forum że kondensator może utrudnić programowanie i lepiej jest na czas programowania go odłączyć.

    A teraz popatrz dokładnie na swój schemat i sprawdź, czy C1 przez JP1 jest podłączony do pinu RESET. Nie jest, bo dałeś go z niewłaściwej strony R1 :)
    Więcej wiedzy na ten temat: http://mikrokontrolery.blogspot.com/2011/04/m...e-podlaczanie-pinow.html#reset_vs_kondensator
    Jeżeli go przestawisz, to dodaj dodatkowy kondensator 100nF do AVCC.

    bykham napisał:
    Co do zasilania to w specyfikacji mam napisane że zasilanie Atmegi 8A-PU powinno wynosić 2.7 - 5.5V

    A Ty na schematach i w tytule tematu masz wersję ATmega8, a nie ATmega8A, a to znacząca różnica.


    bykham napisał:
    Ale może coś źle przeczytałem, w takim razie co dać zamiast diody? bezpiecznik ? a może nic nie dawać ?

    Jeżeli ten zasilacz jest porządny i daje takie napięcia jak piszesz, to po prostu diody nie dawaj.
  • #27 11235982
    bykham
    Poziom 11  
    Czyli reszta już w miarę sensownie wygląda i mogę przystąpić do wykonania płytki ?? :)
REKLAMA