Hallo allerseits!Ich habe lange nichts mehr geschrieben, jetzt ist es eher eine Nachrichtenquelle als eine praktische. Ich werde versuchen, die Situation zu beheben. Ich erzähle Ihnen von der Entwicklung des HUD-Tachometers. Obwohl es sich nicht um eine Laserprojektion handelt , ist es erschwinglich und kompakt.EinführungEs begann mit der Tatsache, dass ich einen großen 3,3-Zoll-Sieben-Segment-Indikator in meinen Händen hatte. Ich bestellte ihn für eine Uhr, die nie geboren wurde. Ich hatte 4 Stück, in Lot 5 legten die Chinesen sechs. Nachdem ich die Größe, Helligkeit und Reflexion der Windschutzscheibe geschätzt hatte, entschied ich mich - hier ist es. Aufgrund der Größe ist das Bild nicht geteilt und die Helligkeit erlaubt es, es auch bei direkter Sonneneinstrahlung zu verwenden. Ich stimme sofort zu, dass die Chinesen schöne fertige Stücke haben, die recht günstig sind (alle Preise zum Zeitpunkt des Schreibens) - ab 1800 Rubel. (Schließen Sie unsere Augen für unsportlich eine solche Entscheidung):1. Es ist notwendig , den Film auf dem Glas zu kleben - obwohl es transparent ist, aber alle sind Überschneidungen Kritik, aber ich weiß nicht wie auf dem Glas ist , das kaum saß verhindert, einen Stuhl gedrückt - und der Film sollte sein, und sogar Nun kleben .. Mit dem Film ist an einem sonnigen Tag fast nichts sichtbar.2. Sie können den Film nicht kleben, dann verdoppeln sich die Zahlen (sie sind ziemlich klein) und in der Sonne ist nichts sichtbar.Für den Anfang ist das Ergebnis kein Film irgendwo im Glas und auch nicht tagsüber:
Unter dem Schnitt verspreche ich viele Bilder, mittelmäßiges Video, Code und Text - alles in bester Tradition.TheorieDie Idee ist einfach: Für einen festgelegten Zeitraum zählen wir die Anzahl der Impulse vom Geschwindigkeitssensor. Als CPU ist der einfache und erschwingliche ATMega8.Die erste Schwierigkeit stellte sich als Koordination von MK 5 V und Indikatoren 7,5 V heraus. Fantasy zeichnete ein Diagramm eines Stapels von Transistoren und Widerständen (7 Elemente zur dynamischen Anzeige). Von allen Google hat mir nur ein Artikel beim Ersetzen von Indikatoren in einer Uhr geholfen. Tut mir leid, dass ich ihre Adresse verloren habe. Ich nutze diese Gelegenheit, um dem Autor für die Idee zu danken, TD62783 (ab 5 Stück pro Los) zu verwenden. Tatsächlich ist dies ein Sieben-Segment-Anzeigetreiber innerhalb einer Transistoranordnung.Als nächstes ein DC / DC-Wandler. Hergestellt auf dem MC34063, ich habe viele davon, ich habe sie auf Lager. Ich zählte es auf einem Taschenrechner, überprüfte es mit einem Tester - 7,5 V. In den Feldtests stellte sich heraus, dass es ein wenig war, die Helligkeit war nicht genug, auf 10 V erhöht.Die Helligkeit wird basierend auf den Messwerten des Lichtsensors eingestellt, der ein gewöhnlicher chinesischer Fotowiderstand ist.Infolgedessen stellte sich die Schaltung wie folgt heraus:
Übung I Druckte TopoR-Leiterplatte . Ich habe die automatische Platzierung verwendet, obwohl ich die meisten Elemente manuell repariert habe. Aber Fortschritt muss für mich funktionieren und nicht nur für mich. Es stellte sich heraus, dass es schön war: Mit der Breite des Körpers, die U4 verfehlte, musste ich die Tracks beenden und nicht das 11. Bein löten. Wie es im wirklichen Leben aussieht:



Die nächste unerwartete Person hat sich in die Software eingeschlichen (ich werde nicht sagen, wie ich vergessen habe, 2 und 5, 4 zu spiegeln - es gibt nichts, worauf ich stolz sein kann). Das Problem war komplizierter: Der Zähler zählte die erforderliche Anzahl von Impulsen zu lange. Beispielsweise dauerte das Zählen von 60 Impulsen von einem Geschwindigkeitssensor bei 60 km / h mehr als eine Sekunde. Eine so seltene Aktualisierung des Zeugnisses passte nicht zu mir.Ich musste jeden Messboden mit 2 multiplizieren.Eine lineare Änderung der Helligkeit im Vergleich zur Beleuchtung passte nicht: Wenn es etwas dunkler war, stellte sich heraus, dass die Helligkeit unzureichend war, wenn es fast dunkel war, war die Helligkeit zu groß. Ich habe Excel gestartet und ein Diagramm für verschiedene mathematische Funktionen erstellt. Als Ergebnis habe ich ein Quadrat gewählt.
Bascom Code:Versteckter Text'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
Am Ende von 135 - ein Korrekturfaktor, der für jede Maschine einzeln ausgewählt wurde (135 ist für Logan, für Solaris war es weniger - jeder hat unterschiedliche Geschwindigkeitssensoren).Das versprochene Video. Entschuldigung für die Qualität, ich habe mit einer Hand auf ein Stück blaues Isolierband geschossen, mit der anderen habe ich gerollt:Die Anzeigen leuchten nicht, wenn die Geschwindigkeit weniger als 3 km / h beträgt. Wenn die Geschwindigkeit größer als 99 ist, wird ohne das erste Zeichen angezeigt.Budget:ATMega8 - 200 Reiben für 5 Stück -40 Reiben Indikatoren - 825 Reiben für 10 Stück - 165Reiben TD62783 - 250 Reiben für 5 Stück -50 Reiben Der Rest der losen Sachen, die ich hatte, aber im Allgemeinen ist klar, dass Sie innerhalb von 500 Reiben bleiben können.Es gibt nichts mehr zu erzählen. Es stellte sich heraus, eine große schöne Theke. Unter Solaris getestet. Der Fokus ist fehlgeschlagen, der Fokus hatte keinen Geschwindigkeitssensor. Ich beende das Programm für die Arbeit mit OBD2 über ELM327.Projektordner auf Yandex.DiskVielen Dank für Ihre Aufmerksamkeit!