С помощью этого измерителя вы сможете узнать, сколько "G" вы сможете выжать на своем авто. Измеритель в действии:
Целью данного проекта является сборка устройства, которое смогло бы измерить перегрузки, которые вы испытываете в своем автомобиле. К тому же оно должно удобно устанавливаться у лобового стекла автомобиля. Устройство имеет трехсимвольный 7-сегментный светодиодный дисплей, отображающий перегрузки в режиме реального времени с точностью до десятых. Список необходимых деталей:
- Стабилизатор напряжения LM7805 5 В
- Микроконтроллер PIC 18F452 Является «мозгом» всего устройства
- Акселерометр ADXL320 Основной сенсор - измеряет ускорение и выдает аналоговое значение эквивалентное ускорению.
- 7-сегментный светодиодный индикатор Необходим для отображения текущего значения перегрузки. Управляется микроконтроллером. Требуется 3 шт.
- Кварцевый резонатор 20 МГц Может быть заменен на кварцы частотой в 4 МГц и 8 МГц без каких-либо последствий.
- Элемент питания типоразмера «Крона» 9 В
- Пластиковый корпус для проекта
- Все необходимое оборудование для пайки
- Макетная плата
- SPST переключатель
Теперь перейдем к схеме. Схему можно разделить на три главные части : схема сенсора, в которой сенсор подключается к аналого-цифровому преобразователю микроконтроллера; схема питания, включающая в себя переключатель, стабилизатор напряжения и элемент питания; схема подключения 7-сегментных индикаторов к микроконтроллеру.
Характеристики каждой части схемы:
- Схема питания Схему питания представляет собой соединенный с стабилизатором 9 В элемент, что гарантирует стабильной напряжение в 5 В и конденсатор емкость в 10 мкФ между землей и плюсом питания.
- Схема сенсора Подключается сенсор крайне просто - соединяем аналоговый вывод микроконтроллера AN с выводом Y-axis сенсора. Остальные выводы сенсора не используются, естественно за исключением Vcc и Gnd.
- 7-сегментные светодиодные индикаторы Возможно, соединение индикатора с микроконтроллером может показаться несколько хаотичным. Причина такого соединения крайне проста - вначале писалась программа для микроконтроллера, а лишь потом разводилась схема. Попробую описать теорию работы акселерометра вкратце - акселерометр измеряет ускорение, учитывая гравитационную силу земли, поэтому его также можно использовать для измерения наклона (см. видео).
Теперь перейдем от теории к практике, а именно пошаговой инструкции:
Шаг 1 - Достаем все необходимые детали.
Шаг 2 - Подготавливаем корпус.
Шаг 3 - Отмечаем расположение выводов индикаторов на бумаге.
Шаг 4 - Просверливаем отверстия для выводов индикаторов.
Шаг 5 - Приклеиваем индикаторы к корпусу.
Шаг 6 - Просверливаем отверстие для выключателя и закрепляем его с помощью эпоксидной смолы.
Шаг 7-8 - Вырезаем нужную «фигуру» из макетной платы и помещаем ее в корпус. Устанавливаем элемент питания (это объясняет L-образную форму макетной платы).
Шаг 9 - Собираем все вместе.
Шаг 10 - Подключаем индикаторы к микроконтроллеру.
Шаг 11 - Так все должно выглядеть на данном шаге.
Шаг 12 - Просверливаем отверстия для акселерометра.
Шаг 13 - Приклеиваем акселерометр к корпусу.
Шаг 14 - Соединяем акселерометр с микроконтроллером.
Шаг 15 - «Наводим лоск» с помощью изоляционной ленты.
Шаг 16 - Прикрепляем присоски к корпусу.
Что же касается программного обеспечения, тут все намного проще.
Исходный код предоставлен ниже:
----- Begin Code -----
while(1){
update_char_display(char_disp); //Update 7-Segs
Delay1KTCYx(250); //Delay A Little While
Delay10TCYx(5); //Redundant Delay For A/D
ConvertADC(); //Do A/D Conversion
while( BusyADC() );
current_result = ReadADC();
temp = current_result - past_result;
//If Only A Slight Change Don't Update
if( temp > 2 || temp < -2 )
{
past_result = current_result;
g_val = current_result - gravity_ss;
g_val = g_val << 5;
g_val = g_val / display_divider;
if(g_val < 0)
g_val = g_val * -1;
i = 2;
}
while(i!= 255)
{
char_disp[i]=g_val%10;
g_val = g_val/10;
i--;
}
}
----- End Code -----
Используем алгоритм - измененная версия проекта (http://www.pyroelectro.com/2008/02/22/pic-g-force-meter/) Dimension Engineering.
Скачать можно здесь.
Измеритель в действии:
Как видно, измеритель показывает перегрузки и при торможении. Естественно, можно было бы применить программные фильтр для обработки данных и получения более «красивых» результатов, однако автор решил оставить получаемые данные «сырыми», т.е. необработанными. Проект был сделан исключительно ради забавы и имеет большой потенциал для дальнейшего совершенствования.