Цифровой спидометр АЗЛК

Описываемый цифровой спидометр установлен в светодиодной панели приборов (смотреть здесь).
Впечатления от полевых испытаний положительные: цифры не моргают и не скачут.
Удивила возможность наблюдать показания скорости при движении задним ходом.

Сравнить со штатным спидометром не получается, т.к. в коробку можно вкрутить либо стандартный тросик спидометра, либо датчик. Приблизительно (по тахометру) собранный прибор показывает то, что нужно. По крайней мере не ошибается на порядок.
Огромное спасибо Al_LEXX_andr и Tёmik за ценные советы по подключению датчика. Оказалось, что сигнальный выход датчика выполнен по схеме с "открытым коллектором", т.е. датчик не выдает импульсы напряжения, а 6 раз за 1 оборот замыкает сигнальный провод на массу.

345.3843 - это датчик скорости от ИЖ-2126. Он же ДСА 001-05 или 402.139.001-05. (производитель "Счетмаш") К сигнальному выходу датчика поключен также цифровый одометр.

А это схема:

Схема Цифрового спидометра АЗЛК

Внешний вид датчика скорости

Внешний вид датчика скорости

Контакты разъема

Контакты разъема.

Проведены полевые испытания с целью сравнения с показаниями GPS-приемника. Результаты для шин 185x70 R14 в км/ч:
- Спидометр 40 - GPS 39
- Спидометр 60 - GPS 58..59
Во время испытаний ни один Москвич не пострадал.


На рисунке испытывавшийся образец.

На рисунке испытывавшийся образец.

Файл прошивки для PIC16F84
Cтрочки между ---- скопировать в notepad и сохранить в файл с раширением HEX. Получившийся файл можно закачивать программатором в микропроцессор.
-------------------------------------------
:020000040000FA
:10000000850186018B01810164008316FF30850024
:100010000130860047308100831290010A308D0044
:100020008E008F008C008B10163081000B118B1C02
:100030002728900A8D0B26280A308D008E0B262843
:100040000A308E008F0B26280A308F008B100B1D74
:1000500017288C0B142892010F0838200E0838201E
:1000600012140D08382086140000861000000D2898
:100070000A3C031D3D28121C3F28121451209100F8
:1000800007308C00910D031C4628482886114A2809
:100090008615000006150000061100008C0B422892
:1000A00008000F3982077E340634DA34CE34A634A1
:1000B000EC34FC344634FE34EE34803440342034A6
:0600C00010340834043482
:02400E00F13F80
:00000001FF

-------------------------------------------

Исходник программы


list p=16F84A
#include <p16f84a.inc></p16f84a.inc>
__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

bitSDI equ 3
bitCLK equ 2
bitLAT equ 1
iniTMR equ d'022'

count1 equ 0x0C
dig_U equ 0x0D
dig_D equ 0x0E
dig_H equ 0x0F
impnum equ 0x10
segcod equ 0x11
hdnull equ 0x12

org 0x000
clrf PORTA
clrf PORTB
clrf INTCON
clrf TMR0
clrWDT

bsf STATUS,RP0
movlw b'11111111'
movwf PORTA
movlw b'00000001'
movwf PORTB
movlw b'01000111'
movwf OPTION_REG
bcf STATUS,RP0

loop clrf impnum
movlw d'010'
movwf dig_U
movwf dig_D
movwf dig_H

movwf count1
bcf INTCON,INTF
ms600
movlw iniTMR
movwf TMR0
bcf INTCON,T0IF
ms60
btfss INTCON,INTF
goto NoINCR
DoINCR
incf impnum,f
decfsz dig_U,f
goto eoINCR
movlw d'010'
movwf dig_U
decfsz dig_D,f
goto eoINCR
movlw d'010'
movwf dig_D
decfsz dig_H,f
goto eoINCR
movlw d'010'
movwf dig_H
eoINCR
bcf INTCON,INTF
NoINCR
btfss INTCON,T0IF
goto ms60
decfsz count1,f
goto ms600

clrf hdnull
movf dig_H,W
call SendDD
movf dig_D,W
call SendDD
bsf hdnull,0
movf dig_U,W
call SendDD

bsf PORTB,bitLAT
nop
bcf PORTB,bitLAT
nop
goto loop

SendDD sublw d'010'
btfss STATUS,Z
goto DoDIGIT
btfss hdnull,0
goto DoBLANK
DoDIGIT
bsf hdnull,0
call SEG_7
DoBLANK
movwf segcod

movlw 7
movwf count1
BitLoop
rlf segcod,f
btfss STATUS,C
goto SendB0
goto SendB1
SendB0 bcf PORTB,bitSDI
goto BitReady
SendB1 bsf PORTB,bitSDI
nop
BitReady
bsf PORTB,bitCLK
nop
bcf PORTB,bitCLK
nop
decfsz count1,f
goto BitLoop
return

SEG_7 andlw 0x0F
addwf PCL,f
retlw b'01111110'
retlw b'00000110'
retlw b'11011010'
retlw b'11001110'
retlw b'10100110'
retlw b'11101100'
retlw b'11111100'
retlw b'01000110'
retlw b'11111110'
retlw b'11101110'
retlw b'10000000'
retlw b'01000000'
retlw b'00100000'
retlw b'00010000'
retlw b'00001000'
retlw b'00000100'
end
--------------------------------

Комментарии к программе.
1) В общем алгоритм такой. На интервале 600 ms считаем импульсы от датчика скорости. Выводим результат на индикатор. Повторяем эти две операции в бесконечном цикле.
2) Важная вещь - константа iniTMR. В случае работы процессора на частоте 4 МГц она должна быть равна 22, при этом встроенный в микропроцессор таймер должен срабатывать 1 раз в 60 ms (для идеального кварца получится 59,904 ms). При другой частоте кварца значение константы должно быть другое. 600 ms получаем 10-кратным отсчетом 60 ms.
3) В подпрограмме SEG7 происходит преобразование выводимых цифр в коды 7-сегментного индикатора. Если распайка ножек будет другая, или схема индикации будет реализована по-другому, то и битовые коды сегментов нужно будет запрограммировать в другом порядке. Для той схемы, что на рисунке, должно быть именно так.

Реализация и эксплуатация
Мне известны два случая повторения этой схемы.

Соклубник k034oo сделал полную копию схемы, но в процессе эксплуатации внес измененния:
1) Поставил на вход источника питания емкость 0,22мкФ, т.к. при номинале, указанном в схеме, во время стоянки прибор показывал единицы км/ч, возможно, из-за параллельного подключения к одному датчику вместе с Волговской приборкой.
2) Заменил источник питания 78L05 на 7805 и подключил аноды индикаторов к +5, вместо +12. Этим снижаются падение напряжения и рассеиваемая мощность на драйвере светодиодов. В качестве недостатка подключения анодов к +12В было обнаружено выгорание сегментов индикатора при запуске двигателя.
k034oo использовал прибор в реальных условиях достаточно долго.

На моей машине все нормально работает с номиналами, указанными в схеме. R-EXT по схеме я поставил 1,6К. Индикаторы SA-08 от KingBright. При токе через сегмент около 15мА показания плохо видно только при прямом солнечном освещении. Корпус 5028 теплый, но даже не горячий.

Еще дубль сделал Константин Мерщиков (ник в ICQ "Shadow Builder"). Вместо MBI5028 от Macroblock он использовал TLC5921 от Texas Instruments. Эта микросхема выпускается в корпусе DAP. Он меньших размеров и не может отводить столько тепла, как DIP. Поэтому аноды индикаторов также были подключены к +5В, а в качестве источника питания использована 7805. Остальная часть схемы и прошивка не менялись.
Я знаю, что этот вариант заработал на столе. О его эксплуатации мне ничего не известно.

Источник http://www.club.azlk.ru

Теги: 

Комментарии

Такой вопрос!
Этот датчик скорости автомобиля 345.3843 - он генерирует импульсы в зависимости от скорости вращения вала, и соответственно от скорости вращения колес. За один оборот вала - 6 импульсов. Один оборот вала соответствует одному обороту колеса?! И получается что нам нужно пересчитать один оборот вала в то расстояние, которое проезжает машина, то есть 2*П*R, где R - радиус колеса, то есть за один оборот вала машина проезжает расстояние 2*П*R?!!!

[quote] Один оборот вала датчика соответствует одному обороту колеса?![/quote]

Да, по крайней мере на вазе точно так.

[quote]И получается что нам нужно пересчитать один оборот вала в то расстояние, которое проезжает машина, то есть 2*П*R, где R - радиус колеса, то есть за один оборот вала машина проезжает расстояние 2*П*R?!!![/quote]

Верно! :)

Das radio!

 
 
Rambler''s Top100