tahaks siis teada kuidas saaks panna lugema p88rdeid minutis...ytleme kasv6i herkoniga...mismoodi peaks olema kood...kuidas panna ajayhikus loendama?mitu korda sekundis v6i kuidas?
Teade
Collapse
Foorumi reeglid.
Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less
kood PICiga tahhomeetri tegemiseks
Collapse
X
-
Loe nt. mingi ajavahemiku vältel tahho anduri impulsse ja korruta tulemus sobiva konstandiga.
Kui aga igalt pöördelt tuleks üks impulss, tuleks hoopis mõõta ühele pöördele kuluv aeg ja sellest arvutada pöörlemiskiirus...Elektroonika töötab suitsu baasil.
Tähendab - igasse detaili on doseeritud täpne kogus suitsu.
Kui mõnest suits välja lasta, siis värk enam ei käi.
Comment
-
Oli kord endalgi midagi sellist vaja, see kood peaks ehk veidi aitama kui tahad asja siiski teha asmis (vähemalt ära see kompileerus), Muidugi on sellel koodil omad puudused ja piirangud aga head nokitsemist.
PS foorum ei lase panna üle ühe tühiku, seetõttu näeb allpool olev kood kah välja selline nagu ta on
#include <p16f628.inc>
;PICi confimine: powerup timer on, watchdog timer off, high speed osc
__CONFIG _PWRTE_ON & _WDT_OFF & _HS_OSC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Antud programm on mõeldud pic16f628 -le, mis töötab 20MHz- ise taktiga ;
;Herkoni või mingi muu anduri võib ühendada portb.0 -ga ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Muutujad
sekund Equ 0x20 ;Timeri sekundi väärtus
kymnendiksekund Equ 0x20 ;Timeri kümnendiksekundi väärtus
turn_time_sec Equ 0x20 ;Ühe pöörde tegemise aeg (sekundid)
turn_time_sec_komakoht Equ 0x20 ;Ühe pöörde tegemise aeg (kümnendik)
org 0x000 ;Põhiprogrammi paiknemisaadress
goto init
org 0x4 ;Interruptrutiini paiknemisaadress
goto clock
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;
;Üldine initsialiseerimine ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;
init
;Interrupt init
BSF STATUS,RP0 ; Bank1
movlw b'00000001'
movwf PIE1 ; Enable timer1 overflow interrupt
movwf TRISB ; Portb.0 input
BCF STATUS,RP0 ; Bank 0
clrf PIR1 ; Clear all interruptflags
movlw b'11000000
; Interruptid lubatud, Interruptid perifeeriasedametes lubatud
movwf INTCON
movlw b'00110001'
;Timer1 prescale 1:8,timer1 internal clock,timer1 start
movwf T1CON
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Mainloop ;
;Programmi põhiosas oodatakse et portb.0 -ile pinge rakendataks ;
;Kui portb.0 tuleb impulss, omistatakse mõõdetud aeg sekunites ;
;ja kümnendiksekundites muutujatele, mis näitavad ühe pöörde ;
;tegemiseks kulutatud aega ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;
mainloop
btfss PORTB,0 ;Kas portb.0 on high
goto mainloop movfw sekund ;Ei ole, tagasi mainloopi movwf turn_time_sec ;Jah on
movfw kymnendiksekund
movwf turn_time_sec_komakoht
waitforfallingedge
btfsc PORTB,0 ;Kas portb.0 on LOW goto waitforfallingedge ;Ei ole veel goto mainloop ;Jah on
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
;Clock ;
;Kutsutakse välja kui timer1 register täis saab ;
;Timer1 registrisse antakse sellised väärtused et register ;
;täituks 20 MHz clocki juures täpselt 0,1 sekundiga ;
;Iga 10 täitumise järel liidetakse sekundi muutujale 1 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
clock
movlw d'220'
movwf TMR1L
movlw d'11'
movwf TMR1H
;Liida kümnendiksekundi lugejale 1 juurde
incf kymnendiksekund, 1
;Lisatakse tööregistrisse väärtus 10
movlw d'10'
;Lahutatakse kümnendiksekundi väärtusest 10
subwf kymnendiksekund,0
;Juhul kui eelmine tehe andis vastuseks 0, siis tagasi main loopi
btfss STATUS,2
return
clrf kymnendiksekund ;Nulli kümnendiksekund
incf sekund, 1 ;Liida sekundi lugejale 1 juurde
return
end
Comment
-
Proovisin golf-3 peal, ei toimi. Nimelt ühe süüte asemel käis 3 süüdet ja elektroonika oli segaduses, näitas totaalselt valesid numbreid. Otse pöörete anduri pealt võetud impulss pani asja õigesti käima.
Kellel huvi, siis mul numbriline tahomeeter täitsa olemas, tegin kunagi, ise ei kasuta. PIC prose baasil, numbreid vahetab 5 korda sekundis, nii et näit peaks olema piisavalt kiire.
Comment
-
Originally posted by urmas78@Nov 10 2004, 12:25
Kellel huvi, siis mul numbriline tahomeeter täitsa olemas, tegin kunagi, ise ei kasuta. PIC prose baasil, numbreid vahetab 5 korda sekundis, nii et näit peaks olema piisavalt kiire.Head susserdamist !
Comment
-
led, 2 numbrimärki, 1000p/m näitab 10, 6500p/m näitab 65, 10000p/m nihutab näitu= 10, maks 30000p/m = 30 siis. mingi ledi pani vist kah põlema, kui üle 10000 p/min oli. Anduriks võtsin signaali süüteandurilt, seal oli 2 impulssi/1-he pöörde jooksul.
Möödud kõrgus 25, laius 55, sügavus 25, korpust pole. Numbri kõrgus 12,7mm, roheline. Skeem-soft olemas, võin alati uue teha, vastavalt mõõtudele.
Comment
-
LED-iga tahhomeetri lähtekood:
http://www.hot.ee/urmas78/Taho.html
Projeks ASM-is.
Õppeesmärgil siis.
Comment
-
Ehk on selline link abiks.
http://www.eelkevisser.nl/anytacho.htm
Toimib päris normaalselt, see tahhokas.
Comment
-
Originally posted by eixx@Nov 18 2004, 02:59
Ehk on selline link abiks.
http://www.eelkevisser.nl/anytacho.htm
Toimib päris normaalselt, see tahhokas.
Oskab keegi öelda, kus kohast tale impulsid sisse lastakse?
Comment
Comment