Kierroslukumittari funktiogeneraattorilla

Tervehdys
Tarkoituksena on tehdä "kierroslukumittari" joka tehdään funktiogeneraattorilla. Funktiogeneraattori antaa kanttiaaltoa mikrokontrollerille joka sitten laskee näiden kanttiaaltojen määrää ja sytyttää sitä enemmän ledejä mitä enemmän "kierroksia" on.
Tällä hetkellä olen ohjelmoinut mikrokontrollerille ulkoisen keskeytyksen, johon tulee kanttiaalto ja sen lisäksi Timerin, joka toimii 75hz ja se laskee sekunteja.

"Kierrosten" määrää ohjataan säätämällä funktiogeneraattoria sopivalla taajuudella. Alhaisempi taajuus -> vähemmän kierroksia -> vähemmän ledejä päällä. Isommalla taajuudella enemmän kierroksia jne.

Tähän olen nyt jumittunut. Minulta puuttuu laskukaavat joilla saan laskettua/mitattua "kierrosten määrää" eli funktiogeneraattorin taajuutta.
Millä tavalla tämä onnistuu? Tässähän pitäisi soveltaa jo tehtyä sekuntiajastinta ja pulssien määrää, vai miten on?
9293
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

kellokide ja laskuripiiri, mieluiten militaryversioinen, bufferoitu.
Sitten itse vain tinailet led-valoja paikoilleen että mitä laskuripiiri näyttää ajastimellaan.

Äänestä

Sensori jos on joku hyvälaatuinen foto-transistori, niin sen perään opamp jotta se antaa signaalit sitten laskuripiiri kellollaan laskee.

Laittaisin tuplana itse, jos toiseen tulee vika noissa fototransistoreissa ja osissa, jos voi olla likaa, jotta toinen toimii ja varmistaa, jolloin voi tunkea jonkun NAND-piirin vaikka väliin ennen logiikan menoa laskurille.

Äänestä

Tarkoituksena olisi siis ei ole mitään full-scale kierroslukumittaria vaan ihan tämmöinen pikkuinen harjoitus joka vertaa taajuutta aikaan.
Eli ei sensoreita tai laskupiirejä :)

Äänestä
  • Jaa et hallunnut mitään full-scale -mittaria :D

    Nooh löytyy varmaan vaihtoehtoja... mukavaa harrastelua on jos itse vaikka pojan kanssa rakentelee, tehdään omia..

    Äänestä

  • fullscaleformulatkin kirjoitti:

    Jaa et hallunnut mitään full-scale -mittaria :D

    Nooh löytyy varmaan vaihtoehtoja... mukavaa harrastelua on jos itse vaikka pojan kanssa rakentelee, tehdään omia..

    Täytyy sinun vähän skaalata tuota mittaria. Lasket pulsseja keskeytykseen saakka eli tuo keskeytystaajuus on minimi taajuus jonka huomaat, ehtii tulemaan yksi pulssi. Jos keskeytystaajuus olisi 10Hz niin aika on 100ms. Taajuus lasketaan pulsseja per aika; 10 pulssia tuossa ajassa tarkoittaa 100Hz, 15 150HZ jne. Ohjelmointi on helpompi jos valitset keskeytykseksi jonkun mikä menee tasan, toisaalta laskuri määrittää kuinka pitkälle voidaan laskea, 8 bittiseen 256 mikä määrittää maksimitaajuuden. 16 bittiseen laskuriin 65536 eli skaala on laajempi.

    Äänestä

Yksinkertainen juttu on tehdä 555-ajastinpiiristä "One Shot", joka antaa vakiolevyisiä pulsseja, jotka integroidaan RC-piirillä. Ulostulossa vaikka kiertokäämimittari, joka integroi nuo pulssit ilman RC-piiriäkin. Monostabiilia eli One shottia liipaistaan kierrolukuun verrannollisilla pulsseilla.
http://www.csgnetwork.com/ne555timer1calc.html
http://www.electronics-tutorials.com/devices/555-tachometer.htm
http://www.electroniccircuitsdesign.com/555-timer-circuits/tachometer-circuit-using-555-timer.html
http://www.4crawler.com/Diesel/CheapTricks/Tachometer/Images/tach_17t.gif
http://www.edaboard.com/thread164621.html

Äänestä

Et kertonut mitä mikrokontrolleria käytät, mutta yleensä haluat mitata pulssin jaksonpituutta etkä pulssien määrää tietyssä ajassa, koska ensimmäisellä saat kierrosluvun paljon nopeammin ja tarkemmin.

Tähän käytetään input capture toimintoa. Se laittaa talteen laskurin sen hetkisen arvon. Sitten vaan lasket aika-eron kahden peräkkäisen pulssin välillä ja tajuus on sen käänteisluku.

Äänestä

Enemmän tietoa:
Jos funkkarilta otetaan esim. 10-80Hz taajuudella kanttiaaltoa, niin että 10Hz taajuudella palaa 1 ledi, 20Hz taajuudella 2 lediä.... 80Hz taajuudella 8 lediä.

Mikrokontrollerina toistaiseksi toimii 16F887 paremman puutteessa.

Tällä hetkellä olisi niin että funktiogeneraattori tulisi ulkoiseen keskeytykseen, joka sitten laskee montako kertaa pulssia tulee jossain aikayksikössä. Kidettä en ole vielä valinnut, taajuudelta 4Mhz -20Mhz kuitenkin.

Vielä kerran: Ei ole "oikea" kierroslukumittari vaan piskuinen kokeilu :)

Äänestä

http://ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf

sivulla 124:
CCP1M: ECCP Mode Select bits
0101 = Capture mode, every rising edge

ECCP Mode Timer Resource
Capture Timer1

Eli capture ottaa timer1:n arvon talteen.
sivu 76:FOSC/4
sivu 79:
T1CKPS: Timer1 Input Clock Prescale Select bits
11 = 1:8 Prescale Value

Eli timerin1 taajuus on Fosc/(4*8)=Fosc/32
eli esim 4MHz kellolla t1:n tiksi(Tq) on 32/4E6Hz=8us eli 10Hz:lla tulee 1/(10*8E-6)=12500 tiksiä.
Sytytettävien ledien määrä on ((25000/tiksit) 1)/2
CCPRxH CCPRxL (s.126)rekistereistä saa tuon tiksi määrän pulssin reunalla, ja capture keskeytyksessä saa laskettua tiksit=nykyiset-edellisen isr:n tiksit.

Äänestä

Kommentoi aloitusta


RPMmittari kirjoitti:

Tervehdys
Tarkoituksena on tehdä "kierroslukumittari" joka tehdään funktiogeneraattorilla. Funktiogeneraattori antaa kanttiaaltoa mikrokontrollerille joka sitten laskee näiden kanttiaaltojen määrää ja sytyttää sitä enemmän ledejä mitä enemmän "kierroksia" on.
Tällä hetkellä olen ohjelmoinut mikrokontrollerille ulkoisen keskeytyksen, johon tulee kanttiaalto ja sen lisäksi Timerin, joka toimii 75hz ja se laskee sekunteja.

"Kierrosten" määrää ohjataan säätämällä funktiogeneraattoria sopivalla taajuudella. Alhaisempi taajuus -> vähemmän kierroksia -> vähemmän ledejä päällä. Isommalla taajuudella enemmän kierroksia jne.

Tähän olen nyt jumittunut. Minulta puuttuu laskukaavat joilla saan laskettua/mitattua "kierrosten määrää" eli funktiogeneraattorin taajuutta.
Millä tavalla tämä onnistuu? Tässähän pitäisi soveltaa jo tehtyä sekuntiajastinta ja pulssien määrää, vai miten on?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu