Olisi tarkoitus rakentaa pulssilaskuri, jota ohjataan pulssipyörältä josta signaalit pulse up ja pulse down.
Toteutus BCD up/down laskurilla.
Ongelmana on 0-kohta, alaspäin laskettaessa laskurihan siirtyy 9 tilaan 0 jälkeen.
Kuinkahan olisi toteutettavissa, jotta laskuri
laskisi esim -1,-2, jne 0-jälkeen ja tietenkin ylöspäin laskettaessa 1,2, jne 0-jälkeen ???
Toteutus BCD up/down laskurilla.
Ongelmana on 0-kohta, alaspäin laskettaessa laskurihan siirtyy 9 tilaan 0 jälkeen.
Kuinkahan olisi toteutettavissa, jotta laskuri
laskisi esim -1,-2, jne 0-jälkeen ja tietenkin ylöspäin laskettaessa 1,2, jne 0-jälkeen ???
Vastaukset 23
Vanhimmat
Muistaakseni niissä BCD up/down laskureissa on "carry" pulssin lisäksi "borrow" jota voi käyttää - merkin ohjaukseen.
Onhan niissä, mutta ongelma on, laskuri 0:n jälkeen näyttää 9:ä, näin olen ymmärtänyt.
Eli alaslaskiessa esim 5432109876 kun tavoitteena
olisi 5432101234. Kuinka toteuttaa ??
On jokin jota en hahmota jeten vihjatkaas.
Ymmärsinkö oikein, että pulssipyörän pyöriessä toiseen suuntaan, lukema nousee ja vastakkaiseen suuntaan pyöriessä lukema vähenee. Saavuttaessa nollakohtaan alkaa lukema kasvamaan, vaikka pyörimissuunta ei vaihdu. Eli asteikko on niinkuin lämpömittarissa.
Löytyyhän piiri esim.7106 jota voi käyttää lämpömittarina tai jännitteen mittaukseen. Se laskee myös negatiivisia arvoja. Pulssilaskurina sitä ei helposti voi käyttää, mutta jos pulssit voisi muuttaa jänniteviestiksi, niin sitten homma onnistuu.
Tai sitten on olemassa työstökoneissa olevia digitaalisia mittalaitteita joilla mitataan liikematkoja. Nekin mittaavat etäisyyksiä nollakohdan molemmin puolin.
Et kai rakentele jotakin tällaista?
Aivan eli toiseen suuntaa kasvaa ja toiseen vähenee ja nollan jälkeen taas tulisi kasvaa eli
näyttö näyttäisi esim -180 ast, mutta nuo bcd laskurit laskevatkin 0 jälkeen esim (3 digit)
000, 999, 998 jne , näin olen asian datalehdistä ymmärtänyt.
Tosiaan mittalaitetta joka mittaa pituuksia 0 kohdan molemminpuolin, mutta minun tapauksessa asteita.
Olinpas huolimaton.Homma ei ollutkaan niin yksinkertainen,kuin miltä näytti.Olisi hyvä tietää paljonko niitä pulsseja lasketaan.Toisaalla selvisi,että pulssit saadaan tyypilliseltä optohaarukalta kahtena eri vaiheisena signaalina.
Taitaa olla liian hankalaa koodata 9=1,8=2 jne...Eikö näyttö voisi olla esim.0-10-20? On laskureita mihin voi ladata haluamansa lukema nollauksen sijaan.Miten BCD/DECIMAL laskuri ja ledirivi perään eikä numeroita.Nyt on aika kortilla mutta voin tuumia asiaa.
Olet valinnut /- asteikon laskurille.
Itse kyhäsin joskus ISA väyläisen kortin PC.hen
vastaavaa hommaa tekemään,käytin 74HC192 U/D laskureita.
Laitteen käynnistyksen jälkeen härdellin piti etsiä paikkatieto eli ajaa jompaankumpaan laitaan
jossa mikrokytkin ja siinä nollata laskuri,sitten
toiseen laitaan josta vastaavasti saatiin toisen
suunnan rajatieto.
Nollakohta (keskikohta) oli sitten laskurin lukema/2.
Nykypäivänä kyhäisin ko. laskurin mikrokontrollerilla.
Tarkoitus olisi käyttää optista anturia, joka antaa kahden kanavan vaihe-erolla pyörimissuunnan.
Nolla kohta voitaisiin asetaa mihin kohtaan tahansa nollaamalla laskuri.
Ajattelin itsekin noita esim PIC. controllereita,
googlella yritin löytää vihjeitä, mutta niiden ohjelmointi onkin sitten jo oma tarinansa.
tarkoituksena olisi kustanustenja osien minimoiminen, esim cd 40110 on up/down laskin ja ohjaa vielä 7seg näyttöäkin.
Ideana olis kaiketi tuon 0-kohdan havaitseminen ja
sen ohjaama "kytkin", jolla vaihdetaan nuo up ja down karvat ristiin.
Tarkoitus olisi käyttää optista anturia, joka antaa kahden kanavan vaihe-erolla pyörimissuunnan.
Nolla kohta voitaisiin asetaa mihin kohtaan tahansa nollaamalla laskuri.
Ajattelin itsekin noita esim PIC. controllereita,
googlella yritin löytää vihjeitä, mutta niiden ohjelmointi onkin sitten jo oma tarinansa.
tarkoituksena olisi kustanustenja osien minimoiminen, esim cd 40110 on up/down laskin ja ohjaa vielä 7seg näyttöäkin.
Ideana olis kaiketi tuon 0-kohdan havaitseminen ja
sen ohjaama "kytkin", jolla vaihdetaan nuo up ja down karvat ristiin.
Kustannusten minimointi...Pic:llä se tosiaan minimoituu. Jos et itse osaa kirjoittaa sopivaa koodia, kysy josko joku tekisi sen edullisesti puolestasi ja vaikkapa toimittaa valmiin piirin sinulle. Itselläni jäi tuo ohjelmoinnin opettelu vaiheeseen muiden töitten takia. Ei tuommoisen ohjelmointi pitäisi vaikeaa olla.
Ei jummarra tuota "vaihtaa UP/DN kanavat ristiin"
Tekemässäni sätöksessä oli vastaava optinen anturi,siltä tulevat pulssit olivat langoitetut
UP ja DOWN piikkeihin (Scmitt triggerin kautta)
jolloin ko. signaalien vaiheet sattuivat siten että pyörimissuunta tuli laskurille huomioduksi.
Vielä ihmetyttää miksi valita nollakohta jostain
"keskeltä" ?
Minulla oli kylläkin kyseessä DC minimoottori kierukkavaihde ,syntynyt liikerata oli about 10cm
laidasta laitaan (kummassakin laidassa oli mikrokytkin).
Mikrokontrollerilla homma onnistuisi (esim Atmel)
käyttämällä jotain sen sisäisestä laskurista
ja sen arvon saisi muunnettua halamaasi /- skaalaan ohjelmallisesti.
Ohjelmoinnin taas oppii tekemällä sitä.
Entä jos kontrollerissa ei riitä laskukapasiteetti,jos tarvii laskea vaikka 50000 pulssia niin miten silloin kannattaisi toimia?
kiitos jo vastauksesta etukäteen...itselläni ei laskurin tekemisestä vielä tarpeeksi tietoa
Itse olen käyttänyt linkissä olevaa controlleria.
Siinä on kaksi laskuria 8 ja 16 bit.
16bit=65536
Lienee sama kumpi sopisi,niissä on "overflow" bit joita laskemalla voi laajentaa laskenta-aluetta mielin määrin.
Toisaalta voi myös "kytkeä" laskurit sarjaan
jolloin ei jää vapaata laskuria muuhun käyttöön.
Lieneekö tarpeetonta sanoa jotta tämmöisellä piirillä voi kontrolloida aikamoista härdelliä.
Itse suosittelisin Atmelia,siihen saa myös apuja
netistä hyvin.
http://www.atmel.com/dyn/resources/prod_documents/doc0841.pdf
Jos pitää laskea hyvin suurella nopeudella,niin ongelmia voi olla tiedossa.Ajatellaan vaikka sähkömoottoria joka pyörii 2000 r/min ja perässä on encoderi,joka antaa vaikka 1000 pulssia ringille.PIC 16F84 laskuritulo nielee sen kakistelematta,jos sitä voi muutoin käyttää.Mekaaninen suunnanmuutos ei voi tolkuttoman nopeasti tapahtua,joten aikaa laskenta suunnan muuttamiseen lienee ihan riittävästi.Jos ohjataan näyttöä,niin ei sitä ihmissilmälle nopeasti tarvitse päivittää,kunhan laskenta pysyy hallinnassa.Pitää muistaa,että kysymyksessä oli encoderi jonka kahdesta erivaiheisesta signaalista piti päätellä pyörimissuunta ja askelten määrä.
Jotta voisi tehdä ohjelman parhaalla tavalla pitäisi olla tarkasti määriteltynä vaatimukset.
Ohessa eräs linkki
http://koti.mbnet.fi/catapult/projekti/opas/opas.htm
http://www.mcmanis.com/chuck/robotics/projects/lab-x3/quadratrak.html
http://www.sprut.de/electronic/pic/programm/rotary/rotary.html
kokemuksesta voin sanoa että laskurilta vaaditaan noin 10 kertaa suurempi laskentanopeus kuin mitä laskennallinen nopeus on. Entenkin suunnanvaihdossa vaaditaan nopeutta.Tämä johtuu värinästä jota aina on, kun kysymyksessä on todellinen mekaaninen laite. Eli jos anturista joka antaa 100pls/kier ja pyörimisnopeus on 10 kier/sek on laskenta nopeus 1000pls/sek niin käytännössä laskurin pitää pystyä laskemaan noin 10000 pls/sek jotta se toimisi. Varsinkin suunnan vaihdossa.
harkita myöskin ihan valmista absoluuttianturia, joka antaa binäärikoodina (tavuna) paikkatiedon akselin kiertokulmasta. Noita antureita pitäisi löytyä 5VDC jännitteellekkin ja eri tarkkuuksina.. Tarkkuudella meinaan, et miten monta asemointi-tietoa anturi antaa millekkin matkalle..
pista dc moottori pyorimaan harveliisi ja amppeeri mittari rinnalle viisari nayttaa suunnan ja pulssit lineaarisesti.
Ohjelmalliset ratkaisut ovat ongelmallisia - suunnanmuutoksen yhteydessä SAATTAA yksittäinen pulssi hävitä. Etenkin jos tapahtuu edestakaista jauhamista. Kokeiltu on 15 vuotta CPU'n sisäisillä laskureilla ohjelmallisesti ja päädyin erilliseen rautaan. Ellei sitten ole jossain prossussa rakennettu todellista U/D-laskuria? Pullsianturina oli muutaman tuhat pulssia kierroksella antavia tarkkuusantureita.
Tämä meni poskelleen: "Kokeiltu on 15 vuotta CPU'n sisäisillä laskureilla"
Pitää olla: "Kokeiltu on 15 vuotta SITTEN CPU'n sisäisillä laskureilla"
http://www.doctronics.co.uk/4510.htm
Kellonastaan pulssilaskurin toinen vaihe ja U/D-nastaan toinen ... tietty lisäkilkettä mukaan minkä taasen tarve määrittää. Siihen voi sitten MYÖS ladata halutun tilan mistä laskin jatkaa ..
Sillä omani olen toteuttanut 20 bittisen laskimen - lisäkilkkeitä 74373, 74245 kytkee PC'n ISA väylään että osoitteen valintaa 74138 ja 74688 parilla ja peruskilke 7432 ja pulssit siivosin '1489' piirillä joka monasti nähdään RS232-yhteydessä.
.. jos tietäisi mitä olet kyhäämässä.
Siis voithan laskea "montako kierrosta" ja
kulmatiedon vaikka edellämainitulla kulma-anturilla jne.
Jos oikeasti haluaa ohjata jotain ko. värkillä, niin helpoimmalla siitä pääsee ottamalla pieni ohjelmoitava logiikka joissa ko. toiminto on vakiona.
Lisäksi ohjauksessa tulevat vertailut sisältyvät myös ominaisuuksiin sekä tietysti digitaalilähdöt laiteohjauksiin.
Tällöin tuo nollakohtakan ei ole ongelma.
Nopeutta vaihepulssitulolla voi olla muutamia kHZ.
Referenssipisteen haussa voi lisäksi käyttää Z-pulssia noiden A ja B lisäksi.
Laskurit ovat yleensä 32 bittisiä.
jos käytät laskurin ylintä bittiä
miinus merkkinä asia on helppo.
eli jos ylin bitti on 1 niin kaikki bitit käännetään toisinpäin ja lukuun lisätään 1.