Arduino nepřenáší data po sběrnici

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Arduino nepřenáší data po sběrnici
« Odpověď #15 kdy: 11. 01. 2016, 11:04:23 »
Predpokladam, ze tam nebudou zadne zavratne prenosove rychlosti, takze by sel pouzit i SW osciloskop. Pokud neni nic na Linux, tak na Android je a nejaky foun nebo tablet se v okoli obvykle vali.


dustin

Re:Arduino nepřenáší data po sběrnici
« Odpověď #16 kdy: 11. 01. 2016, 11:14:01 »
Na linuxu je řada SW osciloskopů. Jen např. RS485 chce před zvukovku dělič, přeci jen +/-12V se zvukovce líbit nebude.

Nicméně je to jen opravdu pro základní kontrolu při nižších rychlostech, vzorkování 192kHz (tj. rozsah 96kHz) je dost omezující.

Mojmír

Re:Arduino nepřenáší data po sběrnici
« Odpověď #17 kdy: 11. 01. 2016, 11:17:45 »
Jednou jsem měl jedno RS485 zařízení připojené přes 485/USB převodník s přímým propojením dvěma dráty a trpělo to značnou chybovostí. Po delším laborování to vyřešilo přidání napájení sběrnice RS485 na stranu usb převodníku (v praxi jeden odpor z 5V na desce převodníku), které tam předtím vlastně vůbec nebylo. https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqT-IsKkB5aJ005HJoVNKKZvRTMwzTtlS-W42CH3ckUMH3DJ4Y.

k

Re:Arduino nepřenáší data po sběrnici
« Odpověď #18 kdy: 11. 01. 2016, 11:51:57 »
Celý systém je trochu složitější. Jeho základem je RPi k němu je připojeno arduino mega pomocí usb a k němu pak pomocí modulu RS485 (MAX485) arduino nano.

RS485 funguje bezvadně s těmito podmínkami:
1) Na každém konci sběrnice musí být odpor 120 ohmu mezi A-B
2) V jednom místě se musí A respektive B připojit na 5V respektive GND přes odpor 680 ohmu.
3) Pokud mají zařízení nezávislá napájení, je nutné galvanické oddělení, jinak to nepojede kvůli zemním smyčkám.

Mirek

Re:Arduino nepřenáší data po sběrnici
« Odpověď #19 kdy: 11. 01. 2016, 12:03:31 »
Na linuxu je řada SW osciloskopů. Jen např. RS485 chce před zvukovku dělič, přeci jen +/-12V se zvukovce líbit nebude.

Nicméně je to jen opravdu pro základní kontrolu při nižších rychlostech, vzorkování 192kHz (tj. rozsah 96kHz) je dost omezující.

Jak jsi přišel na rozsah +/- 12V u RS-485?

https://cs.wikipedia.org/wiki/RS-485


dustin

Re:Arduino nepřenáší data po sběrnici
« Odpověď #20 kdy: 11. 01. 2016, 13:03:30 »
Citace
Jak jsi přišel na rozsah +/- 12V u RS-485?

Sorry, to jsem si popletl s RS232, tam jsem měl zažité 12V, ale koukám, že může být i méně.

Jenda

Re:Arduino nepřenáší data po sběrnici
« Odpověď #21 kdy: 11. 01. 2016, 13:17:34 »
Pokud se v osciloskopech vyznáš a měl bys doporučení, co by osciloskop pro hobby měl umět, ozvi se mi prosím na pavouk106 zavináč gmail tečka com.

Ať se ozve do diskuze.

Já bych chtěl osciloskop jako DA převodník do USB a zbytek realizovaný SW. Ale žádný tip na zařízení taky nemám. Už jsem přemýšlel, že bych vykradl nějaké SDR, třeba AirSpy má rychlý AD s dobře vyřešenou komunikací, ale ten čip je BGA a to bohužel nejsem schopen připájet.

Jenda

Re:Arduino nepřenáší data po sběrnici
« Odpověď #22 kdy: 11. 01. 2016, 13:26:15 »
4. A co krystal a jeho stabilita? Počítal sis tolerance pro baudrate? Některé krystaly vycházejí opravdu hodně špatně pro použití se standardními baud rate a už nepokryjí teplotní tolerance a nebo dlouhodobou stabilitu.

Zabývám se nákupem mimořádně nekvalitních krystalů v Číně (čti: kupuju rtl-sdr) a nejhoršímu, co jsem zatím potkal, jsem naměřil 280 ppm. Většinou plavou kolem 60. I s 1000 ppm by měl sériák bez problému fungovat (potřebuješ na 10 bitech desynchronizaci o půl bitu → pro obě strany to dává povolenou odchylku 1/40, tedy 25000 ppm!!)

JardaP: bohužel SW osciloskopy pro počítače bývají ze zvukovky, čímž by se rychlosti do 9600 Bd daly poslouchat, ale zvukovka sama o sobě signál dost przní, protože má highpass filtr.

Šlo by ale použít Arduino, v cyklu dělat AnalogRead, splácnout to z 10 bitů na 8 a poslat to jako bajt po sériáku. Ale to je tak pro 1200 Bd (dostaneš se max. na 10 kHz a chceš mít alespoň pár samplů na bit, že jo).

Enre

Re:Arduino nepřenáší data po sběrnici
« Odpověď #23 kdy: 11. 01. 2016, 13:29:15 »
Častým problémem bývá, že se vlivem rušení zachytí nějaký falešný znak a od té chvíle je celá komunikace posunutá a vrací samozřejmě nesmysly - nemůže to být tento případ? Účinným řešením je například zavést timeout ve smyslu, že se celý řetězec musí přenést do určitého času a provést flush pokud timeout nastane.

Zelenac

Re:Arduino nepřenáší data po sběrnici
« Odpověď #24 kdy: 11. 01. 2016, 14:40:21 »
Nevím co jak to tam máš, ani jsem to všechno nečetl, ale řešení je prosté: za každou zprávu kterou posíláš přidej ještě jedno neb odvoubajtových checksum. Po přijetí zprávy pro ni udělej checksum a ověř si, jestli sedí s checksumem na konci zprávy. Pokud ne, zprávu zahoď.

Pokud je to mimořádně mission critical, udělej vážený checksum tím, že každý bajt do sumy budeš sčítat jako násobek jeho pozice ve zprávě. To ti ošetří i pospřeházení bajtů.





Mirek

Re:Arduino nepřenáší data po sběrnici
« Odpověď #25 kdy: 11. 01. 2016, 14:42:57 »
Pokud se v osciloskopech vyznáš a měl bys doporučení, co by osciloskop pro hobby měl umět, ozvi se mi prosím na pavouk106 zavináč gmail tečka com.

Ať se ozve do diskuze.

Já bych chtěl osciloskop jako DA převodník do USB a zbytek realizovaný SW.

Předpokládám, že myslíš AD ;-)

Mirek

Re:Arduino nepřenáší data po sběrnici
« Odpověď #26 kdy: 11. 01. 2016, 14:45:27 »
4. A co krystal a jeho stabilita? Počítal sis tolerance pro baudrate? Některé krystaly vycházejí opravdu hodně špatně pro použití se standardními baud rate a už nepokryjí teplotní tolerance a nebo dlouhodobou stabilitu.

Zabývám se nákupem mimořádně nekvalitních krystalů v Číně (čti: kupuju rtl-sdr) a nejhoršímu, co jsem zatím potkal, jsem naměřil 280 ppm. Většinou plavou kolem 60. I s 1000 ppm by měl sériák bez problému fungovat (potřebuješ na 10 bitech desynchronizaci o půl bitu → pro obě strany to dává povolenou odchylku 1/40, tedy 25000 ppm!!)

JardaP: bohužel SW osciloskopy pro počítače bývají ze zvukovky, čímž by se rychlosti do 9600 Bd daly poslouchat, ale zvukovka sama o sobě signál dost przní, protože má highpass filtr.

Šlo by ale použít Arduino, v cyklu dělat AnalogRead, splácnout to z 10 bitů na 8 a poslat to jako bajt po sériáku. Ale to je tak pro 1200 Bd (dostaneš se max. na 10 kHz a chceš mít alespoň pár samplů na bit, že jo).
Na každé straně linky je jiné zařízení. Nevím s jakým krystalem (tím myslím freq.). Některé kombinace při vyšších rychlostech jsou už na mezi a můžou působit problémy.

dustin

Re:Arduino nepřenáší data po sběrnici
« Odpověď #27 kdy: 11. 01. 2016, 15:15:34 »
USB osciloskopů je spoustu, DIY i hotové, viz google.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Arduino nepřenáší data po sběrnici
« Odpověď #28 kdy: 11. 01. 2016, 15:22:33 »
JardaP: bohužel SW osciloskopy pro počítače bývají ze zvukovky, čímž by se rychlosti do 9600 Bd daly poslouchat, ale zvukovka sama o sobě signál dost przní, protože má highpass filtr.

To by snad nevadilo. Nepotrebujete videt, jak krasne ci osklive hranolky vam behaji po drate, ale abyste jeste poznal, co je 0 a co 1.

Jenda

Re:Arduino nepřenáší data po sběrnici
« Odpověď #29 kdy: 11. 01. 2016, 15:30:03 »
Na každé straně linky je jiné zařízení. Nevím s jakým krystalem (tím myslím freq.). Některé kombinace při vyšších rychlostech jsou už na mezi a můžou působit problémy.

Jako že má špatně nastavenou děličku?

To by snad nevadilo. Nepotrebujete videt, jak krasne ci osklive hranolky vam behaji po drate, ale abyste jeste poznal, co je 0 a co 1.

Například neuvidí start bit po delší době ticha. Ale jo, něco by z toho asi vyluštit šlo.

USB osciloskopů je spoustu, DIY i hotové, viz google.

Hledal jsem, typicky jsou dost drahé, mají neznámou SW podporu, nebo nějaký jiný problém (nenastavitelná reference). Porovnej třeba s LPC4370, čip v maloobchodě za 350 Kč. Samozřejmě rád si nechám doporučit nějaký konkrétní model. Víc kanálů by taky bodlo.