» Tema » Idea DIY »Speedometer untuk skuter

Speedometer untuk skuter

Saya bawa perhatian anda seterusnya krafiaitu, speedometer untuk skuter.
Latar belakang adalah seperti berikut: untuk kesenangan mengatasi ketidakaktifan fizikal, papan Rollersurf telah dibeli. Oleh kerana terdapat hanya dua roda di atas papan, menunggangnya memerlukan rasa keseimbangan, anda hanya boleh "berdiri" di dalamnya bergerak. Selepas memastikan bahawa selepas pergerakan berterusan pada jarak kira-kira 700 meter, roda seolah-olah tersekat di pasir dan pergerakannya sangat sukar, saya beralih kepada Internet dan pakar. Ia menjadi jelas bahawa disebabkan kelembutan bahan roda yang berlebihan untuk berat badan saya, bahan roda sangat panas dan melembutkan, bersentuhan dengan kenaikan jalan dan peningkatan kelikatan roda menjadikannya sukar untuk mengawal dan membuat tork. Selepas menggantikan roda dengan roll keras, papan meningkat dengan ketara, seperti juga dengan kawalan yang mudah. Di landasan panjang yang sama, pengereman biasa tidak berlaku, kelajuan terus meningkat, yang menyebabkan penurunan yang tidak menyenangkan.
Idea untuk mengukur kelajuan dan mengehadkan diri dalam pecutan datang, mungkin selepas kejatuhan :) Terdapat prototaip dari 2014, di mana peranti sedemikian dicipta, tetapi untuk jenis papan yang berbeza, di mana satah putaran roda tidak bergerak jauh berbanding papan dan elektronik boleh diletakkan di papan itu sendiri dengan menyambungkannya ke sensor pada roda dengan wayar yang fleksibel.
Dalam kes saya, kedua-dua sensor dan elektronik tidak boleh diletakkan pada pendakap roda, kerana kurungan (kastor) itu sendiri berputar di sekitar paksinya dengan cara bulat berbanding dengan pesawat papan.
Roller Surf Appearance


Pelaksanaan. Spesifikasi transmisi telah dipilih oleh BlueTooth kerana ketersediaan teknologi ini dan kehadirannya di smartwatch Samsung SM-V700 di tangan. Modul BlueTooth dipilih HC-05, pengawal Arduino Mini Pro, tetapi kemudiannya diganti oleh pengawal Atega168A kosong, bateri 500mAh Li-Pol dipilih untuk memenuhi dimensi castor dan penggunaan kuasa yang dianggarkan. Sebagai sensor putaran, sensor Dewan SS49E dipilih, berbeza dengan prototaip, kerana lebih stabil secara operasi. Oleh itu, lakaran itu sedikit dimodenkan. Laluan magnet yang dipasang di hub roda dianalisis dengan dua titik: penggerak pertama - magnet memasuki zon kepekaan - "platun" dan penggantian kedua - magnet keluar zon kepekaan sensor - "keturunan".Pengawal mengira peristiwa-peristiwa ini dalam tempoh masa tertentu - 1 saat dan menghantar nombor yang diterima melalui saluran komunikasi ke peranti Android, sambil menganalisis isyarat masuk secara serentak. Program untuk menerima, memaparkan, menguruskan modul telah dibuat berdasarkan prototaip dalam persekitaran Android Studio. Ia menyediakan beberapa penambahbaikan yang berkaitan dengan peningkatan imuniti bunyi. Seperti prototaip, ia mengira kelajuan dan jarak. Fungsi berguna untuk menyalakan / mematikan "lampu" - LED yang diarahkan ke hadapan - juga disimpan, kerana ia kelihatan.
Sekat tanpa penutup

Terlihat atas kiri: perlindungan balik pembalikan caj LED, suis caj kerja, bateri; di bawah: modul VT hijau, mikropengawal atmosfera AtMega168A dengan terminal siram yang dipotong terpaku pada bahagian belakangnya dengan bahagian atas kes itu.
Tutup penutup dengan sensor magnetik

Dipasang dengan kastor, modul kelihatan seperti ini:
Blok pada kastor

Dalam foto anda boleh melihat suis kuasa, kenalan untuk menyambungkan pengecas, di sisi lain unit di atas sudut di atas - LED - "lampu".
Program prototaip disokong dengan keupayaan untuk mengeluarkan isyarat bunyi dan getaran pada pelbagai acara (menghidupkan / mematikan lampu, isyarat penggera apabila melebihi had laju maksimum yang ditetapkan).
Ujian di atas meja - dalam gambar di bawah, belum diuji di jalan raya, menunggu musim panas :)
Ujian di atas meja

Projek Android Studio mempunyai kelantangan yang besar, saya akan menyiarkannya di suatu tempat dengan pautan, jika ada minat, saya membawa lakaran dengan komen.
Di hadapan minat, saya bersedia berkongsi idea dan pengalaman.
Soalan \ topik secara automatik diterbitkan dalam sosial. rangkaian tapak - tunggu jawapan di sana:

Sesuai untuk topik

Topik berkaitan

Tambah komen

    • senyumtersenyumxaxaokdontknowyahoonea
      bosawalbodohyaya-yaagresifrahsia
      maaftariandance2dance3pengampunanmembantuminuman
      berhentikawan-kawanbaikgoodgoodwiseltolaklidah
      asapbertepuk tangancraymengisytiharkanderisivejangan dengarmuat turun
      panasberalunketawa1mdamesyuaratmoskingnegatif
      not_ipopcornmenghukumbacamenakutkanmenakutkancarian
      mengejekterima kasihinito_clueumnikakutbersetuju
      burukbeeeblack_eyeblum3memerahbermegahkebosanan
      ditapiskesenanganrahsia2mengancamkemenanganyusun_bespectacled
      shokrespektloldiingatiselamat datangkrutoyya_za
      ya_dobryipembantune_huliganne_othodifludlarangantutup
1 ulasan
Penulis
Lakaran firmware ATMega168A:
/*
* Mega168 !!!
*/
#include "timer-api.h"

int Polarity = -1; // polariti nadi masukan isyarat (dalam kes saya, negatif)
Int Treshold = 500; // ambang pencetus nadi baca 1/2 Vcc = 512
int CountTurn = 0; // menyimpan bilangan revolusi untuk tempoh perakaunan
int LED = 13; // LED disambungkan ke pin PB5
int InputSignal = A5; // input untuk sensor Hall
int TurnNumber = 0; / // bilangan revolusi terkumpul
int DeltaT = 28; / // kelewatan dari hadapan untuk menentukan akhir nadi untuk kestabilan
bool Tick = false; // nilai awal, tiada tanda lagi

batal persediaan ()
{
Serial.begin (9600); // untuk penyahpepijatan
timer_init_ISR_2Hz (TIMER_DEFAULT); / Dapatkan kelewatan 1 saat !!!
pinMode (LED, OUTPUT); // output isyarat ke lampu latar (lampu depan)
pinMode (InputSignal, INPUT); // input untuk sensor Hall
}

kekosongan gelung () // di sini kita melakukan pemprosesan isyarat dari sensor dan kawalan lampu
{
jika (Tick) // kebenaran untuk melaksanakan blok jika pada selang waktu tetap
// hantar bilangan revolusi
{
Serial.println (String (CountTurn) + ";"; // untuk debugging
Tick ​​= false; // menyediakan jejak. selang masa
CountTurn = 0; / / nol bilangan revolusi selepas memindahkan ke telefon pintar
}

lain // jika tanda belum tiba - mengumpul bilangan revolusi, hidupkan lampu hidup / mati
{
/ // pengumpulan revolusi
jika (analogRead (InputSignal) {
kelewatan (DeltaT); // jangan baca apa-apa lagi
jika (analogRead (InputSignal)> Treshold) // trailing edge telah datang
{
CountTurn ++; // menumpuk bilangan revolusi pada ketibaan tepi trailing
}
}

/ // kawalan lampu
jika (Serial.available ()> 0) // baca aksara dari BTSerial
{
char command = Serial.read ();
suis (perintah)
{
kes '0': digitalWrite (LED, LOW); pecahkan; // hidupkan lampu
kes '1': digitalWrite (LED, TINGGI); pecahkan; // Matikan lampu
}
}
}
}

tidak sah timer_handle_interrupts (pemasa int)
{
Tick ​​= true;
}

Kami menasihati anda untuk membaca:

Bawa ia untuk telefon pintar ...