Varijabilni frekvencijski generator pravougaonog signala sa impulsno širinskom modulacijom

UVOD

VF drajver je varijabilni frekvencijski generator pravougaonog signala sa impulsno širinskom modulacijom. Jedna od primena je regulacija obrtnog momenta i brzine DC motora, što je i bio cilj izrade VF drajvera. Članak prikazuje praktičnu realizaciju, uz prateće video klipove koji prikazuju način funkcionisanja i probleme koji se rešavaju VF drajverima. VF drajver je baziran na Texas Instruments TL074 operacionom pojačavaču, te shodno tome članak opisuje način odabira odgovarajućeg operacionog pojačavača kako bi se ispunili frekvencijski zahtevi.

Podešavajući VF drajver potreba i primena

Pre nego što započnemo raspravu na temu VF drajver-a ili ti VF kontrolera (VF – variable frequency, prevod: promenljiva frekvencija) treba postaviti pitanja: šta je VF drajver, koja je potreba za istim i za šta se primenjuje? VF drajver je generator pravougaonog signala uz primenu impulsno širinske modulacije (ili PWM modulacija), sa mogućnošću podešavanja frekvencijskog opsega na skalama označenim u Hz, KHz i MHz. Potreba za VF drajverom se nameće sama po sebi ukoliko uzmemo u obzir činjenicu, da istom frekvencijom nije moguće upravljati svim električnim potrošačima. Neki potrošači zahtevaju niže dok drugi potrošači više frekvencije. Što se tiče primene, VF drajver je naširoko primenjen, i u isto nećemo zalaziti, osim što navodimo da se akcenat u ovom članku odnosi na upravljanje DC motorima.

Prototip: VF Drajver.

VF drajver električna šema

Električna šema, slika 1, nacrtana je u programskom paketu CadSoft Eagle Light edicija, uključujući i dizajn štampane ploče (PCB – printed circuit board). Ono što prvo zapada za oči jeste način prikaza integrisanog kola TL074 Texas Instruments, koje integriše četiri operaciona pojačavača (u nastavku OpAmp(s)). To nije standardan simbol za prikaz, ali nisam uspeo da pronađem u standardnoj biblioteci Eagle-a isto integrisano kolo, te sam se odlučio da TL074 biblioteku preuzmem sa Element 14 i korstim u električnoj šemi. Moglo se ići i na korišćenje biblioteke koja obuhvata LM324 OpAmp, jer su pin kompatibilni, ali na kraju sam se ipak odlučio za Element 14 Texas Instruments biblioteku. Biblioteku možete preuzeti sa adrese: https://www.element14.com/community/docs/DOC-64304/l/texas-instruments-cad-libraries-for-cadsoft-eagle-software, zip arhiva od 2MB i sadrži Texas Instruments_By_element14_Batch_1.lbr koja se importuje u Eagle programski paket. Ista zip arhiva sadrži i pdf fajl sa listom komponenti koje čine Texas Instruments biblioteku. Pre nego što preuzmete biblioteku morate se registrovati.

Slika1: VF drajver – električna šema.

Princip rada VF drajvera je prost i sačinjen je u osnovi iz tri dela, pri čemu je u ovom slučaju izlaz VF drajvera baferovan/pojačan sa BC546B BJT tranzistorom koji čini četvrti deo. Glavni elementi VF drajvera su generator trougaonog signala: integrator i komparator (ili ti Schmitt trigger), pri čemu se generisani trougaoni signal poredi sa Vref tj. referentnim naponom komparatora koji je zadužen za generisanje impulsno širinskog signala određene frekvencije. Na slici 2, prikazano je generisanje pravougaonog signala na osnovu trougaonog signala i referentnog napona.

Slika2: Trougaoni signal – generisanje impulsno širinske modulacije.

Kako vidimo sa slike 2, Vref tj. referentni napon (označen sa brojem 3) je varijabilan i podešavanje nivoa Vref se postiže sa potenciometrima: R6 i R7 koji su na šemi navedeni pod labelom PWM - Variable Duty Cycle Configuration. R6 i R7 potenciometri su međusobno isključivi pomoću kratkospojnika JP5. Vref se dovodi na invertovani ulaz 3IN- TL074 OpAmp. Na neinvertujući ulaz 3IN+ TL074 OpAmp dovodi se trougaoni signal (slika 2, signal označen sa brojem 1), označen na šemi sa 1OUT koji se u isto vreme poredi sa Vref naponskim nivoom koji je setovan sa jednim od potenciometara R6 ili R7. R6 i R7 nisu isti potenciometri po pitanju paketa, R7 je trimer potenciometar. Na ovaj način omogućeno je da se odabere koji potenciometar odgovara potrebama, ako nema mesta za potenciometar R6 koji se montira horizontalno, onda je moguće koristiti trimer potenciometar koji zauzima mnogo manje mesta, ali svakako će u tom slučaju biti potreban šrafciger za podešavanje Vref naponskog praga ili neki drugi alat. Isto tako, možete montirati oba tipa potenciometra sa različitim nominalnim vrednostima otpornosti i koristiti ih u zavisnosti od potrebe. 
 
Slika 2.a, ukoliko Vref naponski nivo, seče trougaoni signal, na izlazu 3OUT TL074 OpAmp generiše se pravougaoni signal određene impulsne širine koja je definisana tačkama preseka. Kada trougaoni signal pređe Vref nivo, na izlazu 3OUT TL074 OpAmp generiše se visoki naponski nivo koji ima vrednost ~Vcc napona napajanja TL074 OpAmp-a (recimo +5VDC, ali zavisi i od tipa OpAmp, da li je Rail-to-Rail tipa ili ne). Širina trajanja signala je određena vremenom za koje je trougaoni signal veći po vrednosti u odnosu na Vref nivo. Kada trougaoni signal opadne ispod Vref, impuls nestaje i naponski nivo na 3OUT izlazu je ~0VDC. Slika 2.b, ukoliko povećamo vrednost Vref nivoa, širina impulsa se smanjuje, pri čemu se jasno vidi razlika u odnosu na sliku 2.a. Slika 2.c, ukoliko Vref nivo pređe najveći naponski nivo trougaonog signala, izlaz 3OUT TL074 OpAmp je uvek ~0VDC. Slika 2.d je obrnuta situacija u odnosu na sliku 2.c jer je Vref ispod trougaonog signala. U tom slučaju na izlazu 3OUT TL074 OpAmp postoji konstantan visok naponski nivo od ~Vcc (+5VDC u ovom primeru). Kao što vidimo, generisanje impulsa određene širine je jednostavno, trougaoni signal se poredi sa Vref. Ovde još napominjemo da je ovo isključivo vezano za PWM tj. impulsnu širinu i da nema nikakve veza sa frekvencijom trougaonog signala. Frekvencija trougaonog signala zavisi od drugih elemenata VF drajvera.

Promenljiva frekvencija

Već je napomenuto da sa jednom frekvencijom nije moguće upravljati svim potrošačima, isto važi i za DC motore. Neki DC motori zahtevaju niže frekvencije upravljanja neki više, zavisi od tipa. Kako bi se ovo prikazalo, snimljena su dva video klipa koji prikazuju ponašanje DC motora ukoliko frekvencija upravljanja nije odgovarajuća. Video klipovi prikazuju DC motor koji generiše nepodnošljiv zvuk ukoliko frekvencija upravljanja nije odgovarajuća. Kao što možete videti, korišćenjem potenciometra R5 ili R9 (konfigurisani kao varijabilni otpornici) i kombinacijom kapacitivnosti: C3, C4, C5 i C6, moguće je pronaći odgovarajuću frekvenciju za kontrolisani DC motor. U trenutku kad nepodnošljivi zvuk nestane, možete biti sigurni da je frekvencija DC motora odgovarajuća. Linkove video klipova možete pronaći na kraju članka pod nazivom: Nepodnošljiv zvuk DC motora.

Stvari su jasne, ukoliko imamo generator pravougaonog signala koji isključivo radi pod određenom frekvencijom, neki DC motori će raditi kako treba, bez generisanog neprijatnog zvuka, dok neki neće. Zato i jeste u cilju da se naprave i koriste varijabilni generatori pravougaonih signala koji omogućavaju podešavanje frekvencije. U ovom slučaju podešava se frekvencija trougaonog signala pomoću R5 ili R9 potenciometra (konfigurisani kao varijabilni optornici) i seta kondenzatora: C3, C4, C5 i C6 koje možete kombinovati pomoću kratkospojnika JP1, JP2, JP3 i JP4 i na taj način menjati ukupan kapacitet koji se koristi za generisanje trougaonog signala uključujući i frekvenciju oscilovanja. Što se tiče kapacitivnosti, nije potrebno da imate isti tip kondenzatora i/ili iste vrednosti, možete koristiti različite, disk keramičke ili višeslojne keramičke i kombinovati ih. Ono što je bitno, set kondenzatora uz kratkospojnike omogućava menjanje ukupne kapacitivnosti generatora trougaonog signala, a videćemo u nastavku teksta i jednačinu kojom se određuje frekvencija oscilovanja. Što se tiče R5 i R9, isti su međusobno isključivi pomoću kratkospojnika JP6. Za R5 i R9 važi isto što i za R6 i R7, možete montirati oba potenciometra na PCB ili koristiti samo trimer potenciometre ukoliko imate limitran prostor u kome će se VF drajver nalaziti.

Slika3: Frekvencijska jednačina i slew rate.

Jednačina na slici 3 prikazuje zavisnost frekvencije generisanog trougaonog signala u odnosu na vrednosti otpornosti i totalnu vrednost kapacitivnosti. Ovde sam namerno stavio umesto znaka jednakosti znak približno, jer u realnosti nikada ne možemo tačno da izračunamo vrednost frekvencije samo na osnovu jednačine. Možemo da izračunamo približnu frekvenciju, ali videćemo u nastavku teksta da generisanje frekvencije zavisi u velikoj meri od odabranog tipa operacionog pojačavača. Kada posmatramo jednačine, kao što je frekvencijska jednačina na slici 3, mi ustvari podrazumevamo da je OpAmp idealan, tako da je na izlazu uvek trenutan odziv, što nije slučaj kod realnih OpAmp gde interne karakteristike igraju ulogu na krajnje generisanu frekvenciju signala, konkretno slew-rate parametar. 
 
Druga stvar, sve otpornosti iz navedene frekvencijske jednačine sa slike 3, uključujući i kapacitivnosti nisu iste, svi otpornici i kondenzatori se proizvode sa tolerancijom. Recimo, ono što sam uradio je eliminisanje otpornosti R3 i R4 iz frekvencijske jednačine, tako što sam u praktičnoj realizaciji uzeo iste vrednosti za oba, 4K7 oma. R4/R3 = 1 ali samo u slučaju da su otpornici isti, pošto nisu, R4/R3 je približno jedan (0.97 ili 0.98) i zavisi od tolerancije otpornika. Manja tolerancija je bolja, ali to nam nije garant da ćemo eliminisati R3 i R4 otpornike iz frekvencijske jednačine. Ukoliko je cilj preciznost, morali bi trimovati na red otpornike R3 i R4 i na taj način dodatnim podešavanjem učiniti ih što je moguće više jednakima. Kako sam za R3 i R4 uzeo iste vrednosti (uz unošenje određene greške u račun), frekvencijsku jednačinu sam sveo na zavisnost od vrednosti varijabilnog otpornika R9 (ili R5) i totalne sume kapacitivnosti. Recimo, ukoliko JP2 nije kratkospojen, vrednost za C4 je nula, te je totalna vrednost kapacitivnosti Ct = C3 + C5 + C6.

Slew Rate OpAmp

Već je napomenuto da izbor OpAmp-a igra veliku ulogu kod VF drajvera, nije moguće sa svim OpAmps dobiti iste frekvencije, jer isto zavisi od njihove interne strukture i za šta su oni zapravo i dizajnirani. Recimo, slew-rate je parametar koji igra ulogu kod VF drajvera i govori nam koliko je OpAmp sposoban da brzo menja napon na izlazu, i izražava se u V/uS, volti po mikroSekundi (u specifikacijama OpAmps-a možete pronaći i milisekunde). Poređenja radi: LM324 OpAmp slew-rate je 0.5V/uS, mc4558 OpAmp slew-rate je 1.2 V/uS dok je za TL074 OpAmp slew-rate 13V/uS. Na osnovu ovih podataka TL074 spada u klasu high-speed ili ti brzih OpAmps u odnosu na mc4558 i LM324, te treba voditi računa koja je željena frekvencija. 
 
Željenu frekvenciju izračunavamo na osnovu frekvencijske jednačine o kojoj smo već pisali u ovom članku. Kada se željena frekvencija izračuna, izračunata vrednost se uvrštava u jednačinu za slew-rate (slika 3) pri čemu V u jednačini određuje pik generisanog pravougaonog signala. Recimo, za V uzimamo da je pik +5VDC i da je željena frekvencija 25KHz. Kada se uvrste vrednosti u jednačinu za slew-rate dobijamo potrebnu vrednost od 0.7855 V/uS. Na osnovu dobijenog broja biramo OpAmp. 
 
LM324 slew-rate je 0.5V/uS što automatski znači da nije dobar i da umesto njega trebamo koristiti TL074 OpAmp jer je njegov slew-rate 13V/uS i sa njime možemo generisati 25KHz a da pri tome imamo pravougaoni signal sa pikov od +5VDC. Napomena, ukoliko se ipak odlučimo za LM324 OpAmp, dobićemo izobličenja PWM signala, koja liče na sve samo ne na pravougaoni signal kakav je prikazan na slici 2 (označen brojem 2), jer LM324 nije u stanju da menja signal na izlazu onoliko brzo koliko bi mi to i želeli, 25000 puta u sekundi. Zato je za 25KHz i pik od +5VDC TL074 više nego dovoljan.

Sve prikazane jednačine su samo jednačine i služe nam da približno izračunamo željenu frekvenciju, potrebne vrednosti otpornosti i kapacitivnosti, koji OpAmp da odaberemo na osnovu slew-rate računice itd. Ali to je samo približno, jer komponente nisu idealne, već realne, i sve one su izrađene sa tolerancijama. Jedini način da se zaista uverimo da je generisana frekvencija zapravo i željena frekvencija (uz određeni stepen greške usled neidealnosti komponenti), jesu merenja uz pomoć frekvencmetra ili korišćenjem osciloskopa. Iz tog razloga, na šemi su namerno ostavljene tačke označene sa mesta za osciliskop sondu, i možemo meriti/pratiti: trougaoni generisani signal, pravougaoni signal i pojačani signal tj. baferovani, pri čemu je baferovanje izvršeno sa BC546B BJT tranzistorom. Pojačanje je moguće podešavati trimer potenciometrom R8.

Od ostalih stvari, VF drajver uključuje LED tester kolo koje nam može pomoći da proverimo kako VF drajver radi, za isto možete pogledati video klip pod nazivom LED tester, link je dostupan na kraju članka. Protoboard omogućava dodavanje raznih tipova konektora za povezivanje VF drajver sa DC motor kontrolerom ili bilo kojim drugim uređajem. Ono što bih još izdvojio je set kapacitivnosti za stabilizaciju napona TL074 OpAmp (bypass capacitors). Kako je VF drajver, namenjen varijabilnim frekvencijama, namerno je ostavljen prostor za tri različite vrednosti stabilizacionih kondenzatora povezanih paralelno. Ovo je klasičan način za stabilizaciju usled različitih opsega frekvencija u okviru kojih integrisano kolo treba da radi. U mom slučaju odabrao sam dva keramička kondenzatora sa oznakama 102 i 104.

Kontrolisanje brzine i obrtnog momenta DC motora

VF drajver se koristi za kontrolisanje odnosa obrtnog momenta i brzine obrtaja DC motora. Slika 4 prikazuje odnose ove dve vrednosti. Impulsno širinska modulacija nam omogućava da u čitavom spektru različitih širinskih vrednosti kontrolišemo odnos ove dve veličine, od najmanje do najveće. Za najmanju vrednost uzima se impulsna širina koja generiše vrednost napona na DC motoru koja je dovoljna za pokretanje rotacije, i označena je sa PWM Vdcth (th - threshold). Za maksimalnu vrednost uzima se ona koja se dobija za 100% impulsnu širinu, PWM Vdcmax. Isprekidana podebljana prava (sa negativnim koeficijentom) se pomera paralelno u odnosu na prave označene na slici 4 sa min i max i to sa: povećanjem impulsne širine modulacije ka maksimumu i smanjenjem impulsne širine ka minimumu. 

Slika4: Relacija obrtni moment i brzina DC motora

Za svaku pravu iz spektra postoje dve ključne tačke: tačka maksimalne brzine DC motora, u tom slučaju DC motor radi bez opterećenja (obrtni moment je nula) i tačka najvećeg obrtnog momenta pri opterećenju koje zaustavlja rotaciju DC motora (DC motor stall). Tačka maksimalne brzine je i tačka najmanje potrošnje DC motora jer elektromotorna sila radi protiv impulsno širinske modulacije dovedene na izvode motora. Tačka maksimalnog obrtnog momenta je tačka najveće potrošnje i najvećih gubitaka. Da bi prikazao odnos obrtnog momenta, brzine DC motora, potrošnje i gubitaka snimljena su tri video klipa, linkovi su dostupni na kraju članka pod nazivom: Obrtni moment i brzina rotacije.

Video #1: prvi video prikazuje impulsnu širinu generisanu VF drajverom dovoljnu da se omogući rotiranje DC motora, to je takozvani naponski prag potreban za startovanje rotacije ili ti Vth - threshold. Ovde možemo dodati da Vth snažnog MOSFET-a nije isto što i Vth DC motora, to su dve potpuno drugačije vrednosti, pri čemu one mogu biti iste ili različite, zavisi od toga koji je snažni MOSFET korišćen za DC motor kontroler i koji DC motor se koristi. Za ovaj primer korišćen je IRF3710 MOSFET. Kao što vidite, rotiranje je sporo, svega 0.5 ili 1 RPM, nije tačno mereno. Ovo je jako mala brzina i nije potrebno opteretiti osovinu DC motora velikim opterećenjem kako bi se rotiranje zaustavilo. Uz pomoć prstiju, bez ikakvih napora, može se zaustaviti okretanje osovine DC motora. Ampermetar je pokazao da sa i bez opterećenja, DC motor ne troši previše, svega 0.01 ampera.

Video #2: drugi video prikazuje impulsnu širinu koja povećava brzinu okretanja DC motora. U odnosu na brzinu iz video klipa #1 razlika je očigledna. Ne znam tačno kolika je, jer nisam merio RPM. Ono što možemo videti je to, da je na osovinu DC motora potrebno dovesti veće opterećenje kako bi se rotacija zaustavila. Dodirivanjem osovine prstima, vrši se opterećenje, gubi se puna brzina motora za datu impulsnu širinu modulacije i DC motor usporava, samim tim, DC motor počinje da troši veću količinu struje, što je drugačiji slučaj u odnosu na primer iz video klipa #1. Pri zaustavljenoj rotaciji, ampermetar je pokazao 0.07 ampera potrošnje. To je očigledno, impulsna širina u drugom primeru dovodi veći napon na izvode DC motora, kako je rotacija zaustavljena, elektromotorne sile nema, te usled većeg napona na izvodima DC motora protiče i veća količina struje kroz namotaje.

Video #3: treći video je snimljen za 100% impulsnu širinu modulacije. Napon na izvodima DC motora je maksimalan, samim tim imamo najbrže okretanje i veliki obrtni momenat usled opterećenja. Pošto je brzina obrtaja velika, morao sam da vežem izolir traku oko prstiju jer sam osetio toplotu usled velikog trenja pri pokušaju da zaustavim rotaciju golim prstima. No, u svakom slučaju, ukoliko ovo budete radili, zaštitite prste. Pri pokušaju da zaustavim rotaciju osovine, potrošnja struje je rasla, kao što možete videti na snimku. Zaustavljanje rotacije je bilo teško, u trenutku zaustavljanja ampermetar je pokazao u nekim slučajevima potrošnju preko 0.5 ampera. Objašnjenje je isto kao i za primer iz video klipa #2, osim što je u ovom slučaju napon na izvodima DC motora maksimalan, te usled nedostatka elektromotorne sile (jer nema rotacije), protiče struja od preko 0.5 ampera. Ovo je takozvani stall režim rada DC motora i nije poželjan, jer može doći do oštećenja, što DC motora to i kontrolne elektronike tj. DC motor drajvera.

U ovom primeru korišćen je DC motor male snage, na žalost nisam uspeo da pronađem specifikaciju za isti, pronašao sam ga u jednom starom štampaču. Kod snažnih DC motora, potrošnja struje u stall režimu može ići i do nekoliko desetina ampera. Ono što je bitno napomenuti je sledeće: iz video klipova smo videli da je potrošnja DC motora najmanja kad rade bez opterećenja za datu impulsno širinsku modulaciju. Sa inkrementalnim povećanjem opterećenja na osovinu DC motora inkrementalno se povećava i potrošnja struje. DC motori nisu idealni, i imaju unutrašnju otpornost ili ti ESR (ekvivalentna serijska otpronost). Ukoliko se u toku rada, kada je DC motor pod naponom, zaustavi osovina, iz bilo kog razloga, recimo: opterećenje je toliko veliko da DC motor nema dovoljno obrtnog momenta da ga prevaziđe, kroz namotaje DC motora uključujući i DC motor kontroler može proći visok intezitet struje, što dovodi do zagrevanja (jer DC motor ima ESR) a vremenom pregrevanja i uništenja, ne samo DC motora već i DC motor kontrolera. U stall režimu, zagrevanje može biti veliko, te je termalni dizajn DC motor kontrolera od suštinskog značaja. U slučaju da potrošnja struje u stall režimu prevazilazi maksimalne deklarisane vrednosti DC motor kontrolera, isti može biti trajno uništen. Iz tog razloga, neki DC motor kontroleri uvode mere zaštite, pri čemu se meri potrošnja struje šant otpornikom, te usled detektovanja nedozvoljene struje sigurnosna elektronika isključuje H-Bridge kolo sačinjeno od snažnih MOSFET tranzistora.

Zaključak

VF drajver nije komplikovan uređaj za impelemtaciju, možete ga koristiti u različite svrhe, gde god da vam je potreban pravougaoni signal sa impulsno širinskom modulacijom i varijabilnom frekvencijom. Isti sam pravio za potrebe regulisanja brzine i obrtnog momenta DC motora. VF drajver je urađen u Through-hole tehnologiji. PCB je razvijen sa programskim paketom CadSoft Eagle Light i napravljen sa termalnim transferom šeme na bakarnu površinu pomoću foto sjajnog papira za štampanje. O ovoj tehnici izrade PCB-a biće zaseban članak u jednom od narednih brojeva magazina. Napomena: na električnoj šemi nema ni jedne naznake vrednosti otpornika i/ili kondenzatora, to ostaje na vama da izaberete na osnovu prikazanih jednačina i zahteva. Što se tiče OpAmps-a, možete koristiti sve pin kompatibilne OpAmps-e sa TL074, pod uslovom da zadovoljavanju slew-rate. Primer OpAmps-a: LM324, TL064, TL074, TL084. Dodatne komentare na engleskom jeziku možete pronaći u okviru snimljenih video klipova.

Projekat: VF Drajver

Video klipovi:
Video klip – Nepodnošljiv zvuk DC motora #1, link: https://www.facebook.com/100006893940941/videos/1709014699338312/
Video klip – Nepodnošljiv zvuk DC motora #2, link: https://www.facebook.com/100006893940941/videos/1709019929337789/
Video klip – Obrtni moment i brzina rotacije #1, link: https://www.facebook.com/100006893940941/videos/1711607042412411/
Video klip – Obrtni moment i brzina rotacije #2, link: https://www.facebook.com/100006893940941/videos/1711615755744873/
Video klip – Obrtni moment i brzina rotacije #3, link: https://www.facebook.com/100006893940941/videos/1711621882410927/

Publikacija: InfoElektronika magazin broj 127

Related publications on English language:

Autor: Vladimir Savić / zilsel-invent
Web adresa: www.zilsel-invent.com

Comments

  1. Nadovezaćemo se na ovaj blog post u vezi načina na koji se određuje potrebni drajver DC motora. Ukratko svodi se na to da se sa digitalnim multimetrom meri potrošnja struje kroz DC motor kad je isti pod 100% PWM signalom i kad je osovina DC motora blokirana tj. nema rotacije. U tom slučaju je najveće potrošnja struje. Recimo ako izmerimo da je to 3A, svakako nam treba dradjver koji može minimalno da izdrži 3A ili više. Drajver od 2A ne možemo da koristimo u tom slučaju..

    ReplyDelete
  2. https://www.facebook.com/zilsel/videos/2096416710598107/

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete

Post a Comment

Popular posts from this blog

Electrolytic capacitors and design rules

Fake VC830L digital multimeter

How to design LM324 Astable Multivibrator