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

attiny2313 - Weryfikacja programu obrotomierza z czujnikiem Halla i kwarcem 8MHz

Jordan97 13 Paź 2014 17:07 1881 7
  • #1 14038248
    Jordan97
    Poziom 10  
    Witam, buduje obrotomierz oparty o czujnik hala,
    Proszę o sprawdzenie programu do tego schematu.
    I o wszelkie wskazówki co można by było zmienić.
    Mam jeszcze pytanie jak w programie bascom ustawić up żeby chodził na zewnętrznym kwarcu 8Mhz?
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #2 14038923
    Konto nie istnieje
    Poziom 1  
  • #3 14040508
    Jordan97
    Poziom 10  
    Użyłem w schemacie 90S2313 ponieważ w eagle nie znalazłem attiny2313 tylko jest 90S2313 który ma takie samo rozmieszczenie pinów. Wiec układ został stworzony z myślą o attiny2313.
    Czujnik hala który zamierzam użyć to ugn3140.
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Co jeszcze muszę zmienić w programie ?
  • #4 14041071
    M. S.
    Poziom 34  
    Bez wdawania się w większe szczegóły jest szansa, że obrotomierz będzie działał lecz jego wskazania mogą różnić się od rzeczywistości. Powodem jest instrukcja Wait 1 "odmierzająca" czas pomiaru. Porzuć ten pomysł na rzecz odmierzania czasu pomiaru za pomocą drugiego timera. W Tince jeden timer jest 8 bitowy, a drugi 16 bitowy. Oszacuj potrzeby przydzielenia konkretnego timera do konkretnego działania. Poza tym mamy 2 rodzaje pomiaru prędkości obrotowej. Jeden poprzez zliczanie ilości obrotów w jednostce czasu, a drugi poprzez pomiar czasu obrotu. Pierwszy stosujemy przy dużych prędkościach, a drugi przy małych. Przykładowo szybkościomierze rowerowe dają odczyt już po drugim impulsie bo mierzą czas trwania obrotu koła. Jeśli rozbudujesz program to możesz zaimplementować oba sposoby pomiaru tak aby wielkość ostatniego pomiaru decydowała o sposobie następnego pomiaru.

    P. S. Źródło taktowania uC wybiera się ustawiając odpowiednio fusebity. W AVR'ach nie robi się tego programowo.
  • #5 14041200
    Jordan97
    Poziom 10  
    Aha, więc 1 trimer 8 bitowy użyć do małych a ten 2 16 bitowy do wysokich obrotów.
    W sumie w tedy by bardziej dokładniej mierzyło, nie mam doświadczenia z tak bardzo rozbudowanymi programami ,
    Mógłbyś pokazać jak zacząć modyfikować ten program,
  • #6 14041842
    Konto nie istnieje
    Poziom 1  
  • #7 14042133
    M. S.
    Poziom 34  
    Mając na myśli przydzielanie timerów do konkretnych zadań chodziło mi o przeliczenie potrzeb. Załóżmy, że utrzymujesz metodę zliczania impulsów w czasie 1 s. Timer0 potrafi ich zliczyć w zakresie 0-255. 255 impulsów (licząc 1 na obrót) to zakres od 0 - 15300 rpm. Pewnie wystarczy ale rozdzielczość pomiaru to aż 60 rpm. Stosując 2 impulsy na obrót będzie to odpowiednio 7650rpm i 30 rpm. Jak to wystarcza to możesz zająć timer 1 (16bit) odmierzaniem czasu. Jego pojemność przy prescalerze 64 umożliwi ci wyznaczenie 1s za pomocą łatwo dostępnego kwarcu 4194304 Hz w jednym przebiegu.

    Jak widzisz budowa obrotomierza jest bardzo związana z wielkością prędkości obrotowej jaką chcesz rozsądnie mierzyć.
  • #8 14087507
    Jordan97
    Poziom 10  
    Witam , po przerwie ,

    emarcus napisał:

    Nie, w zależności od szacowanych obrotów wybierasz metodę pomiaru, w której wykorzystujesz jeden (dowolny) timer, lub oba w której jeden odmierza czas a drugi zlicza impulsy. Ta ostatnia jest alternatywą do tej którą zastosowałeś lecz czas jest mierzony timerem a nie przez processor instrukcją Wait.
    Ta druga metoda polega na pomiarze czasu pomiędzy dwoma kolejnymi impulsami i odpowiednim przeliczeniu tej wartości na obroty znając fizyczne właściwości mechaniczne całego układu pomiarowego (ilośc impulsów na jeden pełny obrót).
    Tu możesz posłużyc się interruptem, choc nie ma takiej konieczności.
    e marcus


    W moim układzie muszę wykorzystać tą drugą metodę ze względu na to że to będzie obrotomierz uniwersalny i nie będę znał parametrów mierzonego układu

    M. S. napisał:

    Stosując 2 impulsy na obrót będzie to odpowiednio 7650rpm i 30 rpm. Jak to wystarcza to możesz zająć timer 1 (16bit) odmierzaniem czasu.



    Właśnie taki zakres mi wystarczy.
    Wiem jak będzie wyglądał początek , ale reszty to nw
    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA