Skocz do zawartości

Szałszanin

Użytkownicy
  • Zawartość

    12
  • Rejestracja

  • Ostatnio

Reputacja

11 Dobra

O Szałszanin

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    śląskie
  • Programuję w
    C++, C#

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Mnie się podoba drugi wariant, ale dał bym warunek t.Sec 》Offsec żeby program nie przegapił wyłączenia...
  2. Włączę się jako pomysłodawca tematu Od pierwszego postu się zastanawiam czy lepiej procesor czy FPGA. Program na procesor mogę napisać w 2 godziny, ale czy obsługa 7 przerwań i do tego na bieżąco mnożenie 7 macierzy z sinusami i kosinusami bieżącej wartości liczników na pewno nie zajmie zbyt dużo czasu? Przyznam, że nie policzyłem czasów przetwarzania dla takich operacji. Może i tak. Może w następnym etapie spróbuję i takiego podejścia (łatwiejsze do wykonania). Ponieważ jednak moim założeniem podstawowym jest nie gubić impulsów, intuicyjnie spodobał mi się pomysł FPGA, a do
  3. Witaj @FlyingDutch, Rozumiem, że programujemy tylko 0 … 90 stopni (0..249 z 1000 imp./obrót) bo reszta jest symetryczna, a tablicę cosinusa obchodzimy ze wzoru cos x = sin (90 - x). Kod dla dekodera dla jednego kanału (wg https://www.digikey.com/eewiki/pages/viewpage.action?pageId=62259228) : library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity quadrature_decoder is generic( PULSES_PER_ROUND : integer := 1000; DEBOUNCE_TIME : integer := 12000 --ilość cykli zegara wymagana do zarejestrowania nowej pozycji 1ms @ 12MHz ); port( clk : IN STD_LOG
  4. W załączeniu odręczny schemat kinematyki ramienia i macierze dla poszczególnych przekształceń. Jak się gdzieś nie pomyliłem Policzyłem też macierz transformacji... Fragment - macierz translacji wygląda tak : X: (((((c1 * c2 - s1 * s2) * c3) * c4 + ((c1 * c2 - s1 * s2) * s3) * s4) * c5 + (((c1 * s2 + s1 * c2) * -1) * -1) * s5) * s6 + ((((c1 * c2 + -s1 * s2) * c3) * -s4 + ((c1 * c2 + -s1 * s2) * s3) * c4)) * -c6) * H + (((((c1 * c2 + -s1 * s2) * c3) * c4 + ((c1 * c2 + -s1 * s2) * s3) * s4) * s5 + (((c1 * s2 + -s1 * -c2) * -1) * -1) * -c5) * G + ((((c1 * c2 +
  5. Cześć @FlyingDutch, Enkodery, których zamierzam użyć to: OMRON E6B2-CWZ6C Rotary Encoder Incremental 1000 p/r 5-24Vdc Mają tak jak typowe enkodery inkrementalne 6 wyprowadzeń: VCC, GND, OUT A, OUT B, OUT Z i COMMON. Wyjście open kolektor NPN. Widziałem że są też w Botlandzie: https://botland.com.pl/pl/enkodery/13057-czujnik-obrotu-enkoder-omron-e6b2-cwz6c-1000-pr-5-24v.html Producent: http://www.ia.omron.com/product/item/2449/ Pozdrawiam e6b2-c (1).pdf
  6. P.S. Mnożenie macierzy chyba nie będzie potrzebne bo przecież macierz transformacji dla danego ramienia wyznaczymy przed zaprogramowaniem Elberta i w układzie będzie trzeba tylko obliczyć bieżącą pozycję ze wzorów z macierzy transformacji. Za to będą potrzebne LUT dla sinusa i cosinusa dla 1000 pozycji enkodera i mnożenie zmienno-przecinkowych...
  7. Cześć, Widzę że temat Cię bardzo zainteresował . Ja chwilowo na krótkim urlopie nad pięknym polskim morzem - woda +16 stopni ,powietrze + 14 stopni - stąd cisza z mojej strony. Poza tym ,czekam na enkodery z Chin (mają być w tym tygodniu) - wtedy będę mógł wreszcie poeksperymentować. Koncepcję mam bardzo podobną do zaprezentowanej na początku przez Ciebie. 7 bloków dekodera + wyjście 10-bitowe (enkodery 10-bit/obrót) adresowane trzema bitami, żeby wydobyć z Elberta stan 7 liczników. Myślałem o zaadoptowaniu rozwiązania z https://www.digikey.com/eewiki/pages/viewpage.action?p
  8. Dzięki za podpowiedzi. Tak mi się wydawało, że Arduino mogłoby dać radę, ale się pogubi przy szybszych ruchach. Tego wolałbym uniknąć. Spróbuję zatem zaprząc do pracy FPGA. Co prawda mam tylko Elberta i informacje z kursu, ale powinno wystarczyć. Dam znać o postępach prac... Oczywiście marek1707 masz rację co do luzów, ale mam plan żeby ich nie było. Mam doświadczenie zawodowe z ramionami przegubowymi do laserów i tam luzów jest niewiele. Spróbuję się przymierzyć do podobnego rozwiązania.
  9. Ja bym podłączył 5V z przetwornicy do LEDów i do wejścia 5V Arduino. Wtedy omijasz stabilizator z płytki Arduino (który wymaga min. 7V) i masz jedno napięcie 5V w całym układzie. A tak być może masz jakiś konflikt wyjścia z dwóch różnych zasilaczy 5V. Czy miałeś połączone masy ze stablizatora i przetwornicy? Bo jak nie, to coś może się już nie podnieść... A może zadziałało zabezpieczenie termiczne przetwornicy?
  10. A nie jest problemem wielokrotne inicjowanie zmiennych fix, alt, data wewnątrz pętli while w funkcji Loop? Wydaje mi się, że arduino, za każdym razem przydzieli nową pamięć na te same zmienne i w końcu pamięć RAM Ci się kończy i pokazuje głupoty. Ja bym wyrzucił deklaracje zmiennych przed while….
  11. Cześć, Projektuję mechaniczny skaner 3D, tj. 7 przegubowe ramię, którego zadaniem będzie podawanie pozycji (x, y, z) końca i kierunku ostatniego elementu ramienia. Niby temat nieskomplikowany, bo "wystarczy" w 7 obrotowych przegubów wbudować enkodery optyczne i policzyć zadanie proste kinematyki :-). Widziałem, że dostępne są enkodery bezpośrednio podające pozycję i pewnie byłyby do tego celu optymalne, ale nie są zbyt tanie… Stąd pomysł by wykorzystać enkodery optyczne inkrementalne. Jak myślicie: Czy Arduino wystarczy by bez strat zliczać 7 enkoderów inkrementalnych? Czy raczej mus
  12. Cześć, Udało mi się dziś powtórzyć wasz sukces i mój Elbert też wygenerował 3 pasy z białą ramką na 23" LCD-ku firmy LG. W pierwszym podejściu też bez białej linii ramki na liniach 0. Kombinowałem z czasami, przeliczałem, a na końcu wyszło, że wystarczy wcisnąć przycisk automatycznej korekty pozycji/skali monitora i ramka jest jak trzeba za wszystkich stron... :-). Da się ją wycentrować niezależnie czy czasu impulsów synchronizacji są nieco przesunięte w lewo lub w prawo. Pewnie więc u Elvisa też wystarczyło poprawić pozycję/skalowanie monitora. Pozdrawiam!
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.