Miernik Długości


7
Ocena: None Średnia: 7 (4 głosujących)

Urządzenie to, jak sama nazwa wskazuje, służy do pomiaru długości. Zbudowane jest w oparciu o mikrokontroler ATMEGA8, a w roli czujnika obrotów pracują dwa fototranzystory, tworząc transoptor szczelinowy. Projekt opracowałem zainspirowany pomysłem jednego z użytkowników mojej strony. pomiar długości odbywa się poprzez zliczanie impulsów generowanych przez szczeliny na kole o określonym promieniu. Dokładność pomiaru nie jest porażająca i zależy od średnicy koła za pomocą którego zostaje mierzona odległość i ilości dziur jakie się w nim znajdują. Dokładnie jest to odcinek powstały z podzielenia obwodu koła przez ilość dziur (szczelin). Pomiar uwzględnia kierunek ruchu koła, więc jest możliwość zmierzenia "ujemnych metrów". Urządzenie dobrze się sprawdza przy pomiarze dużych odległości i było projektowane z myślą o mierzeniu odcinków przewodów w instalacji elektrycznej. Dlatego zostało wyposażone w pamięć nieulotną mierzonych odcinków z możliwością ich wczytywania i kontynuowania pomiaru (można zapisać do 20 odcinków). Sterowanie miernikiem dokonujemy z poziomu klawiatury na urządzeniu (zapis, odczyt danych), oraz za pomocą przycisków "mierz" i "+2R"(dodaje dwa promienie koła do wyniku długości gdy np mierzymy od rogu do rogu pomieszczenia) które znajdują się w rączce urządzenia.

Działanie:


Schemat ideowy układu znajduje się na rysunku poniżej:

Sercem układu jest mikrokontroler U1 (ATMEGA8) wraz z rezonatorem kwarcowym X1 (16MHz) i kondensatorami C1 (22pF) i C2 (22pF). Złącze Prog (goldpin) służy do podłączenia programatora, łącznie z pojedynczym pinem resetu Res i zasilania VCC. Do złącza Zas podłączamy baterię 9V. Odcinanie zasilania następuje za pośrednictwem przełącznika S0 (wyłącznik kołyskowy). Stabilizator U2 (7805) wraz z kondensatorami C3 (220uF), C4 (47uF) i C5 (100nF) dostarcza napięcia zasilania 5V dla mikrokontrolera U1. Potencjometr P1 (10k) pozwala ustawić kontrast na wyświetlaczu W1 (LCD 16x2). Za pomocą tranzystora T1 (BC556) i rezystorów R1 (47R) i R2 (3,3k) możliwe jest programowe włączenie podświetlania wyświetlacza W1. W wersji podstawowej zastosowano wyświetlacz bez podświetlania, więc okazało się to niepotrzebne. Klawiaturę urządzenia stanowią przyciski S1 - S6 (uSwitch). Klawisze S1 oraz S4 podłączone są przez dekodery zbudowane na diodach D2 - D5 (1N4148), gdyż przewidziano tylko 4 piny na klawiaturę, a wciskanie wielu przycisków naraz czasami jest kłopotliwe. Dodatkowe złącze Sw (goldpin) pozwala wyprowadzić wszystkie przyciski za pomocą przewodu na rączkę urządzenia, gdyby obsługa z poziomu obudowy urządzenia okazała się mało wygodna. Na rączce na pewno musi się znaleźć przycisk "mierz" (zwierający do masy) podłączony do pinu PD.0 mikrokontrolera (pin numer 2 w złączu Sw), gdyż nie jest wyprowadzony na obudowie. Klawisz dodający dwa promienie okręgu do wyniku pomiaru("+2R"), został wymyślony później więc jego realizacja odbywa się poprzez jednoczesna wciśnięcie klawiszy S5 i S6. Lub za pomocą takich samych dwóch diod jak np. dla klawisza S4.

Najważniejszą częścią układu jest transoptor szczelinowy zbudowany z fototranzystorów T2 (L-932P3BT) i T3 (L-932P3BT) wraz z rezystorami R3 (10k) i R4 (10k) oraz diody świecącej na podczerwień D1, wraz z jej rezystorem ograniczającym prąd R5 (180R). Dioda nadawcza D1 świeci na fototranzystory T2 i T3 przez dziury w kole pomiarowym. Kierunek obrotu wykrywany jest na podstawie przesunięcia względem siebie przebiegów prostokątnych z fototranzystorów T2 i T3 na takiej samej zasadzie jak rolka w myszce komputerowej.

Budowa:

Układ z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. montaż należy rozpocząć od wlutowania 6 zworek na środkowej i lewej stronie płytki. Po prawej stronie odpowiednie połączenia zostaną wykonane poprzez obudowy przycisków i gdyby były zamontowane na przewodach to należy wykonać odpowiednie połączenia masy za pomocą zwór lub odcinka drutu, tak aby dioda D1 i kondensatory C1, C2 miały podłączenie do masy. Montaż pozostałych elementów należy wykonać od elementów najmniejszych do największych, bez zbędnych kombinacji. Pod mikrokontroler U1 należy zastosować podstawkę. Fototranzystory T2 i T3 muszą być odpowiednio wygięte pod kątem prostym i jeden nad drugim (patrz zdjęcie) tak aby łapały światło z diody D1 znajdującej się po drugiej stronie płytki. Światło z diody musi przechodzić przez szczelinę (dziurę) w kole, więc należy się dobrze zastanowić nad wysokością montażu diody i fototranzystorów. Fototranzystory posiadają obudowę taką jak dioda LED 3mm, identyczną jak D1. Do złącza Zas należy przylutować złącze na baterię 9V, tak zwana "kijankę" a do S0 dwa przewody do wyłącznika. Układ pasuje do obudowy Z19. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj.

Wykaz Elementów:

1x Listwa Goldpin 1x2
1x Listwa Goldpin 1x4
1x Listwa Goldpin 1x6
6x uSwitch kątowy

1x 3,3k
2x 10k
1x 47R
1x 180R
1x Potencjometr Montażowy 10k

2x 22pF
1x 100nF
1x 47uF Elektrolit
1x 220uF Elektrolit

1x Rezonator Kwarcowy 16MHz
4x 1N4148
1x BC556
2x Fototranzystor L-932P3BT
1x Dioda nadawcza Podczerwieni
1x Stabilizator 7805
1x Mikrokontroler ATMEGA8 + Podstawka
1x LCD 16x2

Programowanie:


Kod Źródłowy do miernika długości został napisany w BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

'************* Konfiguracja uC *****************
'***********************************************
'$regfile = "attiny2313.dat"
 
$regfile = "m8def.dat"
$crystal = 16000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B00000000 : Portd = &B11111111
 
'Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.0       'mirley test board 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2
Cls
Cursor Off Noblink
 
On Int0 Przzew0 Nosave
Config Int0 = Falling
Enable Int0
 
Config Timer0 = Timer , Prescale = 1024
Enable Timer0 : On Timer0 Prztimer0
 
'stale parametry
Const K = 229                                               'parametr = obwod [mm] / dziury * 10
Const Rr = 6                                                'ilosc impulsow dodawanych po kliknieciu +2r
 
Opt1 Alias Pind.2                                           'przerwanie
Opt2 Alias Pind.1                                           'drugi fototranz
Mierz_sw Alias Pind.0
Sw_port Alias Pind
 
'********** Konfiguracja uC Koniec  ************
 
'******************  Zmienne *******************
'***********************************************
Dim Licz As Long , Licz_ee As Long , Dystans As Long , Dystans_ee As Long
Dim Autocalc As Byte , N As Byte , Temp As Long , I As Byte
Dim Id_eeprom As Byte , C As Byte
 
Dim Licznik_mierz As Byte
Dim Stan_sw As Byte , Sw As Byte , Licznik_sw As Byte
 
Dim Flaga_16ms As Bit , Mierz As Bit
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Lcd "Miernik Dlugosci"
Lowerline
Lcd "  Wersja 0.9"
Wait 1
Enable Interrupts
 
Gosub Wyswietl
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
If Flaga_16ms = 1 Then
  Flaga_16ms = 0
  '*************************
 
  If Mierz_sw <> Mierz Then
    Incr Licznik_mierz
    If Licznik_mierz = 5 Then
      Mierz = Mierz_sw
      If Mierz = 1 Then Disable Int0 Else Enable Int0
    End If
  Else
    Licznik_mierz = 0
  End If
 
  Gosub Przyciski
 
  '*************************
End If
 
 
 
Loop
End
'************ Petla glowna Koniec **************
 
 
'********** Przerwanie Zewnetrzne **************
'***********************************************
Przzew0:
 If Opt2 = 0 Then Decr Licz Else Incr Licz                  'zmiana kierunku->zmiana "incr" z "decr" miejscami
 Autocalc = 0
Return
'****** Przerwanie zewnetrzne koniec  **********
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 Timer0 = 5
 
 Set Flaga_16ms
 
 If Autocalc < 10 Then
   Incr Autocalc
   If Autocalc = 10 Then Gosub Wyswietl
 End If
Return
'******** Przerwanie timer 0 Koniec ************
 
'***********************************************
'***********Wyswietlanie i przeliczanie***************
Wyswietl:
  Dystans = Licz * K                                        '[mm] * 10
  Dystans = Dystans / 100                                   '[cm]
 
  Temp = Dystans
  N = 11
  Gosub Temp_poz
 
  Locate 1 , 1
  Lcd "Dl:        "
  Locate 1 , N
  Lcd Dystans
  Lcd " [cm]"
 
  Temp = Id_eeprom * 4
  Readeeprom Licz_ee , Temp
 
  Dystans_ee = Licz_ee * K                                  '[mm] * 10
  Dystans_ee = Dystans_ee / 100                             '[cm]
 
  Temp = Dystans_ee
  N = 11
  Gosub Temp_poz
 
  Locate 2 , 1
  Lcd "0"
  If Id_eeprom >= 10 Then Locate 2 , 1
  Lcd Id_eeprom ; ":       "
  Locate 2 , N
  Lcd Dystans_ee
  Lcd " [cm]"
 
Return
'***********************************************
 
'***********************************************
'*********** obliczanie pozycji ***************
Temp_poz:
  If Temp < 0 Then
   Decr N
   Temp = -temp
  End If
  For I = 1 To 5
    Temp = Temp / 10
    If Temp > 0 Then Decr N
  Next I                                                    'K
Return
'***********************************************
 
'***********************************************
'*****************  Przyciski     **************
Przyciski:
Sw = Sw_port And &B01111000                                 'maska na piny nieu?ywane jako sw
Shift Sw , Right , 3
 
If Sw <> 15 And Stan_sw = Sw Then
    Incr Licznik_sw
    If Licznik_sw = 62 Then
      Select Case Stan_sw
        Case &B00000101:                                    'CLR Epromm klawisz S1
          Cls
          Lcd "Kasowanie..."
          Temp = 0
          For C = 0 To 80
            Writeeeprom Temp , C
          Next C
          Id_eeprom = 0
 
        Case &B00000111:                                    'CLR klawisz S2
          Licz = 0
 
        Case &B00001011:                                    'Load klawisz S3
          Temp = Id_eeprom * 4
          Readeeprom Licz_ee , Temp
          Licz = Licz_ee
 
        Case &B00001001:                                    'Up Klawisz S4
          Incr Id_eeprom
          If Id_eeprom = 20 Then Id_eeprom = 0
 
        Case &B00001101:                                    'Down Klawisz S5
          Decr Id_eeprom
          If Id_eeprom = 255 Then Id_eeprom = 19
 
        Case &B00001110:                                    'Save Klawisz S6
          Temp = Id_eeprom * 4
          Writeeeprom Licz , Temp
 
        Case &B00001100:                                    '+2R Klawisz na kablu, obok przycisku "mierz"
          Licz = Licz + Rr
      End Select
 
      Autocalc = 9
    End If
  Else
    Stan_sw = Sw
    Licznik_sw = 54
  End If
 
Return
'***********************************************

Poniżej przedstawione są ustawienia fusebitów mikrokontrolera(Zrzut z programu Burn-O-Mat):

Część Mechaniczna:

Budowa mechaniczna tego urządzenia nie jest skomplikowana, wszystko można zobaczyć na zdjęciach. Koło które pracuje w układzie zostało kupione w Castoramie, więc myślę że nie będzie problemu z jego zdobyciem. Szkieletem całej konstrukcji jest kawałek płaskownika 5mm szerokiego na 2cm. Największą trudność stanowi jego wygięcie a w zasadzie odpowiednie skręcenie i bez imadła w tym przypadku ani rusz. Do przykręcenia koła została wykorzystana śruba M8 i kilka nakrętek. Po przewierceniu płaskownika na końcu, wiertłem 8mm skręcamy jego końcówkę (ok 5cm od końca) tak aby do płaskownika można było przykręcić obudowę urządzenia. Płaskownik oprócz skręcenia należy jeszcze podgiąć nieco do góry (o ile to trzeba przymierzyć obudowę) tak aby obudowa była umieszczona wzdłuż promienia. Wynika to z faktu że fototranzystory umieszczone jeden nad drugim muszą byc zamontowane prostopadle do promienia koła.

Wycięcie w obudowie można wykonać wzorując się na obrysie płytki.

Zdjęcia Projektu:

ZałącznikWielkość
Schemat74.08 KB
Płytka16.93 KB
Płytka (odbicie lustrzane)16.99 KB
Płytka (3 na stronie)45.48 KB
Montowanie22.96 KB
Kod Źródłowy5.72 KB
Program po kompilacji (BIN)2.52 KB
Program po kompilacji (HEX)7.12 KB
Panel16.74 KB
Panel (4 na stronie)66.75 KB



Portret użytkownika mirley

Re: Transoptory

Nie wiedząc nic na temat zastosowanych w myszce układów nie dowiesz się jak je podłączyć. postaraj się odczytać numer seryjny tego transoptora i poszukać o nim informacji.... Wydaje mi się że tam jest osobno dioda na podczerwień i dwa czujniki na podczerwień (fotodiody lub fototranzystory) w jednej obudowie. Dokłądnej budowy nie znam. Napewno pomoże także analiza podłączeń na płytce myszki

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika hunter

Problem z diodą nadawczą i fototranzystorem

Witam, mam mianowicie problem taki że układ jak i problem funkcjonuje tak jak powinien, niestety fototranzystory nie reagują na diodę podczerwieni(mają taką samą długość fali). Jedynym źródłem światła na jaki reaguje jest mocna dioda LED z latarki telefonu. Polaryzacja jest poprawna, połączenie również. Zmieniałem zarówno diody jak i fototranzystory i bez efektu. Podczas świecenia na fototrazystorach zmienia się napięcie jednak minimalnie 4,9-5V.

Portret użytkownika mirley

Re: Fototranzystory

A masz dokładny model tych fototranzystorów, u mnie bardzo ostro reagowały na zmianę oświetlenia

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.