|
|
|
|
 |
 |
|
Der PIC-LED-Drehzahlmesser von Johannes Walk, verfasst 10.2004
|
|
 |
 |
|
Hier finden Sie Informationen, Erfahrungen und Pläne, die den Bau eines PIC-basierenden Drehzahlmessers dokumentieren. Diese Informationen soll anderen Bastlern eine Art Fingerzeig für eigene
Ideen und deren Verwirklichung sein. Viel Spass beim Durchgucken ;)
PS.: Ich wäre auch an einem gezielten Interressenaustausch interressiert.
Beim potentiellen Nachbauen übernehme ich keinerlei Haftung für irgendeiner Art von Fehlfunktion und möglichen Auswirkungen. Die hier vorgestellten Beispiele wurden
hauptsächlich selber erarbeitet. Bei Verstößen gegen vorhandene Copyright-Bestimmungen übernehme ich keine Haftung, bitte aber um eine Benachrichtigung.
|
 |
 |
|
Inhalt dieser Seite:
|
|
|
 |
 |
|
Vorwort:
|
 |
 |
|
Und wieder einmal kam mein Bruder zu mir und fragte: “Du, horch amool. Ii hoab doo aan olden Drehzahlmessa gfunda. Und ii glaab, der is hii. Ii hoab doch nur den Zeicher angemoolt... Kannst
mer da ned was mache?” Und da ich als Student ja soo viel Zeit hab (das war eigentlich ironisch gemeint) und ich guter Laune war, fing ich auch gleich an, eine Schaltung zu entwerfen. Natürlich half mein
‘Bruderherz’ ganz fleissig mit.
Das Resultat des Arbeitstages war ein ganz ansehlicher und ziemlich genauer LED-Drehzahlmesser, der Tags darauf auch gleich in sein Auto verbaut wurde. Im Folgenden wird die Schaltung, der
Aufbau und der Einbau sowie die Software genauer beschrieben.
|
 |
 |
|
Beschreibung:
|
 |
 |
|
Wie der Name schon sagt, handelt es sich hier um einen Umbau eines alten (defekten) analogen Drehzahlmessers in einen digitalen Drehzahlmesser mit analoger
Leuchtdiodenbalkenanzeige. Das Messgerät kann einen Drehzahlbereich ab 0 UpM bis hin zu 8000 UpM und höher in 250’er-Schritten messen und anzeigen. Zwischenwerte werden durch ein
Impuls-Pausenverhältnis der nächsthöheren LED angezeigt. Dies ist zugegebenermaßen etwas gewöhnungsbedürftig, wenn es im Blickwinkel blinkt, kann aber in der Software verbessert werden.
|
|
|
 |
Der LED-Drehzahlmesser basiert auf dem PIC 16F874/877, der mit seiner Fülle an I/O-Pins die LEDs direkt ansteuern kann und die Gesamtschaltung daher sehr einfach macht.
Programmiert wurde die Schaltung für einen 4-Zylinder Benzinmotor. Die Drehzahlmessung erfolgt direkt oder über Teilerwiderstände am Zündspulenunterbrecher. Konfiguriert wurde der PIC auf
eine Taktfrequenz von 20MHz. Es wurden alle Portpins ausser PORTA,0 als LED-Pins verwendet. Die Schaltung wird angeschlossen über insgesamt 4 Kabel. (+Ub, GND, TAKT, Hintergrundbeleuchtung).
|
 |
 |
|
Der Schaltplan:
|
 |
 |
|
Die Software:
|
 |
 |
|
Programmiert unter der freien Oberfläche MPLAB von MICROCHIP(R)
|
 |
 |
|
| ; Programm fur digitale Drehzahlanzeige V1.0 mit 16F874; (C) Johannes Walk;; Für PIC16F874
; Osc: Quartz, HS, 20MHz 30pF; Mit Funktionstest und SPIKE-Unterdrückung; Eingang: 100k auf 5,1V-ZD (0,5W) und 10nF gen GND in PORTA,0; Ausgänge: ab PORTA,1 32 OUT's aufsteigend; Anzeige: ab 0 RPM in 250 RPM-Schritten, aufsteigend, Balkenanz. LIST P=PIC16F874 ; Include file include <p16f874.inc> DZ00 equ 0x70DZ01 equ 0x71
DZ02 equ 0x72DZ03 equ 0x73TIMEREG1 equ 0x60
EINGREG equ 0x61 goto Definitionen TEST clrf TIMEREG1
tests1 call TESTT btfss PORTE,2
goto tests1tests2 call TESTT
btfsc PORTE,2 goto tests2 call RESET call DISPLAY
RETURN TESTT clrwdt
btfss INTCON,2 ; Bit für TMR0-Überlauf, 1 wenn passiert RETURN bcf INTCON,2 decfsz TIMEREG1,f RETURN movlw 0x60
movwf TIMEREG1 call ROTATE call DISPLAY RETURN TIMER clrwdt
btfss INTCON,2 ; Bit für TMR0-Überlauf, 1 wenn passiert RETURN bcf INTCON,2 decfsz TIMEREG1,f RETURN movlw 0x92 ;3D=61(20MHz), Teilerfaktor für 0,05 sec (20,01Hz)
movwf TIMEREG1 call DISPLAY ; Wenn die Zeit rum ist: RESET... call RESET call ROTATE
RETURN EINGANG btfsc PORTA,0
goto e01e00 ;Eingang=0 bcf EINGREG,0
RETURNe01 ;Eingang=1 btfss EINGREG,0
call FLANK bsf EINGREG,0 RETURN FLANK call ROTATE
RETURN ROTATE RLF DZ00,f
bsf DZ00,0 RLF DZ01,f RLF DZ02,f RLF DZ03,f RETURN RESET clrf DZ00
clrf DZ01 clrf DZ02 clrf DZ03
RETURN DISPLAY clrf PORTA
btfss DZ00,0 bsf PORTA,1 btfss DZ00,1 bsf PORTA,2 btfss DZ00,2 bsf PORTA,3 btfss DZ00,3 bsf PORTA,4 btfss DZ00,4 bsf PORTA,5 clrf PORTB btfss DZ00,5
bsf PORTB,0 btfss DZ00,6 bsf PORTB,1 btfss DZ00,7 bsf PORTB,2 btfss DZ01,0 bsf PORTB,3 btfss DZ01,1 bsf PORTB,4 btfss DZ01,2 bsf PORTB,5 btfss DZ01,3 bsf PORTB,6 btfss DZ01,4 bsf PORTB,7 clrf PORTC btfss DZ01,5
bsf PORTC,0 btfss DZ01,6 bsf PORTC,1 btfss DZ01,7 bsf PORTC,2 btfss DZ02,0 bsf PORTC,3 btfss DZ02,1 bsf PORTC,4 btfss DZ02,2 bsf PORTC,5 btfss DZ02,3 bsf PORTC,6 btfss DZ02,4 bsf PORTC,7 clrf PORTD btfss DZ02,5
bsf PORTD,0 btfss DZ02,6 bsf PORTD,1 btfss DZ02,7 bsf PORTD,2 btfss DZ03,0 bsf PORTD,3 btfss DZ03,1 bsf PORTD,4 btfss DZ03,2 bsf PORTD,5 btfss DZ03,3 bsf PORTD,6 btfss DZ03,4 bsf PORTD,7 clrf PORTE btfss DZ03,5
bsf PORTE,0 btfss DZ03,6 bsf PORTE,1 btfss DZ03,7 bsf PORTE,2 RETURN Definitionen ; Allg. Grunddefinitionen clrw clrwdt
BANKSEL TMR0 clrf PORTA clrf PORTB
clrf PORTC clrf PORTD clrf PORTE
BANKSEL OPTION_REG movlw b'00000000' movwf ADCON0 movlw b'00000111' movwf ADCON1 movlw b'00000001' movwf TRISA movlw b'00000000' movwf TRISB movlw b'00000000' movwf TRISC movlw b'00000000' movwf TRISD movlw b'00000000' movwf TRISE clrf INTCON movlw b'00000011' movwf OPTION_REG clrwdt BANKSEL TMR0
clrf PORTA clrf PORTB clrf PORTC
clrf PORTD clrf PORTE clrf DZ00
clrf DZ01 clrf DZ02 clrf DZ03
clrf TIMEREG1 call TEST Main clrwdt
call TIMER call EINGANG goto Main END |
|
 |
 |
|
Der Aufbau:
|
 |
 |
|
 |
|
 |
|
|
Los ging alles mit einer Idee, einem Haufen Einzelteile eines alten Drehzahlmessers und etwas Effektlack.
|
|
|
|
 |
|
|
Die LEDs waren auch schnell montiert und mit Heißkleber auf der Unterseite vergossen.
|
|
|
|
 |
|
|
Nun wurden die einzelnen Leitungen für die LEDs angelötet und der Magnetteil des alten Meßinstruments als Skalenhalter montiert.
|
|
|
|
 |
|
|
Mal überlegen... Was fehlt noch? Ja, genau richtig! Die Schaltung! Als Trägerplatine wurde hierfür eine
alte Streifenrasterplatine rundgeschnitten und das schon etwas korrodierte Kupfer abgeschliffen.
|
|
|
 |
|
|
Nachdem alle Einzeldrähtchen an der Schaltung angelötet waren, wurde diese direkt auf das Display-Gehäuse geschraubt. Alle Versorgungsleitungen
wurden auf der Kupferseite angelötet und mit Kabelbinder mechanisch Zugentlastet.
|
|
|
|
 |
|
|
Nun geht’s ans Eingemachte: Die Software!
|
|
|
|
 |
|
|
Alle Tests erfolgreich. Ein Demo/Test-Modus wurde auch schon programmiert. Nun wird das Ganze in das frisch lackierte Gehäuse gebaut.
|
|
|
 |
|
 |
|
 |
|
|
Zunächst wurde die Skalenscheibe in 250’er Schritten mit einem 3mm-Bohrer gebohrt und so für die LEDs vorbereitet.
|
|
|
 |
|
Die LED-Vorwiderstände sind direkt an die LED-Beinchen angelötet worden und wurden der Einfachheit halber gleich zusammengeschlossen.
|
|
|
 |
|
|
Nun sind alle LEDs versorgt, das Display ist somit fertig.
|
|
|
 |
|
Der fast fertige, sehr einfach gehaltene Schaltungsaufbau.
|
|
|
 |
|
Erster Test: Leuchten alle LEDs?
|
|
|
 |
|
Nach längerer Justagearbeit nun endlich ein sehr gutes und genaues Anzeigebild. Jetzt wird getestet...
|
|
|
 |
|
Abschließender Test mit roter Hintergrundbeleuchtung und Drehzahlanzeige. Ein Walktronics-Schriftzug ist auch schon drin ;)
|
|
 |
 |
|
Weitere Fotos:
|
 |
|
 |
|
Natürlich blieb es nicht nur bei dem Aufbau. Die Schaltung wurde gleich am nächsten Tag in das Auto meines Bruders verbaut.
|
|
|
 |
|
|
Das Opfer.
|
|
|
|
 |
Das Gesamtbild.
|
|