ASK přenos pomocí ATTiny85

Odpovědět
RELAx
Příspěvky: 5
Registrován: 12 úno 2025, 15:01

ASK přenos pomocí ATTiny85

Příspěvek od RELAx » 12 úno 2025, 16:04

Prosím odborníky ve zdejším fóru o pomoc. Před cca 7 roky jsem si vytvořil na projekt radiového řízení motorku modelu s využitím čínských ASK modulů STX882(vysílač) a LR45(přijímač). Na straně přijímače dekóduji přenos v ATTiny85 pomocí knihovny RadioHead modul RH_ASK. Ten ovládá přerušení pomocí časovače 1 a vlastní motorek pak ovládám PWM na časovači 0. Toto vše se mi vešlo do ATTiny85 (Toto řešení jsem zvolil kvůli velikosti ASK modulů a ATTiny85, aby se mi vše vešlo do modelu lokomotivy TT)
Před 7 nebo 8 lety byly ATTiny ještě od fy Atmel a na cca 7 z 10 ATTiny85 to chodilo dobře a na těch 3 z 10 to bylo chybové – přenos se sekal.
Nyní ATTiny85 vyrábí fa Microchip a na nich mi totožný program téměř nechodí. Snad na 1 z 10 ATTiny85. Prostě naprogramuji 10 ATTiny85 a jen jeden funguje. Na ostatních v modulu RH_ASK při testování vyskakuje chyba crc. To znamená, že dekódování přenosu probíhá s tolika chybami, že přenos informace neprojde.
Už jsem toho vyzkoušel hodně, takže bych uvítal radu odborníka přes ATTiny85, co bych měl ještě udělat. Asi zatěžuji ATTiny85 na hranici jeho schopností, ale dřív to chodilo a nyní ne.
Kdyby se mi mohl někdo ozvat. Moc děkuji za pomoc.

Pablo74
Příspěvky: 130
Registrován: 03 lis 2019, 17:00

Re: ASK přenos pomocí ATTiny85

Příspěvek od Pablo74 » 12 úno 2025, 18:58

Odborník nejsem.

Tohle se bude hledat/řešit strašně těžko. Pár nástřelů:
nestabilní napájení, proudový nárazy
EM rušení
jiná verze knihovny RadioHead

Vlastně ani nepoznám, zda chyba vzniká v tom ATTiny a nebo ve vysílacím/přijímacím modulu. Zrovna ty moduly s amplitudovou modulací nebývají moc kvalitní.

RELAx
Příspěvky: 5
Registrován: 12 úno 2025, 15:01

Re: ASK přenos pomocí ATTiny85

Příspěvek od RELAx » 13 úno 2025, 16:39

Myslím, (jsem přesvědčený) že problém je v ATTiny85. Když tentýž program nahraji do funkčního ATTiny, jede v pořádku. Měním pouze ATTiny85 v patici. Vše ostatní zůstává stejné na stejném místě. Zdroj mám regulovaný ze starého počítače a před ATTiny je stabilizátor L78L05. Výpisem přes seriový monitor jsem u těch nefukčních zjistil, že přenos neprojde kvůli chybnému crc. A jak jsem uvedl stará ATTiny85 jedou z 80% nová jen 1 z 10.
Staré byly ATTiny85-20SF nové jsou ATTiny85-20SU. Kdyby se na to někdo chtěl podívat pošlu programy a co bude potřeba.

RELAx
Příspěvky: 5
Registrován: 12 úno 2025, 15:01

Re: ASK přenos pomocí ATTiny85

Příspěvek od RELAx » 13 úno 2025, 17:11

Teď jsem provedl malý test. Nechal jsem v programu jen nejnutnější funkce s využitím jednoho timeru pouze pro ASK dekodování. Na dobrém ATTiny85 to jede jak s timerem1 tak s timerem0. Na špatném ATTiny85 to nejede ani s jedním časovačem.
Tak mě napadlo, že jsem kdesi četl o tom, že ATTiny má svůj vnitřní oscilátom docela nekvalitní, takže když dekodování ASK přenosů probíhá při 2000bit/s a každý bit je testovaný 8x při přerušení tj frekvence 16kHz. Pokud vnitřní oscilátor "ujíždí" tak potom se nemůže trefit 8x do každého bitu. Prostě pokud je frekvence oscilátoru vysílače přesná (arduino Nano) a přijímače napřesná, tak se to "nepotká"

Pablo74
Příspěvky: 130
Registrován: 03 lis 2019, 17:00

Re: ASK přenos pomocí ATTiny85

Příspěvek od Pablo74 » 13 úno 2025, 19:30

Pak je teda ke zvážení možnost zapojit externí oscilátor (krystal) mezi piny 2 a 3, s příslušným kondenzátorem. Možná se kolem toho musí udělat nějaká magie s fuses ("pojistkami").

RELAx
Příspěvky: 5
Registrován: 12 úno 2025, 15:01

Re: ASK přenos pomocí ATTiny85

Příspěvek od RELAx » 13 úno 2025, 20:24

Nejdřív pohledám jak tu frekvenci změřit, jestli je opravdu špatný a pak ten vnější oscilátor.

Uživatelský avatar
Caster
Příspěvky: 458
Registrován: 11 zář 2019, 09:02

Re: ASK přenos pomocí ATTiny85

Příspěvek od Caster » 13 úno 2025, 21:07

Na to zjistit v čem je problém potřebuješ digitální osciloskop.

Použil jsem ATtiny202 a STX882 jako náhradu bezdrátového čidla teploty Oregon Sientific THN132N viz příspěvek zde. Základnová stanice Oregon je ale velmi citlivá na přesné klíčování Manchester signálu, které se lehce mění s teplotou vlivem změny frekvence ATtiny202. Musel jsem s tím počítat a lehce upravit signál pro klíčování STX882 podle změřené teploty, aby to při extrémnějších teplotách fungovalo. Nepoužívám žádnou knihovnu, program je čistě v C++ za využití téměř všech HW funkcí ATtiny202 8-) .

RELAx
Příspěvky: 5
Registrován: 12 úno 2025, 15:01

Re: ASK přenos pomocí ATTiny85

Příspěvek od RELAx » 17 úno 2025, 22:02

Tak jsem experimentoval s meřením frekvence oscilátoru. Nejdřív jsem udělal prográmek s přerušením po maximálním čase co ATTiny zvládne a napočítal jsem 120 těchto přerušení což mělo zhasnout kontrolní diodu za 59,99 s. Skutečnost ale byla 56,6. Tak jsem nastavil oscilátor na 1MHz a udělal výstup na Pin PB4 a multimetrem jsem měřil frekvenci. Ty chybové ATTiny85 měly frekvenci 1,095 MHz. Ty co chodily, měly cca 1,032 MHz.
Takže pak jsem exporimentoval s registrem OSCCAL. Zatím u jednoho ATTiny85. Původní OSCCAL měl 88, a po snížení na 80 se můj program v ATTiny rozběhl. (ještě jsem měl intermezzo s rutinou RH_ASK, kde jsem do přerušení pro načítání stavu vstupního pinu vložil Serial.print, což také při OSCCAL 84 trochu zlepšilo chod programu). Ale snížení OSCCAL na 80 se to vylepšílo zcela. Mimochodem pak prográmek pro měření 1 minuty zhasínal diodu za 60s.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů