# Cits ... >  HC-SR04 sensora gļuki

## sasasa

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

----------


## next

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.

----------


## sasasa

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.

----------


## next

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

----------


## sasasa

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  ::

----------


## sasasa

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  ::

----------


## Elfs

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

----------


## abergs

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.

----------


## JDat

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.

----------


## sasasa

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..

----------


## next

Rekur uzgaaju sheemu tai fignjai.
Tagad seezhu, domaaju - kaa tas vareetu darboties?

----------


## JDat

> Rekur uzgaaju sheemu tai fignjai.
> Tagad seezhu, domaaju - kaa tas vareetu darboties?


 Obana! Tiko parāva uz korķi! No comments, bet ja tāds konceptuāli strādā... Lai strādā. Var pamēģināt sakārtot RESET ķēdi. Pin7 10K pullup to VCC; Pin7 kondensators uz zemi. Klasiska reset ķēde. Tas ir pirmais eksperiments. Tālāk pārliecinamies ka barošana nešupojas. Pieliekam teiksim 10 -50 uF kondieri paralēli C16.

Paldies Next par shēmu.

----------


## JDat

Ui! Samelojos. Pieļauju domu ka C2 ir manis domātais elektrolīts. Tātad tikai eksperimenti ar RESET. Ja nepalīdz varētu būt arī kontroliera firmware problēma.

----------


## sasasa

Prieki bija īsi. Vakar 2 stundas nostrādaja bez gļukiem, bet šodien jauna kaite - ik pa brīdim saņem kaut kādu īsu  atbildes signālu.
Bet uzkāršanās vairs neiek novērota
  dist = 184.84cm   10462ms  
  dist = 185.34cm   10490ms  
  dist = 185.34cm   10490ms  
  dist = 185.37cm   10492ms  
  dist = 185.28cm   10487ms  
  dist = 185.37cm   10492ms  
  dist = 185.76cm   10514ms  
  dist = 185.27cm   10486ms  
  dist = 0.71cm   40ms  
  dist = 185.27cm   10486ms  
  dist = 185.80cm   10516ms  
  dist = 185.37cm   10492ms  
  dist = 185.23cm   10484ms  
  dist = 185.74cm   10513ms  
  dist = 185.34cm   10490ms  
  dist = 0.72cm   41ms  
  dist = 185.80cm   10516ms  
  dist = 186.11cm   10534ms  
  dist = 185.37cm   10492ms  
  dist = 185.76cm   10514ms  
  dist = 0.72cm   41ms  
  dist = 185.76cm   10514ms  
  dist = 184.42cm   10438ms  
  dist = 185.37cm   10492ms  
  dist = 185.37cm   10492ms  
  dist = 185.23cm   10484ms  
  dist = 0.71cm   40ms  
  dist = 185.27cm   10486ms  
  dist = 184.54cm   10445ms  
  dist = 185.37cm   10492ms  
  dist = 185.34cm   10490ms  
  dist = 0.71cm   40ms  
shema gan nebūs īsta, jo uzmetot aci savienojumi ir savādāki. 
tad jau drīzāk kaut kas līdzīgs šim, bet arī nav precīza, jo man cita sensora versija

----------


## sasasa

Nomainīju pielodēto rezistoru uz 4,3k un atkal viss aizgāja.  Toipašu izdarīju arī ar otru nestrādajoso sensoru - viss OK. Īsti nesaprotu ko tas rezistors tur izmaina, bet  kaut kas tur nebija īsti ka vajag.
_Nulles ir kad nobloķēju/aizspiežu sensor ar pirkstu_
 dist = 185.58cm   10504ms  
  dist = 185.21cm   10483ms  
  dist = 185.49cm   10499ms  
  dist = 185.60cm   10505ms  
  dist = 185.21cm   10483ms  
  dist = 185.07cm   10475ms  
  dist = 185.60cm   10505ms  
  dist = 187.92cm   10636ms  
  dist = 0.00cm   0ms  
  dist = 0.00cm   0ms  
  dist = 0.00cm   0ms  
  dist = 0.00cm   0ms  
  dist = 0.00cm   0ms  
  dist = 185.18cm   10481ms  
  dist = 185.21cm   10483ms  
  dist = 185.49cm   10499ms  
  dist = 185.65cm   10508ms  
  dist = 185.60cm   10505ms  
  dist = 185.48cm   10498ms  
  dist = 185.64cm   10507ms  
  dist = 185.65cm   10508ms  
  dist = 185.65cm   10508ms  
  dist = 185.53cm   10501ms  
  dist = 185.60cm   10505ms  
  dist = 185.27cm   10486ms  
  dist = 185.55cm   10502ms  
  dist = 185.60cm   10505ms  
  dist = 185.65cm   10508ms  
  dist = 185.11cm   10477ms  
  dist = 185.65cm   10508ms  
  dist = 185.64cm   10507ms  
  dist = 185.60cm   10505ms

----------

