Teade

Collapse

Foorumi reeglid.

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

Arduino Uno anduri näidu töötlemine

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

    Arduino Uno anduri näidu töötlemine

    Tere, uus sellel alal, kuid tellisin arduino unole max 6675k temp anduri. Netist tirisin erinevaid koode, kuniks sain toimima selle: http://www.bristolwatch.com/ele2/therc.htm Väga pikk ja keeruline, kuid need lühikesed koodid ei hakanud mul tööle.
    Seejärel tahtsin teha lihtsat IF tingimust, et kui temperatuur alla mingi näidu hakkab led põlema, kuid ei hakka. Seejärel proovisin sinna samasse koodi lisada kõige lihtsama ledi vilgu koodi:
    int LED = 12;
    void setup(){
    pinMode(LED,OUTPUT);
    }
    void loop(){
    digitalWrite(LED,HIGH);
    delay(500);
    digitalWrite(LED,LOW);
    delay(500);
    }
    Siis see ka ei tööta, aga kui ma selle temperatuuri anduri jutu ära kustutan ja jätan vaid selle lihtsa ledi vilkumise, siis töötab. Huvitav miks ma ei saa ühe korraga neid koode siisekirjutades kahte erinevat asja tööle? Seejuures koodis mingit viga ei näita, laeb ilusti ära selle Unosse. Ehk siis temp andur toimib selle koodiga alati, kuid led toimib vaid kui temp andur ära kustutada koodist.
    Aitäh kaasamõtlejatele

    #2
    Vs: Arduino uno anduri näidu töötlemine

    Seal on ju ringlev protsess "void loop()" ja funktsioon nimega "int spiRead()", mille kutsub rida "v = spiRead();", et saada väärtus "v" (variable on see, kuidas seda Eestikeeles nimetatakse, ei tea).

    Kui see vilkumine panna"void loop()" või "int spiRead()"osasse siis võiks töödata.
    Siis on häda jälle selles, et jääbki vilkuma sest pole koodis midagi, mis ringluse välja lülitaks ja ülejäänud osa koodist ei tee midagi, teeb sinnamaani kus see vilkumise ringlus hakkab.
    Pane sinna loendur sisse, vilgub 10x ja läheb edasi.


    viimati muutis kasutaja Starfish; 21 m 2017, 21:16.
    http://hparchive.com/
    https://worldradiohistory.com/index.htm

    Comment


      #3
      Vs: Arduino uno anduri näidu töötlemine

      Täpselt nii nagu Starfish kirjutas. St. peaprogrammis ei tohi olla kahte setup() ja loop() meetodit.
      Kõigepealt viska oma vilgutaja kood sealt välja, võta aluseks puhas näidiskood.
      Kompileeri ja laadi arduinosse. Kontrolli "serial monitoriga" (oli vist selline nimetus, vaata menüüdest) kas infot hakkab laekuma. Kui üldse midagi ei tule, siis jooksis kood juba arduino kõhus kokku. Eeldatavast sa siiski näed vähemalt korduvat rida "No sensor". Kui läheb eriti hästi ja oled hoolikalt kõik kokku pannud, siis saad mingi numbrijada mis kõigub kuskil 60..80 kanti (Fahrenheit'ides).

      Kui oled sellega valmis ja näitu andurist loetakse, siis lisa loop() meetodisse peale temperatuurinäidu lugemist kood LED'i juhtimiseks:
      if (CTemp < 20) {
      digitalWrite(12,LOW);
      } else {
      digitalWrite(12,HIGH);
      }

      Led on sul näidises defineeritud 12 otsa külge, seega pead sa sinna midagi panema (LED + eeltakisti) ja ütlema arduinole, et tegu on väljundiga. Selleks lisad setup() meetodisse rea:
      pinMode(12,OUTPUT);

      Kui sa tahad Arduino sisseehitatud LED'i kasutada, siis pead temperatuuriandurist tuleva CS (13) otsa kuskile teise pin'i alla tõstma. Sisseehitatud LED on fikseeritult 13'ne peal.
      Näiteks tõstad temperatuuriandurist tuleva juhtme 11 otsa alla ja muudad koodi päises oleva rea
      #define CS 11
      LEDi vilgutad 13 otsa kaudu. St seal kus ma kirjutasin 12, asendad 13'ga.

      Ära asja põõsasse viska. Iga algus on natuke raske, aga kui saad põhiasjad selgeks, siis läheb aina lihtsamaks. Kui värk tööle ei hakka, siis lisa kogu kood siia.

      Comment


        #4
        Arduino Uno anduri näidu töötlemine

        Kasutan jah hetkel täpselt seda esimeses lingis antud koodi, sellega saab sealt serial monitorist selle temp näidu kätte küll, aga minuarust on selles koodis see probleem, et kui andur pole ühendatud siis ta kirjutab displeile (mul displeid pole) et "no sensor" ja kui andur on siis ta mõõdab. Ehk siis teeb ainult ühte neist, IF ja ELSE, hetkel proovisin nii:

        void loop() { v = spiRead();
        if (v == -1) {
        Serial.print("No sensor \n");
        Selle asendasin

        v = spiRead();
        if (Ctemp > 250) {
        digitalWrite(LED,HIGH);

        Aga see töötab ainult ühe korra ehk siis kui saavutab 250 kraadi siis läheb led põlema, temperatuuri näitu enam ei tule ja nii ta jääb.Pean veel proovima ja selle asja kuidagi kordama saama.

        Eks ma proovin ikka selle asja tööle saada, aitäh abilistele


        Ohh sain, lisasin kasutaja vanavaras koodi kohe peale seda kus oli öeldud ELSE ja siis hakkas tööle, nii et mõõdab koguaeg ja led töötab ka Suur aitäh.
        viimati muutis kasutaja Scott; 23 m 2017, 08:45. Põhjus: järjestikpostitused kokku

        Comment


          #5
          Vs: Arduino uno anduri näidu töötlemine

          Nii lihtsa asjanduse oleks saanud ka opakaga ära teha muidu, kui eesmärk ongi ainult tulukese süttimine/kustumine mingil tempil.
          otsija

          Comment


            #6
            Vs: Arduino uno anduri näidu töötlemine

            Siiski läheb projekt edasi, järgmiseks on vaja vastavalt sellele temperatuuri näidule ühte kruvi keerata, et temperatuuri reaalselt muuta, umbes veerand pööret korraga kui ei ole just juba sobivas temperatuuri vahemikus. Peab uurima

            Comment


              #7
              Vs: Arduino uno anduri näidu töötlemine

              Sellise ülesande jaoks on mikrokontroller väga ok. Ja ega ta eriti kallim kah ei ole, kui analoog-automaatikat kasutada.

              Vaata Arduino sissehitatud funktsioonid üle, muidu on keeruline planeerida mida üldse teha saab (https://www.arduino.cc/en/Reference/HomePage).
              Kui saad oma steppermootori (või mis sa sinna veel lisada soovid) käima, siis pead veel lahendama probleemi kui sagedasti üldse keerata. Muidu pidevalt reaalajas juurde kruttides lendab su kaadervärk lõpuks õhku. Me ei tea mida sa juhtida kavatsed - toas radiaatorit või ehitad tuumajaama

              Comment


                #8
                Vs: Arduino uno anduri näidu töötlemine

                Kui veel pole uurinud, tasuks automaatreguleerimise põhitõdedega tutvuda.
                Ülereguleerimist ei tohi kindlasti olla, süsteem läheb siis genereerima.
                Üks märksõna - proportsioonjuhtimine. Täituri töö ja pausi aja suhe vajadusel...
                Elektroonika töötab suitsu baasil.
                Tähendab - igasse detaili on doseeritud täpne kogus suitsu.
                Kui mõnest suits välja lasta, siis värk enam ei käi.

                Comment


                  #9
                  Vs: Arduino uno anduri näidu töötlemine

                  Et asja veel keerulisemaks ajada, soovitaks tutvuda PID juhtimisega.
                  Tegemist siis proportsionaal integraal derivatiivse reguleerimisega.
                  Kui parameetrid paigas, siis saab päris ruttu peale käivitust, ilma eriliste ülelöökideta, väga täpse ja stabiilse väljundi.
                  Väljund võib olla analoogsignaal või näiteks ka koomale / lahtimale väljundid või pulsmoduleeritud või lihtsalt releed.
                  Arduinole olemas päris korralike PID librareid.
                  MINULE EI MEELDI KUI MÕNINGAD ISIKUD MINU POSTITUSI MUUDAVAD,
                  KUI POSTITUS EI SOBI SIIS PALUKS SEE KUSTUTADA !

                  Comment

                  Working...
                  X