- •Выпускная квалификационная работа
- •Выпускная квалификационная работа задание
- •Реферат
- •Оглавление
- •Обзор датчиков удара и вибрации.
- •1.1 Документ регламентирующий работу датчиков удара и вибрации
- •1.2. Тензорезистивные и резистивные датчики
- •1.3 Емкостные датчики.
- •Индуктивные датчики, электромагнитные датчики.
- •1.5. Пьезоэлектрические датчик.
- •2. Применение датчиков удара и вибрации
- •2.1. Применение датчиков удара в промышленности.
- •2.2. Автомобилестроение
- •2.3. Развлечения и спорт
- •3. Разработка системы определения места удара.
- •3.1 Практическая стрельба
- •3.2 Теоретическое обоснование.
- •3.2.1 Распространение волн.
- •3.2.2 Расчеты
- •3.3 Выбор оборудования.
- •3.3.1 Блок-схема системы.
- •3.3.2 Микроконтроллер atMega2560
- •3.3.3 Интерфейс max485
- •3.3.4 Датчик вибрации.
- •Заключение.
- •Список использованных источников
- •Приложение а
Приложение а
unit PositionUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, TeEngine, Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
edtX: TEdit;
edtY: TEdit;
Label3: TLabel;
edtV: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
edtdt12: TEdit;
edtdt23: TEdit;
edtdt31: TEdit;
PaintBox1: TPaintBox;
GroupBox2: TGroupBox;
Label7: TLabel;
Label8: TLabel;
edtXMin: TEdit;
edtYMin: TEdit;
Chart1: TChart;
Series1: TFastLineSeries;
Label9: TLabel;
edtV1: TEdit;
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1Paint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Arr: array [1..150, 1..150] of double;
SArr: array [1..150, 1..150] of integer;
end;
var
Form1: TForm1;
const
x1 = 0 ; x2 = 150; x3 = 150;
y1 = 150; y2 = 0; y3 = 150;
implementation
{$R *.dfm}
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var t1,t2,t3: double;
C: double;
C1: double;
dt12, dt23, dt31: double;
i,j, k: integer;
Max: double;
Min: double;
gMin, gC: double;
xMin, yMin, gyMin, gxMin: integer;
Xa,Ya : integer;
begin
Xa := Trunc(X/4);
Ya := Trunc(Y/4);
edtX.Text := IntToStr(Xa);
edtY.Text := IntToStr(Ya);
C := StrToFloat(edtV.Text)*1000;
t1 := sqrt(sqr(Xa-x1) + sqr(Ya-y1))/C;
t2 := sqrt(sqr(Xa-x2) + sqr(Ya-y2))/C;
t3 := sqrt(sqr(Xa-x3) + sqr(Ya-y3))/C;
dt12 := Trunc((t1-t2)*1e8)*1e-8;
dt23 := Trunc((t2-t3)*1e8)*1e-8;
dt31 := Trunc((t3-t1)*1e8)*1e-8;
edtdt12.Text := FloatToStr(dt12);
edtdt23.Text := FloatToStr(dt23);
edtdt31.Text := FloatToStr(dt31);
Max := 0;
Min := 1e30;
gMin := Min;
//C1 := 6000000;
Series1.Clear;
//C1:= 5700-6100;
for k:=0 to 100 do
begin
C1 := 5700000 + k*4000;
Min := 1e30;
for i:=1 to 150 do
for j:=1 to 150 do
begin
t1 := sqrt(sqr(i-x1) + sqr(j-y1))/C1;
t2 := sqrt(sqr(i-x2) + sqr(j-y2))/C1;
t3 := sqrt(sqr(i-x3) + sqr(j-y3))/C1;
Arr[i][j] := sqr(dt12 - (t1-t2)) + sqr(dt23-(t2-t3));// + sqr(dt31 - (t3-t1));
if Arr[i][j] > Max then
Max := Arr[i][j];
if Arr[i][j] < Min then
begin
Min := Arr[i][j];
xMin := i;
yMin := j;
end;
if Min < gMin then
begin
gMin := Min;
gxMin := xMin;
gyMin := yMin;
gC := C1;
end;
end;
Series1.AddXY(C1/1000, Min*1e14);
end;
for i:=1 to 150 do
for j:=1 to 150 do
SArr[i][j] := Trunc((Arr[i][j]/Max)*255);
for i:=1 to 150 do
for j:=1 to 150 do
begin
PaintBox1.Canvas.Pixels[i*4-3,j*4-3] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-2,j*4-3] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-1,j*4-3] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-0,j*4-3] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-3,j*4-2] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-2,j*4-2] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-1,j*4-2] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-0,j*4-2] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-3,j*4-1] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-2,j*4-1] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-1,j*4-1] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-0,j*4-1] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-3,j*4-0] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-2,j*4-0] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-1,j*4-0] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
PaintBox1.Canvas.Pixels[i*4-0,j*4-0] := (SArr[i][j] shl 16) or (SArr[i][j] shl 8) or (SArr[i][j]);
end;
edtXMin.Text := IntToStr(gxMin);
edtYMin.Text := IntToStr(gyMin);
PaintBox1.Canvas.Pen.Color := clWhite;
PaintBox1.Canvas.Brush.Style := bsClear;
PaintBox1.Canvas.Ellipse(20*4,20*4,130*4,130*4);
PaintBox1.Canvas.Pen.Color := clGreen;
PaintBox1.Canvas.Brush.Color := clGreen;
PaintBox1.Canvas.Brush.Style := bsSolid;
PaintBox1.Canvas.Ellipse(X-4,Y-4,X+4,Y+4);
PaintBox1.Canvas.Pen.Color := clWhite;
PaintBox1.Canvas.Brush.Color := clRed;
PaintBox1.Canvas.Brush.Style := bsSolid;
PaintBox1.Canvas.Ellipse(gxMin*4,gyMin*4,gxMin*4+4,gyMin*4+4);
edtV1.Text := FloatToStr(gC/1000);
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
PaintBox1.Canvas.Brush.Style := bsSolid;
PaintBox1.Canvas.Brush.Color := clBlack;
PaintBox1.Canvas.Pen.Color := clBlack;
PaintBox1.Canvas.FillRect(Rect(0,0,600,600));
PaintBox1.Canvas.Pen.Color := clWhite;
PaintBox1.Canvas.Brush.Style := bsClear;
PaintBox1.Canvas.Ellipse(20*4,20*4,130*4,130*4);
end;
end.