Halo semuanya!Saya belum menulis apa pun untuk waktu yang lama, sekarang ini lebih merupakan sumber berita daripada yang praktis. Saya akan mencoba memperbaiki situasinya. Saya akan memberi tahu Anda tentang pengembangan speedometer HUD. Meskipun bukan proyeksi laser , namun harganya terjangkau dan ringkas.PendahuluanItu dimulai dengan fakta bahwa saya mendapat indikator tujuh-segmen 3,3 "besar di tangan saya. Saya memesannya untuk arloji yang tidak pernah dilahirkan. Saya punya 4 buah, di Lot 5, orang Cina menempatkan enam. Setelah memperkirakan ukuran, kecerahan, dan pantulan dari kaca depan, saya memutuskan - ini dia. Karena ukurannya, gambar tidak dapat dipisah, dan kecerahan dapat digunakan bahkan di bawah sinar matahari langsung. Saya langsung setuju bahwa orang Cina memiliki barang jadi yang indah yang cukup murah (semua harga pada saat penulisan) - dari 1800 rubel. (tutup mata kita untuk tidak sportif keputusan tersebut):1. Hal ini diperlukan untuk lem film pada kaca - meskipun transparan, tetapi semua tinjauan tumpang tindih, tapi aku tidak seperti berada pada kaca yang mencegah Hampir tidak duduk, mendorong kursi - dan film harus, dan bahkan lem Well .. dengan film, hampir tidak ada yang terlihat di hari yang cerah.2. Anda tidak dapat merekatkan film, maka jumlahnya (cukup kecil) dua kali lipat, dan tidak ada yang terlihat di bawah sinar matahari.Sebagai permulaan, hasilnya adalah tidak ada film di mana pun di kaca dan bahkan pada siang hari:
Di bawah potongan, saya berjanji banyak gambar, video biasa-biasa saja, kode dan teks - semua dalam tradisi terbaik.TeoriIdenya sederhana - untuk jangka waktu tertentu kita menghitung jumlah pulsa dari sensor kecepatan. Sebagai CPU, ATMega8 yang sederhana dan terjangkau.Kesulitan pertama ternyata adalah koordinasi MK 5 V dan indikator 7.5 V. Fantasi menggambar diagram tumpukan transistor dan resistor (7 elemen untuk indikasi dinamis). Dari semua google, hanya satu artikel yang membantu saya mengganti indikator di arloji, maaf saya kehilangan alamatnya. Saya mengambil kesempatan ini untuk mengucapkan terima kasih kepada penulis atas ide untuk menggunakan TD62783 (dari 5 pcs per lot). Sebenarnya, ini adalah driver indikator tujuh segmen, di dalam unit transistor.Selanjutnya, konverter DC / DC. Dibuat di MC34063, saya punya banyak, saya punya stok. Saya menghitungnya pada kalkulator, memeriksanya dengan tester - 7.5 V. Dalam tes lapangan ternyata sedikit, kecerahannya tidak cukup, meningkat menjadi 10 V.Kecerahan disesuaikan berdasarkan pembacaan sensor cahaya, yang merupakan photoresistor Tiongkok biasa.Hasilnya, rangkaian tersebut berubah sebagai berikut:
Praktik Imencetak papan sirkuit tercetak TopoR . Saya menggunakan penempatan otomatis, meskipun saya memperbaiki sebagian besar elemen secara manual. Tetapi kemajuan harus bekerja untuk saya, dan bukan hanya saya untuk kemajuan. Ternyata kecantikan:
Dengan lebar badan, U4 terjawab, saya harus menyelesaikan trek dan tidak menyolder kaki ke-11.Tampilannya dalam kehidupan nyata:

Orang tak terduga berikutnya merangkak dalam perangkat lunak (saya tidak akan memberi tahu saya lupa mirror 2 dan 5, 4 - tidak ada yang bisa dibanggakan). Masalahnya lebih rumit: penghitung menghitung jumlah pulsa yang diperlukan terlalu lama. Misalnya, pada 60 km / jam, menghitung 60 pulsa dari sensor kecepatan membutuhkan waktu lebih dari satu detik. Pembaruan kesaksian yang jarang seperti itu tidak cocok untuk saya.Saya harus mengalikan setiap lantai pengukuran dengan 2.Perubahan linear dalam kecerahan dibandingkan dengan pencahayaan tidak cocok: ketika itu sedikit lebih gelap, kecerahan ternyata tidak cukup, ketika hampir gelap, kecerahannya terlalu banyak. Saya meluncurkan Excel, membuat grafik untuk berbagai fungsi matematika. Akibatnya, saya memilih kotak.
Kode Bascom:Teks tersembunyi'HUD-speedometer
'17/01/2016
'21/01/2016
'v1.1
$regfile = "m8adef.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Portb = Output
Config Portc = Output
Config Portd = Output
Config Portd.4 = Input
Portd.4 = 1
Config Timer0 = Counter , Edge = Falling
Config Timer1 = Pwm , Pwm = 8 , Compare_a_pwm = Clear_up , Compare_b_pwm = Clear_up , Prescale = 8
Config Timer2 = Timer , Prescale = 1024
On Timer2 Mytimer2
Enable Interrupts
Enable Timer2
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Dim I As Byte '
Dim N As Byte '
Dim Pwm_value As Integer '
Dim Speed As Integer , Speed_half As Integer , First_symbol As Integer , Second_symbol As Integer
Dim A As Integer ' Speed Speed_half
Dim R1 As Word
Declare Sub Digit_indication(digit As Integer) '
Const P = 500
Const T = 5000 '
Const T1 = 1000 ' PWM
Pwm_value = 5
Tcnt0 = 0 '
Do
Incr I
If I = 25 Then '
R1 = Getadc(7)
R1 = Sqr(r1) '
R1 = R1 * 8
If R1 < 250 Then
Pwm_value = 250 - R1
Else
Pwm_value = 3 '
End If
I = 0
End If
Gosub Indication
Loop
Indication:
If Speed < 3 Then ' 0 - , 3 -
Pwm_value = 0
End If
While Speed > 99 '.. 2
Speed = Speed - 100
Wend
First_symbol = Speed / 10 '
Second_symbol = First_symbol * 10 '
Second_symbol = Speed - Second_symbol '
Pwm1b = 0
Pwm1a = 0
Waitus T1 '
Call Digit_indication(first_symbol) '
Pwm1b = Pwm_value
Waitus T
Pwm1b = 0
Pwm1a = 0
Waitus T1 '
Call Digit_indication(second_symbol)
Pwm1a = Pwm_value
Waitus T
Return
Sub Digit_indication(digit As Integer)
Select Case Digit
Case 0:
Portd.0 = 0
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
Case 1:
Portd.0 = 0
Portc.0 = 1
Portc.1 = 0
Portc.2 = 0
Portc.3 = 0
Portc.4 = 0
Portc.5 = 1
Case 2:
Portd.0 = 1
Portc.0 = 0
Portc.1 = 1
Portc.2 = 1
Portc.3 = 0
Portc.4 = 1
Portc.5 = 1
Case 3:
Portd.0 = 1
Portc.0 = 1
Portc.1 = 1
Portc.2 = 0
Portc.3 = 0
Portc.4 = 1
Portc.5 = 1
Case 4:
Portd.0 = 1
Portc.0 = 1
Portc.1 = 0
Portc.2 = 0
Portc.3 = 1
Portc.4 = 0
Portc.5 = 1
Case 5:
Portd.0 = 1
Portc.0 = 1
Portc.1 = 1
Portc.2 = 0
Portc.3 = 1
Portc.4 = 1
Portc.5 = 0
Case 6:
Portd.0 = 1
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 0
Case 7:
Portd.0 = 0
Portc.0 = 1
Portc.1 = 0
Portc.2 = 0
Portc.3 = 0
Portc.4 = 1
Portc.5 = 1
Case 8:
Portd.0 = 1
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
Case 9:
Portd.0 = 1
Portc.0 = 1
Portc.1 = 1
Portc.2 = 0
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
End Select
End Sub
Mytimer2:
Incr N
If N = 26 Then
N = 0
Speed = Tcnt0 'Speed =
Tcnt0 = 0 '
End If
If N = 13 Then '.. ( )
Speed_half = Tcnt0 * 2 '
A = Speed - Speed_half
A = A And &B0111111111111111 '
If A > 2 Then
Speed = Speed_half
End If
End If
Timer2 = 135 ' 135
Return
Pada akhir 135 - faktor koreksi, memilihnya untuk setiap mesin secara individual (135 untuk Logan, untuk Solaris lebih sedikit - setiap orang memiliki sensor kecepatan yang berbeda).Video yang dijanjikan. Maaf untuk kualitasnya, saya menembak selembar pita listrik biru dengan satu tangan, dengan yang lain saya meluncur:Indikator tidak menyala ketika kecepatan kurang dari 3 km / jam. Jika kecepatan lebih besar dari 99, maka ditampilkan tanpa karakter pertama.Anggaran:ATMega8 - 200 gosok untuk 5 pcs -Indikator 40 gosok - 825 gosok untuk 10 pcs - 165gosok TD62783 - 250 gosok untuk 5 pcs -50 gosok Sisa barang longgar yang saya miliki, tetapi secara umum jelas bahwa Anda dapat menyimpannya dalam 500 gosokan.Tidak ada lagi yang bisa diceritakan. Ternyata sebuah counter besar yang indah. Diuji pada Solaris. Fokus gagal, fokus tidak memiliki sensor kecepatan. Saya akan menyelesaikan program untuk bekerja dengan OBD2 hingga ELM327.Folder proyek di Yandex.DiskTerima kasih atas perhatian Anda!