UH szenzor hiba?

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Norrisz
DrótVégénSzéndarab
Hozzászólások: 36
Csatlakozott: 2015. szeptember 13. vasárnap, 19:28

UH szenzor hiba?

Hozzászólás Szerző: Norrisz »

Sziasztok!

Az alábbi kóddal feltöltött ARDUINO egy UH szenzorral és egy relével összekötve furcsán működik. A meghatározott távolságon belüli tárgyat, vagy személyt érzékeli,- a relé bekapcsol, viszont utána szabálytalan időközönként ki- be kapcsolgat, annak ellenére, hogy a kapcsolási távolságon belül ott az akadály, vagy személy. A kód még fog valamikor egy motoros szerkezetet is vezérelni, de az még nincs összekötve.
Nem találom a hibát. Esetleg a szenzor adta meg magát, vagy sok lenne az érzékelőt a lapkával összekötő vezeték hossza? (kb 70 cm.)

#define echoPin 11 // Echo 11-es lábhoz rendelve
#define trigPin 12 // Trigger a 12-as lábhoz
#define LEDPin 13 // Arduino beépített led 13-as láb
#define RELAY1 8 // Relé - 8-as láb
#define MotorKi 9 //asztallap kitolása 9 láb
#define MotorBe 10 // asztallap visszahúzása 10 láb
#define VegallasBent 2// Belső végálláskapcsoló 2 láb
#define VegallasKint 3 //Külső végálláskapcsoló 3 láb
#define KapcsFesz 4 //PC táp kapcsolófesz 4 láb

//int maximumRange = 200; // maximális távolság értéke
//int minimumRange = 0; // minimális távolság értéke
long duration, distance; // Időtartam kiszámításához használt távolság
void setup() {

Serial.begin (9600);//soros monitor bitsebessége
pinMode(trigPin, OUTPUT);// beállítás kimenetnek(kimenő jel a szenzorra)
pinMode(echoPin, INPUT);// beállítás bemenetenek(bejövő jel a szenzorról)
pinMode(LEDPin, OUTPUT); // a led kimenet beállítása
pinMode(RELAY1, OUTPUT); // relé kimenet beállítása

pinMode(MotorBe,OUTPUT); // Motor visszahúzás
pinMode(MotorKi,OUTPUT); // Motor kitolás
pinMode(VegallasBent,INPUT_PULLUP); // Belső végálláskapcsoló
pinMode(VegallasKint,INPUT_PULLUP); //Külső végálláskapcsoló
pinMode(KapcsFesz,INPUT_PULLUP); //Pc táp kapcsolófeszültség

}
void loop() {

digitalRead(KapcsFesz);

if (KapcsFesz==HIGH)
{

if (VegallasKint==HIGH)
{
digitalWrite(MotorKi, HIGH); //van kapcsolófesz és még nem érte el a külső végállást - kitolja
}

if (VegallasKint==LOW)
{
digitalWrite(MotorKi, LOW); //van kapcsolófesz és elérte a külső végállást - megáll
}

}

if (KapcsFesz==LOW)
{

if (VegallasBent==HIGH)
{
digitalWrite(MotorBe, HIGH); // nincs kapcsolófesz és még nem érte el a belső végállást- behúzza
}

if (VegallasBent==LOW)
{
digitalWrite(MotorBe,LOW); // nincs kacsolófesz és elérte a belső végállást- megáll
}
}


/* Egy ultrahang küldő fogadó ciklus. */
digitalWrite(trigPin, LOW); // nincs kimeneti hang (2mikrosec)
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);// kimeneti ultrahang küldése (10microsec)
delayMicroseconds(10);
digitalWrite(trigPin, LOW);// nincs kimeneti hang
duration = pulseIn(echoPin, HIGH);// ultrahang érzékelő bekapcsolása és elmentése a duration változóba

//A hangsebesség alapján kiszámítjuk a távolságot cm-ben és ezt az értéket a distance változóba tesszük.
distance = duration/58.2;
if (distance <= 20) { // eredeti -- (distance >= maximumRange || distance <= minimumRange){
/* ha distance értéke a megadott tartományon belül esik akkor bekapcsol a led és a relé, valamint kiküldi a bekapcs feliratot a soros monitorra
*/
Serial.println("Bekapcs");
digitalWrite(LEDPin, HIGH); //led bekapcsolása
digitalWrite(RELAY1,HIGH); // relé bekapcsolása
}
else {
/* ha tartományon belül van akkor a távolság értékét elküldi a soros monitora és a led is kikapcsol. */
Serial.println(distance );
digitalWrite(LEDPin, LOW); // Led kikapcsolása
digitalWrite(RELAY1,LOW); // relé kikapcsolása
}
//várakozik 5 s-ot a következő beolvasásig
delay(5000);
}
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: UH szenzor hiba?

Hozzászólás Szerző: Robert »

Ami ilyen hiba:
- az UH szenzor 40 fokban lát. Ideálisan tükröződő és elnyelő felületek vannak, valójában meg vegyesen. Nekem a szőnyeg zavart be, ugyanis a látószögbe az is bekerült. Most kicsit felfele kell hogy nézzen a szenzor...
- a 70 cm kábel szerintem határeset. Ha van motor/szervo is az 5V-on? Az adhat simán fals jelet...
Norrisz
DrótVégénSzéndarab
Hozzászólások: 36
Csatlakozott: 2015. szeptember 13. vasárnap, 19:28

Re: UH szenzor hiba?

Hozzászólás Szerző: Norrisz »

A szenzor egy íróasztal klaviatura tartó aljára van rögzítve, ezzel kapcsolná fel a LED világítást, ha valaki leül a gép elé. Csak az a baj, hogy amikor odaülnek , akkor fel is kapcsol szépen, csak néha gondol egyet és lekapcsol, majd ismét fel. A relét uln2003 kapcsolja. Motor még nincs rákötve - az nem zavarhat be. Próbáltam a távolságokkal sakkozni, az időzítéssel, a kapcsolás felcserélésével, de a hiba maradt. Halott az egész ötlet, vagy mi lehet a hiba. Egyébként 20 cm vezetékkel is ezt produkálja. Régebben IR kapcsolóval működött az egész, de a folyamatos működéshez néha mocorogni kellett, ezért tettem fel az UH-t. A motor a számítógép bekapcsolására egy mechanikával kitolja a billentyűzetet, kikapcsoláskor pedig visszahúzza. ( Pihent agyú ötlet, de szerintem gyakorlásnak- meglepinek jópofa...) De mint írtam - ez még nincs bekötve, csak a kódba tettem be a vázlatát.
Avatar
csegebiga
Chipgyilok
Hozzászólások: 288
Csatlakozott: 2015. március 27. péntek, 21:27

Re: UH szenzor hiba?

Hozzászólás Szerző: csegebiga »

3 lüke 5let, de hátha az egyik bejön:

ha bizonytalan az uh mérés, mérj többször!
azután vagy átlagolj, és az eredmény, (35cm)
vagy többségi eredmény (5 mérésből legalább 3 igen)
alapján dönstd el, ül-e ott valaki?

fordíts a mérés irányán, ha lehet!
ha a vizszintes távmérés bizonytalan eredményt ad, csinálj egy "hangsorompót"
pl asztal-padló távolság állandónak tekinthető. de ha ott ül valaki, ez drasztikusan változhat!

lassítsd a visszahúzási döntést!
(ez majdnem az első ötletem, csak aszimmetrikus formában.
mivel nem lőnek vele nyulat, várj meg 3 üres jelzést a lámpa leo+tálcavissza előtt.
ezzel vesztesz 15 sec-et, de nem lesz ideges a felhasználód :)
az élesítés mehet az első riasztásra.

elsőre ennyi jutott eszembe
(c)
Norrisz
DrótVégénSzéndarab
Hozzászólások: 36
Csatlakozott: 2015. szeptember 13. vasárnap, 19:28

Re: UH szenzor hiba?

Hozzászólás Szerző: Norrisz »

Köszi a tippet- bevált. Beraktam egy számlálót, ami számolja a kikapcsoló jelet. Ha eléri az 5 értéket, akkor lekapcsol, és nulláz, viszont ha a következő mérés a tartományon belül van, akkor csak a számlálót nullázza le. Ezzel a megoldással fel tudtam gyorsítani a mérések ciklusidejét, így a motorvezérlés nem fog megakadni. (majd ha elkészül :D )

Köszönöm a tippet !!
Válasz küldése