Wielkie dzięki za podpowiedzi : 1. Zdaję sobie sprawę z retro - rozwiązania typu tachogenerator, ale tak jak pisałem problem stanowi licznik związany z enkoderem. Sprawa w detalu wygląda mniej więcej tak - w dotychczasowym rozwiązaniu stosowałem enkoder 1024 imp/obr plus moduł licznika, który w rejestrze 32bit przechowuje stan osi. Prędkość była liczona...
No to wzór na prędkość jest taki: V=\frac{n}{Nt} n - ilość impulsów jakie naliczyłeś N - ilość impulsów na obrót enkodera t - czas w jakim naliczyłeś te impulsy Jeśli masz na przykład enkoder inkrementalny z ilością kroków 500 i w czasie 100ms naliczyłeś 374 impulsy to podstawiając do wzoru masz 500/(374*0.1) czyli 13,37 obrotów na sekundę. Zauważ,...
Enkoder rozsądnie byłoby zainstalować w osi rolki dociskowej i sprząć rolki tuż przed markerem i za piłą. Rozdzielczość enkodera powinna zapewnić 1mm dokładności, nie więcej ( chodzi o przepełnienie licznika). Zakładając, że rolka dociskowa ma obwód 250 mm, enkoder powinien mieć 250 imp/obrót. Szybki licznik w tej sytuacji przepełni się po 10 m (9999)....
Najdokładniej będzie zmierzyć czas pomiędzy impulsami z enkodera - możesz do tego użyć trybu input capture (ICP) timera1. Przy max. prędkości obrotowej masz ok. 100 zdarzeń na sekundę. Przy min. prędkości możesz zwiększać preskaler timera żeby wykluczyć przepełnienie bez "łapania" impulsu. Jeśli odstępy między impulsami z dekodera nie są identyczne,...
Witam serdecznie! Zachęcony tematem: http://www.elektroda.pl/rtvforum/viewtop... oraz działaniami z układami FPGA postanowiłem stworzyć driver do mechanicznych enkoderów obrotowych. Aktualnie zaimplementowałem już eliminację drgań styków oraz dekodowanie 2 przebiegów z enkodera na bardziej zrozumiałe dla logiki sygnały (mam 2 wersje: albo...
Przyznam że niezbyt zrozumiały jest dla mnie ten program z obsługą enkodera, ciężko mi to ogarnąć wszystko po prostu. O co chodzi tak w skrócie z tym przerwaniem timera? Dodano po 3 Czytam teraz ciekawy artykuł o timerze 0, pisze że jego zadaniem jest zliczanie przychodzących do niego impulsów, jeśli to tak działa, to myślę że idealne rozwiązanie. Dodano...
To właściwie jest oddzielna funkcja, którą należy okresowo wywoływać. Albo przez pooling, albo z przerwania generowanego przez encoder i wtedy można ją jeszcze dodatkowo uprościć. Co do operacji, którą pokazałeś - w moim programiezmienna EncoderState na starszych bitach przechowuje inne wartości, np. stan przycisku enkodera itd. Stąd takie nieco dziwne...
załączam program, ale to nie jest problem napewno tego.: spark2_nowy.h ioinit.h enkoder.h spi.c [syntax=c] static inline void SPI_SET_SS() { PORTB|=(1<<PB2); } static inline void SPI_RESET_SS() { PORTB&=~(1<<PB2);// SS -> PB2 } void SPI_master_init() { SPI_SET_SS(); SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPI2X);// (SPE) SPI Enable, (MSTR)Master...
Witam. Nie mam już pomysłu na rozwiązanie mojego problemu. Program działa, ale przy przesuwaniu tekstu w tablicy do prawej AVR GCC generuje dużo mniejszy kod (1002 bajty) niż jeśli zakomentuję tę część pętli głównej programu (1366 bajtów). Kompilacja przechodzi bez warningów w obu wypadkach. Dodatkowo po zaprogramowaniu układu program nie wraca do głównej...
Witam!!! Ogólnie z tego co mi wiadomo, to w Canonie niema czegoś takiego że wskazuje dwa błedy naraz (zacięty papier i pochłaniacze) Prawidłowo powinno być: najpierw pochłaniacze, kasujemy błąd i dopiero teraz powinien pokazać się błąd zaciętego papieru(gdy miga na przemian 3 razy - błąd enkodera). W twoim przypadku masz błąd softwerowy, czyli do wymiany...
Ale tutaj chodzi o przerwanie od przepełniona innego licznika niż wykorzystany w obsłudze enkodera?
W takim przypadku możesz w pozostałych funkcjach przerwań użyć atrybut ISR_BLOCK co spowoduje, że kompilator doda na ich początku rozkaz sei() i każde inne przerwanie będzie mogło przerwać takie przerwanie. Oczywiście wtedy ostrożnie musisz podchodzić do ilości wolnej pamięci RAM, bo w skrajnym przypadku stos może ją przepełnić.
Zwykły licznik góra - dół i przetwornik DA z wyjściem napięciowym lub prądowym, powinny załatwić sprawę. Do realizacji na procku lub układach TTL/ CMOS. Przy czym, przepełnienie, czyli wyjazd poza zakres, ignorowany. To znaczy, po dotarciu do min/ max następuje nasycenie wyjścia i dalsze kręcenie w tę samą stronę nic nie zmienia. Zmiana kierunku natomiast,...
Korzystam z licznika sprzętowego. Generalnie w rachubę wchodzą liczniki z obsługą enkodera czyli advanced albo general purpose(Najprawdopodobniej TIM1, lub TIM3). Licznik będzie pracował dwukierunkowo z przeładowaniem. Czy jestem w stanie stwierdzić czy przeładowanie nastąpiło na wskutek przekroczenia zakresu od góry czy od dołu? Oczywiście w obsłudze...
Witam. Bardzo proszę o pomoc. Około 1,5 roku temu zakupiłem urządzenie wielofunkcyjne Canon Mp 520. Miało starczyć na lata. Przez półtora roku użytkowania sprawdzało się znakomicie. Jednakże pojawił się problem. Przestało drukować czarny kolor. Pozostałe ok. Myśląc że może to wina tuszu zakupiłem drugi (zamiennik ActiveJet). Przełożyłem na nowy. NIe...
To ma być taki układ serwo - jeden licznik zlicza impulsy step dir - układ zdarzeń potrafi rozpoznawać ten sygnał. W liczniku mamy więc pozycję zadaną. Drugi licznik liczy impulsy z enkodera na silniku - 2500obr minutę czyli 41 na sek, enkoder daje na obrót 1000imp ale można liczyć każde zbocze impulsu czyli 4000 imp (no chyba ze producent enkodera...
Jeśli dobrze pamiętam aby wykonać bazowanie należy podać napięcie +24V na 8 zacisk po modułem, po czym +24V należy podać na wejście Z (symulacja impulsu Z z enkodera). Powoduje to ustawienie bitu SYNC na true, oraz wyzerowanie licznika. Wykonanie kolejnego bazowania (tj. zerowania licznika) jest możliwe dopiero po skasowaniu flagi SYNC, przy czym dokonać...
Żeby przyspieszyć przetwarzanie możesz utrzymywać 2 zmienne: pozycja i delta. W przerwaniu INT0 robisz: push r_temp ; 2 in r_temp, SREG ; 1 push r24 ; 2 push r25 ; 2 lds r24, LOW(adr_delta) ; 2 lds r25, HIGH(adr_delta) ; 2 sbis PIND, 3 ; 1/2 sbiw r24, 2 ; 2/0 adiw r24, 1 ; 2 sts r24, LOW(adr_delta) ; 2 sts r25, HIGH(adr_delta)...
Połączyłem bezpośrednio enkoder do uC i po kilku obrotach lewo/prawo pozycja "0" a fizyczne "0" różnią się, nie jest to jakaś duża różnica ale, więc chyba muszą mieć wpływ. Ciekawe jak to jest możliwe?:) Rozrysuj te sygnały i zastanów się jaka sytuacja mogłaby to spowodować? W twoim przypadku zapewne winowajcą jest użycie wewnętrznego podciągania....
Oto reszta kodu. Jak policzyłeś dokładność? Tzn. jak uzasadnić to, że dla 4 impulsów mam 25% dokładności? Rozumiem, że 4 impulsy to w sumie 100%, ale nie rozumiem źródła tej niepewności. Gwoli wyjaśnienia - kilku zmiennych nie używam, to pozostałości po starych kodach (wiem, że powinienem je skasować :) ) a przetwornik ADC jest po to, że uruchamiam...
Witam staram sie uruchomić sprzętową obsługe encodera w stm32F4. Generalnie całość już działa problemem okazuje się sam timer. Działa inkrementacja i dekrementacja timera jednakże licznik nie chce się przepełnić zarówno przy zliczaniu w górę i w dół timer dolicza do maksymalnej wartości zapisanej w rejestrze CNT. przy zliczaniu w góre (obrocie koła)...
Czesc, No niestety nie hula... probowałem tego. Myśle ze atmega jest zryta jakos... Mimo tego, ze mam obsługe przerwań i tak, wiem ze to musi działać bo skopiowałem to z mojego poprzedniego projektu, to mi się restartuje atmega. Zwrać na płytce nie ma. [syntax=c] #include <avr/io.h> // Załaduj bibliotekę input/output #include <avr/interrupt.h>...
Kompletnie nie rozumiem po co chcesz dzielić coś przez 100. Masz taki enkoder to wykorzystaj to co masz. Jeśli chcesz, żeby falownik zmienił prędkość po 30 obrotach to znaczy, że enkoder wysłał 30*10000 impulsów. Jak Ci się przepełnia licznik to użyj jakiegoś dodatkowego countera. nie znam Omrona - jestem Siemensowcem
Witam. Jeśli Twój enkoder to przetwornik obrotowo-impulsowy inkrementalny (taki jak w myszce) to oznacza, że masz do dyspozycji 2 kanały licznikowe i/lub/może 1 kanał znacznikowy. Licznikowe dają określoną liczbę impulsów (najczęściej prostokątnych) na 1 obrót osi, znacznikowy 1 impuls na 1 obrót. Sygnały licznikowe (A i B) są przesunięte względem siebie...
Witam, może po prostu drukujesz z nieprawidłowego podajnika, są dwa: - "Kaseta" (ten ładowany od przodu i tylko do papieru zwykłego) - "Tylna taca" (ładowany z tyłu od góry, trzeba unieść klapkę aby go rozłożyć, służy do drukowania np. na papierach foto) Jeśli przedtem było OK to: - zmień w ustawieniach drukarki podajnik papieru na inny i sprawdź, czy...
1. z tego co piszesz to przerwanie o najwyższym piriorytecie będzie występowało z częstotliwością 4kHz. Zakładając że będziesz miał zegar 8MHz to na obsługe przerwania (zapisanie 8 bajtów) i obsługe innych przerwań będziesz miał: 8MHz/4kHz = 2000 cykli zegarowych co w przypadku procesorów typu RISC daje jakieś 1500 instrukcji. A to jest całkiem sporo....
sprawdź sobie czy Ci się licznik nie przepełnia 1 imp enkodera to 4 zliczone zbocza a licznik masz UP/DOWN czyli jeszcze /2 pojemność licznika 65536 /4/2 daje 8192 impulsy enkodera zanim licznik będzie full
witam! To niestety nic nie daje, bo właśnie o to chodzi aby podczas wykonywania przerwania od timer2(enkoder), gdy Timer0 się przepełni, procesor powinien zawiesić przerwanie (enkoder) i przejść do obsługi przerwaia od Timer0(czekaj).
https://obrazki.elektroda.pl/7793672500_... Przedstawię tu wnętrze kilku starych myszek komputerowych. Część z tych myszek jest tylko dwuprzyciskowa i nie ma nawet kółka. Zobaczymy tutaj jak są one zbudowane oraz na jakich układach bazują, przyjrzymy się też ich protokołowi komunikacji. Jak wygląda w środku myszka kulkowa? Przekonajmy...
wszystko ok tylko zależy do czego to potrzebujesz. jaka dokładność pomiatru cię interesuje? jeżeli chodzi o pomiar dużych prędkości to przemnóż spodziewaną maksymalną prędkość obrotową wały enkodera przez jego rozdzielczość i zastanów się czy to nie za dużo (np. przy 3600 obr/min * te ponad 2000 imp/rev daje 120 000 impulsów/sekundę - do czego by była...
Dlaczego jak Canon nie działa to wszyscy resetują pampersa? b] Najpierw to trzeba sprawdzić co jest z tymi tuszami moze sa faktycznie uszkodzone. Błąd 5100 oznacza, że cos dzieje się z karetką i nic niema wspólnego z przepełnionymi tuszami. Z mień tusze na orginały i przczyść pręt oraz enkoder i ... czujniki pozycjii karetki. tłumaczenie drobiazgowe...
W programie który masz u góry są delay_ms program się zatrzymuje na tym a przerwania są nadal zgłaszane i możliwe że już nastąpiło zliczenie do piędziesiątki a potem zmienna się przepełnia a ty nadal w delay_ms. Pozdrawiam Nie no, tak to nie działa... delay jest po tym jak silniki się wyłączą więc żaden sygnał z enkodera nie przychodzi, a co za tym...
https://obrazki.elektroda.pl/8611332800_... Przedstawiam prostą konstrukcję, która sprawiła mi sporo frajdy. Jest to odtwarzacz plików MP3 z użyciem RaspBerry Pi Pico na mikrokontrolerze RP2040. Pliki wczytywane są z karty SD i odtwarzane z wykorzystaniem PWM. https://obrazki.elektroda.pl/8965810000_... Testy zacząłem...
Nie składam winy na bascom tylko proszę o pomoc kolegów. Problemu z zliczaniem impulsów już nie mam. Napisałem program lecz jest on napisany fatalnie dlatego że nie mam pomysłu w jaki inny sposób go napisać. Może koledzy wskażą mi jak to napisać lepiej dlatego że stos mi się przepełnia i program "wariuje". [syntax=basic4gl]$crystal = 8000000 'Deklaracja...
Witam. Zbudowałem urządzenie z wykorzystaniem atmega32 jest w nim ok 2kb kodu napisanego w bascom. Urządzenie wykonuje cykl pracy bazując na kilku zmiennych odczytanych z eeprom wewnętrznego. Maszyna posiada licznik cykli i za każdym razem przy 17 cyklu wyskakują na wyświetlaczu krzaki a po następnym atmega sie resetuje. Wykluczam tu zakłócenia - układ...
Witam wszystkich, projekt powstał na przełomie marca/kwietnia tego roku w wyniku zapotrzebowania na pompkę perystaltyczną potrzebną przy realizacji pracy magisterskiej. Nigdy wcześniej nie miałem do czynienia z elektroniką (nie licząc podłączania diod z rezystorem i prostych zasilaczy na LM7812) a tym bardziej z mikrokontrolerami. http://obrazki.elektroda.pl/2272591900_1...
Czemu nie działa jakieś błedy kompilatora, jak nie tak to może źle napisany kod i się przy większej optymalizacji wysypuje. Jak coś to wrzuć kod nie działający. Heh, no ok, wrzucam więc kod. Od razu jednak uprzedzam, że to jest mój pierwszy program w C i mogą występować rażące programistów błędy. Poza tym kod jest nieco rozlazły - dla mnie bardziej...
przepełnienie bufora przepełnienie timer1 przepełnienie licznika
zewnętrzny źródło dźwięk wobulator oscyloskop centralnym zamkiem renault megane
nawijarka toroid nawijarka toroid
Czy wyłączenie kotła Buderus z prądu jest bezpieczne? Pralka Candy z górnym ładowaniem nie otwiera się po praniu