عداد السرعة HUD - من الفكرة إلى النتيجة

مرحبا بالجميع!
لم أكتب أي شيء منذ فترة طويلة ، والآن أصبح مصدرًا إخباريًا أكثر منه مورد عملي. سأحاول إصلاح الوضع. سأخبرك عن تطوير عداد السرعة HUD. على الرغم من أنها ليست إسقاط ليزر ، إلا أنها بأسعار معقولة وصغيرة الحجم.
مقدمة
بدأ الأمر بحقيقة أنني حصلت على مؤشر كبير من سبعة أجزاء بحجم 3.3 "في يدي. لقد طلبت ذلك من أجل ساعة لم يسبق لها مثيل. كان لدي 4 قطع ، في Lot 5 ، وضع الصينيون ستة. بعد تقدير الحجم والسطوع والانعكاس من الزجاج الأمامي ، قررت - ها هي ، بسبب الحجم ، الصورة غير مقسمة ، والسطوع يسمح باستخدامها حتى في أشعة الشمس المباشرة. أوافق على الفور على أن الصينيين لديهم قطع جميلة جاهزة وغير مكلفة للغاية (جميع الأسعار في وقت الكتابة) - من 1800 روبل. (أغمض أعيننا عن غير رياضي مثل هذا القرار):
1. من الضروري الغراء الفيلم على الزجاج - على الرغم من أنه غير شفاف، ولكن كلها مراجعة التداخل، ولكن أنا لا أحب يجري على الزجاج الذي يمنع بالكاد جلس، دفعت كرسي - ويجب أن يكون الفيلم، وحتى الغراء حسنا .. مع الفيلم ، لا يوجد شيء مرئي تقريبًا في يوم مشمس.
2. لا يمكنك لصق الفيلم ، فالأرقام (فهي صغيرة جدًا) مضاعفة ، ولا شيء مرئي في الشمس.
بالنسبة للمبتدئين ، فإن النتيجة ليست فيلمًا في أي مكان في الزجاج وحتى خلال النهار:


بموجب الخفض ، أعدك بالكثير من الصور والفيديو المتوسط ​​والتشفير والنص - كل ذلك في أفضل تقاليد.

النظرية
الفكرة بسيطة - لفترة محددة من الوقت نحسب عدد النبضات من مستشعر السرعة. كمعالج ، ATMega8 بسيطة وبأسعار معقولة.
اتضح أن الصعوبة الأولى هي تنسيق MK 5 V والمؤشرات 7.5 V. وقد رسم Fantasy مخططًا لمجموعة من الترانزستورات والمقاومات (7 عناصر للإشارة الديناميكية). من بين جميع خدمات جوجل ، ساعدني مقال واحد فقط حول استبدال المؤشرات في الساعة ، آسف لأنني فقدت عنوانها. أغتنم هذه الفرصة للتعبير عن امتناني للمؤلف لفكرة استخدام TD62783 (من 5 قطع لكل لوط). في الواقع ، هذا هو محرك مؤشر من سبعة أجزاء ، داخل مجموعة الترانزستور.
بعد ذلك ، محول DC / DC. مصنوعة على MC34063 ، لدي الكثير منها ، ولديها في المخزون. أحسبته على آلة حاسبة ، وتحقق منه مع جهاز اختبار - 7.5 V. في الاختبارات الميدانية اتضح أنه قليل ، ولم يكن السطوع كافياً ، وزاد إلى 10 V.
يتم ضبط السطوع بناءً على قراءات مستشعر الضوء ، وهو مقاوم ضوئي صيني عادي.
ونتيجة لذلك ، تحولت الدائرة على النحو التالي:

ممارسة
طبعت TopoR لوحة الدوائر المطبوعة . استخدمت الوضع التلقائي ، على الرغم من أنني أصلحت معظم العناصر يدويًا. لكن التقدم يجب أن يعمل من أجلي وليس فقط من أجل التقدم. اتضح الجمال:

مع عرض الجسم ، غاب عن U4 ، كان علي الانتهاء من المسارات وليس لحام المحطة 11.
كيف تبدو في الحياة الواقعية:



تسلل الشخص التالي غير المتوقع في البرنامج (لن أخبر كيف نسيت أن أعكس 2 و 5 ، 4 - ليس هناك ما أفخر به). كانت المشكلة أكثر تعقيدًا: فقد احتسب العداد العدد الضروري من النبضات لفترة طويلة جدًا. على سبيل المثال ، بسرعة 60 كم / ساعة ، استغرق حساب 60 نبضة من مستشعر السرعة أكثر من ثانية. مثل هذا التحديث النادر للشهادة لم يناسبني.
اضطررت إلى مضاعفة كل طابق قياس في 2.
لم يكن التغيير الخطي في السطوع مقارنة بالإضاءة مناسبًا: عندما كان الظلام أغمق قليلاً ، تبين أن السطوع غير كافٍ ، عندما كان الظلام تقريبًا ، كان السطوع كثيرًا. لقد أطلقت Excel ، وقمت ببناء رسم بياني لوظائف رياضية مختلفة. نتيجة لذلك ، اخترت مربع.


كود Bascom:
نص مخفي
'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


في نهاية 135 - عامل تصحيح ، تم تحديده لكل جهاز على حدة (135 لوغان ، بالنسبة لسولاريس كان أقل - لكل شخص مستشعرات سرعة مختلفة).
الفيديو الموعود. آسف على الجودة ، قمت بالتصوير على قطعة من الشريط الكهربائي الأزرق بيد واحدة ، مع اليد الأخرى التي أجريتها:



لا تضيء المؤشرات عندما تكون السرعة أقل من 3 كم / ساعة. إذا كانت السرعة أكبر من 99 ، فسيتم عرضها بدون الحرف الأول.

الميزانية:
ATMega8 - 200 فرك لـ 5 قطع -
مؤشرات 40 فرك - 825 فرك لعشرة أجهزة كمبيوتر - 165
فرك TD62783 - 250 فرك لـ 5 قطع -
50 فرك بقية المواد السائبة لدي ، ولكن بشكل عام من الواضح أنه يمكنك الاحتفاظ بها ضمن 500 فرك.

لا يوجد شيء آخر نقوله. اتضح عداد جميل كبير. تم اختباره على سولاريس. فشل التركيز ، لم يكن التركيز على جهاز استشعار السرعة. سأنهي برنامج العمل مع OBD2 من خلال ELM327.
مجلد المشروع على Yandex.Disk
شكرا لكم جميعا على اهتمامكم!

Source: https://habr.com/ru/post/ar393529/


All Articles