Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevok: 1 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok NapísalOffline : 29.11.2021 12:28

Cieľom dnešného článku bude poukázať na možnosť využitia potenciometra a fotoelektrického snímača otáčok spoločne v jednom projekte, ktorý bude programovaný na platforme Arduino Uno (ATmega328P). Vo výsledku potenciometer bude slúžiť ako výstup pre odhad rýchlosti pre vyšší systém (vyšší systém nebude implementovaný ani opisovaný v tomto článku). V našom prípade využijeme 8 bodov pripevnených na koleso lokomotívy. Prechod týchto bodov bude zaznamenávať fotoelektrický snímač RobotDYN. V konkrétny časový interval sa počet prechodov spočíta a odošlú sa ako počet krokov do digitálneho potenciometra, ktorý sa nastaví na určitý odpor, ktorý je linárne odstupňovaný.

Rozloženie bodov prechodu na obruči kolesa rušňa:
Digitálny potenciometer, prerušenie, debouncing

Technické informácie o vozidle (elektrický rušeň triedy 362 "ESO") - Železnice 600 Vracov:
    vmax = 20 km/h / 3,6 = 5,55 m/s, (maximálna rýchlosť rušňa)
    d = 0,45 m (priemer kolesa na podvozku rušňa),
    obvod = pi*d = pi*0,45 m ≐ 1,413 m, --> vzdialenosť, ktorú koleso prejde na jedno otáčku
    n = vmax/obvod, teda n = 3.93-krát sa otočí koleso za 1 sekundu pri maximálnej rýchlosti 20 km/h
    T.j. 3,93*8 pulzov ≐ to predstavuje 31 pulzov na sekundu pri maximálnej rýchlosti 20 km/h

Medzi prichádzajúcimi pulzmi bude pri maximálnej rýchlosti rušňa pauza cca 32.25 ms. Tento interval je možné použiť pre rozlíšenie dvoch po sebe idúcich signálov bez započítania zákmitu, ktorý môže nastať na digitálnom vstupe.
Digitálny potenciometer, prerušenie, debouncing

Digitálny potenciometer X9C103S
Potenciometer je variabilný rezistor. Najčastejšie je v mechanickom vyhotovení s bežcom, avšak samostatnú kategóriu zastávajú aj digitálne potenciometre, ktoré je možné nastavovať elektricky cez GPIO mikrokontroléra. Nastavenie je možné v rozsahu, ktorý definuje katalógový list. Digitálne potenciometre sú navrhnuté s určitým odstupňovaním (krokom), o ktorý je možné minimálne navyšovať jeho hodnotu. Štandardne má do 255 krokov s rôznym rozsahom od 1kohm po XY kohm.
Digitálny potenciometer, prerušenie, debouncing
Digitálny potenciometer X9C103S, ktorý bol pre túto implemnetáciu použitý má rozsah nastavenia odporu 0 až 10 kohm, pričom je ho možné prenastaviť v 100 krokoch, ktoré sú identicky odstupňované po 100 ohm. Tento potenciometer má lineárnu charakteristiku. Prúdové zaťaženie potenciometra na výstupe je max 4.4 mA, preto sa nehodí do výkonových sústav, ale iba ako signalizačná súčiastka.

V aktuálnej implementácii sa za jednotku času (napr. 1 sekunda) nastaví potenciometer na hodnotu počet pulzov * 100 ohm. Výstup potenciometra je pripojený priamo do počítača vyššieho systému, ktorý hodnotu vizualizuje na displej stanovišťa lokomotívy. Pre prepojenie digitálneho potenciometra X9C103S s Arduinom sa využívajú 3 dátové vodiče (CS, INC, U/D) + napájanie.

Fotoelektrický snímač RobotDYN
Fotoelektrický snímač (RobotDYN) je založený na infračervenom vysielači a prijímači. Štandardne je prijímač schopný detegovať signál z vysielača, ktorý vysiela nepretržite. Tento výstup prijímača je priamo pripojený k DOUT (Digital Out) výstupu modulu. Teda v prípade prechodu bodu medzi vysielačom a prijímačom sa na výstupe DOUT objaví logická 0 - LOW. Senzor má dostupný aj analógový výstup, ktorý však v dnešnom článku nevyužijeme, nakoľko sa pre túto aplikáciu nehodí.
Digitálny potenciometer, prerušenie, debouncing
Arduino je schopné tento digitálny signál načítavať v prerušení, pričom sa zaoberá zostupnou hranou signálu z HIGH to LOW. Tento jav so zostupnou hranou nazývame aj FALLING. Na typ prerušenia RISING (vzostupná hrana), LOW prerušenie nezareaguje. Nežiadúci jav, ktorý nastáva je zvlnenie signálu, ktoré môže byť zapríčinené rôznymi javmi, napríklad nestálosť signálu, slabá filtrácia, pomalý prechod bodu popred snímač, externé rušenie a iné... Vo výsledku to môže zapríčiniť, že jeden reálny prechod načítaný aj niekoľko-krát z dôvodu zákmitov.
Digitálny potenciometer, prerušenie, debouncing
Existujú rôzne spôsoby, predovšetkým pre optimalizáciu takéhoto signálu hardvérovou formou napríklad využitím kondenzátora, ktorý daný zákmit dokáže eliminovať, predĺži častokrát aj jeho dĺžku dobehom napäťovej úrovne. Zákmit je veľmi krátky, trvá maximálne pár jednotiek milisekúnd.

Riešením je aj softvérový debounce, kedy prerušenie FALLING zareaguje na prechod z HIGH do LOW úrovne, avšak využívame aj overenie času, či je medzi signálmi aspoň x milisekúnd. Nakoľko z predchádzajúceho prepočtu vieme, že medzi pulzami bude 32 milisekúnd pri maximálnej rýchlosti rušňa, môžeme zvoliť pokojne 15 až 30 ms debounce. To zaručí, že načítame až ďalší signál a nie zvlnenie existujúceho signálu so zákmitmi. Obdobný debouncing sa využíval napríklad v projekte so zrážkomerom Hydreon RG-11.

Všetky premenné, ktoré sa využívajú v prerušení, musia byť typu volatile, aby ich prerušenie obslúžilo bez ohľadu nato, kde sa aktuálne program vykonáva. Prerušenie obslúži premenné typu volatile aj v prípade, že je program zastavený na funkcii delay(). V našom prípade máme volatile premenné pre počet pulzov (int) a čas (unsigned long) načítaný z funkcie millis(). Prerušenie (v prípade dosky Arduino Uno) je možné využiť iba pre vývody s podporou hardvérového prerušenia, t.j. D2, D3.

V systéme sa využíva počítadlo millis(), ktoré raz za 1000 ms prerušenie odpojí. Následne Arduino zapíše hodnotu načítaných signálov ako počet krokov na digitály potenciometer, vynuluje počítadlo a následne opäť obnoví prerušenie. Čas 1000 ms pre vyhodnotenie je iba ukážkový a je v systéme plne konfigurovateľný prostredníctvom UART monitoru, kedy je možné zapísaním znakov +, respektíve - pripočítať a odpočítať 100 ms (pre testovacie účely a nájdenie optimálneho času refreshu).

Nakoľko je možné na digitálny potenciometer X9C103S zapísať hodnoty 0 až 100, nesmieme presiahnuť 100 krokov. Optimálne je teda zaznamenávať pulzy max 3 sekundy (31 pulzov na sekundu pri maximálnej rýchlosti 20km/h), aby sme zaručili počet krokov pod 100, prípadne ich môžeme priemerovať / vydeliť počtom prechodov, čím získame počet otáčok kolesa ako takého, čo už môže však byť v riešení vyššieho systému, ktorý pracuje s výstup digitálneho potenciometra.
Digitálny potenciometer, prerušenie, debouncing

Samotný prepočet už realizuje vo vyššom systéme C# aplikácia na počítači, ktorá určí aktuálnu rýchlosť vozidla a dokáže túto rýchlosť vizualizovať aj na monitore lokomotívy. Nakoľko update prebieha štandardne každých 1000 ms t.j, refresh rate je 1 Hz, zmena rýchlosti na monitore - analógovom vizualizéri (na štýl analógového ručičkového voltmetra) nie je skokovitá, taktiež v prípade skokovitých zmien môže byť táto zmena kompenzovaná C# aplikáciou s pozdržaním / plynulým prechodom k hodnote na vizualizéri. Počítač je pripojený priamo k výstupu potenciometra X9C103S.

Potenciometer X9C103S má určitú odchýlku na nastavenej hodnote odporu v rozmedzí 10 až 20%, reálne je cca do 12% s čím treba počítať.

Schéma pre pripojenie potenciometra k Arduinu:
Digitálny potenciometer, prerušenie, debouncing

Programová implementácia s možnosťou zmeny refresh rate cez UART: https://gist.github.com/martinius96/d1befbb807ff76562e634fa7c9cf00c5


Odpovedať na tému [ Príspevok: 1 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Čo je to digitálny potenciometer

v Elektronika

16

3615

05.03.2009 20:16

acirud Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Potenciometer

v Elektronika

8

1094

25.01.2008 22:29

pufi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Potenciometer

v Elektronika

2

836

24.05.2011 13:31

NecKneSS Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prerušenie spojenia

v Operačné systémy Microsoft

3

463

23.12.2007 19:01

Jaro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prerušenie príkazu

v HTML, XHTML, XML, CSS

2

516

31.01.2009 19:21

don jebot Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. precizny potenciometer

v Elektronika

4

783

23.12.2007 23:12

Spirit Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Schéma: Elektronický potenciometer

v Elektronika

0

4101

23.01.2007 6:11

Elektronic Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. prerusenie instalacie visty

v Operačné systémy Microsoft

2

475

09.09.2008 21:03

sysel777 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prerusenie zvukovej stopy

v Video programy

5

380

24.12.2014 20:13

Miso122 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. repro genius - potenciometer

v Elektronika

3

944

12.12.2007 22:41

feeroo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pravdepodobne prerusenie session

v PHP, ASP

2

466

04.09.2007 17:04

Matho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Neni to nahodov potenciometer??

v Elektronika

13

3107

03.09.2007 12:01

DJ_BobiseK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Logitech Z523 - zly potenciometer

v Zvuk

16

1223

15.08.2016 14:32

hanesovic Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prerušenie nahrávania videa na smartfone

v Smartfóny a tablety

2

291

22.09.2013 20:52

capricorn7 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. V noci krátke prerušenie DSL na celom Slovensku

v Novinky

2

428

23.08.2007 0:11

Jopi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Rufus - prerusenie kontroly "badblocks" (USB)

v Ostatné zariadenia

1

346

17.03.2014 22:17

Deshmode Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra