Seite 2 von 2

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Fr Jun 20, 2008 6:49 pm
von leinad78
tjoah und dank platzprobleme und mangels lm1815 kann ich mit beidem nicht dienen.

ich bräucht nen frequenzteiler oder am besten ne möglichkeit im originalen assembler-code die eingangsdrehzahl durch 6 zu teilen...

falls da jemand ne idee haben sollte...

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Fr Jun 20, 2008 8:20 pm
von Zweitaktfahrer
Teilen geht einfach durch 2, 4, 8 etc, durch 6 nicht so einfach. Da hilft evtl. ein Byte hochzählen bis 6 und damit den Trigger toogeln oder so. das im Quelltext zu realisieren bin ich aber nicht in der Lage...

Nachtrag:

Ich denke, Du musst für Deine Wünsche hier etwas ändern:

Code: Alles auswählen

(...)
***************************************************************************
**
** Computation of RPM
**
**   Result left in accumulator.
**
**     rpmk:rpmk+1
**     ----------- = rpm
**     rpmph:rpmpl
**
**  rpmk:rpmK+1 = RPM constant = (6,000 * (stroke/2))/ncyl
**  rpmph:rpmpl = period count between IRQ pulsed lines, in 0.1 ms resolution
**
****************************************************************************

CalcRPM:
; 50% re-written in 026i with aim of better odd-fire averaging

        brset     running,engine,dorpmCalc
        ldhx      rpmph
        bne       dorpmCalc		; If zero then jump over calculation
					; - prevent divide by zero
        jmp       rpmCalcZero           ; previous branches out of range

dorpmCalc:
;tmp12,13,14 used to hold average iTime or avg iTime
        sei                    ; must block ints for this little period
        mov       iTimeX,tmp12
        mov       iTimeH,tmp13
        mov       iTimeL,tmp14

        mov       iTimepX,tmp15
        mov       iTimepH,tmp16
        mov       iTimepL,tmp17
        cli

; If odd-fire is set (bit zero of Config13), then average RPM values
        lda       config13_f1
        and       #$01
        beq       NO_ODD_FIRE

YES_ODD_FIRE:
;average previous period with previous previous
        lda       tmp17    ; add together
        add       tmp14
        sta       tmp14
        lda       tmp16
        adc       tmp13
        sta       tmp13
        lda       tmp15
        adc       tmp12
        lsra               ; divide by 2
        sta       tmp12
        ror       tmp13
        ror       tmp14

NO_ODD_FIRE:
        lda       tmp12
        beq       rpmCalcFast		; If we have only 8-bit denominator,
					; then use native divide

;note, udvd32 re-written so that it uses
;tmp1,2,3,4 as intacc1
;tmp5,6,7,8 as intacc2
;tmp9,10,11 as temp storage instead of extra stack

rpmCalcSlow:
;need to divide period (tmp12,13,14) by 100 to obtain period time in 0.1ms
        ldx       #100T
        clrh
        lda       tmp12
        div				; A rem H = (H:A) / X
        sta       tmp12
        lda       tmp13
        div				; A rem H = (H:A) / X
        sta       tmp13
        lda       tmp14
        div				; A rem H = (H:A) / X
        sta       tmp14

        lda       tmp12
        bne       rpmCalcZero           ; if tmp12>0 then very slow indeed (<100rpm)


        clr       intacc1
        clr       intacc1+1

        mov       tmp13,intacc2
        mov       tmp14,intacc2+1

        lda       rpmk_f1
        sta       intacc1+2
        lda       rpmk_f1+1
        sta       intacc1+3

        jsr       udvd32		; 32 / 16 divide

        lda       intacc1+3		; get 8-bit RPM result
        bra       rpmCalcDone

rpmCalcFast:
;This (new) slower code takes the time between IRQs in 1us accuracy to calc the rpm
;this should eliminate the jumpiness at high rpm where one 0.1ms step > 100rpm
;
;Multiply rpmk x 100 then do 32/16 divide using 1us time
        lda      #100T
        ldx      rpmk_f1+1			; LSB of multiplicand.
        mul
        sta      intacc1+3			; LSB of result stored.
        stx	 intacc1+2			; Carry on stack.
        lda      #100T
        ldx      rpmk_f1			; MSB of multiplicand.
        mul
        add      intacc1+2			; Add in carry from LSB.
        sta      intacc1+2		; MSB of result.
        bcc      nox_of
        incx
nox_of:
        stx      intacc1+1
        clr      intacc1
;rpmk x 100 now dividend
;make iTime the divisor
        mov      tmp13,intacc2
        mov      tmp14,intacc2+1
        jsr      udvd32         ; 32/16 divide

        lda      intacc1+3		; get 8-bit RPM result
        bra      rpmCalcDone

rpmCalcZero:
        clra

rpmCalcDone:
        sta       rpm
(...)

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Fr Jun 27, 2008 6:13 pm
von leinad78
so, ich hab jetzt endlich nen passenden hallgeber gefunden und nen magnet im polrad.

jetzt wurde mir gesagt, dass der hallgeber nur 5V verträgt. gut, muss ich 5V der ms nach aussen führen, kein größeres problem. unschlüssig bin ich mir hingegen bei der auswahl des entsprechenden umbaus. ich hab jetzt für mich mal überlegt, dass folgendes richtig sein müßte:

Bild

ich lege 5V auf den hallgeber drauf, ziehe die signalleitung mit nem pull-up auf 5V und hab somit die high->low schaltung für 5V?!

wenn ichs richtig verstehe, muss ich D5 und D8 durch ne normale leitung ersetzen und nen widerstand zwischen der ersatzleitung für d5 und R11 setzen?! muss der normale pull-up dann trotzdem rein?

wobei ich grad wieder leicht ins zweifeln komme, die pkw hallgeber arbeiten ja doch eher andersrum?!

der pull-up zieht mir die signalleitung auf 5V und sobald der magnet da ist, fällt die flanke.... is meine obige überlegung da richtig?!

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Fr Jun 27, 2008 10:45 pm
von Zweitaktfahrer
Sieht schan ganz gut aus. Der 390 Ohm Widerstand kannst Du auch überbrücken. Der Pullup muss sein (da der Ausgang des Hallgebers sehr wahrscheinlich ein Open Collector ist)
leinad78 hat geschrieben:ich lege 5V auf den hallgeber drauf, ziehe die signalleitung mit nem pull-up auf 5V und hab somit die high->low schaltung für 5V?!
Ja.
leinad78 hat geschrieben:der pull-up zieht mir die signalleitung auf 5V und sobald der magnet da ist, fällt die flanke....
So ist es...

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Fr Jun 27, 2008 11:03 pm
von leinad78
also ersetz ich D5 durch ne drahtbrücke, D8 ist schon ne Drahtbrücke und der widerstand kommt an VCC und ehemals D5?!

sonst noch was?! sollte ja eigentlich alles sein.

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Sa Jun 28, 2008 5:47 am
von Zweitaktfahrer
leinad78 hat geschrieben:(...) und der widerstand kommt an VCC und ehemals D5?!

sonst noch was?! sollte ja eigentlich alles sein.
Mach den Pullup 390 Ohm, dann reichen 5V um den Optokoppler zu betreiben.

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Sa Jun 28, 2008 1:14 pm
von leinad78
läuft :D

der pull-up am hallgeber scheint mit der obigen version des umbaus unnötig zu sein, zumindest läufts wunderbar.

jetzt muss ich nur mal gucken warum easytherm nichts bewirkt bei den sensoren :(

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Sa Jun 28, 2008 1:32 pm
von Zweitaktfahrer
leinad78 hat geschrieben:läuft :D

der pull-up am hallgeber scheint mit der obigen version des umbaus unnötig zu sein, zumindest läufts wunderbar.(...)
Dann hat der Hall Sensor einen aktiven, d.h. PNP Ausgang. Auch gut.

Re: Mini-MS: Tach Signal verringern? 62-2 Triggerrad nutzbar?

Verfasst: Sa Jun 28, 2008 2:41 pm
von leinad78
war ja auch teuer genug, das mistding :)

easytherm hab ich jetzt auch in den griff bekommen. muss ich mal meine breitband rauskramen und mal gucken was die lambdawerte sagen :)

(edit)

na klasse, man sollte sich nicht zu früh freuen. hab alles aufgeräumt und sortiert und nu geht die MS locker 15 mal pro minute in reset... :x

(edit2)
firmware neu drauf gespielt, tables neu erstellt und nu sind die resets weg. muss man nich verstehen...