Рефераты. Разработка автомобильного стробоскопа






{// области первой строки, то

 LCD_com_write (0x80);// восстанавливаем его на начало

 // первой строки

}

LCD_data_write(str[a]);//Передача данных

a++;

}

}

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

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

{

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

DDRA = 0xE2;

 PORTA = 0x1D;

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

 Z1 = 0;

DDRA = 0x1F;

 PORTA = 0xE0;

}

//-------------------------Прерывание-------------------------------------------------

SIGNAL (SIG_INTERRUPT1)

{

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

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

 Pezim++;

if (Pezim < 3)

{

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

}

}


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

void Haprezenie (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

// строка

}

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

void Tahometr (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

// строка

}

}

void Stroboskop (void)

{

int c ++;

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);//вывод числового значения на ЖКИ

}

}

}

}


int main (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----------------------------

void P (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 изображен внешний вид автомобильного стробоскопа. Данное устройство выполняет следующие функции: измерение напряжения, измерение количества оборотов двигателя, измерение УОЗ. Это устройство в своем составе имеет следующие элементы: жидкокристаллический индикатор, кнопки управления работой стробоскопа («Режим и Выбор»), излучающий элемент зависимости от исполнения может быть либо лампой – вспышкой либо светодиодом.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.