Zákmity na rotačním encoderu

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
nixdorf
Příspěvky: 540
Registrován: 06 kvě 2017, 00:00

#16 Příspěvek od nixdorf »

@Mahoney: i tam už som padnul na hubu :D

Jasné, ten kód hore je barlička, zahadzuje sa tam IRQ pinom, ktorých je v AVR jak šafranu, ide to celé spraviť v loope na nepodstatnom pine. Ale to má na odskúšanie, či mu to pomôže. Ono, až začne loop() rásť v dĺžke a začne byť pomalý, potom sa jedno z takýchto "riešení" prebudí a pokúše ho do chrbta.
Čiže tiež zapracovať na mechanickej a elektrickej časti inkrementu, ako bolo hore uvedené.
Uživatelský avatar
Cowley
Příspěvky: 3557
Registrován: 04 úno 2005, 00:00

#17 Příspěvek od Cowley »

A není ta vysílací dioda modulovaná?
Pak by bez tvarovače výstupního signálu i ten fotopřijímač (tranzistor nebo dioda) byl taky modulovaný
Uživatelský avatar
Ruprecht
Příspěvky: 1494
Registrován: 28 zář 2005, 00:00
Bydliště: ZČ + JM

#18 Příspěvek od Ruprecht »

Dioda není modulovaná (pokud není modulované napájení) :wink:
Najdi odpor, kterým je napájený fototranzistor na přijímací straně, přilož k němu paralelně 100n vývodový THT kondenzátor a toč kolečkem, kolik ti to vypíše pulsů.
Když promluví, tak buď kňučí, nebo lže.
Uživatelský avatar
bdn
Příspěvky: 560
Registrován: 16 led 2020, 00:00

#19 Příspěvek od bdn »

Ono podle zadání 2000 RPM a 16 pulzů na otáčku vychází:
- čas mezi pulzy T1=1.875ms
- při FCPU 16MHz, je to 30000 taktů CPU

Za 30000 taktů CPU lze stihnout docela dost operací. Pro začátek, jak se psalo výše by to šlo otestovat i bez interruptu.

Odstranění zákmitů softférově:
- Udělat digitalRead(),
- udělat impuls od nástupné hrany,
- spustit non-blocking softférový časovač na 1ms,
- po dobu chodu ignorovat vstup.

Další: Protože má kotouč 16 dílků, tak proměnná tik se nemusí nulovat. Stačí nechat volně běžet. Hodnotu 0..15 lze získat bitovým AND jako: tik_loop = 0x0F & tik.
Zkus se podívat na arduino fórum, jak se dělá non-blocking softférový časovač.
https://forum.arduino.cc/t/flashing-multiple-leds-at-the-same-time/1065564/2
https://forum.arduino.cc/t/example-code-for-timing-based-on-millis-easier-to-understand-through-the-use-of-example-numbers-avoiding-delay/974017
Uživatelský avatar
HF_Tech
Příspěvky: 2365
Registrován: 25 dub 2022, 00:00

#20 Příspěvek od HF_Tech »

Když tak na to koukám. Nestačilo by závoru otočit vzhůru nohama, aby LED svítila směrem nahoru a do fototranzistoru nesvítilo světlo z okolí?
Kdyby to nepohlo, tak bych ještě přidal na nožičky napájení závory kondík 47u. Pokud jde napájení motoru ze stejného zdroje, tak to může bt rušením z napájení.
Uživatelský avatar
bdn
Příspěvky: 560
Registrován: 16 led 2020, 00:00

#21 Příspěvek od bdn »

Někdy pomůže změnit napájení modulu na lineární zdroj. Možná se někde dostává rušení, které se následně LM393 zesílí. S osciloskopem se takové věci dobře vychytají...
Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“