Spójrz na typowe, przemysłowe czujniki optyczne. Np.:
http://www.sels.com.pl/index.php?cPath=4
Możesz też przejrzeć ofertę TME:
http://www.tme.pl/katalog/index.phtml?i ... &from=tree
Będziesz mieć orientację co do cen.
IMHO Ciebie będą interesować czujniki transmisyjne (nadajnik->odbiornik) lub odbiciowe (czujnik_Tx_Rx<->obiekt), tzn. wykrywające odbicie wiązki od połyskującego obiektu. Czujniki odbiciowe powinny być tańsze niż parka transmisyjna. Ze względu na charakter szkła nie jestem przekonany do wykorzystania czujników refleksyjnych (w układzie czujnik_Tx_Rx<->lusterko)
Widzę to tak:
Skoro butelki się stykają, to trzeba umieścić czujniki na wysokości szyjek, tak aby mieć możliwość jednoznacznego rozróżnienia między "butelka" a "przerwa"
Przezroczyste szkło jest o tyle kłopotliwe, że nie stanowi jednoznacznej przeszkody dla wiązki światła. Światło wnika do środka po czym ulega wielokrotnym odbiciom i załamaniom. Spróbuj przesunąć butelkę przez wiązkę światła ze wskaźnika laserowego. To co się pojawia na ekranie za butelką, przypomina filmową impresję na temat tańca św. Wita.

Dlatego w trakcie przejazdu jednej szyjki przez strefę obserwacji (tzn. przed czujnikiem odbiciowym lub pomiędzy nadajnikiem a odbiornikiem transmisyjnym) można się spodziewać nie jednego a kilku chaotycznych impulsów z wyjścia czujnika.
Jeżeli butelki przesuwają się na transporterze z przewidywalną i w miarę stałą prędkością to być może wystarczy jeden czujnik (jedna bariera) i bramka czasowa. Zliczenia kolejnej sztuki dokonujemy w momencie wyłapania pierwszej zmiany stanu na wyjściu czujnika ( tzn. wejścia butelki w strefę obserwacji). Po czym ignorujemy kolejne wariactwa na linii, przez pewien czas - na tyle długi, aby zaliczona butelka zdążyła odjechać w siną dal a zarazem na tyle krótki, żeby nie zgubić kolejnej szyjki. Wymagany czas martwy będzie zależny od średnic butelek i ich szyjek oraz szybkości i powtarzalności przesuwu.
Jeżeli spodziewasz się nieregularności transportu lub różnych rozmiarów butelek to proponuję zastosowanie dwóch czujników przesuniętych o pół średnicy butelki oraz przerzutnika RS (może być programowy). Warunkiem zaliczenia "sztuki" bedzie zarejestrowanie zaburzenia kolejno przez dwa czujniki. Tzn. pierwszy czujnik ustawia przerzutnik (Set), drugi go kasuje (Reset). Ujemne zbocze na wyjściu przerzutnika (towarzyszące wejściu szyjki w drugą strefę) stanowi sygnał do zaliczenia egzemplarza. Jeden warunek: średnica szyjki musi być mniejsza niż połowa średnicy butelki. Czyli przez wejściem w drugą strefę szyjka musi całkowicie wyjechać ze strefy pierwszej.
Teoretycznie każdy czujnik ma własną modulację co uniezależnia je od zakłóceń zewnętrznych. Jednak, dmuchając na zimne, zwróciłbym uwagę, żeby sąsiednie czujniki nie oświetlały się wzajemnie światłem rozproszonym na boki przez szkło. Np. przez postawienie szczelinowej przesłony tuż za butelkami lub umieszczenie czujników w długich tulejach, oksydowanych na czarny mat.
A co do czujników:
Wybierz typ zasilany napięciem stałym (DC 10..30V) i z wyjściem tranzystorowym PNP lub NPN. Z wyjścia takiego czujnika możesz zasilić diodę transoptora (prawie bezpośrednio, tzn. przez prosty układ RCD ograniczający prąd i tłumiący ew. zakłócenia impulsowe) , a prosto z transoptora wejść na port uC. Ponieważ masz do czynienia ze środowiskiem przemysłowym to nie ryzykuj pominięcia optoizolacji.
Czujnik z wyjściem PNP będzie wygodniejszy, bo z kolektora PNP wchodzisz stanem wysokim na wejście sterownika zawierającego transoptor odniesiony do masy.
--
MDz