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

Jak poprawnie obsłużyć (odczytać) liniał CCD Sony ILX554A?

igon 05 Kwi 2011 22:28 1356 6
  • #1 05 Kwi 2011 22:28
    igon
    Poziom 11  

    Witam,

    Od dłuższego czasu próbuję bezskutecznie odczytać liniał CCD ILX554A. Liniał ten jest sterowany sygnałami logicznymi ale zwracana wartość jest analogowa i pewnie stąd moje problemy.

    Wartości które odczytuje są porównywalne z szumem jaki dostaje na "luźnym" przewodzie wpiętym w drugi tor analogowy mikrokontrolera - więc raczej to co zwraca mi ILX to tylko szum wynikający z zastosowania płytki prototypowej.

    Czy mógłby któryś z szanownych kolegów powiedzieć jakie ma doświadczenia z tym lub podobnym liniałem i na co ewentualnie zwrócić uwagę / jak sprawdzić czy liniał w ogóle żyje?

    Dodam, że liniał reaguje lekką zmianą wartości odczytywanych gdy oświetli się go mocniejszym światłem - niestety zmiana ta jest odczytywana prawie w całym liniale i może równie dobrze wynikać z zakłóceń a nie z rzeczywistego odczytu.

    Mój kod do odczytu wygląda mniej więcej tak (język to BASCOM):

    Kod: basic
    Zaloguj się, aby zobaczyć kod


    Byłbym wdzięczny za wszelkie rady oraz ewentualne skrawki kodu / przykłady algorytmów - cokolwiek co pozwoli mi pchnąć tą sprawę dalej lub sprawdzić czy liniał w ogóle jest sprawny.

    Niestety nie posiadam analizatora logicznego / oscyloskopu by sprawdzić przebieg sygnałów sterujących / sygnału wyjściowego. Mogę jedynie opierać się na przetworniku ADC mikrokontrolera (stosuję ATmega 64)

    Jeżeli pomyliłem dział to proszę o przeniesienie do właściwego.

    Pozdrawiam,
    Igon

    0 6
  • #2 05 Kwi 2011 23:19
    me_super
    Poziom 29  

    igon napisał:
    Witam,

    Od dłuższego czasu próbuję bezskutecznie odczytać liniał CCD ILX554A. Liniał ten jest sterowany sygnałami logicznymi ale zwracana wartość jest analogowa i pewnie stąd moje problemy.



    Jak kiedyś pisałem obsługę linijki CCD Toshiba to okazało się, że dwa sygnały zegarowe będące w przeciwfazie generowane przez ATMega mają za duże opóźnienia względem siebie, tj. pomiędzy instrukcjami zmieniającymi stany na wyjściach upływa za dużo czasu; rozwiązałem to dając jakiś zatrzask. Ale bez oscyloskopu nie ma co zaczynać, bo nawet nie wiesz czy cokolwiek wychodzi z układu ani w którym miejscu próbkować sygnał analogowy -- a to jest ważne inaczej dostaniesz śmieci.

    0
  • #3 06 Kwi 2011 00:09
    igon
    Poziom 11  

    Hmmm a z tym czasem to duże ma znaczenie? Wg. dokumentacji tego ILX'a początkowy sygnał ROG i CLK powinny być właśnie przeciwnie do siebie nastawione i występować praktycznie w tym samym momencie - ja daje to tak że załączam jeden sygnał, odczekuje ok 5 us, później zmieniam stan drugiego, kolejne 5 us i dalsza część cyklu odczytu - może tutaj byłby pies pogrzebany?

    W przypadku liniału który używałeś miało to spore znaczenie?

    Ja tutaj mam jeszcze inny problem - jak już udaje mi się coś odczytać to wychodzi na to że cały liniał CCD zachowuje się jak jeden foto element - tzn widzę wpływ światła (albo zakłóceń od niego :D) ale na odczycie wszystkich pixeli - a nie tylko paru - mimo że źródłem światła jest laser i to zbliżony maksymalnie do liniału więc raczej nie oświetla za mocno pozostałych pixeli.

    Oscyloskop mogę spróbować zdobyć na parę dni choć to raczej będzie problematyczne - jednakże jeżeli bez tego się nie obędzie to innego wyjścia nie widzę- tyle że oscyloskop który mógłbym próbować załatwić jest 1 kanałowy więc pewnie też klapa :/

    0
  • #4 06 Kwi 2011 16:02
    me_super
    Poziom 29  

    igon napisał:
    Hmmm a z tym czasem to duże ma znaczenie? Wg. dokumentacji tego ILX'a początkowy sygnał ROG i CLK powinny być właśnie przeciwnie do siebie nastawione i występować praktycznie w tym samym momencie - ja daje to tak że załączam jeden sygnał, odczekuje ok 5 us, później zmieniam stan drugiego, kolejne 5 us i dalsza część cyklu odczytu - może tutaj byłby pies pogrzebany?

    W przypadku liniału który używałeś miało to spore znaczenie?


    Chyba miało, okazało się że atmega daje za duże opóźnienia nawet jeśli instrukcje zmiany zegara są zaraz po sobie.
    Ja testowałem odczyt w ten sposób, że zalepiłem okienko kilkoma kawałkami czarnej taśmy zostawiając parę szparek a linijkę lampką oświetlałem. Na oscyloskopie było widać wzór z linijki gdy zegar był podawany na wejścia zegarowe.

    0
  • #5 06 Kwi 2011 22:40
    igon
    Poziom 11  

    A w jaki sposób dokładniej sobie kolega poradził z tymi sygnałami? Bo jakbym nawet zastosował zatrzask to dalej co? bramka negująca by dostać 2 sygnał?

    0
  • #6 07 Kwi 2011 10:56
    me_super
    Poziom 29  

    igon napisał:
    A w jaki sposób dokładniej sobie kolega poradził z tymi sygnałami? Bo jakbym nawet zastosował zatrzask to dalej co? bramka negująca by dostać 2 sygnał?


    To była jakaś bramka która na zbocze narastające przepisywała wejście na wyjście. To, co było przepisane to były dwa zanegowane sygnały zegarowe. Najpierw procesor wystawiał stany zegara (norm i zanegowany) a następnie zatrzaskiwał zatrzask aby przepisać je.

    0
  • #7 21 Kwi 2011 20:45
    igon
    Poziom 11  

    Przebadałem liniał na oscyloskopie i wydawał mi się niesprawny - odesłałem go do dostawcy i czekam na jego opinię i ewentualną wymianę gdyby był uszkodzony lub na jakieś dodatkowe informacje dotyczące wartości min / max dla długości sygnału itd - gdyby jednak był sprawny a problem był natury sterowania nim.

    0