Teade

Collapse

Foorumi reeglid.

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

ATtiny ei taha suhelda anduritega

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

    ATtiny ei taha suhelda anduritega

    Ehitan kütte kontrollerit.

    Kuna ATtiny45 ei ole nõus serial.print väljastama siis2 nädalat pimedas kobamist ja katsetamist on pea pulki täis ajanud.

    Kaks analoog andurit LM35 ATtiny45 3. ja 4. jala otsas.
    Potekas 2 jala otsas ja väljund 2 kanalilise triak mooduliga 1. ja 0. digijala küljes. keskkütte 3D kraani keeramas.
    Kui andurid ja potekas arduino küljes maketeerimislaual siis töötab ilusti.
    Kohe, kui üritan AT45 külge autonoomseks ajada hakkavad näidud jooksma ja aparaat muutub kasutuskõlbmatuks.
    Kartsin, et äkki 45 ei oska matemaatikat. Lisasin include "math.h"
    Pagaldasin 100 mikrofaradise lüüdi toitele otse 45 juurde. Proovisin film kondekat toppida potekale. Kohati jääb tunne, et poteka keeramisel jooksevad andurite näidud käest ära.
    Proge loogika on selline, et süsteemi mineva "inin" andurit kontrollitakse avarii temp ja keeratakse jahedamaks. Kui temp norm siis võrreldakse poteka "set" väärtust anduri "back" väärtusega ja keritakse 3D kraani vastavalt. Poteka väärtus peaks olema 5 kraadist kuni 70 kraadini.
    Palun abi. Kuidas saaks asja toimima. Kuhu peaksin mida toppima, et müra maha saada? ja kas ATtiny45 oskab serial.printi näidata?
    Progest on näha, et sensor 2 paneb totaalselt segast. Arduino küljes sätin teda korrutades 0,49 ja ATtiny küljes tuleb 7,9 korrutada. Läbi häda saab neid näite testida seda esimest avarii argumenti katsetades toa tempiga 24 kraadi juures.

    #include "math.h"

    //float sensor1Value;
    //float sensor2Value;
    //float sensor3Value;
    const float sensor1Pin = 3;
    const float sensor2Pin = 4;
    const float sensor3Pin = 2;
    void setup() {
    // open a serial connection to display values
    // Serial.begin(9600);
    // set the LED pins as outputs
    // the for() loop saves some extra coding
    for (int pinNumber = 0; pinNumber < 3; pinNumber++) {
    pinMode(pinNumber, OUTPUT);
    digitalWrite(pinNumber, LOW);
    }

    }

    void loop() {
    // read the value on AnalogIn pin 0
    // and store it in a variable
    int sensor1Val = analogRead(sensor1Pin);
    float inin = sensor1Val * 0.47;
    int sensor2Val = analogRead(sensor2Pin);
    float back = sensor2Val * 7.9;
    int sensor3Val = analogRead(sensor3Pin);
    float set = sensor3Val* 0.49;


    // send the 10-bit sensor value out the serial port
    //Serial.print(" ININ ");
    //Serial.println(inin);
    //Serial.print("BACK ");
    //Serial.println(back);
    //Serial.print(" SET ");
    //Serial.println(set);

    // IN temp > 80 siis 2 sek 3D jahutamist
    // IN temp < 80 siis 3D vastavalt BACK <> SET
    if (inin > 24) {
    digitalWrite(0, HIGH);
    delay(50);
    digitalWrite(0, LOW);
    delay(30);
    }

    else if (inin < 24) {

    if (back + 2 < set) {
    digitalWrite(0, HIGH);
    delay(1000);
    digitalWrite(0, LOW);
    delay(600);

    } // attiny45 jalg 1 sinine
    else if (back - 2 > set) {
    digitalWrite(1, HIGH);
    delay(1000);
    digitalWrite(1, LOW);
    delay(600);
    }
    }
    delay(1);
    }

    #2
    Vs: ATtiny ei taha suhelda anduritega

    Esmalt postitatud hotsnow poolt Vaata postitust
    Lisasin include "math.h"
    Pagaldasin 100 mikrofaradise lüüdi toitele otse 45 juurde.
    *Kas lüüt peaks matemaatikaga tegeleda aitama? (Nali)


    Koodi kiirel vaatamisel tekkis küsimus:
    sensor1Pin on deklareeritud "float" aga seda andme väärtust kasutatakse ikkagi "int" andme tüübina.
    "int sensor1Val = analogRead(sensor1Pin);"

    ATtiny progemine on minule võõres, see nüanss jäi ette lihtsalt, võimalik et see siinkohal häda ei tekita.
    http://hparchive.com/
    https://worldradiohistory.com/index.htm

    Comment


      #3
      Vs: ATtiny ei taha suhelda anduritega

      Tänud. Kohe parandan selle näpuka ja katsetan. Proovin #include "lyytmath.h" kah :-)

      Comment


        #4
        Vs: ATtiny ei taha suhelda anduritega

        Esmalt postitatud hotsnow poolt Vaata postitust
        Tänud. Kohe parandan selle näpuka ja katsetan. Proovin #include "lyytmath.h" kah :-)
        Pole küll suur asjatundja, aga mõned asjad Arduinol kirjutanud.

        const float sensor1Pin = 3;
        const float sensor2Pin = 4;
        const float sensor3Pin = 2;
        **** võiks pigem INT olla.

        for (int pinNumber = 0; pinNumber < 3; pinNumber++) {
        pinMode(pinNumber, OUTPUT);
        digitalWrite(pinNumber, LOW);
        *** määrad 0 kuni 2 pin'd OUTPUT LOW'ks, aga mõned read edasi teed AnalogRead Sensor3Pin pealt, mis on 2.pin.

        int sensor1Val = analogRead(sensor1Pin);
        float inin = sensor1Val * 0.47;
        int sensor2Val = analogRead(sensor2Pin);
        float back = sensor2Val * 7.9;
        int sensor3Val = analogRead(sensor3Pin);
        float set = sensor3Val* 0.49;
        *** AnalogRead väärtused peaksid sa saama vahemikus 0-1023(täisarvud). Kas nende konstantidega läbi korrutades saad sa kindlasti temperatuuri Celciustes? Sensor2Val puhul on sul 7.9 kraadine täpsus ainult.Näiteks 3*7.9=23.7C ja 4*7.9=31.6C. Ise olen tavaliselt mappinud vastavalt tehnilistele näitajatele.
        Või nii: http://playground.arduino.cc/Main/LM35HigherResolution
        Iga lugemise vahel võiks väike delay olla (10?).

        ***Natuke lihtsam oleks lugeda koodi, kui Pin nr ja sensori nr oleks samad või mingis loogilisemas numbrite järjekorras.

        if (inin > 24) {
        digitalWrite(0, HIGH);
        delay(50);
        digitalWrite(0, LOW);
        delay(30);
        ***Ei tunne küttesüsteemi põhimõtteid, aga kas 0,05sek millegi sisse lülitamine on piisav aeg?
        viimati muutis kasutaja kaspar99; 06 m 2016, 14:48.

        Comment


          #5
          Vs: ATtiny ei taha suhelda anduritega

          Tänan.
          Kohandasin ja leidsin imeliku anomaalia. Poteka näit kiilub kinni peale 1/3 ja sealjuures hakkab ühte andurit segama. Näit hakkab tõsiselt kõikuma. Proovisin rasbery komplektis olnud 3k oomise ja 50k oomise potekaga. Tapselt sama tulemus.

          Comment


            #6
            Vs: ATtiny ei taha suhelda anduritega

            Esmalt postitatud hotsnow poolt Vaata postitust
            Tänan.
            Kohandasin ja leidsin imeliku anomaalia. Poteka näit kiilub kinni peale 1/3 ja sealjuures hakkab ühte andurit segama. Näit hakkab tõsiselt kõikuma. Proovisin rasbery komplektis olnud 3k oomise ja 50k oomise potekaga. Tapselt sama tulemus.
            Mis selle näidu väärtus on "kinni kiiludes", millist muutujat vaatad ja kuidas?

            Attiny on minu jaoks võõras teema, aga kas sellega oled kursis, et olenevalt sellest, kas Pin on määratud analoog või digiks, nende nummeratsioon muutub:

            The main source for information on how to program the ATTiny using the Arduino IDE is found at the MIT High-Low Tech site. But I found the information on the pinouts rather opaque for the newbie (=…
            viimati muutis kasutaja kaspar99; 06 m 2016, 17:16.

            Comment


              #7
              ATtiny ei taha suhelda anduritega

              Esimesel pildil on näha lõppu keeratud setC ja kõikuvat in väärtust. Teisel poldil on näha reading3 väärtust millest setC arvutatakse. Sealjuures see jõuab lõppu 1023 1/4 pöörderaadiusega. esimene ja teine pilt võivad olla vahetuses.

              Kood:
              float inC; 
              float backC;
              float setC;
              int reading1;
              int reading2;
              int reading3;
              int inPin = 0;
              int backPin = 1;
              int setPin = 2;
              void setup()
              {
               analogReference(INTERNAL);
              Serial.begin(9600);
              for (int pinNumber = 2; pinNumber < 4; pinNumber++) {
              }
              }
              void loop()
              {
              reading1 = analogRead(inPin);
              reading2 = analogRead(backPin);
              reading3 = analogRead(setPin);
              inC = reading1 / 9.31;
              backC = reading2 / 9.31;
              setC = reading3 / 18.01 + 5.00;
              Serial.print ("in ");
              Serial.println(inC);
              Serial.print ("      back ");        
              Serial.println(backC);
              Serial.print ("                set"); 
              Serial.println(setC);
              delay(1000);
              if (inC > 80) {
                    digitalWrite(2, HIGH);
                  delay(50);
                  digitalWrite(2, LOW);
                  delay(30);
              }
              else if (inC < 80) {
                
                if (backC + 2 < setC) {
                  digitalWrite(2, HIGH);
                  delay(1000);
                  digitalWrite(2, LOW);
                  delay(600);
                 
                } // attiny45 jalg 1 sinine
                else if (backC - 2 > setC) {  
                  digitalWrite(3, HIGH);
                  delay(1000);
                  digitalWrite(3, LOW);
                  delay(600);
                } 
              }
              delay(1);
              }
              Lisatud failid
              viimati muutis kasutaja Scott; 07 m 2016, 06:06. Põhjus: kokku

              Comment


                #8
                Vs: ATtiny ei taha suhelda anduritega

                Kuidas sul see potekas t2psemalt sinna skeemi on sisse keevitatud? Mis on pinged? Kui ta teatud p88ramisest saavutab v22rtuse, millest edasi ei taha minna, siis tundub olema inputi lagi? Ja mis tyypi potega tegemist on lin v6i log? Viimane kysimus ei m2ngi probleemi juures rolli.

                Mati libra pole tegelikult sinu koodis vaja. V6imalik, et kompilaator isegi mainib seda sulle.
                V2ntv6ll on selleks k6ver, et mahuks mootorisse 2ra.

                Comment


                  #9
                  Vs: ATtiny ei taha suhelda anduritega

                  Poteka äärmised jalad on + ja - ja keskmine jalg lähem arduino uno analog inputi või enne, kui ATtiny45 ga proovisin siis seitsmenda jala külge +`i kõrval. analoog 2 ja temp andurid olid - ja reseti vahel analogid 3 ja 4. Kompileerimisel sõimab mingit ATtiny pagelit aga proge võtab vastu. Lisaks tuli lahutamise nupp selle poteka analoogjala ja tiny vahele panna. Vastasel juhul proget peal ei saa. Arduino 13. data jalale ei meeldi potekas. Pinge on mu potekal nagu eeldada võib: ühes otsas 0 ja teises 5. Selle 3 oomine tundub, et lineaarne teise küsisin oomipoest lineaarse.

                  Minu vana proge ei kiilu potekat kinni vaid lubab kasutada kogu pöörde raadiust. Ja "in" kõigub ikka sama moodi, eriti poteka suurte väärtuste puhul. Sealjuures olen andureid vahetanud ja uskumatu nüüd kolis see kõikumine teise pesasse. Pean potekaga ette andama soovitud temperatuuri, seda siis tagastuva vee tempiga võrreldes keeratakse kraani. Lülituse ajad on meelega pandud lühikesed, et saaksin testida. Reaalselt võiks päringut, tempi kohta, küsida peale seda kui eelmine kraani keeramine on kütte ringi pealt tagasi tulnud. Esmärk on anda radiaatoritele või põrandaküttele vajalik temp ja toa termostaat annab viimase lihvi. Teised tootjad on lahendanud temp kontrolli välistemp kaudu ette reageerides aga mulle tundub see liiga pikk ahel. Lootusetu on ära arvata iga uue elamu juures täpset soojapidavust. Pigem vaatan toa temp või tagastuvat vee tempi.

                  Mul on täna tulemas ATtiny 84 millel on digi jalgu rohkem ja varsti saan ka oma digi andurid http://www.ebay.co.uk/itm/2818293041...%3AMEBIDX%3AIT kätte.


                  Kood:
                  #include "math.h"
                  
                  
                   //float sensor1Value;
                   //float sensor2Value;
                   //float sensor3Value;
                  const int sensor1Pin = 0;
                  const int sensor2Pin = 1;
                  const int sensor3Pin = 2;
                  void setup() {
                    // open a serial connection to display values
                  Serial.begin(9600);
                    // set the LED pins as outputs
                    // the for() loop saves some extra coding
                    for (int pinNumber = 3; pinNumber < 5; pinNumber++) {
                      pinMode(pinNumber, OUTPUT);
                      digitalWrite(pinNumber, LOW);
                    }
                     
                  }
                  void loop() {
                    // read the value on AnalogIn pin 0
                    // and store it in a variable
                    float sensor1Val = analogRead(sensor1Pin);
                    float inin = sensor1Val * 0.48;
                  float sensor2Val = analogRead(sensor2Pin);
                  float back = sensor2Val * 0.48;
                  float sensor3Val = analogRead(sensor3Pin);
                    float set = sensor3Val * 0.06+5.00;
                  
                   // send the 10-bit sensor value out the serial port
                    Serial.print("           ININ ");
                    Serial.println(inin);
                  Serial.print("BACK ");
                  Serial.println(back);
                    Serial.print("                        SET ");
                   Serial.println(set);
                  delay(300);
                  // IN temp > 80 siis 2 sek 3D jahutamist
                  // IN temp < 80 siis 3D vastavalt BACK <> SET 
                  if (back > 80) {
                        digitalWrite(4, HIGH);
                      delay(50);
                      digitalWrite(4, LOW);
                      delay(30);
                  }
                  else if (back < 80) {
                    
                    if (back + 1 < set) {
                      digitalWrite(3, HIGH);
                      delay(1000);
                      digitalWrite(3, LOW);
                      delay(600);
                     
                    } // attiny45 jalg 1 sinine
                    else if (back - 1 > set) {  
                      digitalWrite(4, HIGH);
                      delay(1000);
                      digitalWrite(4, LOW);
                      delay(600);
                    } 
                  }
                  delay(1);
                  }
                  viimati muutis kasutaja hotsnow; 07 m 2016, 07:12.

                  Comment


                    #10
                    Vs: ATtiny ei taha suhelda anduritega

                    Proovi iga analogread järele panna väike delay. Foorumites soovitatakse nii teha sarnaste probleemide puhul.

                    Comment


                      #11
                      Vs: ATtiny ei taha suhelda anduritega

                      Proovisin delay(10); Kahjuks ei andnud soovitud tulemust.

                      IN 27.36 BACK 23.04 SET 34.82
                      IN 38.40 BACK 23.04 SET 34.82
                      IN 38.40 BACK 23.04 SET 34.82
                      IN 22.56 BACK 23.04 SET 34.82
                      IN 32.16 BACK 22.56 SET 34.82
                      IN 23.52 BACK 23.04 SET 34.82
                      IN 14.88 BACK 23.04 SET 34.82
                      IN 23.04 BACK 23.04 SET 5.00
                      IN 23.04 BACK 23.04 SET 5.00
                      IN 23.04 BACK 23.04 SET 5.00
                      IN 23.04 BACK 23.04 SET 5.00
                      IN 23.04 BACK 23.04 SET 5.00
                      IN 23.04 BACK 23.04 SET 5.00
                      IN 23.04 BACK 23.04 SET 8.54
                      IN 23.04 BACK 23.04 SET 8.54
                      IN 23.04 BACK 23.04 SET 8.72
                      IN 23.04 BACK 23.04 SET 15.68
                      IN 23.52 BACK 23.04 SET 15.68
                      IN 21.60 BACK 23.04 SET 22.04
                      IN 21.12 BACK 23.04 SET 22.04
                      IN 21.12 BACK 23.04 SET 22.04
                      IN 22.56 BACK 23.04 SET 22.04
                      IN 21.60 BACK 23.04 SET 22.04
                      IN 42.24 BACK 23.04 SET 46.46
                      IN 22.56 BACK 23.04 SET 46.40
                      IN 42.24 BACK 23.04 SET 46.40
                      IN 23.04 BACK 23.04 SET 46.40
                      IN 27.36 BACK 23.04 SET 46.40
                      IN 34.08 BACK 23.04 SET 51.98
                      IN 40.80 BACK 23.04 SET 51.98
                      IN 24.48 BACK 23.04 SET 51.98
                      IN 10.56 BACK 23.04 SET 66.32
                      IN 9.60 BACK 23.04 SET 66.32
                      IN 9.12 BACK 23.04 SET 66.32
                      IN 9.60 BACK 23.04 SET 66.32
                      IN 20.64 BACK 23.04 SET 66.26
                      IN 34.08 BACK 23.04 SET 66.32
                      IN 36.00 BACK 23.04 SET 66.32


                      Sättisin lülitamise järgselt pausi 10 sek le. Kui vastavalt programmile peab ootama siis ka print seisab.
                      Kui argumendid lubavad progel edasi minna. ( lülitus ühele või teisele poole toimub juhul, kui etteantud temp on suurem või väiksem tagastuvast temperatuurist vähemalt 1 graad. Kui seda argumenti pole täidetud siis paneb print jooksu ja ka näit kõigub. Näit kõikus ka poteka suure väärtuse puhul. Väikese näidu puhul on IN stabiilne. Esialgu arvasin, et ledi vilgatus häirib näitu aga madalamas otsas ei tundu häirivat. Saab muidugi olla, et kollane häirib ja sinine led ei häiri. kui set on suureb kui back siis vilgub kollane.
                      viimati muutis kasutaja hotsnow; 08 m 2016, 08:06.

                      Comment


                        #12
                        Vs: ATtiny ei taha suhelda anduritega

                        Teed nii lihtsa skeemi kui annab,
                        ühendad poteka nulli ja toite vahel.
                        Keskmise kontakti ühendad voltmeetriga ja keerad.
                        Kas näit muutub?

                        Ühendad nulli ja selle keskmise mikro jala külge ning
                        kirjutad programmi, mis mõõdab AINULT selle jala pinget ja
                        näitab tulemust.

                        Kas nüüd on seal näitude vahel mingi kooskõla?

                        Kui jah, siis saab minna edasi.

                        Kui pote on logaritmiline, siis saab seda näitu muuta vajadusel lineaarseks.
                        (Vähemalt selle "hirmsa PIC16F84" peal töötas kenasti ja
                        pööras mootorit sama nurga võrra kui log pote pöördus)
                        viimati muutis kasutaja A.R.; 08 m 2016, 08:07.

                        Comment


                          #13
                          Vs: ATtiny ei taha suhelda anduritega

                          Potekas töötab viimase progega ideaalselt, nagu klassikaline pingejagur. Seda on näha ka prindis. Ja ma usun, et viga peab olema skeemi kvaliteedis, sest üks andur töötab ülimalt laitmatult. Ka teine andur on stabiilne, kuni poteka väärtus jõuab anduritega samaks, siis hakkab segama.

                          Kas võiks film kondeka kuhugile toppida, et kõrgsagedusmüra maha tõmmata? Samas on mõlemal anduril ühesugune juhtmestiku lahendus. Suhteline muidugi. Mul pole aimugi mida see kuri raadiolaine vajab, et segama asuda. Olen mikroskoobi all kõik ühendused läbi käinud. Viimases hädas alustasin uue karbi ehitamist...

                          Comment


                            #14
                            Vs: ATtiny ei taha suhelda anduritega

                            Esmalt postitatud hotsnow poolt Vaata postitust
                            teine andur on stabiilne, kuni poteka väärtus jõuab anduritega samaks, siis hakkab segama.
                            Mida see jutt tähendab?
                            Mis on "poteka väärtus" ja "anduritega samaks"?
                            Kas võiks film kondeka kuhugile toppida,
                            Ära topi "kuhugile" vaid pane pote liikuva kontakti ja nulli vahele.
                            Kõigile potedele.
                            Ja ka mikro toitele.
                            Mõjub mitte "film" vaid kondensaatori mahtuvus.

                            Passis on juttu et seal võib olla kasutusel diff sisendid.
                            Siis peabki ju olema mõju üksteisele.
                            viimati muutis kasutaja A.R.; 08 m 2016, 09:10.

                            Comment


                              #15
                              Vs: ATtiny ei taha suhelda anduritega

                              Kas poteka pingestatud ots on sama pingega mis attinyl toites?
                              V2ntv6ll on selleks k6ver, et mahuks mootorisse 2ra.

                              Comment

                              Working...
                              X