» конци » Направи си идеи »Спидометър за скутер

Спидометър за скутер

Представям на вашето внимание следващото ми занаятиа именно скоростомера за скутер.
Предисторията е следната: за удоволствие от преодоляването на физическото бездействие е закупена дъската Rollersurf. Тъй като има само две колела на дъската, язденето на нея изисква чувство за баланс, можете да я „стоите“ само в движение. След като се уверих, че след непрекъснато движение на разстояние около 700 метра, колелата сякаш се забиха в пясъка и движението беше много трудно, се обърнах към Интернет и специалисти. Стана ясно, че поради прекомерната мекота на материала на колелото за моето тегло, материалът на колелото е много горещ и омекотен, контактът с пътя се увеличава и увеличеният вискозитет на колелото затруднява контрола и създаването на въртящ момент. След замяната на колелата с по-твърда ролка дъските се увеличиха значително, както и лекотата на управление. На същия дълъг коловоз познатото спиране не се случи, скоростта продължи да се увеличава, което доведе до неприятен спад.
Идеята да измерите скоростта и да се ограничите в ускорението дойде, вероятно след падане :) Имаше прототип от 2014 г., където е създадено такова устройство, но за различен тип дъска, при която равнината на въртене на колелото не се движи много спрямо дъската и електроника може да се постави на самата платка, като я свържете към сензора на колелото с гъвкава жица.
В моя случай и сензорът, и електрониката не трябва да се поставят върху конзолата на колелата, тъй като самата скоба (колело) се върти около оста си по кръгъл начин спрямо равнината на платката.
Външен вид на ролерен сърф


Реализация. Спецификацията на сигнала беше избрана от BlueTooth поради наличието на тази технология и нейното присъствие в смарт-часовника Samsung SM-V700 под ръка. Избран е BlueTooth модул HC-05, контролерът Arduino Mini Pro, но впоследствие заменен от голия контролер AtMega168A, е избрана 500mAh Li-Pol батерия, която да отговаря на размерите на рицина и прогнозната консумация на енергия. Като сензор за въртене, сензорът на Хол SS49E беше избран за разлика от прототипа като по-стабилен в експлоатация. Съответно скицата беше леко модернизирана. Проходът на магнит, монтиран в главината на колелото, се анализира от две точки: първото задействане - магнитът навлиза в зоната на чувствителност - „взвод“ и второто задействане - магнитът излиза от зоната на чувствителност на сензора - „спускане“.Контролерът отчита тези събития за определен период от време - 1 секунда и изпраща получения номер по комуникационния канал до устройството с Android, като същевременно анализира входящите сигнали. Програмата за получаване, показване, управление на модула е създадена въз основа на прототипа в Android Studio среда. Той предвижда някои подобрения, свързани с повишаване на устойчивостта на шум. Подобно на прототипа, той изчислява скоростта и разстоянието. Полезната функция за включване / изключване на "фара" - светодиод, насочен напред в движение - също се запазва, както изглежда.
Блок без капак

Видим горе вляво: червен светодиод за защита на заряда, превключвател за работа при зареждане, батерия; отдолу: зеленият модул BT, микроконтролерът AtMega168A с изрязани клеми е залепен на гърба му с горната част на кутията.
Капак на блока с магнитен сензор

Сглобен с колелото, модулът изглежда така:
Блок на рицин

На снимката можете да видите превключвателя на захранването, контактите за свързване на зарядното устройство, от другата страна на уреда на ъгъла горе - LED - "фара".
Прототипната програма беше допълнена с възможност за издаване на звукови и вибрационни сигнали при различни събития (включване / изключване на фара, алармен сигнал при превишаване на определената максимална граница на скоростта).
Тестване на масата - на снимката по-долу, все още не е тествана на пътя, в очакване на лятото :)
Тестване на масата

Проектът за Android Studio има голям обем, ще го публикувам някъде с линк, ако има интерес, нося скица с коментари.
При наличие на интерес съм готов да споделям идеи, опит.
Въпрос \ тема се публикува автоматично в социалната мрежа. мрежа на сайта - следете отговорите там:

Подходящ за тема

Свързани теми

Добавете коментар

    • усмихвамусмивкиxaxaдобреdontknowYahooНеа
      шефдраскотинаглупакдаДа-даагресивентайна
      съжалявамтанцувамdance2dance3извинениепомощнапитки
      спиркаприятелидобърgoodgoodсвиркаприпадамезик
      димплясканеCrayдеклариратподигравателендон-t_mentionизтегляне
      топлинасърдитlaugh1MDAсрещаmoskingотрицателен
      not_iпуканкинаказвамчетаплашаплашитърсене
      присмехthank_youтоваto_clueumnikостърСъгласен
      лошоbeeeblack_eyeblum3изчервяванесамохвалствоскука
      цензурираншегаsecret2заплашвампобедаюsun_bespectacled
      ShokРеспектхахаprevedдобре дошълkrutoyya_za
      ya_dobryiпомощникne_huliganne_othodifludзабранаблизо
1 коментар
Авторът
Скица на фърмуера на ATMega168A:
/*
* Mega168 !!!
*/
#include "таймер-api.h"

int Polarity = -1; // полярност на импулса на входния сигнал (в моя случай отрицателен
int Treshold = 500; // праг на задействане на прочетения импулс 1/2 Vcc = 512
int CountTurn = 0; // съхранява броя на оборотите за отчетния период
int LED = 13; // LED свързан към PB5 щифт
int InputSignal = A5; // вход за сензор на Хол
int TurnNumber = 0; // натрупан брой обороти
int DeltaT = 28; // забавяне отпред за определяне на края на импулса за стабилност
bool Tick = false; // начална стойност, без отметка все още

настройка за невалидност ()
{
Serial.begin (9600); // за отстраняване на грешки
timer_init_ISR_2Hz (TIMER_DEFAULT); // получете закъснение с 1 секунда !!!
pinMode (LED, изход); // изход на сигнал към подсветката (фара)
pinMode (InputSignal, INPUT); // вход за сензор на Хол
}

void loop () // тук правим обработката на сигнали от сензора и контрола на фаровете
{
if (Отметнете) // разрешение за изпълнение на блока if във фиксиран интервал от време
// изпраща броя на оборотите
{
Serial.println (String (CountTurn) + ";"); // за отстраняване на грешки
Отбележете = false; // подгответе следата. времеви интервал
CountTurn = 0; // нула броя на оборотите след прехвърляне на смартфона
}

else // ако тикът още не е пристигнал, натрупваме броя на оборотите, включваме / изключваме фара
{
// натрупване на обороти
ако (analogRead (InputSignal) {
забавяне (DeltaT); // все още не четете нищо
if (analogRead (InputSignal)> Treshold) // крайният край е дошъл
{
CountTurn ++; // натрупване на броя на оборотите при пристигането на крайния край
}
}

// управление на фаровете
ако (Serial.available ()> 0) // прочетете героя от BTSerial
{
char команда = Serial.read ();
превключване (команда)
{
случай '0': digitalWrite (LED, LOW); счупете; // включете фара
случай '1': digitalWrite (LED, HIGH); break; // Изключете фара
}
}
}
}

void timer_handle_interrupts (int таймер)
{
Отметка = вярно;
}

Съветваме ви да прочетете:

Предайте го за смартфона ...