Hola a todos!No he escrito nada durante mucho tiempo, ahora es más un recurso de noticias que práctico. Trataré de arreglar la situación. Te contaré sobre el desarrollo del velocímetro HUD. Aunque no es una proyección láser , es asequible y compacta.Introduccion, 3.3" . , . 4 , 5, . , — . , . , , ( ) — 1800. ( ):
1. — , , , - . , — . .
2. No puedes pegar la película, luego los números (son bastante pequeños) se duplican, y nada es visible al sol.Para empezar, el resultado no es una película en ningún lugar del cristal e incluso durante el día:
debajo del corte, prometo muchas fotos, video mediocre, código y texto, todo en la mejor tradición.TeoríaLa idea es simple: durante un período de tiempo fijo contamos el número de pulsos del sensor de velocidad. Como CPU, el simple y asequible ATMega8.La primera dificultad resultó ser la coordinación de MK 5 V e indicadores de 7,5 V. Fantasy dibujó un diagrama de una pila de transistores y resistencias (7 elementos para la indicación dinámica). De todos los google, solo un artículo me ayudó a reemplazar los indicadores en un reloj, lamento haber perdido su dirección. Aprovecho esta oportunidad para expresar mi gratitud al autor por la idea de usar TD62783 (de 5 piezas por lote). En realidad, este es un controlador de indicador de siete segmentos, dentro de un conjunto de transistor.A continuación, un convertidor DC / DC. Hecho en el MC34063, tengo muchos de ellos, los tengo en stock. Lo conté en una calculadora, lo comprobé con un probador: 7.5 V. En las pruebas de campo resultó ser un poco, el brillo no era suficiente, aumentó a 10 V.El brillo se ajusta en función de las lecturas del sensor de luz, que es una fotorresistencia china común.Como resultado, el circuito resultó de la siguiente manera:
Práctica que imprimí laplaca de circuito impreso de TopoR . Utilicé la colocación automática, aunque arreglé la mayoría de los elementos manualmente. Pero el progreso debe funcionar para mí, y no solo para el progreso. Resultó bello:
con el ancho del cuerpo, U4 falló, tuve que terminar las pistas y no soldar la undécima pierna.Cómo se ve en la vida real:

La siguiente persona inesperada se deslizó en el software (no diré cómo olvidé duplicar 2 y 5, 4; no hay nada de qué estar orgulloso). El problema fue más complicado: el contador contó la cantidad necesaria de pulsos durante demasiado tiempo. Por ejemplo, a 60 km / h, contar 60 pulsos desde un sensor de velocidad tomó más de un segundo. Una actualización tan rara del testimonio no me convenía.Tuve que multiplicar cada piso de medición por 2.Un cambio lineal en el brillo en comparación con la iluminación no encajaba: cuando era un poco más oscuro, el brillo resultaba insuficiente, cuando estaba casi oscuro, el brillo era demasiado. Lancé Excel, construí un gráfico para diferentes funciones matemáticas. Como resultado, elegí un cuadrado.
Código Bascom:Texto oculto'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
A finales de 135, un factor de corrección, lo seleccionó individualmente para cada máquina (135 es para Logan, para Solaris era menos, todos tienen diferentes sensores de velocidad).El video prometido. Perdón por la calidad, filmé un trozo de cinta aislante azul con una mano y con la otra gravé:Los indicadores no se iluminan cuando la velocidad es inferior a 3 km / h. Si la velocidad es superior a 99, se muestra sin el primer carácter.Presupuesto:ATMega8 - 200 rub para 5 piezas -40 rub Indicadores - 825 rub para 10 piezas - 165rub TD62783 - 250 rub para 5 piezas -50 rub El resto de las cosas sueltas que tenía, pero en general está claro que puede guardar dentro de 500 rub.No hay nada más que contar. Resultó un gran mostrador hermoso. Probado en Solaris. El enfoque falló, el enfoque no tenía un sensor de velocidad. Terminaré el programa para trabajar con OBD2 a través de ELM327.Carpeta de proyecto en Yandex.Disk ¡Gracias a todos por su atención!