Olá pessoal!Não escrevo nada há muito tempo, agora é mais um recurso de notícias do que prático. Vou tentar consertar a situação. Vou falar sobre o desenvolvimento do velocímetro HUD. Embora não seja uma projeção a laser , é acessível e compacta.1. Introdução, 3.3" . , . 4 , 5, . , — . , . , , ( ) — 1800. ( ):
1. — , , , - . , — . .
2. Você não pode colar o filme, os números (eles são muito pequenos) dobram e nada é visível ao sol.Para a semente, o resultado não é um filme em nenhum lugar do copo e até durante o dia: por
baixo do corte, prometo muitas fotos, vídeo, código e texto medíocres - tudo na melhor tradição.TeoriaA idéia é simples - por um período fixo de tempo, contamos o número de pulsos do sensor de velocidade. Como CPU, o ATMega8 simples e acessível.A primeira dificuldade acabou sendo a coordenação do MK 5 V e dos indicadores 7,5 V. A fantasia desenhou um diagrama de uma pilha de transistores e resistores (7 elementos para indicação dinâmica). De todo o Google, apenas um artigo me ajudou a substituir indicadores em um relógio, desculpe por ter perdido o endereço dela. Aproveito esta oportunidade para expressar minha gratidão ao autor pela idéia de usar o TD62783 (de 5 peças por lote). Na verdade, este é um driver indicador de sete segmentos, dentro de um conjunto de transistor.Em seguida, um conversor DC / DC. Feito no MC34063, tenho muitos deles, tenho em estoque. Eu contei em uma calculadora, verifiquei com um testador - 7,5 V. Nos testes de campo, acabou por ser um pouco, o brilho não era suficiente, aumentou para 10 V.O brilho é ajustado com base nas leituras do sensor de luz, que é um fotorresistor chinês comum.Como resultado, o circuito resultou da seguinte forma:
Prática Iimpressa a placa de circuito impresso TopoR . Usei o posicionamento automático, embora tenha corrigido a maioria dos elementos manualmente. Mas o progresso deve funcionar para mim, e não apenas eu para o progresso. Acabou a beleza:
com a largura do corpo, o U4 errou, tive que terminar as faixas e não soldar a 11ª perna.Como fica na vida real:

O próximo nezhdanchik apareceu no software (não vou lhe contar como esqueci de espelhar 2 e 5, 4 - não há nada do que se orgulhar). O problema era mais complicado: o contador contava o número necessário de pulsos por muito tempo. Por exemplo, a 60 km / h, a contagem de 60 pulsos de um sensor de velocidade levou mais de um segundo. Uma atualização tão rara do testemunho não me agradou.Eu tive que multiplicar cada andar de medição por 2.Uma mudança linear no brilho em comparação à iluminação não se encaixava: quando estava um pouco mais escuro, o brilho era insuficiente, quando estava quase escuro, o brilho era demais. Lancei o Excel, construí um gráfico para diferentes funções matemáticas. Como resultado, eu escolhi um quadrado.
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
No final de 135 - um fator de correção, o selecionava para cada máquina individualmente (135 é para Logan, para Solaris era menor - todo mundo tem sensores de velocidade diferentes).O vídeo prometido. Desculpe pela qualidade, eu atirei em um pedaço de fita isolante azul com uma mão e com a outra taxiei:Os indicadores não acendem quando a velocidade é inferior a 3 km / h. Se a velocidade for maior que 99, será exibida sem o primeiro caractere.Orçamento:ATMega8 - 200 esfregar por 5 peças -40 esfregar Indicadores - 825 esfregar por 10 peças - 165esfregar TD62783 - 250 esfregar por 5 peças -50 esfregar O restante do material solto que eu tinha, mas, em geral, é claro que você pode manter dentro de 500 esfregões.Não há mais nada a dizer. Acabou um grande balcão bonito. Testado no Solaris. O foco falhou, o foco não tinha um sensor de velocidade. Termino o programa para trabalhar com OBD2 através do ELM327.Pasta do projeto no Yandex.DiskObrigado a todos pela atenção!