» fire » Idei de bricolaj »Vitezometru pentru scuter

Vitezometru pentru scuter

Îți aduc în atenție următorul meu meșteșuguriși anume, vitezometrul pentru scuter.
Fundalul este următorul: pentru plăcerea de a depăși inactivitatea fizică, placa Rollersurf a fost achiziționată. Deoarece există doar două roți pe placă, pentru a merge pe ea este nevoie de un sentiment de echilibru, puteți „sta” doar în mișcare. După ce m-am asigurat că după o mișcare continuă la o distanță de aproximativ 700 de metri, roțile păreau să se blocheze în nisip, iar mișcarea a fost foarte dificilă, am apelat la internet și specialiști. A devenit clar că, datorită moliciunii excesive a materialului roții pentru greutatea mea, materialul roții este foarte cald și înmuiat, contactul cu șoseaua crește și vâscozitatea crescută a roții face dificilă controlarea și crearea cuplului. După înlocuirea roților cu o rolă mai grea, plăcile au crescut semnificativ, la fel și ușurința de control. Pe aceeași pistă lungă nu a avut loc frânarea familiară, viteza a continuat să crească, ceea ce a dus la o scădere neplăcută.
Ideea de a măsura viteza și de a vă limita în accelerație a venit, probabil după o cădere :) A existat un prototip din 2014, unde a fost creat un astfel de dispozitiv, dar pentru un alt tip de placă, în care planul de rotație al roții nu se mișcă mult în raport cu placa și electronică poate fi așezat chiar pe placă prin conectarea acestuia la senzorul de pe roată cu un fir flexibil.
În cazul meu, atât senzorul, cât și elementele electronice nu trebuie așezate pe suportul roții, deoarece suportul propriu-zis (rola) se rotește în jurul axei sale într-un mod circular în raport cu planul plăcii.
Aspectul surferului cu rolele


Realizare. Specificația de transmisie a fost aleasă de BlueTooth datorită disponibilității acestei tehnologii și a prezenței sale în smartwatch-ul Samsung SM-V700 la îndemână. Modulul BlueTooth a fost selectat HC-05, regulatorul Arduino Mini Pro, dar înlocuit ulterior de controlerul AtMega168A gol, o baterie Li-Pol de 500mAh a fost selectată pentru a corespunde dimensiunilor și a consumului de energie estimat. Ca senzor de rotație, senzorul Hall SS49E a fost selectat, spre deosebire de prototip, ca mai stabil din punct de vedere operațional. În consecință, schița a fost ușor modernizată. Trecerea unui magnet montat în butucul roții este analizată prin două puncte: primul de acționare - magnetul intră în zona de sensibilitate - „pluton” și al doilea de acționare - magnetul iese din zona de sensibilitate a senzorului - „coborârea”.Controlerul numără aceste evenimente într-o perioadă de timp specificată - 1 secundă și trimite numărul primit prin canalul de comunicare către dispozitivul Android, analizând simultan semnalele primite. Programul pentru primirea, afișarea, gestionarea modulului a fost creat pe baza prototipului în mediul Android Studio. Acesta prevede câteva îmbunătățiri legate de creșterea imunității la zgomot. La fel ca prototipul, calculează viteza și distanța. Funcția utilă de pornire / oprire a „farului” - un LED orientat în mișcare - este de asemenea salvată, după cum pare.
Blocați fără capac

Vizibil în stânga sus: LED de protecție inversare inversă sarcină, comutator sarcină-lucru, baterie; mai jos: modulul VT verde, microcontrolerul AtMega168A cu terminale tăiate la culoare este lipit pe spate cu partea superioară a carcasei.
Capac de bloc cu senzor magnetic

Asamblat cu rola, modulul arată astfel:
Bloc pe rotină

În fotografie puteți vedea întrerupătorul de alimentare, contactele pentru conectarea încărcătorului, pe partea cealaltă a unității din colțul de deasupra - LED - „far”.
Programul prototipului a fost completat cu abilitatea de a emite semnale de sunet și vibrații la diferite evenimente (pornirea / oprirea farului, un semnal de alarmă la depășirea limitei de viteză maximă specificată).
Testarea pe masă - în fotografia de mai jos, încă nu a fost testată pe drum, așteptând vara :)
Testarea pe masă

Proiectul Android Studio are un volum mare, îl voi posta undeva cu un link, dacă există interes, aduc o schiță cu comentarii.
În prezența interesului, sunt gata să împărtășesc idei, experiențe.
Întrebarea \ topic este publicată automat în social. rețea de site-uri - urmați și răspunsurile de acolo:

Potrivit pentru subiect

Subiecte conexe

Adaugă un comentariu

    • zâmbetzâmbetexaxabinedontknowYahooNea
      șefzgârieturăpăcălidada-daagresivsecret
      scuzedansdance2dance3iertareajutorbăuturi
      oprireprietenibungoodgoodfluiersincopălimbă
      fumaplauzeCrayvestimbatjocoritorDon-t_mentiondescărcare
      căldurămânioslaugh1mdaîntâlniremoskingnegativ
      not_ifloricele de porumbpedepsicititsperiasperiecăutare
      batjocurăthank_youacestto_clueUmnikacutconveni
      răubeeeblack_eyeblum3roșilăudăroșenieplictiseală
      cenzuratpleasantrysecret2amenințavictorieyusun_bespectacled
      ShokRespektlolprevedbun venitKrutoyya_za
      ya_dobryiajutorne_huliganne_othodifludinterdicțieînchide
1 comentariu
Autorul
Schiță firmware ATMega168A:
/*
* Mega168 !!!
*/
#includeți „timer-api.h”

int Polarity = -1; // polaritatea pulsului semnalului de intrare (în cazul meu, negativ
int Treshold = 500; // pragul de declanșare al impulsului de citire 1/2 Vcc = 512
int CountTurn = 0; // păstrați numărul de revoluții pentru perioada contabilă
LED int = 13; // LED conectat la pinul PB5
int InputSignal = A5; // intrare pentru senzor Hall
int TurnNumber = 0; // număr acumulat de revoluții
int DeltaT = 28; // întârzierea din față pentru a determina capătul pulsului pentru stabilitate
bool Tick = fals; // valoarea inițială, nici o bifă încă

void setup ()
{
Serial.begin (9600); // pentru depanare
timer_init_ISR_2Hz (TIMER_DEFAULT); // primiți o secundă de întârziere !!!
pinMode (LED, OUTPUT); // ieșire semnal către lumina de fundal (far)
pinMode (InputSignal, INPUT); // intrare pentru senzor Hall
}

void loop () // aici facem procesarea semnalelor de la senzor și controlul farurilor
{
if (Tick) // permisiunea de a executa blocul if la un interval de timp fix
// trimiteți numărul de revoluții
{
Serial.println (String (CountTurn) + ";"); // pentru depanare
Tick ​​= false; // pregătiți urmele. interval de timp
CountTurn = 0; // zero numărul de rotații după transferul la smartphone
}

altfel // dacă încă nu a sosit bifa, acumulăm numărul de rotații, pornim / oprim farul
{
// acumularea de revoluții
if (analogRead (InputSignal) {
delay (DeltaT); // încă nu citiți nimic
if (analogRead (InputSignal)> Treshold) // marginea finală a venit
{
CountTurn ++; // acumulați numărul de rotații la sosirea muchiei de finală
}
}

// control far
if (Serial.available ()> 0) // citiți personajul din BTSerial
{
comanda char = Serial.read ();
comutator (comandă)
{
carcasa „0”: digitalWrite (LED, LOW); sparge; // aprinde farul
carcasa '1': digitalWrite (LED, HIGH); sparge; // Opriți farul
}
}
}
}

void timer_handle_interrupts (int timer)
{
Tick ​​= adevărat;
}

Vă sfătuim să citiți:

Înmânează-l pentru smartphone ...