Jump to content

Seriālā komunikācija starp Carambola un Arduino


fest
 Share

Recommended Posts

Jau kādu laiku dauzu galvu pret šo problēmu un tiešām noderētu svaigu acu pāris.

 

Dotais:

* Arduino Mega ar paškonstruētu shieldu pa virsu. Uz shielda atrodas 12v->3.3v un 12v->5v switching regulatori, max3232 čips saziņai ar vienu citu dzelzi caur rs232 un Carambola dzelzis: http://www.carambola.cc/definition/

* Tiek izmantots Carambola 2. uarts- TX2 un RX2 pini, kas linuxī ir pieejams kā /dev/ttyS0. Ar šīs shēmas palīdzību tas ir savienots ar Arduino Mega hardware seriālo portu (serial3):

post-58968-0-29458600-1344539195_thumb.jpg

Šāds vijebons vajadzīgs jo Carambola darbojas no 3.3V, Arduino-5V.

 

* Uz Arduino testa nolūkiem ir uzrakstīts īss softiņš, kas pārsūta datus starp Arduino galveno seriālo portu un to seriālo portu, pie kā pieslēgta Carambola, abos virzienos. Kods pārbaudīts pieslēdzot Carambolas vietā citu Arduino- datus starpā dzenā smuki.

* Teorētiski uzstādīti vienādi portu settingi visos galos: 9600 baud rate, 8 data bits, bez paritātes pārbaudes, 1 stop bits.

* Mēģinu kaut ko nosūtīt un nolasīt no carambola šādā veidā: echo "test" > /dev/ttyS0 un tail -f /dev/ttyS0. Monitorējot seriālo portu no datora neko nesaņemu. Taču mēģinot kaut ko nosūtīt no datora- saņemu garbage.

* TX un RX pinu atbilstību pārbaudīju entās reizes: TX kāja no Arduino pie carambola's RX kājas un RX kāja no Arduino pie carambola's TX kājas. Rūpnieciski ražotajā platē čaļi bija sajaukuši vietām- pārgriezu celiņus un izlaboju ar jumperiem.

 

Kad šādu problēmu novēroju ar manis dizainētu un mājās taisītu shieldu, biju gandrīz pārliecināts, ka problēmu izraisa switching regulatori (ņemot vērā manas ierobežotās zināšanas par elektroniku). Taču pašlaik uz galda stāv profesionāli dizainēta un rūpnieciski ražota plate, tāpēc šo iespēju gribētu atstāt kā pēdējo iespējamo iemeslu.

post-58968-0-92532000-1344539185_thumb.jpg

Link to comment
Share on other sites

MOSFETa slēgumā neiebraucu. Imho kaut kas tur neriktīgi. Bet nu... Vari maukt 3V3 pa taisno pie AVR kājas, ja nav pullup pretestibu. Vajadzētu strādāt.

 

Ja nesanāk pa taisno, tad pa fikso shēmiņa uz NPN tranzitoriem lai salāgotu 3V3 => 5V

trinvert.gif

 

 

Divus tādus vienu aiz otra. Starp E un B apmēram 100K pretestību. Abiem aparātiem GND kopējs. TXD no calambola pie tranzistora bāzes. +Vs pie Ardu barošanas (+5V).

Link to comment
Share on other sites

Mja, tikko izmēģināju pašu vienkāršāko variantu:

* Carambola savā development boardā (tam ir rs232 ports), ar pc komunicēt izdodas.

* No carambolas TX pa tiešo pie Arduino RX3, Arduino TX3 caur sprieguma dalītāju pie carambolas RX, zemes kopīgas. Nestrādā (kas izpaužas garbage saņemšanā kaut ko mēģinot nosūtīt).

 

Nāksies vien meklēt osciloskopu.

Link to comment
Share on other sites

ja tev pie rokas būtu ft232 platīte... varētu diagnostiku vekt, jo šamam ir gan 3V3 gan 5V režimi. Uzmest divus NPN tranzistorus mēģināji? Cik saprotu, tad garbage ir no Carambola TXD => uz Ardu RXD... Vari paralēli pieslēgt 3V3 RXD uz datoru? Kas tadnotiek un carambolas TXD? Arī garbage?

 

Kas attiecas uz oscili, tad diag laikā sūti nepārtraukti 0xAA simbolu, tad labāk formu redzēsi.

Perspektīvā nopērc salagošanas bufermikreni.

 

EDIT:

 

Tev tur ir R9 - 10K, to aizvāci pron no Ardu RXD kājas. Ceru ka internal pullup atslegti uz attiecīgo Ardu RXD kāju.

Labots - JDat
Link to comment
Share on other sites

(labots)

1) NPN tranzistorus nemēģināju, mājās nav.

2) Nevar īsti saprast, no kurienes tieši rodas garbage- sūtot vai saņemot. Uz carambola neizdodas neko saņemt. No carambola neizdodas neko nosūtīt (vai arī neizdodas saņemt uz Arduino). Vienīgais, kad es kaut ko saņemu, ir mēģinot sūtīt no Arduino- saņemu atpakaļ garbage, taču uz carambolas neko neredzu. Pieņemu, ka tas, garbage ko es saņemu ir termināļa echo no carambola.

3) Lai izslēgtu iespējamos variantus, ka nepareizi strādā kods uz Arduino, kas apmaina datus caur seriālo portu, mēģināju ik pa sekundei rakstīt kaut ko uz abiem Arduino seriālajiem portiem- uz datora saņemu, uz carambolas nē.

4) Internal pullups uz RX kāju atslēgts.

5) Noņemot R9 nekas nemainās.

 

Pff, sāk beigties idejas, ko vainot. :)

Labots - fest
Link to comment
Share on other sites

Nu labi. Varbūt baudrate nav uzlicies uz 9600 kaut kur. Kā būtu ja tu sūtītu zināmu datu kombināciju pa TXD (vienalga ura apara'ta) un RXD aparātā izmēģinātu visus iespējamos ātrumus. ir darīti līdzigi triki. Sutīju 0x55 vai 0xAA baitu nonstopā, otrā galā meklēju kamēr atradu.

 

Nav NPN pa rokai? Tiešā nav no kurienes izravēt? Tur der jebkurš mazais NPN tranzistoriņš.

Viss, pietiek murgot! Rīts gudrāks par vakaru.

Labots - JDat
Link to comment
Share on other sites

Problēmu atradu. Patiesībā, divas.

1) Carambolas dokumentācijā ir pamatīgi saputrota seriālo portu secība- vienā vietā saka, ka /dev/ttyS0 ir UART2, citā atkal, ka /dev/ttyS0 ir UART (tobiš, pirmais ports). Pareizais variants ir pēdējais- /dev/ttyS0 ir UART, jeb TX/RX pin'i uz carambolas.

2) No carambolas kaut ko sūtot caur UART, nosūtās arī kaut kas caur UART2. Tas pamatīgi pap*sa prātu.

 

Huh, jānoloka kājiņas, jāuzlodē džamperi, un jācer, ka tā būs bijusi vienīgā problēma produkcijas platē.

Link to comment
Share on other sites

Nu bet... A kam tagad viegli?

 

Savukārt man beidzot pieleca lauktranzistora ieslēgšana tavā shēmā. Teorētiski visam jāstrādā.

Link to comment
Share on other sites

Jap, strādā arī praktiski. Beidzot. Škrobe tikai, ka džeki, kas pārtaisīja manis taisītos regulatorus, zīmēja un izgatavoja plati, to darīja 2 mēnešus, lai gan izskatās, ka bez tā varēja iztikt.

Par FET'u- ja godīgi, es tikai ļoti aptuveni stādos priekšā, kā tas darbojas :( Mūsdienu laikmetā jau lielāko daļu shēmu var salikt kopā no internetā atrastajām, jāprot tik meklēt. Zinu, ka tas nav pareizais veids, kā taisīt elektroniku, taču šī cerams ir pēdējā reize, kad mani kāds uz to pierunā :)

 

Mājās taisītais vs rūpnieciski taisīts (un plati zīmējuši profiņi)

 

IMG_20120604_175734.jpg

 

IMG_20120810_034229.jpg

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...