скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыКурсовая работа: Применение автоматизированного адаптивного интерферометра для исследования наносмещений микрообъектов


Рис. 9 Главное диалоговое окно программы «motor control for 8DCMC1»

С помощью данной программы была осуществлена регистрация и синхронизация сигнала, подаваемого на АЦП, с передвижением нано-транслятора, что позволило правильно интерпретировать полученные результаты.

2.4 Экспериментальные результаты

Перемещение образцов относительно объектного пучка осуществлялась от реперного кварцевого волокна к исследуемому образцу по направлению Х, как показано на рис. 8.

Экспериментально полученная зависимость амплитуды демодулированного сигнала от положения сканирующего пучка для двух образцов с диаметром 15 мкм и 2 мкм приведена на рис. 10. При этом амплитуда колебаний образца составляла 20 нм.


Описание: C:\documents\практика\контелливер\сники обьектов под микроскопом\к_докладу\Graph1.bmp

Рис. 10 Зависимости амплитуды сигнала от положения сканирующего пучка для образцов с диаметром 15 мкм и 2 мкм

Как видно из рис. 10 характер изменения сигнала демодуляции с расстоянием от реперного оптического волокна соответствует прямому оптическому измерению с помощью микроскопа (рис. 7), что подтверждает полученные результаты.


 

Заключение

Таким образом, в настоящей работе разработана и практически реализована система регистрации малых колебаний микрообъектов с помощью адаптивного интерферометра на основе динамических ортогональных голограмм, формируемых в фоторефрактивном кристалле. Показано что такая система позволяет регистрировать колебания объектов размерами 2 мкм. Создано программное обеспечение для управления нано-позиционерами.

С учетом того, что ортогональная геометрия формирования динамической голограммы в ФРК позволяет создавать поляризационно-независимые схемы адаптивных интерферометров, разработанная измерительная система может быть использована в том числе и для исследования сложных микро- и нано- объектов, взаимодействие излучения с которыми может приводить к полной его деполяризации.


 

Список литературы

1.  B. Ilic, H. G. Craighead, S. Krylov, W. Senaratne, C. Ober, and P. Neuzil. Attogram detection using nanoelectromechanical oscillators // J. Appl. Phys. - 2004 –Vol.95.

2.  M. Sato, B. E. Hubbard, L. Q. English, and A. J. Sievers, B. Ilic, D. A. Czaplewski and H. G. Craighead. Study of intrinsic localized vibrational modes in micromechanical oscillator arrays // CHAOS - 2003. –Vol. 13, No.2 – P.702-715.

3.  L. Sekaric,a) M. Zalalutdinov, S. W. Turner, A. T. Zehnder, J. M. Parpia, and H. G. Craighead Nanomechanical resonant structures as tunable passive modulators of light // J. Appl. Phys. - 2002 –Vol.80.

4.  S. Di Girolamo, A.A.Kamshilin, R.V.Romashko, Yu.N.Kulchin, J.-C.Launay. Fast adaptive interferometer on dynamic reflection hologram in CdTe:V // Optics Express. – 2007. – Vol.15. – No.2. – P.545-555.

5.  М. П. Петров, С. И. Степанов, А. В. Хоменко. Фоточувствительные электрооптические среды в голографии и оптической обработке информации. – Л.: Наука Ленингр. отд.-ние. – 1983. – 269 с.

6.  A. Ashkin, G. D. Boyd, J. M. Dziedzic, R. G. Smith, A. A. Ballman, J. J. Levinstein, K. Nassau. Optically-induced refractive index inhomogeneities in LiNbO3 and LiTaO3 // Appl. Phys. Lett. – 1966. – V.9. – P.72.

7.  P. Gunter, J.-P. Huignard, eds. Photorefractive materials and their applications 2: Materials. – Springer Series in Optical Sciences. – 2007. – V.114. – 646 p.

8.  G. Zhang, D. Kip, D. D. Nolte, J. Xu, eds. OSA Trends in Optics and Photonics: Photorefractive Effects, Materials, and Devices. – 2005. – V.99.

9.  P. Delaye, C. Denz, L. Mager, G. Montemezzani, eds. OSA Trends in Optics and Photonics: Photorefractive Effects, Materials, and Devices. – 2003. – V.87.

10.   В. Л. Винецкий, Н. В. Кухтарев. Динамическая голография. – Киев: Наукова думка. – 1983. – 125 с.

11.   Di Girolamo S., Romashko R.V., Kulchin Y.N., Kamshilin A.A. Orthogonal geometry of wave interaction in a photorefractive crystal for linear phase demodulation // Opt. Commun. – 2010. - V.283. - P.128-131.

12.   R. V. Romashko, S. Di Girolamo, Y. N. Kulchin, and A. A. Kamshilin. Photorefractive vectorial wave mixingin different geometries// J. Opt. Soc. Am. -2010. -Vol. 27. No. 2. –P. 311-317.


Приложение

 

Программа «motor control for 8DCMC1»

Данная программа создана в среде MS Visual C++ 6.0 на базе класса MFC. Состоит из двух диалоговых окон: SERIALGATETEST_DIALOG и ABOUTBOX. Реализованы следующие функции:

1.  Взаимодействие с COM – портом компьютера. Чтение и запись информации в памяти контроллера 8DCMC1 по средствам интерфейса RS232. Эта функция реализована в виде отдельной библиотеки – SerialGate.dll.

2.  Аналог командной строки для управления шаговыми двигателями, содержащий поле ввода и поле вывода.

3.  Задание параметров работы шаговых двигателей (скорость, ускорение).

4.  2D-cканирование выбранного участка.

5.  Опрос АЦП, запись полученных данных в файл.


Листинг SerialGateTest.cpp:

#include "stdafx.h"

#include "SerialGateTest.h"

#include "SerialGateTestDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

BEGIN_MESSAGE_MAP(CSerialGateTestApp, CWinApp)

//{{AFX_MSG_MAP(CSerialGateTestApp)

//}}AFX_MSG

ON_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP()

// CSerialGateTestApp construction

CSerialGateTestApp::CSerialGateTestApp()

{

}

CSerialGateTestApp theApp;

// CSerialGateTestApp initialization

BOOL CSerialGateTestApp::InitInstance()

{

AfxEnableControlContainer();

#ifdef _AFXDLL

Enable3dControls();// Call this when using MFC in a shared DLL

#else

Enable3dControlsStatic();// Call this when linking to MFC statically

#endif

CSerialGateTestDlg dlg;

m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

}

else if (nResponse == IDCANCEL)

{

}

return FALSE;

}

Листинг SerialGateTestDlg.cpp:


#include <stdio.h>

#include <string.h>

#include <string>

#include "stdafx.h"

#include "SerialGateTest.h"

#include "SerialGateTestDlg.h"

#include <windows.h>

#include <math.h>

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

//using System;

int key=0;

//#include "thread.h"

//#include System::Threading;

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CSerialGateTestDlg dialog

CSerialGateTestDlg::CSerialGateTestDlg(CWnd* pParent /*=NULL*/)

: CDialog(CSerialGateTestDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CSerialGateTestDlg)

m_port = 5;

m_rate = 9600;

m_recieve = _T("");

m_send = _T("");

m_axsis = _T("");

m_vel = _T("");

m_asel = _T("");

m_gomr = _T("");

m_mraxsis0 = _T("");

m_mraxsis1 = _T("");

m_tapeaxsis0 = _T("");

m_tapeaxsis1 = _T("");

m_dataininput = _T("");

m_dataoutput = _T("");

m_past = _T("");

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CSerialGateTestDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CSerialGateTestDlg)

DDX_Control(pDX, IDC_RECIEVE, m_recievecontr);

DDX_Text(pDX, IDC_PORT, m_port);

DDX_Text(pDX, IDC_RATE, m_rate);

DDX_Text(pDX, IDC_RECIEVE, m_recieve);

DDX_Text(pDX, IDC_SEND, m_send);

DDX_Text(pDX, IDC_SETAXSCIS, m_axsis);

DDX_Text(pDX, IDC_SETVEL, m_vel);

DDX_Text(pDX, IDC_SETASEL, m_asel);

DDX_Text(pDX, IDC_MR, m_gomr);

DDX_Text(pDX, IDC_MRAXSIS0, m_mraxsis0);

DDX_Text(pDX, IDC_MRAXSIS1, m_mraxsis1);

DDX_Text(pDX, IDC_TAPEAXSIS1, m_tapeaxsis1);

DDX_Text(pDX, IDC_DATAEXCHANGE, m_dataininput);

DDX_Text(pDX, IDC_DATAEXCHANGE2, m_dataoutput);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CSerialGateTestDlg, CDialog)

//{{AFX_MSG_MAP(CSerialGateTestDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BUTTON2, OnOpen)

ON_WM_TIMER()

ON_BN_CLICKED(IDC_BUTTON1, OnSend)

ON_BN_CLICKED(IDC_BUTTON3, OnButton3)

ON_BN_CLICKED(IDC_ON_SETAXSIS, OnOnSetaxsis)

ON_BN_CLICKED(IDC_ON_SETACSEL, OnOnSetacsel)

ON_BN_CLICKED(IDC_ON_SETVELOS, OnOnSetvelos)

ON_BN_CLICKED(IDC_ON_MOTROON, OnOnMotroon)

ON_BN_CLICKED(IDC_ON_MOTOROFF, OnOnMotoroff)

ON_BN_CLICKED(IDC_ON_MR, OnOnMr)

ON_BN_CLICKED(IDC_ON_GO, OnOnGo)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CSerialGateTestDlg message handlers

BOOL CSerialGateTestDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE);// Set big icon

SetIcon(m_hIcon, FALSE);// Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control

}

void CSerialGateTestDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CSerialGateTestDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CSerialGateTestDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CSerialGateTestDlg::OnOpen()

{

// TODO: Add your control notification handler code here

UpdateData(true);

if(m_port == 0 || m_rate == 0)

{

MessageBox("Not correct data","Error", MB_ICONERROR);

return;;

}

bool b = sg.Open(m_port, m_rate);

if(b == false)

{

MessageBox("Can`t open Port","Error", MB_ICONERROR);

return;;

}

else

{

MessageBox("Port open OK","Info", MB_ICONINFORMATION);

}

SetTimer(1, 1000, NULL);

}

void CSerialGateTestDlg::OnTimer(UINT nIDEvent)

{

if (key==0)

{// TODO: Add your message handler code here and/or call default

char buff[128];

int rcv = sg.Recv(buff, sizeof(buff));

this->m_recievecontr.SetWindowText("");

if(rcv > 0)

{

for(int i = 0; i< rcv; i++)

this->m_recieve += buff[i];

UpdateData(false);

}

}

CDialog::OnTimer(nIDEvent);

}

void CSerialGateTestDlg::OnSend()

{

// TODO: Add your control notification handler code here

UpdateData(true);

int len = this->m_send.GetLength();

if(len > 0)

{

char* LocBuf = m_send.GetBuffer(128);

sg.Send(LocBuf, len);

m_send.ReleaseBuffer();

char ent=0x0D;

char* ent2 = &ent;

sg.Send(ent2, 1);

}

}

void CSerialGateTestDlg::OnButton3()

{

UpdateData(true);

int len = this->m_send.GetLength();

if(len > 0)

{

char ent=0x01;

char* ent2 = &ent;

sg.Send(ent2, 1);

char* LocBuf = m_send.GetBuffer(128);

sg.Send(LocBuf, len);

m_send.ReleaseBuffer();

}

}

void CSerialGateTestDlg::OnOnSetaxsis() //выбор оси

{

UpdateData(true);

int popytka=0;

//изменение активного мотора

char ctrlkey=0x01;

char* ctrlkey2 = &ctrlkey;

sg.Send(ctrlkey2, 1);

int len=1;

char* LocBuf = m_axsis.GetBuffer(128);

sg.Send(LocBuf, len);

m_send.ReleaseBuffer();

CString tp="tp";

char* LocBuf2 = tp.GetBuffer(128);

sg.Send(LocBuf2, 2);

tp.ReleaseBuffer();

//enter

char ent=0x0D;

char* ent2 = &ent;

sg.Send(ent2, 1);

}

void CSerialGateTestDlg::OnOnSetacsel() //установить ускорение

{

UpdateData(true);

CString sa="sa";

char* LocBuf2 = sa.GetBuffer(128);

sg.Send(LocBuf2, 2);

sa.ReleaseBuffer();

int len = this->m_asel.GetLength();

if(len > 0)

{

char* LocBuf = m_asel.GetBuffer(128);

sg.Send(LocBuf, len);

m_asel.ReleaseBuffer();

//enter

char ent=0x0D;

char* ent2 = &ent;

sg.Send(ent2, 1);

//проверкаtl

CString tl="tl";

char* LocBuf3 = tl.GetBuffer(128);

sg.Send(LocBuf3, 2);

tl.ReleaseBuffer();

//enter

sg.Send(ent2, 1);

//m_recievecontr.SetWindowText("0");

//CEdit::Clear;

//UpdateData(false);

}

}

void CSerialGateTestDlg::OnOnSetvelos()

{

UpdateData(true);

CString sv="sv";

Страницы: 1, 2, 3


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.