Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

Kolme analoog sisendi võrdlemine

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    Kolme analoog sisendi võrdlemine

    Tahaks siis teostada midagi sellist "line follower" roboti jaoks...

    loetud ja salvestatud kolme erineva anduri lugemid (parempoolne - SensR, vasakpoolne - SensL, keskmine - SensF). Nüüd tahaks võrrelda nende väärtusi, et siis otsustada, kuhu poole peaks robot liikuma. Kahe võrdlemisega saaks hakkama,

    MOVF SensR,W
    SUBWF SensL,W
    BTFSC STATUS,C
    GOTO blabla

    aga kolmas tekitab probleemi...
    Oota! Las ma teen seda natuke paremaks...

    #2
    Kui keskmine andur annab maksimumi: uha otse edasi! On vist nii? Lisaks võiks uurida, kui palju robot ära pööranud on et mitte täismahviga ....ringi peale teha. Samuti võiks kiirust arvestades olla mingi kontroll et kui vajaliku aja möödudes ei tulnud otsesuuna signaali, pööras kolakas ilmselt valesti. Init, recalibrate...etc. Joonista parem asi paberil blokkskeemina ja käi hästi põhjalikult kõik variandid läbi.
    Robotexil hakkas silma et enamik robotite koodide autoreid seda ei teinud ja eeldas et masin käitub vastavalt ideaalsetele oludele. Neid aga naljalt ei leia, isegi mitte laborilaual.
    - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
    - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

    Comment


      #3
      Enne keerulisemaks ajamist tahaks lihtsalt asja mingit moodigi toimima saada... võrdlen siis lihtsalt parempoolset ja vasakpoolset keskmisega ning niikaua, kui vahe on suurelt keskmise kasuks, liigub otse, kui aga kuskil ääres väärtus suurem, siis korrigeerime kurssi...nii vist saaks...

      Aga kuidas ma juuresoleva koodijupi puhul saaksin rakendada kolmandat varianti? Et otse sõidaks.....? :huh:

      Kood:
      MOVF SensF,W
      SUBWF SensL,W
      MOVWF Left_tmp
      MOVF SensF,W
      SUBWF SensR,W
      SUBWF Left_tmp,W
      BTFSC STATUS,C
      GOTO Right_turn
      GOTO Left_turn
      Aga tahtsingi küsida ka valede pöörete kohapealt...kas peale kompassi(gyro) peale monteerimise pole eriti ühtegi võimalust teavitada masinat liikumissuunast? Ütleme, et kaotas jälje, lülitus otsimisrežiimi, tegi paar S-i, leidis taas jälje, kuid kuidas selgeks teha, kust poolt tuldi ning kuhu oldi minemas?
      Oota! Las ma teen seda natuke paremaks...

      Comment


        #4
        Võrdle üht poolt keskmisega ja siis võrdle teistpoolt keskmisega(tegelt peaks vist olema lahutus tehted). Üks pool suurem(väärtus plussis), tähendab keerame sinna.
        Kui ühelgi pole väärtust pole, tähendab me oleme kadunud

        Kolm sensorit ees on natuke vähe minu meelest

        Pane roboti tahaotsa ka kolm otsijat(okok, üks). Need(see) peaks ka ideaalselt raja peal olema. Kui eest ära kaob siis nende(selle) järgi kuidagi peaks ikka leidma.
        http://www.alldatasheet.com/

        Comment


          #5
          Miski jama koodis. olgu öeldud, et võtsin netist kellegi koodi ja hakkasin närima. Lõpptulemuseks oli see:

          Kood:
          CLRF	SENSOR_REG    
          	MOVF	L_AD_REG,W
          	SUBWF	VR_AD_REG,W
          	BTFSC	STATUS,C
          	BSF	SENSOR_REG,0    
          
          	MOVF	C_AD_REG,W
          	SUBWF	VR_AD_REG,W
          	BTFSC	STATUS,C
          	BSF	SENSOR_REG,1
          
          	MOVF	R_AD_REG,W	
          	SUBWF	VR_AD_REG,W
          	BTFSC	STATUS,C
          	BSF	SENSOR_REG,2
          
          
          
          	MOVLW	B'00000111' 
          	ANDWF	SENSOR_REG,W 
          	ADDWF	PCL  
          	GOTO	NO_LINE 	
          	GOTO	LEFT_LINE 
          	GOTO	CENTER_LINE 
          	GOTO	LEFT_CENTER_LINE	
          	GOTO	RIGHT_LINE 
          	GOTO	NUL_LINE 	
          	GOTO	RIGHT_CENTER_LINE	
          	GOTO	CENTER_LINE
          Kardan, et kuna doonoril oli kasutusel neli sensorit, siis mul bittide arv või asukoht SENSOR_REG -is ei klapi... Igatahes ühte fototranssi varjutades asi toimib, teist varjutades mitte. (Vasakpööre toimib)
          Oota! Las ma teen seda natuke paremaks...

          Comment


            #6
            Simuleerides selgus et parempöörde andur peab andma biti D2 sensor_reg'is (ehk siis number 4). Kuidas sinul on?
            Võib muidugi teha lahutustehteid, nagu selles koodis kui võib ka otse andurite registri vastavaid bitte testida:
            Kood:
            btfsc Vasak; kui vasak andur =1, pöörame vasakule
            goto P-vasakule
            btfsc Parem; kui oparem andur=1, pöörame paremale
            goto P-parem
            ....
            P-vasak:
            btfsc Parem&#59; Vasak andis signaali, kas parem ka (s.t. sõidame otse)
            goto S_otse&#59; nii oligi
            bsf V_mootor; ei, tugev rool vassakule nyyd&#59;)
            .......
            P-parem:
            btfsc Vasak; Parem plingib, kas vasak ka (sõidame otse)
            goto S_otse&#59; õkva edasi
            bsf P_mootor; keera siit paremale
            .......
            Jälje leidmine võib keeruline olla küll. Kas ei saaks meelde jätta, kuidas seni liiguti ja selle põhjal järeldusi teha?
            - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
            - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

            Comment


              #7
              kas on netis ka mõnd mõistlikku juhendit selle kohta, kuidas kasutada MPLAB-i simulaatorit? Siiani on see minu jaoks olnud täiesti kasutu vile programmi juures. :unsure:
              Oota! Las ma teen seda natuke paremaks...

              Comment


                #8
                Hmmm...eks tal help ole aga SEE on küll natuke...tagasihoidlik.
                Mina kasutan pidevalt, ilma enam ei oskagi. Seepärast ei saa senini hakkama Linux pic'i assembleriga, millel simulaator puudub (üks simu on aga seda ei oska teadmiste puudumisel installida). Mis MPLAB'i juures ei tööta?

                PS. Kui kokkutulekule juhtud siis seal räägin sellest natca.
                - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
                - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

                Comment


                  #9
                  Töötab küll see SIM. Lihtsalt operaatori intelligentsusest tuleb puudu. Näiteks ei suutnud kuidagi simuleerida andurite väärtuste muutmisega pöördeid. Üritan natuke seletada, kuidas tegin.

                  WATCH aknas jälgisin SENSOR_REG-i. Stimulusse panin pinnid AN0, AN1, AN3. Neid siis klõpsisin high ja low vahet kordamööda ja muudkui lasin aga SIM-i käima. Breakpointi muidugi panin rea:

                  Kood:
                  ANDWF	SENSOR_REG,W
                  ette.

                  Kokkutulekule ei juhtu kahjuks.
                  Oota! Las ma teen seda natuke paremaks...

                  Comment

                  Working...
                  X