Смекни!
smekni.com

Разработка автомобильного стробоскопа (стр. 6 из 10)

{

Z1 = UGL;//сдвинуть периода на градус

R++;//отсчет градусов

Pezim++;

if(Pezim< 3)

{

_delay_loop_2(31250);}//задержка в 1 секунду

}

}

//---------Процедура расчета напряжения-----------------------------------------

voidHaprezenie (void)

{

DDRA = 0xE2;

PORTA =0x1D;

ADCSRA = (1<<ADSC); //запуск АЦП

loop_until_bit_is_set(ADCSRA,ADIF); //ожидаемфлагпрерывания ADIF

ZhachPreob = (ADCH*255) + ADCL; //вычисляемтекущеезначение

// преобразования

Napr = ZhachPreob*5/255; //получим значение измеренного

// напряжения в десятичной форме

sprintf(buffer,"%06u",Napr); //форматирование - представление

//числового результата

LCD_out_str (buffer,0x40);//вывод числового значения на ЖКИ, 2

// строка

}

//------------------------------------------------------------------------------

voidTahometr(void)

{

if(PIND & 0x01)== 0x01)//высоковольтный провод (емкостной //синхронизатор)

{

CurrentTime = TCNT1; //записываем текущее значение таймера

//если нет переполнения, то

if (CurrentTime > PreviousTime) T = CurrentTime - PreviousTime;

//если есть переполнение Т/С

else T = 0xFFFF + CurrentTime - PreviousTime;

PreviousTime = CurrentTime;//текущеезначениесталопредыдущим

U=60.0*2*31250/(T);//скорость вращения коленвала

sprintf(buffer,"%06u",U); //форматирование

LCD_out_str (buffer,0x40);//Вывод числового значения на ЖКИ, 2

// строка

}

if(PIND & 0x04)== 0x04)//низковольтный провод (коммутатор)

{

CurrentTime = TCNT1; //записываем текущее значение таймера

//если нет переполнения, то

if (CurrentTime > PreviousTime) T = CurrentTime - PreviousTime;

//если есть переполнение Т/С

else T = 0xFFFF + CurrentTime - PreviousTime;

PreviousTime = CurrentTime;//текущеезначениесталопредыдущим

U=60.0*31250/(0.5*T);//скорость вращения коленвала

sprintf(buffer,"%06u",U); //форматирование

LCD_out_str (buffer,0x40);//вывод числового значения на ЖКИ, 2

// строка

}

}

voidStroboskop (void)

{

intc ++;

CurrentTime = TCNT1;//записываем текущее значение таймера

//если нет переполнения, то

if (CurrentTime > PreviousTime) T = CurrentTime - PreviousTime;

//если есть переполнение Т/С

else T = 0xFFFF + CurrentTime - PreviousTime;

PreviousTime = CurrentTime;//текущеезначениесталопредыдущим

if (c=3)

{

if(PIND & 0x01)== 0x01)высоковольтный провод (емкостной //синхронизатор)

{

UGL=T/720; //2 оборота 1 импульс

n = 31250/T; // частота искрообразований

R = 0;//обнуление счетного регистра

Z = 0;

while ((PINB & 0x01)== 0x01) //пока режим нажат в цикле "режим"

i = 0;

{

for (i = 0, i = n, i ++)//импульсына HL

{

if (i = 1) P();

else if (i = n/2) P();

else if (i = n) P();

_delay_loop_2(T/n);

sprintf(buffer,"%06u",R); //форматирование

LCD_out_str (buffer,0x40);//вывод числового значения на ЖКИ

}

}

}

if(PIND & 0x04) == 0x04)//низковольтный провод (коммутатор)

{

UGL=T/180; //1 оборот 2 импульс

n = 31250/T; // частота искрообразований

R = 0;//обнуление счетного регистра

Z = 0;

while ((PINB & 0x10)== 0x10) //пока режим нажат в цикле "режим"

i = 0;

{

for (i = 0, i = n, i ++)//импульсына HL

{

if (i = 1) P();

else if (i = n/2) P();

else if (i = n) P();

_delay_loop_2(T/n);

sprintf(buffer,"%06u",R); //форматирование

LCD_out_str (buffer,0x40);//вывод числового значения на ЖКИ

}

}

}

}

intmain (void)

{

//--------------------------------/*Настройка портов*/-------------------------------

DDRB = 0x00;//PB0 - режим

PORTB =0xFF;

DDRD = 0x00;// PD2 - выбор (по внешнему прерыванию),

PORTD =0xFF;

DDRA = 0xE2;//PA1-вход c датчика напряжения

PORTA =0x1D;//PA2-выход на лампу HL

//-------------------------------------------------------------------------------------------

//-------------------------------/*Настройка таймера*/------------------------------

TCCR1A = 0;//режим ШИМ выключен

TCCR1B = _BV(CS12);//коэффициент деления частоты системной

// синхронизации = 256

//-------------------------------------------------------------------------------------------

//--------------------------------/*Настройка АЦП*/---------------------------------

ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS2);//ADEN-разрешь

// работу АЦП, делитель частоты

// АЦП =64(8000000МГц/64=125кГц)

ADMUX = (1<<ADLAR)| (1<<REFS0);//выравнивание результата

// по правому краю выбран первый канал

// напряжение питания AVcc

//-------------------------------------------------------------------------------------------

//---------------------------------/*Настройка прерываний*/-----------------------

GICR = 0x40;//разрешить прерывания по выводу INT0

MCUCR = (1<<ISC11)|(1<<ISC10)|(1<<ISC01)|(1<<ISC00);//генерация внешних прерываний по нарастающему фронту

//-------------------------------------------------------------------------------------------

sei ();//разрешить прерывания

//----------------------------------------------ЖКИ--------------------------------------

LCD_init();//инициализация

while(1)

{

Pezim = 0;//обнуление счетного регистра

LCD_out_str (str1,0x00);

while ((PINB & 0x01) == 0x01)

{

if (Pezim ==1) Haprezenie ();

if (Pezim ==2) Tahometr ();

if (Pezim ==3) Stroboskop ();

if (Pezim ==3) LCD_out_str (str2,0x00);//стробоскоп

if (Pezim ==2) LCD_out_str (str3,0x00);//тахометр

if (Pezim ==1) LCD_out_str (str4,0x00);//вольтметр

}

}

}

При использовании стробоскопа с лампой вспышкой необходимо заменить «процедуру Импульс 1» на «процедуру Импульс 2»

//---------------------------------Процедура Импульс 2----------------------------

voidP (void)//формирование импульса к лампе вспышке

{

if (Z1>Z) { _delay_loop_2(Z1);}

DDRA = 0xE2;

PORTA = 0x1D;

_delay_loop_2(40);//длительностьвспышки

Z1 = 0;

DDRA = 0x1F;

PORTA = 0xE0;

}


8. ПЕЧАТНЫЕ ПЛАТЫ

Для обеспечения нормальной работы электронных устройств, необходимо чтобы печатные платы, на которых монтируются электрические схемы, удовлетворяли целому ряду требований:

1) В зависимости от числа проводящих слоев содержащих печатные проводники печатные платы делятся на:

- односторонние;

- двухсторонние без металлизации отверстий,

- двухсторонние с металлизацией отверстий;

- многослойные.

В зависимости от точности выполнения элементов печатного рисунка печатные платы в соответствии с ГОСТ23751 делятся на 5 классов точности.

2) Печатные платы 1 и 2 класса точности изготавливаются из прецизионного сырья на простом технологическом оборудовании. Печатные платы 3 и 4 класса точности изготавливаются чистого сырья на простом технологическом оборудовании. Печатные платы 5 класса точности изготавливают из чистого сырья на прецизионном оборудовании.

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

4) Для обеспечения постоянства электрических параметров печатной платы используются металлические и неметаллические конструкционные покрытия.

Металлические конструкционные покрытия используются для увеличения нагрузочной способности по току и улучшения пайки выводов к печатным площадкам (Сплав РОЗЕ).

Неметаллические конструкционные покрытия:

- лак УР-231, который наносят на печатные проводники для защиты их от электрических замыканий на металлические конструкционные элементы аппаратуры;

- эмали для защиты печатной платы от расплавленного припоя при пайке групповым методом.

4) Трассировка печатных проводников

1) Печатные проводники должны располагаться равномерно по всей площади печатной платы.

2) Печатные проводники должны быть параллельны сторонам печатной платы, либо быть под углом кратным 15 град.

3) Существуют две разновидности трассировки печатных плат:

- прямая (для односторонних и двухсторонних печатных плат);

- ортогональная или координатная (для двухсторонних печатных плат).

4) Расстояние от края печатной платы до ближайшего печатного проводника должно быть не менее толщины печатной платы.

5) Расстояние между проводниками должно быть максимально возможным;

6) Если пайка печатного узла выполняется волной, то печатные проводники на стороне пайки должны быть расположены параллельно движению волны припоя.

ба


9. КОНСТРУКТОРСКАЯ ЧАСТЬ

На рисунке 9.1 изображен внешний вид автомобильного стробоскопа. Данное устройство выполняет следующие функции: измерение напряжения, измерение количества оборотов двигателя, измерение УОЗ. Это устройство в своем составе имеет следующие элементы: жидкокристаллический индикатор, кнопки управления работой стробоскопа («Режим и Выбор»), излучающий элемент зависимости от исполнения может быть либо лампой – вспышкой либо светодиодом.

Питание стробоскоп получает от бортовой сети автомобиля.

Рисунок 9.1 – Внешний вид стробоскопа


10. ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКАЯ ЧАСТЬ

Разработка и создание автомобильного стробоскопа с микроконтроллерным управлением относится к научно-исследовательской работе (НИР).

Затраты на проведение НИР Знир, в руб по данной устройству определяются по формуле [18]:

Знирзпотчнрм,(10.1)

гдеЗзп – затраты на заработную плату руководителя, инженера исследователя и техника;

Зотч – отчисления на социальное, медицинское страхования и в другие фонды;

Знр – затраты на накладные расходы;

Зм – затраты на материалы и оборудование.

Заработная плата исполнителей работ состоит из основной и дополнительной заработной платы [19]. Исходные данные для расчёта затрат на заработную плату исполнителей работ сведены в таблицу 10.1.

Таблица 10.1 ― Исходные данные для расчёта затрат на заработную плату

Наименование величины Обозна-чение Единица измерения Численное значение
Период проведения НИР Тнир неделя 16
Число часов работы в месяц (из расчёта, что в месяце 20 рабочих дня) Тмес час 160
Разряд руководителя (главного научного сотрудника) Рр 6
Коэффициент разрядной сетки руководителя Кр 1.71
Разряд инженера-исследователя Ри 4
Коэффициент разрядной сетки инженера-исследователя Ки 1.33
Разряд техника Рт 3
Коэффициент разрядной сетки техника Кт 1.21
Минимальная заработная плата Змин руб. 5000

Месячные оклады исполнителей работ определяются на основании минимальной заработной платы для работников госбюджетных организаций России с учётом коэффициента разрядной сетки и составляют: