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

Wskazówkowy obrotomierz - Obrotomierz wskazówkowy na Atmega8

konkretny25 14 Lut 2013 12:11 16155 58
  • #31
    WOBI
    Poziom 19  
    Dzięki za podpowiedź BlueDraco, masz rację tablica jest zbędna. Myslę że tak można by to zrobić, czy dobrze myślę? Trzeba tylko zainicjować zmienna "i" wartością 0b00010001 by działało na 4 bitach portu prawidłowo.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Do konkretny25 poczytaj koniecznie ten artykuł kliknij na Link a dowiesz się mądrych rzeczy, tylko koniecznie przeczytaj.

    Co do logiki pomiaru obrotów/minutę przyjętej przez konkretny25 nie uwzdlędniasz jednej sprawy. Nie synchonizujesz i nie uśredniasz pomiaru. Zastanów się i pomyśl co tak naprawdę sie dzieje, mierzysz oknem czasowym 0,3s ilość impulsów, ale zauważ że nie synchronizujesz mierzonych impulsów w tym bramkowaniem timerem1 (oknem czasowym) i de facto ilość zliczonych impulsów nie zawsze będzie taka sama mimo tej samej ilości obrotów/ minutę. Będzie właśnie występował błąd +- impuls lub kilka, bo to okno czasowe nie jest wyzwalane impulsami które mierzysz, a to jest właśnie brak synchronizacji, czyli gubisz impulsy, bo każdy kolejny pomiar zaczyna liczyć impulsy w innym momencie i to przypadkowym. Do tego brak uśredniania. Powinna być liczona średnia z kilku pomiarów by wynik był stabilny.

    Lepszą metodą pomiaru jest pomiar czasu miedzy pojedynczymi impulsami i przeliczanie wyniku na prędkość obrotową. Łatwiej liczyć średnią, do tego nie ma problemu z synchronizacją, bo każdy pomiar wykonuje się synchronicznie. Do tego zobacz co zyskujesz, pomiar synchroniczny, po pomiarze wykonujesz uśrednienie bo masz kilka poprzednich pomiarów, możesz je pamiętać (z nich liczysz średnią), po tym obliczeniu wykonujesz sterowanie silnikiem krokowym (lub wynik na LCD), i robisz następny pomiar. Zobacz ile taka metoda daje korzyści.

    Najpierw powinieneś uporać sie z wynikiem pomiaru i użyć LCD do jego wyświetlenia, upewnij się co tak naprawdę program mierzy/wylicza. Jeśli wynik na LCD będzie dobry i stabilny to wtedy dodaj obsługę silnika.
  • TermopastyTermopasty
  • #32
    SylwekK
    Poziom 31  
    Jeszcze odnośnie powrotu wskazówki po wyłączeniu silnika... Przecież można dodać tranzystorek podtrzymujący zasilanie dla omawianego wskaźnika, podpiąć go do jakiegoś wolnego portu procka i kiedy obroty=0 czyli wskazówka wróci na początek to zmieniamy stan portu sterującego tym tranzystorem co zaowocuje odłączeniem napięcia dla całego układu. Moim zdaniem bardzo nieelegancko wygląda wskazówka na niepracującym silniku - jakby się zacięła :)
  • #33
    konkretny25
    Poziom 11  
    Z wskazówką na 0 to sie jeszcze zastanowie. Rozwiązań jest kilka. W tej chwili nie mam rozwiązanej kwestii prawidłowego pomiaru i odczytu częstotliwości.

    Kod, który koledzy proponują, jeszcze nie przetestowałem. Zrobie to wkrótce. Postanowiłem zacząć od początku, mianowicie od tego co właściwie mierzymy. Mając te dane pracować na programem.

    Dziś rano zmierzyłem częstotliwość w punkcie pomiarowym do którego chcę podłączyć konstruowany częstościomierz. Czyli do zacisku cewki zapłonowej, który to zacisk jest podłączony do układu zapłonowego, podłączyłem dodatni zacisk standartowego miernika uniwersalnego z funkcja pomiaru częstotliwości. Przewód masowy tegoż miernika podłączyłem do zacisku ujemnego akumulatora. Silnik był rozgrzany i pracował na obrotach jałowych.

    Wyświetlacz miernika wskazał 128Hz. Jeżeli przyjąć, ze na jeden obrót wału są tylko dwa impulsy, to po wyliczeniach wychodzi że silnik obracał się z prędkością 3840 obr/min.
    Jeżeli przyjąć że na jeden obrót wału są cztery impulsy odpowiednio 1920 obr/min.
    Jak jedna tak i druga wartość są oczywiście bardzo zawyżone, ponieważ jak zapewne wszyscy koledzy wiedzą silnik na biegu jałowym obraca się z prędkością poniżej 1000 obr/min. Mój silnik subjektywnie pracował jak zwykle. Obroty były takie, do jakich sie przyzwyczaiłem "na słuch".
    Czy ktoś wie jak interpretować te odczyty? Może dokonałem pomiaru w niewłaściwy sposób?

    Odnośnie synchronizacji pomiaru: wg moich obliczeń błąd synchronizacji wynosi +/- 100 obr/min przy założeniach, które opisałem na samym początku postu. Tyle wynosi waga jednego impulsu w odczycie ilości impulsów przez timer0. Czyli mieszcze się w granicach dokładności. Podejrzewam iż uśrednienie pomiaru, które będzie konieczne do tego aby wskazówka zachowywała się stabilnie błąd synchronizacji będzie jeszcze mniej ważny.

    Tym nie mniej, nie odrzucam sposobu mierzenia prędkości poprzez pomiar czasu pomiędzy kolejnymi impulsami. Lecz nie bardzo mam pomysł jak to zrealizować programowo. Będe wdzięczny za podpowiedzi.
  • #34
    piotrva
    Moderator na urlopie...
    Co do mierzenia czasów między impulsami - najlepiej podpiąć wtedy sygnał do nóżki ICP1 procesora i mierzyć czasy za pomocą trybu ICP timera1 - wtedy praktycznie rzecz biorąc cały pomiar prędkości i wyliczenia robisz w przerwaniu ICP, a w programie masz stale aktualne dane w zmiennej.
  • #35
    SylwekK
    Poziom 31  
    konkretny25 napisał:
    ...nie odrzucam sposobu mierzenia prędkości poprzez pomiar czasu pomiędzy kolejnymi impulsami. Lecz nie bardzo mam pomysł jak to zrealizować programowo. Będe wdzięczny za podpowiedzi.


    W sumie to jest bardzo proste, wykorzystaj do tego jakiś timer z dość dużą częstotliwością (czym większa tym dokładniejszy pomiar). Zerujesz go w momencie przyjścia impulsu, przy następnym impulsie czytasz jego stan (czyli wartość, która Cię najbardziej interesuje), po czym zerujesz -> kolejny impuls czytasz stan, zerujesz -> itd...
  • TermopastyTermopasty
  • #36
    piotrva
    Moderator na urlopie...
    SylwekK napisał:
    konkretny25 napisał:
    ...nie odrzucam sposobu mierzenia prędkości poprzez pomiar czasu pomiędzy kolejnymi impulsami. Lecz nie bardzo mam pomysł jak to zrealizować programowo. Będe wdzięczny za podpowiedzi.


    W sumie to jest bardzo proste, wykorzystaj do tego jakiś timer z dość dużą częstotliwością (czym większa tym dokładniejszy pomiar). Zerujesz go w momencie przyjścia impulsu, przy następnym impulsie czytasz jego stan (czyli wartość, która Cię najbardziej interesuje), po czym zerujesz -> kolejny impuls czytasz stan, zerujesz -> itd...

    Ale po co z tym kombinować programowo, skoro można zastosować tryb ICP?
    Poza tym częstotliwość musi być nie "dość duża", tylko odpowiednia - za duża częstotliwość też na nic się nie przyda.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Po co więc, SylwekK, wywarzać otwarte drzwi i realizować to zadanie programowo?
  • #37
    SylwekK
    Poziom 31  
    Nigdy nie korzystałem z tego trybu. Człowiek uczy się przez całe życie :)
    W moich programach zazwyczaj timery miałem już do czegoś zaprzęgnięte dlatego te kilka linijek więcej (bo to naprawdę tylko kilka linijek) nigdy mi nie przeszkadzało, a czasem po prostu nie mogłem inaczej.
  • #38
    Eagle
    Poziom 23  
    Tak przyglądam się tematowi to z mojej strony jedno info możesz zwiększyć precyzję silnika krokowego, stosując pół - kroki
    Jeśli masz cewki A,B,C i D to obecnie załączasz

    A -> B -> C -> D -> ...
    Jeśli będziesz załączać

    A-> AB -> B -> BC -> C -> CD -> D -> DA ->

    to zwiększysz dwukrotnie liczbę kroków ale pobór prądu ( załączone 2 cewki ) a w konsekwencji (moment obrotowy ?) , nie stosował bym tej metody do zerowania wskazania ale do pokazywania.

    A co do sedna problemu ja gdy szukam błędu w sofcie stosuję zasadę "dziel i poprawiaj" :) , generelnie można wydzielić dwa bloki logiczne jeden odczytający i obliczający wartość do wskazania, drugi wskazujący.

    Na sam początek dopisał bym linijkę nadpisującą wynik obliczeń znaną stałą wartością np odpowiadającą 2500 obrotów jeśli wskazówka się ustawi na żądaną wartość to szukamy dalej np dynamicznie co pomiar nadpisujemy wartość obliczoną 2500 + n gdzie n to nr odczytu zwiększany przy każdym odczycie, spodziewany rezultat wskazówka startuje z 2500 i idzie do max. Jeśli to jest ok to szukam w bloku obliczania np. wykorzystując do tego wskazówkę jako wizualizacje częściowo oblicznych danych.

    Eagle
  • #39
    konkretny25
    Poziom 11  
    Kolega źle zrozumiał problem precyzji pomiaru. Nie chodziło o zwiększenie precyzji wskazówki. To akurat nie jest trudne. Efekt "półkroków" jest mi znany. Przy okazji początków prac nad tym obrotomierzem miałem możliwość obserwacji tego trybu pracy. Wiem, iż wirnik silnika krokowego (czyli wskazówkę) można ustawić właściwie w dowolnej pozycji z dowolną precyzją poprzez proporcjonalne sterowanie sąsiadującymi cewkami.
    Wprawdzie w tej chwili nie potrafie aż tak precyzyjnie sterować silnikiem, lecz teoretycznie można się tego podjąc. Ale kroków w 1.8 stopnia które ma posiadany przeze mnie silnik do mojego obrotomierza całkowicie starczy do obsługi praktycznie całej skali w 180 stopni. Wiec krokowa praca jest w danym przypadku jak najbardziej wystarczająca.

    Nie o zwiększenie precyzji wskazówki w tej chwili chodzi, lecz o zwiększenie precyzji samego odczytu prędkości obrotowej. Żeby ten pomiar bym jednocześnie dokładny i stabilny. Silnik krokowy jest tylko mechanizmem do prezentowania tego pomiaru.

    Nie bardzo rozumiem o co chodzi z tą "wzorcową" watością. Czytałem kilkakrotnie i nie zrozumiałem intencji kolegi. Proszę o nieco bardziej rozbudowane wyjaśnienie.
  • #40
    piotrva
    Moderator na urlopie...
    Chodzi o to, że w tej chwili nie wiesz, co jest nie tak, więc robisz tak, wyrzucasz kod pomiaru i wpisujesz na sztywno jakąś wartość, którą ma wskazać obrotomierz i sprawdzasz czy tak jest. Potem zamiast tego wpisujesz zwiększanie tej wartości w jakiejś prostej pętli.
  • #41
    Eagle
    Poziom 23  
    Kod: c
    Zaloguj się, aby zobaczyć kod



    Trochę się pogubiłem na jakim etapię jest obecnie program, więc przykład z pierwszego Twojego postu obliczasz step_in, ale jak sam stwierdzasz gdzieś jest błąd. Ja nadpisał bym znaną wartością i oczekiwał znanej reakcji.

    ewentualnie dynamicznie

    Kod: c
    Zaloguj się, aby zobaczyć kod


    co powinno po tuż po rozpoczęciu pomiaru ustawić wskazówkę na pozycję "400" i liniowo wzrastać aż do max.

    Eagle
  • #42
    SylwekK
    Poziom 31  
    piotrva napisał:
    Chodzi o to, że w tej chwili nie wiesz, co jest nie tak, więc robisz tak, wyrzucasz kod pomiaru i wpisujesz na sztywno jakąś wartość, którą ma wskazać obrotomierz i sprawdzasz czy tak jest. Potem zamiast tego wpisujesz zwiększanie tej wartości w jakiejś prostej pętli.


    Od siebie dodam, że bardzo często umieszczam w fazie testów, np. wyświetlacz LCD, na którym w czasie rzeczywistym wyrzucam istotne zmienne co strasznie upraszcza uruchamianie projektów, a często też dodatkową, krótką procedurkę z badaniem np. dwóch przycisków, którymi zmieniam istotny parametr. dzięki temu oszczędzam sporo czasu kombinowania z programowaniem co chwila procesora z nowymi wartościami.
  • #44
    WOBI
    Poziom 19  
    konkretny25 napisał:
    Dziś rano zmierzyłem częstotliwość w punkcie pomiarowym do którego chcę podłączyć konstruowany częstościomierz. Czyli do zacisku cewki zapłonowej, który to zacisk jest podłączony do układu zapłonowego, podłączyłem dodatni zacisk standartowego miernika uniwersalnego z funkcja pomiaru częstotliwości. Przewód masowy tegoż miernika podłączyłem do zacisku ujemnego akumulatora. Silnik był rozgrzany i pracował na obrotach jałowych.

    Wyświetlacz miernika wskazał 128Hz. Jeżeli przyjąć, ze na jeden obrót wału są tylko dwa impulsy, to po wyliczeniach wychodzi że silnik obracał się z prędkością 3840 obr/min.
    Jeżeli przyjąć że na jeden obrót wału są cztery impulsy odpowiednio 1920 obr/min.
    Jak jedna tak i druga wartość są oczywiście bardzo zawyżone, ponieważ jak zapewne wszyscy koledzy wiedzą silnik na biegu jałowym obraca się z prędkością poniżej 1000 obr/min. Mój silnik subjektywnie pracował jak zwykle. Obroty były takie, do jakich sie przyzwyczaiłem "na słuch".
    Czy ktoś wie jak interpretować te odczyty? Może dokonałem pomiaru w niewłaściwy sposób?


    Tak się nie mierzy! Robisz podstawowy błąd, myśląc że ten pomiar jest właściwy!

    Nie możesz sie podłączać do cewki zapłonowej częstościomierzem!!! Najpierw trzeba uformować impulsy czyli to co pobierasz z cewki WN. Tam na cewce jak podepniesz się oscyloskopem to zobaczysz że są oscylacje powstałe na indukcyjności cewki zapłonowej w czasie gdy występuje wyładowanie wysokiego napięcia na świecy zapłonowej! To co zmierzyłeś to nie był właściwy pomiar, na dodatek mogłeś uszkodzić częstotliwościomierz!!! Tam jest napięcie które może być w granicach 100V nawet do 400V, taki jest poziom oscylacji, oczywiście zależy to od konstrukcji układy zapłonowego, czy jest elektroniczny czy mechaniczny z przerywaczem. Tak naprawdę to pomiar był niewłaściwy, błędny wynik.

    Nie napisałeś i nie przetestowałeś programu który jest wyżej, przecież to chyba nie jest problem wgrać go i przekazać na forum jak działa?

    konkretny25 napisał:
    Tym nie mniej, nie odrzucam sposobu mierzenia prędkości poprzez pomiar czasu pomiędzy kolejnymi impulsami. Lecz nie bardzo mam pomysł jak to zrealizować programowo. Będe wdzięczny za podpowiedzi.


    Przecież to jest proste, kłania sie fizyka i matematyka.
    Zobacz masz 1000obr/minutę dzielisz przez 60 sekund wychodzi 16,6666 obrotów na sekundę i dalej obliczenia częstotliwość to f=1/T czyli T to okres f to czestotliwość czyli liczymy okres T= 1/f czyli nasze 16,666 (bo 16,666 na sekundę to nasza częstotliwość) czyli 1/16,666 = 0,06sekundy-> 60ms czyli masz wynik jaki powinien być czas pomiędzy impulsami przy 1000obr/min.

    Jak policzyć to w drugą stronę, pomyśl, działania odwrotnie wykonaj.
    Podpowiem że zakres pomiarowy timera dla 500 do 6500 obr/min masz przedział 120ms do około 9ms.
    czas pomiaru w ms przeliczone na obroty na minutę -> (obr/min, wyliczone)= 60000/czas zmierzony (ms) i tu możesz wartość z timera dopasować do dzielenia tak by dobrać preskaler timera, zakres timera, by obliczenie uprościć do potrzebnego zakresu pomiarowego.
  • #45
    konkretny25
    Poziom 11  
    WOBI napisał:
    •stosuj volatile do wszystkich zmiennych globalnych,
    •stosuj volatile zawsze dla zmiennych używanych w przerwaniach i poza nimi.
    Takie podejście zmniejszy ilość Twoich problemów w początkowej fazie nauki C. Później gdy już poznasz dokładniej język C, będziesz wiedział kiedy i jakie odstępstwa od tych zasad można lub należy robić.

    Zobacz czy to zadziała.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nie działa. Nie chce się skompilować. 7 errorów.
    i, step_in, step_out undeclared
    old-style parameter declaration
    i, step_in, step_out is initialized
  • #46
    Eagle
    Poziom 23  
    Pomiędzy "nagłówkiem" main a ciałem funkcji masz deklarację zmiennych !


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod
  • #47
    konkretny25
    Poziom 11  
    Tak, rzeczywiscie. Po tej zmianie program skompilował się bez błędów i bez warningów.

    Wgrałem program do atmegi, podłączyłem silnik. Generator funkcyjny pracuje w trybie płynnej zmiany częśtotliwości od 10Hz do 60Hz i z powrotem co 0.05Hz. Tak powolną zmianę częstotliwości wybralem na wypadek gdyby silnik nie nadążał. Podłączyłem też oscyloskop. Generator generuje to co trzeba. Cały okres od 10 do 600 generator przemiata za ok 30 sek i tyle samo od 600 do 10.

    Spodziewać by należało, że wskazówka zamontowana na wirniku będzie płynnie wychylać się do wartości maksymalnej i poźniej tak samo powracać do pozycji wyjściowej. Jednakże tak się nie dzieje.

    W punktach końcowych gdy kierunek zmiany częstotliwości zmienia się na przeciwny, czyli przy 10Hz i 600Hz silnik wykonuje kilka kroków wprawo-wlewo, przypadkowych zupełnie, i poźniej przez cały pozostały zakres zmian częstotliwości pozostaje nieruchomy.
  • #48
    WOBI
    Poziom 19  
    Tak jak pisałem jest źle napisana logika w Twoim programie, nie może być ELSE IF if a potem ELSE. Poprostu nie wykonuja się kroki silnika. Dodatkowo jeśli kroków będzie więcej jak 100 to będzie przekroczenie czasu 300ms pomiaru timerem1. Dlatego pisałem że jeden pomiar, jedno wykonanie kroków silnikiem i dopiero ponowne wykonanie pomiaru.
    Powinno być tak.
    Kod: c
    Zaloguj się, aby zobaczyć kod


    A to cały działający program, dodane podciągniecie PortD.4 wejście timera0. Tylko pamiętaj że to nie jest jeszcze doskonały bo nie ma obsługi przepełnienia, ograniczenia zmiennych.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Plik hex do procka z krokami silnika raz na jedno wykonanie pomiaru tak dla sprawdzenia.
  • #49
    konkretny25
    Poziom 11  
    Dziękuje. Sprawdze ten program.

    Chciał bym jeszcze powrócić do sposobu pomiaru. Poświęciłem trochę czasu na poszukiwania analogicznych projektów i muszę powiedzieć iż nikt nie robi tego w taki sposób jaki przyjąłem ja.

    Wszyscy robią jak było opisane kilka postów wyżej, czyli mierzony jest czas pomiędzy dwoma kolejnymi impulsami. Rzeczywiście, po ich analizie muszę stwierdzić, że logicznie są lepsze. Ze względu na synchronizacje i dokładność pomiaru. Poza tym wydaje mi sie, że sprzętowo też są lepsze, bo angażowany jest tylko timer1, bez timera0.

    Tak że przyznaje się uniżenie, że nie miałem racji. Mój sposób jest gorszy.

    Dodano po 12 [minuty]:

    WOBI napisał:
    A to cały działający program, dodane podciągniecie PortD.4 wejście timera0. Tylko pamiętaj że to nie jest jeszcze doskonały bo nie ma obsługi przepełnienia, ograniczenia zmiennych.


    Program nie działa. Silnik cofa wskazówke do 0 i później stoi nieruchomy.
  • #51
    konkretny25
    Poziom 11  
    WOBI napisał:

    Tu masz fajny przykład programu obrotomierza Strona z projektem obrotomierza

    Tak. To jest to co trzeba. Niestety program nie działa prawidłowo. Po jego wgraniu na wyświetlaczu pokazują się "?" oprócz jednej wartości. Ilość impulsów jest pokazywana, reszta nie.

    Kurcze nijak nie mogę zrozumieć jak należy skonfigurować timer1!!!
  • #52
    dondu
    Moderator Mikrokontrolery Projektowanie
    konkretny25 napisał:
    Niestety program nie działa prawidłowo. Po jego wgraniu na wyświetlaczu pokazują się "?" oprócz jednej wartości. Ilość impulsów jest pokazywana, reszta nie.

    Program działa na pewno prawidłowo. Przetestowany i możesz to sprawdzić na filmie.
    To że Tobie pokazuje się znak zapytania może być spowodowane wieloma przyczynami.

    Pokaż swój schemat, kod i opisz dokładnie co się dzieje.
  • #53
    konkretny25
    Poziom 11  
    Tak, widziałem filmik. Na nim wszystko jest ok. U mnie najpierw pokazuje sie napis "Obrotomierz" a później widać tylko ilość wartość która ma sie pokazać na końcu drugiej linijki wyświetlacza. Zamiast pozostałych wartośći pokazywane są pojedyńcze "?".

    Swojego schematu niestety nie mogę pokazać, ponieważ jak mowiłem wcześniej korzystam z zestawu ewaluacyjnego. Jednakże właściwie tam nie mam co pokazywać. Zasilanie Atmega8 zostało wykonane ściśle wg wkazówek z tej samej strony www gdzie jest projekt obrotomierza. Kwarc mam zewnętrzny 8MHz, fuse bity zostały skonfigurowane prawidłowo, ponieważ nie jest to mój pierwszy program. Wcześniejsze działały bez problemów.

    LCD został połączony wg bibliotek dołączonych do projektu obrotomierza i działa. Generator funkcyjny został połączony do PB0.

    Czy mógł byś wyjaśnić mi obliczenia matematyczne? W jaki sposób wyliczane są wszystkie wartości?

    Jeszcze pytanie: w treści artykułu jest podane, że pomiar nie jest uśredniany. Jednakże w samym programie można określić ile obrotów ma trwać pomiar. Czy to nie jest uśrednianie?
  • #54
    SylwekK
    Poziom 31  
    Nie wiem czy już rozwiązałeś problem, ale przypomniało mi się o temacie, bo piszę nowy sterownik i ten fragment może Cię zainteresować :)
    Co prawda to BASCOM, ale nie powinno być problemu z analizą.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Działa jak na filmie :


    Link


    Generalnie zamiast odczytu ADC swój odczyt przeliczasz pod konkretny zakres jaki Cię interesuje i podstawiasz pod zmienną Stan
    W programie jak widać nie ma pętli powrotu, bo jeśli wartość początkowa równa jest 0 to silnik stoi poza tym w moim sterowniku zerowanie będzie na krańcówce.

    Podprogram Krok można zrobić na 100 sposobów albo go wywalić i zastąpić zwykłym rolowaniem w pętli głównej (zamiast rolowania zmiennej Faza) jak w podanych wcześniej przykładach. Ja będę sterował półkrokiem silnik bipolarny stąd takie rozwiązanie, a nie inne.
    W każdym razie program działa dokładnie tak jak powinien czyli wał kręci się proporcjonalnie do zadanej wartości.
    Pozdrawiam :)
  • #55
    konkretny25
    Poziom 11  
    Nie, problemu jeszcze nie rozwiązałem. Ale ostatnio czasu zupełnie brak. Twój projekt jest ciekawy. Takie serwo na silniku krokowym. Lecz mój problem w tej chwili znajduje się nieco w niższej płaszczyźnie. Na razie nie mogę poradzić sobie z odczytem częstotliwości obracania się wału silnika. Dopiero, gdy to zrobię i będę miał stabilny i odfiltrowany odczyt w jakiejś zmiennej będę myślał nad wysterowaniem silnika.
    BASCOMu niestety nie znam zupełnie.
  • #56
    Wacholek84
    Poziom 10  
    Jak tam idzie praca nad obrotomierzem?

    Obecnie rozpoczynam swój własny projekt sterownika. Mam obrotomierz z elektroniką. Niestety elektronika sterowana przez CAN a co za tym idzie trzeba robić nowe sterowanie.
    Silnik krokowy standardowy. 2x2 wyprowadzenia dwa uzwojenia.
    Na 5V biorą ok 40mA. Nie wiem czy to nie za dużo. Trzeba będzie odłączać zasilanie przy ustalonej wartości położenia.

    Ten obrotomierz jest or Renault Twingo II ale podobny mam od motocykla BMW.
    Tyle, że ten od moto działa na generatorze gdyż sterownik jest odczytuje impulsy z ABSu.

    Patrząc na sposób podłączenia obrotomierza w BMW wykorzystanie czujnika obrotu wału nie jest zbyt dobrym pomysłem. W BMW wykorzystuje się do tego pomiar napięcia po pierwotnej stronie cewki zapłonowej. Do tego dzielnik napięcia, trochę zabezpieczeń i mamy bardzo ładny prostokąt na wejściu sterownika.

    W najbliższych dniach będę robił schemat i opis zasady działania programu.
    Pozdrawiam!!
  • #57
    konkretny25
    Poziom 11  
    Cześć.

    Praca nad obrotomierzem niestety spowolniła. Ogołnie postanowiłem oprzeć projekt na tym projekcie:

    http://mikrokontrolery.blogspot.de/2011/04/obrotomierz-diy.html

    Jednakże nie rozumiem działanie tego programu. Autor niestety jest zawalony pracą i czasu dla mnie specjalnie nie ma. Dlatego na razie skupiam się na układzie formowania impulsów z cewki zapłonowej auta na prostokątne dla Atmegi. W międzyczasie rozgryzam program.

    Silnik krokowy postanowiłem wybrać jednofazowy, a nie dwufazowy jak ty. W moim wariancie jego obsługa jest nieco prostsza.

    Chętnie sie zapozna z twoją wersją jak sprzętu tak i softu.
  • #58
    kwasek83
    Poziom 8  
    Witam,
    mam pytanie.. przypuscmy, ze taki obrotomierz instalujemy w samochodzie. Co w momencie kiedy nagle odlaczymy zasilanie? Chcialbym aby w tym momencie wskazowka przed wylaczeniem calego ukladu wrocila do punktu zero. Jakie rozwiazania proponujecie?
  • #59
    SylwekK
    Poziom 31