Warning: Illegal string offset 'name' in [path]/includes/functions.php on line 6439
HC-SR04 sensora gļuki
+
1 2

thread: HC-SR04 sensora gļuki

  1. #1
    Senior Member
    Mar 2011
    1,119

    HC-SR04 ultrasonic sensora gļuki

    Nevaru saprast vai manas līkās rokas vai sensora gļuks. Varbūt kādam ir bijus darīšana ar ko līdzīgu.
    M.J duino Uno (ķīniešu, bet liekas darbojas normāli). Pamanīju ka HC-SR04 sensors dīvaini uzvedas - kādu brīdi strādā, bet pēc tam pēkšņi apraujas. Uzrakstīju pavisam elementāru kodiņu, lai to parbaudītu un secināju sekojošo:
    -sensors normāli darbojas līdz brīdim, kamēr pēkšņi nenoķer echo. Tad viņš uzkaras. Programma turpina darboties, bet dod laukā 0. Restarts nepalīdz, tikai atvienošana no barošanas un pieslēgšana pa jaunu. Līdzīgi ir ar vēl vienu tādu pašu sensoru, tādēļ doma par brāķi šobrīd tiek atlikta. Tai pat laikā līdzīgs sensors (ar plusiņu) HC-SR4+ strādā labi un bez problēmām.
    Pārbaudīju ar šo. Par cik neesu programmists, tad varbūt kaut ko esmu salaidis greizi ar programmas kodu?
    :
    #define echoPin 7
    #define trigPin 8 
    long dur, timePrev, interval, dist;
    long distCm = 0;
    int npk = 0;
    long time = 0;
    int freq;
    void setup() {
      Serial.begin(9600);
      pinMode(trigPin, OUTPUT);
      pinMode(echoPin, INPUT);
      //digitalWrite(TrigPin, LOW);
      //delayMicroseconds(2);
    }
    void loop() {
      dur = 0;
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);
      dur = pulseIn(echoPin, HIGH, 20000);
      timePrev = time;
      time = millis();
      interval = time - timePrev;
      freq = 1000 / interval;
      delay(20);
       Serial.print (npk);
      Serial.print("  dist = ");
      Serial.print(dur / 58.2);
      Serial.print("   ");
      Serial.print(interval);
      Serial.print("ms  ");
      Serial.print(freq);
      Serial.print("Hz  ");
      Serial.print(time / 1000);
      Serial.println("s");
      npk = npk + 1;
    }
    apmēram šādi:
    nr...dist.....cm......cikla ilg..vid.freq....laiks
    7704 dist = 178.54 41ms 24Hz 315s
    7705 dist = 48.49 34ms 29Hz 315s
    7706 dist = 48.38 41ms 24Hz 315s
    7707 dist = 49.62 41ms 24Hz 315s
    7708 dist = 47.97 40ms 25Hz 315s
    7709 dist = 47.59 41ms 24Hz 315s
    7710 dist = 50.17 40ms 25Hz 315s
    7711 dist = 48.42 41ms 24Hz 315s
    7712 dist = 178.57 48ms 20Hz 315s
    7713 dist = 178.06 42ms 23Hz 315s
    7714 dist = 2.59 30ms 33Hz 315s
    7715 dist = 1.72 40ms 25Hz 315s
    7716 dist = 1.68 39ms 25Hz 315s
    7717 dist = 1.82 40ms 25Hz 315s
    7718 dist = 1.74 40ms 25Hz 315s
    7719 dist = 2.18 39ms 25Hz 315s
    7720 dist = 2.08 40ms 25Hz 316s
    7721 dist = 2.39 39ms 25Hz 316s
    7722 dist = 3.44 40ms 25Hz 316s
    7723 dist = 0.00 69ms 14Hz 316s
    7724 dist = 0.00 60ms 16Hz 316s
    7725 dist = 0.00 58ms 17Hz 316s
    7726 dist = 0.00 60ms 16Hz 316s
    7727 dist = 0.00 59ms 16Hz 316s
    7728 dist = 0.00 59ms 16Hz 316s
    7729 dist = 0.00 60ms 16Hz 316s
    7730 dist = 0.00 59ms 16Hz 316s
    7731 dist = 0.00 59ms 16Hz 316s
     

  2. #2
    Senior Member
    Mar 2007
    1,597

    Paprovee ilgaaku taimautu uzlikt.
    Manuaalii tak rakstiits:
    we suggest to use over 60ms measurement cycle, in order to prevent trigger signal to the echo signal.

  3. #3
    Senior Member
    Mar 2011
    1,119

    Nepalīdz. Izmēģināju pat līdz sekundei. Tāpat uzkarās, un tizlākais ir tas ka jāizslēdz/jāieslēdz sensora barosana (Arduino var paikt ieslēgts), lai tas atsāktu darboties.

  4. #4
    Senior Member
    Mar 2007
    1,597

    Varbuut tai sensoraa mcu iebuuvets un softs gljukains.
    Ja citaadi nevar - uztaisi vinjam baroshanu no arduiinas porta (es gan nezinu cik straavas vinji velk).

  5. #5
    Senior Member
    Mar 2011
    1,119

    Teorētiski var viņa barošanu uz OUT pina uzlikt (esmu pat lasījis tas dabojas) , jo sensors patērā 16mA, bet man tā nedarbojas. Varbūt ka nepietiek ar 4.57V , kas ir OUT HIGH, varbūt kas cits. Un ja godīgi, tad tas kārtējo reizi sanāk kā caur d... mandeles raut.
    Sāku jau nosvērties uz iepirkto sensoru brāķi

  6. #6
    Senior Member
    Mar 2011
    1,119

    Atklāju vēl vienu likumsakarību - ja pieskaras ar pirkstu vai kādu vadiņu pie kondensatoru vai rezistoru galiem, tad sensors atsāk darboties bez DC atslēgšanas. Tagad man vajag tik kādu kas ar pirkstu tur baksta tiklīdz sensors uzkaras
     

  7. #7
    Senior Member
    Dec 2014
    Sarkandaugava
    358

    Varbūt to visu var nosaukt nevis par sensora uzkāršanos, bet gan par sensora nestabīlu darbību (ierosināsanos / histerēzi) dēļ navodkām-varbūt var pamēģināt ekranētu vadu sensora pieslēgšanai

  8. #8
    Senior Member
    Feb 2007
    Rīga
    983

    Pasen, remontējot autosignalizācijas nācās daudz mainīt pjezopīkstuļus - tos al-ja cilindrus. Nezināmu iemeslu dēļ pārstāja darboties.
    Viena galva labi, divas nav smuki (uz viena rumpja).

  9. #9
    Moderator
    Jan 2009
    Rīga
    4,406

    Ko darīt ja sensora firmware ir pakaļā? (pieņemu ka sensoram uz borta ir MCU, kurā iešuta gļukaina firmware, kā sekas tika izlaista Rev2 (vai arī Rev.B) nu tagad laikam jānošaujas, ja nevar nomainīt pret jāunāku relīzi. Vai uzdevums ir atkarināt esošo sensoru, vai arī uzdevums ir tik pie pareiziem datiem? Ja vajag atkarināt, tad ieliekam sensoram barošanā P-channel MOSFET (maziņu) un ar arduīnu restrējam. Ja uzdevums nav čakarētiem un tikt pie datiem, tad nopērkam normālu sensoru un gļukaino nosūtam ur Recycled. Izvēle jāizdara autoram.

  10. #10
    Senior Member
    Mar 2011
    1,119

    Dīvainu risinājumu atradu - pielodēju 2k pretestību (uz galda tāda mētājās) pret 5V pie tā kontakta kas bija jūtīgs uz pieskārienu.
    Sāka strādāt kā pulkstenis arī gļukainais sensors un i netaisās kārties
    ... saprotu ka riktīgi sulba doma kautko lodēt, pat nepaskatoties datašītā uz kurieni tās detaļas aziet.... bet nu rezultāts IR !!! )
    Da vienkārši izbesīja... osciļa man nav, un jau biju pasūtījis jebajā jaunus sensorus..

+