Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • OS
  • Upravljanje uređajima preko računalnog som-porta. Računalni hardver i softver

Upravljanje uređajima preko računalnog som-porta. Računalni hardver i softver

Na Habréu o upravljanju svjetiljkom putem interneta došla je ideja da rasvjetom kod kuće upravljam s računala, a kako već imam podešeno kompjutersko upravljanje s mobitela, to znači da se svjetlom može upravljati i iz isti telefon. Nakon što je jednom od mojih kolega pokazao članak, rekao je da mu samo treba. Budući da često zaspi iza filmova koje gleda na računalu. Neko vrijeme nakon završetka filma i računalo zaspi i gasi monitor, ali svjetlo u prostoriji ostaje upaljeno. Oni. odlučeno je da je stvar korisna i počeo sam prikupljati podatke i detalje za ovo čudo.
Ostatak informacija je pod habracutom (pazite s puno slika - promet).

Dijagram uređaja

Za originalnu shemu uzeta je jedna od shema pronađenih na internetu i izgledala je ovako:

Ali samo uz malu promjenu: između 1. pina 4N25 optospojnice i 2. pina LPT-a dodan je otpornik od 390 Ohma, a dodana je i LED koja označava uključenje. Krug je sastavljen u testnom načinu, t.j. samo spojeno po potrebi i testirano. U ovoj verziji jednostavno je uključivala i gasila staru sovjetsku svjetiljku.
Odlučeno je da ako je kontrola već obavljena, onda ne za jedan uređaj, već za najmanje 4 uređaja (na temelju: jedne svjetiljke na stolu, lustera za dva prekidača, rezervne utičnice). U ovoj fazi postalo je potrebno izgraditi kompletan krug uređaja, te se počelo birati različite programe.
Instalirani su:

  1. KiCAD
  2. Orao
Nakon što sam ih sve pogledao, odlučio sam se za Orla, budući da je u njegovoj biblioteci bilo "sličnih" dijelova. Evo što se u njemu dogodilo:

Dijagram koristi DB9 port, tj. običan COM port, to je učinjeno radi uštede prostora na ploči i samih konektora (imao sam COM), a kako ćemo koristiti samo 5 vodiča, to će nam biti dovoljno s marginom. napravite adapter sa DB25 (LPT) na DB9 (COM), u mom slučaju to se radi na sljedeći način:
LPT 2-9 pin = COM 1-8 pin su pinovi kontrolnih podataka;
LPT 18-25 pin (često su međusobno povezani) = COM 9 pin - ovo je naše uzemljenje.
Također, sklop koristi dodatno napajanje od 12V za napajanje releja, prema planu će to biti običan kineski punjač ili možda krunica od 9V (jedan relej radi dobro, potrebno je provjeriti 4 istovremeno). Za osiguranje porta računala koriste se odvojeno napajanje i galvanska izolacija pomoću optospojnice. Ako želite, možete se, naravno, napajati iz računala od 12 V, ali to svatko radi sam i na vlastitu odgovornost i rizik.

Potrebni dijelovi za izradu uređaja
  1. COM port - 1 kom
  2. konektor za napajanje - 1 kom
  3. zelena LED - 4 kom
  4. optospojnica 4n25 - 4 kom
  5. sjedalo za optospojnicu (imao sam samo 8 nogu) - 4 kom
  6. otpornik 390 Ohm - 4 komada
  7. otpornik 4,7 kOhm - 4 kom
  8. tranzistor KT815G - 4 komada
  9. relej HJR-3FF-S-Z - 4 kom
  10. stezaljke za 3 kontakta - 4 kom.
  11. folijski tekstolit

Priprema izgleda PCB-a

Nakon što sam pokušao upotrijebiti Eagle za pripremu PCB-a, shvatio sam da će to biti teško i odlučio sam pronaći lakšu opciju. Ova opcija je program sprint layout 5, čak i ako je u izvršavanju za Windows, ali radi bez problema u wine pod linuxom. Sučelje programa je intuitivno, na ruskom jeziku i program ima prilično jasnu pomoć (pomoć). Stoga su sve daljnje radnje za razvoj tiskane ploče izvedene u sprint layoutu 5 (u daljnjem tekstu SL5).
Iako mnogi ljudi koriste ovaj program za razvoj ploča za svoje uređaje, on nije sadržavao dijelove koje sam trebao (čak ni u hrpi preuzetih zbirki makronaredbi). Stoga sam prvo morao stvoriti dijelove koji nedostaju:
  1. COM port (onaj koji se nije poklopio s mojim, duž rupa za montažu)
  2. utičnica
  3. stezaljka za tri kontakta
  4. relej HJR-3FF-S-Z
Pogled na ove dijelove:

Nakon dodavanja potrebnih detalja, započeo je sam dizajn PCB-a. Trebalo je nekoliko pokušaja, bilo ih je oko pet. Svaka verzija ploče otisnuta je na kartonu, probušene su rupe i u njih umetnuti dijelovi. Zapravo, otkriveno je da moj COM port ne odgovara onom koji je bio u SL5. Pojavila se i mala pogreška u krugu releja - zapravo, kućište releja pomaknuto je za 2-3 mm. Naravno, sve greške su ispravljene.
Na prvoj tiskanoj verziji pokazalo se da tranzistor nije ispravno spojen, dva su kontakta pomiješana.
Nakon svih ispravki i prilagodbi dobili smo sljedeću ploču:

SL5 ima funkciju PhotoView za gledanje ploče, ovako izgleda u njoj:

Na konačnoj verziji ploče, staze će biti malo dotjerane, ali inače izgleda isto.

SL5 ima i zgodnu opciju za ispis ploče, možete sakriti nepotrebne slojeve i odabrati boju ispisa za svaki sloj, što je vrlo korisno.

Priprema PCB-a

Odlučeno je da se ploča izradi metodom LUT (laser-iron tehnologija). Nadalje, cijeli proces je na fotografiji.

Izrežite komad PCB-a potrebne veličine.

Uzimamo najfiniji brusni papir i pažljivo čistimo bakrenu površinu.

Nakon čišćenja površine, mora se isprati i odmastiti. Možete isprati vodom, a odmastiti acetonom (u mom slučaju to je otapalo 646).
Zatim ispisujemo našu ploču na laserskom pisaču na premazani papir, ne zaboravljajući instalirati najhrabriji ispis u pisač (bez štednje tonera). Ova opcija se pokazala malo neuspješnom, jer je toner bio razmazan, ali još jedan pokušaj je bio sasvim u redu.

Sada morate prenijeti crtež s papira na tekstolit. Da biste to učinili, izrežite crtež i nanesite ga na PCB, pokušajte ga poravnati prema potrebi, a zatim ga zagrijte glačalom. Cijela površina mora biti dobro zagrijana kako bi se toner otopio i prionuo na bakrenu površinu. Zatim pustite da se daska malo ohladi i namočite je pod tekućom vodom. Kada se papir dovoljno smoči, mora se odvojiti od ploče. Samo toner se zalijepio na ploču. izgleda ovako:

Zatim morate pripremiti otopinu za jetkanje. Za ovo sam koristio željezni klorid. Na staklenki s željeznim kloridom piše da se otopina mora napraviti 1 do 3. Malo sam odstupio od ovoga i napravio 60 g željeznog klorida na 240 g vode, t.j. ispalo je 1 prema 4, unatoč tome, ploča je urezana normalno, samo malo sporije. Imajte na umu da je proces otapanja suhog željeznog klorida u vodi popraćen oslobađanjem topline, pa se mora dodati u vodu u malim obrocima i miješati. Naravno, za jetkanje je potrebno koristiti nemetalno posuđe, u mom slučaju to je bila plastična posuda (kao od haringe). Dobio sam sljedeće rješenje:

Prije nego što sam dasku spustio u otopinu, ljepljivom trakom zalijepio sam uže za pecanje na stražnju stranu, kako bi bilo prikladnije uzeti i okrenuti dasku. Ako vam otopina dospije na ruke, morate je brzo isprati sapunom (sapun ga neutralizira), ali mrlje mogu ostati, sve ovisi o konkretnim uvjetima. Mrlje se uopće ne skidaju s odjeće, ali imala sam sreću da to sama nisam provjerila. Dasku je potrebno uroniti u otopinu s bakrenim premazom i ne sve ravno, već pod kutom. S vremena na vrijeme, preporučljivo je očistiti ploču od rada, jer ometa daljnje jetkanje. To se može učiniti s pamučnim štapićima.

Cijeli proces jetkanja mi je trajao 45 minuta, 40 minuta bi bilo dovoljno, ali samo sam bio zauzet još jednom stvari.
Nakon jetkanja, ploču operemo sapunom, otkinemo traku s ribarskom linijom i dobijemo:

Pažnja! Otopinu željeznog klorida nemojte ulijevati u sudoper (kanalizaciju) - to može oštetiti metalne dijelove sudopera, a općenito, otopina bi ipak mogla dobro doći.
Zatim trebamo isprati toner, to se uspješno radi s istim otapalom 646 koje je korišteno za odmašćivanje (dulji kontakt otapala s kožom može je oštetiti).

Sljedeći korak je bušenje rupa. U početku sam imao rupe od 1 mm i 1,5 mm na ploči, jer nisam mogao pronaći tanje bušilice. Također, u našem gradu nije bilo moguće pronaći steznu steznu glavu za pričvršćivanje na elektromotor, pa se sve radilo velikom bušilicom.

Pojavio se prvi uređaj

Prvi put sam uzeo samo dvije bušilice, ali kada sam koristio takvu bušilicu, to nije bilo dovoljno. Jedna bušilica se pokvarila, a druga se savijala. Sve što sam uspio izbušiti prvog dana:

Sutradan sam kupio pet bušilica. I bili su taman dovoljni, jer ako se ne razbiju (usput, slomio sam samo jedan od pet), onda postaju tupi, a pri bušenju s tupim, tragovi se pogoršavaju, bakar se počinje ljuštiti. Nakon potpunog bušenja ploče, dobivamo:

Nakon bušenja, ploča mora biti kalajisana. Za to sam koristio staru metodu - lemilo, TAGS fluks i lim. Htjela sam isprobati Roseovu leguru, ali je ne mogu pronaći u našem gradu.

Nakon kalaja dobivamo sljedeći rezultat:

Zatim morate isprati ploču kako biste uklonili ostatke toka, budući da se TAGS može prati u vodi, to možete učiniti vodom ili alkoholom. Napravio sam nešto između - oprao sam ga starom votkom i obrisao vatom. Nakon svih ovih koraka, naša ploča je spremna.

Montaža dijelova

Da provjerim ispravnost ploče, u početku sastavljam samo jedan (od četiri) red dijelova, nikad ne znaš gdje se uvukla greška.

Nakon ugradnje dijelova, idemo i spajamo uređaj na računalo putem LPT-a, za to je zalemljen adapter od DB25 (LPT) do DB9 (COM) u sljedećem obliku:

  • 2-pinski DB25 do 1-pinski DB9
  • 3-pinski DB25 do 2-pinski DB9
  • Pin 4 od DB25 do pin 3 od DB9
  • 5-pinski DB25 do 4-pinski DB9
  • 6-pinski DB25 do 5-pinski DB9
  • 7-pinski DB25 do 6-pinski DB9
  • 8-pinski DB25 do 7-pinski DB9
  • 21 pin DB25 (mogući su bilo koji broj od 18 do 25) na pin 9 DB9
Budući da je kao žica korištena obična upletena parica, jedno ožičenje nije bilo dovoljno, ali za ovaj uređaj dovoljno je samo pet žica, tako da je ova opcija prikladna. Koristimo jednostavnu sovjetsku svjetiljku kao opterećenje koje treba uključiti. Pa, kao napajanje - univerzalno kinesko napajanje (4 konektora i napajanje od 3 do 12 V). Ovdje je sve sastavljeno:

Ali uređaj već radi:

Time je završena još jedna večer, a montaža ostalih dijelova ostavljena je sljedećeg dana.

A evo i potpuno sastavljenog uređaja:

Pa, i mali video o tome kako radi (kvaliteta nije baš dobra, nije se bilo što normalno snimati)

To je sve, ostaje samo pronaći normalno kućište za uređaj i pokrenuti ga.

Softverski dio

Naravno, da biste upravljali LPT portom, potreban vam je softver, ali s obzirom da imam linux kod kuće, odlučeno je da samo napišem najjednostavniji program, a zatim ga dodam i prilagodim prema potrebi. Izgledalo je otprilike ovako:
#uključiti
#uključiti
#uključiti
#uključiti
#define BASE 0x378
#definiraj VRIJEME 100000
int main ()
{
int x = 0x0F;
int y = 0x00;
if (ioperm (BASE, 1, 1))
{
perror ("ioperm ()");
izlaz (77);
}
outb (x, BASE);
vrati 0;
}

Ovaj program šalje port 0x0F = 00001111 na LPT, tj. napaja 1 do 2-5 pinova (Data0-Data3), a ovo je naš kontrolni napon između 2-5 pinova i mase (18-25 pinova), tako da će se sva četiri releja uključiti. Program za slanje 0x00 na port za gašenje radi na isti način, samo šalje y - outb (y, BASE) umjesto x. Također možete pročitati stanje porta:
#define BASEPORT 0x378 / * lp1 * /
...
printf ("status:% d \ n", inb (BASEPORT));
...

Jedina nijansa ovog programa je da se mora pokrenuti kao root, budući da funkcija ioperm nije dostupna običnom korisniku. Mislim da ne možete reći kako riješiti takav problem, svatko će odabrati prikladniju opciju.

Naknadno je program modificiran tako da je prosljeđivanjem parametara naredbenog retka u njega bilo moguće naznačiti s kojim uređajem i što učiniti.
Izlaz "sw --help":
Program za upravljanje relejem preko LPT porta.
Program može imati jedan ili dva parametra.
Format parametra: sw [broj uređaja] [radnja]
broj uređaja - od 1 do 8
radnja - "uključeno", "isključeno", "st" - omogući, onemogući, status
Primjer: "sw 2 on" za omogućavanje drugog uređaja ili "sw --help" za prikaz pomoći

PS Ako nekome treba, onda mogu staviti datoteku sa shemom ploče u sl5 i izvor upravljačkog programa negdje.

Mnogi od nas željeli bi kontrolirati električne krugove putem računala. I što? Bilo bi super kad bi. Zamislite, prijatelj vas nazove, kaže: “Dolazim za 20 minuta”, onda prođe 20 minuta, zvoni na vratima, ali ne želite ustati od kompjutera, otvoriti vrata itd. I zamislite drugačiju situaciju: zazvoni zvono na vratima, onda vam se na monitoru pojavi poruka tipa "Imate goste", pritisnete tipku na računalu - otvori se magnetna brava na vratima i vičete na cijelu kuću: "Dođite u", ili ga trebate uključiti. električni čajnik, svjetlo ili nešto drugo. Danas to više nije fantazija, već sasvim realno, samo zbog loše ekonomije, ne može si svatko priuštiti ni najjednostavniju "pametnu kuću", ali ako postoji želja i izravne ruke, onda možete lako kontrolirati električne krugove kroz PC.

U današnje vrijeme dosta ljudi zna programirati, može napisati program za računalo koje bi moglo upravljati vanjskim uređajima, ali kako spojiti isto kuhalo za vodu na računalo? Pa možete npr. preko LPT porta, samo što ga sada rijetko možete vidjeti gdje možete vidjeti što onda ostaje? USB!!!

Napravimo uređaj koji će se spajati na USB i moći će upravljati električnim krugovima (na primjer, paliti svjetla), reagirati na zatvaranje gumba (na primjer, zvono na vratima) i još nešto.

Dakle, od čega ćemo to napraviti? Oni koje je ovo pitanje zanimalo vjerojatno su već čuli za Ke-USB24A modul.

Opis:

Ke-USB24A modul je dizajniran za povezivanje vanjskih digitalnih i analognih uređaja, senzora i aktuatora s računalom putem USB sabirnice. Definiran je kao dodatni (virtualni) COM port. Modul ima 24 diskretne ulazno/izlazne linije (bilo logička 0 ili logička 1) s mogućnošću podešavanja smjera prijenosa podataka (ulaz/izlaz) i ugrađen 10-bitni ADC. Za upravljanje modulom predviđen je skup tekstualnih kontrolnih naredbi (KE - naredbe).

Prepoznatljive karakteristike:

  • Modul sučelja USB sabirnice
  • definiran od strane Windows/Linux OS-a kao virtualni COM port
  • ne zahtijeva dodatne elemente kruga, odmah spreman za upotrebu
  • 24 diskretna I/O linije s mogućnošću samostalnog konfiguriranja smjera prijenosa podataka (ulaz/izlaz) i pohranjivanja postavki u nepromjenjivu memoriju modula
  • ugrađeni 10-bitni ADC sa zajamčenom brzinom uzorkovanja do 400 Hz.
  • dinamički raspon napona analognog ulaznog signala za ADC je od 0 do 5 V.
  • skup gotovih tekstualnih naredbi visoke razine (KE - naredbe)
  • prikladan faktor oblika u obliku modula s DIP-zaglavljem i USB-B konektorom
  • mogućnost napajanja i s USB sabirnice i iz vanjskog izvora napajanja (način se odabire kratkospojnikom na ploči)
  • mogućnost spremanja korisničkih podataka u trajnu memoriju modula (do 32 bajta)
  • mogućnost promjene deskriptora niza USB uređaja
  • svaki modul ima jedinstveni serijski broj dostupan softverom
  • Podržava Windows 2000, 2003, XP 32/64 bit, Vista 32/64 bit i Windows 7 32/64 bit
  • Podrška za OS Linux

Čini se da je ono što nam treba, ALI ... cijena ovog čuda počinje od 40 dolara. Vjerojatno ste već izgubili želju za kupnjom.

Bolje da sami sastavimo takav modul, samo da bude dostupan i gladnom studentu!

Od obveznih kriterija: niska cijena i laka dostupnost komponenti, jednostavnost montaže.

Kao mikrokontroler, uzmimo široko korišteni ATmega8 (bez L na kraju). Karakteristike našeg modula bit će sljedeće:

  • Povezivanje na PC preko USB-a.
  • Windows detektira kao USB HID uređaj, bez vozača.
  • Odmah spreman za polazak.
  • 7 izlaznih linija s logičkim stanjem (aktivno / neaktivno).
  • 2 izlazne linije s glatkom kontrolom napona od minimalnog do maksimalnog. Samo što ovo nije DAC (digitalno-analogni pretvarač) već PWM (pulsno širinska modulacija). Ali s filterom ga lako možete pretvoriti u DAC.
  • 7 ulaznih redaka s logičkim stanjem (aktivno / neaktivno).
  • 1 ADC (analogno-digitalni pretvarač) s mogućnošću povezivanja vanjskog referentnog izvora napona (RON).
  • Mogućnost izravnog učitavanja novog firmwarea putem USB-a.

Zašto sam izabrao HID, a ne virtualni COM port (CDC)? Prvo, drajveri nisu potrebni, a drugo, HID učitava mikrokontroler nekoliko puta manje od CDC-a, budući da se podaci ne traže stalno, već samo kada to host (računalo) zahtijeva, a općenito, COM port već umire. hardverskih COM portova praktički nema, ostaju samo virtualni. Logički izlazni vodovi su dizajnirani da kontroliraju samo dva stanja - uključeno ili isključeno, kada je isključeno, izlaz (noga mikrokontrolera) će biti 0V; kada je uključen - 5V, ovdje možete jednostavno spojiti LED i njime upravljati s računala, ili možete spojiti relej (preko tranzistora) i upravljati snažnijim opterećenjem (osvjetljenje, itd.). Izlazne linije s regulacijom napona (PWM izlaz) omogućuju vam glatku promjenu napona na nozi mikrokontrolera od 0V do +5V s korakom od 5 / 1024V. Linije za unos stanja služe za praćenje stanja tipki, tipki itd. Kada je vod kratko spojen na masu (kućište, GND), njegovo stanje = 0, ako nije kratko - 1. ADC vam omogućuje mjerenje napona, ovdje možete spojiti potenciometar, analogni temperaturni senzor, ili nešto drugo, samo napon, na ova noga ne smije prelaziti napon ishrane. I vanjska referentna referenca i napon napajanja modula mogu se koristiti kao izvor referentnog napona za ADC. Kako bismo izbjegli spajanje mikrokontrolera s programatorom tijekom bljeskanja, omogućit ćemo učitavanje firmwarea izravno putem USB-a, bez korištenja vanjskog programatora.

Dijagram uređaja:

Kao što možete vidjeti, sklop je prilično jednostavan, samo nisam spojio konektore na krug po redu, to je zato što ATmega8 ima noge svakog porta, iz nekog razloga su razbacane, ali na samoj ploči će izgledati lijepo.

Isprintana matična ploča:

Pa, kao rezultat, dogodilo se ovo:

Sada shvatimo što ćemo gdje spojiti.

  1. USB priključak. Mislim da ga svi poznaju.
  2. Indikator napajanja.
  3. Logički ulaz 1.
  4. Logički ulaz 2.
  5. Logički ulaz 3.
  6. Logički ulaz 4.
  7. Logički ulaz 5.
  8. Logički ulaz 6.
  9. Logički ulaz 7.
  10. ADC ulaz.
  11. Ulaz za spajanje ION.
  12. Ovaj pin je spojen na napajanje uređaja. Zatvorite kontakte 12 i 13 kratkospojnikom tako da napon reference bude jednak naponu napajanja.
  13. Logički izlaz 1.
  14. Logički izlaz 2.
  15. PWM izlaz 1.
  16. PWM izlaz 2.
  17. Logički izlaz 3.
  18. Logički izlaz 4.
  19. Logički izlaz 5.
  20. Logički izlaz 6.
  21. Logički izlaz 7.

Što je GND?

Čak i početnik radio-amater zna što je GND, ali nekima se to čini zastrašujućim slovima. GND je, da tako kažemo, uobičajeni kontakt. Naziva se i zemlja i masa. Žica je obično crna (ponekad bijela ili bilo koji drugi konac). GND se također spaja na metalno kućište uređaja. Na ploči, u većini slučajeva, GND ispunjava sav slobodni prostor u obliku velikih poligona. Naš modul ima poligone u obliku mreže, oni su također spojeni na tijelo USB konektora.

Program mikrokontrolera.

Budući da vam u članku želim reći kako upravljati krugovima putem USB-a pomoću gotovog modula, neću objašnjavati kako program mikrokontrolera radi, možete preuzeti izvor ispod i vidjeti da ima puno komentara. Ovdje ću pisati samo o ID-ovima uređaja.

Dakle, izvor sadrži datoteku usbconfig.h, ima linije

#define USB_CFG_VENDOR_ID 0x10, 0x00

#define USB_CFG_DEVICE_ID 0x01, 0x00

#define USB_CFG_VENDOR_NAME "k", "i", "b", "e", "r", "m", "a", "s", "t", "e", "r", "." , "p", "l", ".", "u", "a"

#define USB_CFG_VENDOR_NAME_LEN 17

#define USB_CFG_DEVICE_NAME "U", "S", "B", "-", "C", "o", "n", "t", "r", "o", "l"

#define USB_CFG_DEVICE_NAME_LEN 11

Prva dva retka su ID uređaja i ID proizvoda, kao što je slučaj za svaki USB uređaj, samo je u ovoj datoteci najprije označen bajt najmanjeg značaja, zatim najznačajniji, u programu za računalo - obrnuto... Slijedi naziv proizvođača (dobavljača) i naziv uređaja, također je naznačena duljina niza u bajtovima. Računalni program će prvo tražiti uređaje po ID-u, a zatim, među pronađenima, pretraživati ​​po imenu.

Firmware uređaja.

U preuzetim datotekama u mapi MCUusb_bootloader pronađite datoteku glavni.hex- ovo je usb-bootloader, mora se uliti u MK pomoću vanjskog programatora. Nakon punjenja, također morate ispravno instalirati osigurače u prozor programatora STK500 trebao bi izgledati ovako:

Ako koristite drugi program, možete jednostavno unijeti vrijednosti bitova osigurača HIGH i LOW (pogledajte na ekranu).

Nakon uspješnog bljeskanja, možete pokušati fleširati uređaj kroz bootloader. Kako on radi? Kada se MK uključi (baš kada se uključi napajanje, ili nakon resetiranja), bootloader se odmah pokreće, provjerava stanje, ako je istinito, tada počinje inicijalizacija bootloadera (računalo pronalazi uređaj). Kao uvjet imat ćemo "Logički ulaz 1 = 0", odnosno za pokretanje bootloadera potrebno je zatvoriti logički ulaz 1 na GND i pritisnuti tipku RESET na uređaju, novi HID uređaj bi se trebao pojaviti u uređaju manager, koji također ne zahtijeva vozače:

Porez, sada u mapi MCUUSB_Controldefault pokrećemo datoteku boot.bat, trebao bi se pojaviti prozor u kojem će se pokretati brojevi:

Ako se prozor odmah zatvorio, onda ste učinili nešto pogrešno. Ako je sve u redu, tada vam više neće trebati vanjski programator za ovaj uređaj. Sada možete odspojiti logički ulaz 1 od GND. I za svaki slučaj, pritisnite RESET. HID uređaj bi se također trebao pojaviti u upravitelju uređaja (računalo će napisati da je pronađen novi). Provjerite pojavljuje li se ovaj uređaj u upravitelju.

Domaćin- to je ono što će kontrolirati uređaj, u našem slučaju, računalo. Detaljnije ću opisati upravljanje uređajem s računala.

Za Delphi programere pisanje HID kontrolnog programa neće predstavljati problem, budući da na Internetu ima puno informacija. Ali za programere C ++ Buildera sve nije tako slatko, ali, kako se pokazalo, nije sve tako loše. Na internetu sam iskopao biblioteku hidlibrary.h pa ćemo uz njenu pomoć raditi s HID uređajem.

Preuzmite izvore i pokrenite USB Control.cbproj(C++ Builder 2010).

U spisu skrivena biblioteka.h na samom vrhu nalazi se crta

Kreirajmo obrazac, obrazac će imati jedan CheckListBox za kontrolu logičkih izlaza, 2 ScrollBars za kontrolu PWM kanala, jedan ListBox za prikaz logičkih ulaza, jednu naljepnicu za prikaz stanja ADC-a i jedan timer. Trebalo bi izgledati ovako:

Preimenujte SkrulBars u ScrollBar_PWM1 i ScrollBar_PWM2, postavite Max = 1023 u njihovim svojstvima.

Napravimo strukturu

#pragma paket (push, 1)

struktura status_t (

unsigned char logički_izlazi;

neoznačeni char logički_unosi;

nepotpisani znak ADC_DATA;

neoznačeni kratki int PWM1;

neoznačeni kratki int PWM2;

struct status_t Status uređaja;

#pragma paket (pop)

#pragma paket je potreban kako bi se spriječilo da kompajler poravna strukturu. V logički_izlazi stanje svih logičkih izlaza pohranjuje se, u bit-by-bit modu, odnosno prvi bit pohranjuje stanje prvog izlaza, drugi - drugi, i tako dalje do sedmog. Također logički_unosi pohranjuje stanje logičkih ulaza. V ADC_DATA stanje ADC-a je pohranjeno, minimalna vrijednost je 0, maksimalna vrijednost je 255. PWM1 pohranjuje se stanje prvog PWM izlaza (glatka regulacija napona), u PWM2- stanje drugog, minimalna vrijednost je 0, maksimalna je 1023.

U PC programu morate pročitati ovu strukturu iz mikrokontrolera, a zatim obraditi primljene podatke. Da biste postavili nove vrijednosti izlaza, prvo morate upisati nove vrijednosti u strukturu, a zatim poslati promijenjenu strukturu u mikrokontroler. Prilikom postavljanja novih vrijednosti potrebno je urediti samo prvi, 4 i 5 elementa, uređivanje druga dva neće imati učinka.

HIDLibrary skriveno;

I dodajte funkciju povezivanja ().

Sada se podaci s HID uređaja mogu zatražiti pomoću funkcije hid.ReceiveData, navodeći pokazivač na strukturu kao parametar, neposredno prije zahtjeva, potrebno je provjeriti je li uređaj povezan:

Sada dodajmo naš program (ili jednostavno preuzmite izvor, tamo je sve spremno).

Dodajte gdje je nit u kodu (bolje odmah nakon strukture) ove retke:

Postavite svojstva tajmera na Enabled = True, Interval = 500. Dvaput kliknite na njega i upišite u rukovatelj

if (! spoji ()) return; // Izađi ako uređaj nije spojen

hid.ReceiveData (& DeviceStatus); // Čitanje podataka s uređaja

za (char i = 0; i< 7; i++)

CheckListBox_LogOuts-> Checked [i] = CheckBit (DeviceStatus.logical_outputs, i);

ScrollBar_PWM1-> Položaj = DeviceStatus.PWM1;

ScrollBar_PWM2-> Položaj = DeviceStatus.PWM2;

ListBox_LogInputs-> Clear ();

za (char i = 0; i< 7; i++)

ListBox_LogInputs-> Items-> Add ("Log. Input" + IntToStr (i + 1) + "=" + BoolToStr (CheckBit (DeviceStatus.logical_inputs, i)));

Oznaka_ADC-> Naslov = DeviceStatus.ADC_DATA;

Mislim da je ovdje sve jasno i ne zahtijeva objašnjenje.

Dvaput kliknite na CheckListBox, u rukovatelju napišite

Sve, možete sastaviti!

Probna vožnja.

Dakle, sve je spremno: uređaj je sastavljen, mikrokontroler je bljeskao, program za računalo je stvoren, možete ga testirati.

Povežite uređaj s računalom, pokrenite program. S lijeve strane u okviru s popisom prikazuje se stanje svih logičkih ulaza, ako, na primjer, logički ulaz 1 nije kratko spojen na GND, tada će pisati “Log. ulaz 1 = -1 ″, ako je spojen, tada “Log. ulaz 1 = 0 ″. Evo ekrana:

Rezultat ADC konverzije prikazan je ispod ovog okvira s popisom. Zatvorite ulaz ADC na minus, tada će rezultat biti 0, kratki spoj na + snagu, rezultat će biti 255. Ovdje možete spojiti potenciometar, ili nešto drugo. Napon na kraku ADC-a može se izračunati pomoću formule: Voltage_ion / 255 * rezultat_ADC.

Sada spojite neku vrstu malog opterećenja na logički izlaz 1 (LED ili samo voltmetar). Označite okvir pored "Log. Izlaz 1" - LED će zasvijetliti.

Spojite voltmetar na prvi PWM kanal, okrenite klizač - napon će se promijeniti.

Završetak.

Sada možete koristiti ovaj modul za upravljanje rasvjetom ili nekim drugim električnim uređajima. Na logičke ulaze može se spojiti tipka za zvono na vratima ili neki drugi ključ. Na ulaz ADC-a možete spojiti analogni senzor vlage, termalni senzor ili fotootpornik (znat ćete da li je noć na ulici ili dan).



Kako vam se sviđa ovaj članak?

Danas u svakom elektroservisu da, između ostalog, radni dan svakog radioamatera počinje paljenjem računala, pa tek onda pomoćne elektro opreme. Štoviše, uključivanjem računala radni dan počinje ne samo za radioamatere, već i za mnoge korisnike ovog "uređaja", koji je postao dio našeg života. Ali svaki dan, palite ga ujutro i gasite navečer, pa, pretpostavimo, printer, aktivni zvučnici, stolna lampa, a nikad ne znate što možete pronaći kod običnog korisnika, malo smeta. Temeljem dogovorenih zadataka cilj je bio izraditi sklopku za opterećenje namijenjenu uključivanju i isključivanju svih povezanih uređaja. Slažem se, možete krenuti putem manjeg otpora i staviti običan prekidač na sve, ali čini se da to nije put za radioamatere.To ćemo učiniti mnogo praktičnije - ugradit ćemo automat u mrežni filtar:

Budući da uređaj prati činjenicu uključivanja/isključivanja uređaja prema principu "slave-master", najlakši način je korištenje USB priključka. Odmah ću naznačiti da kada koristite USB priključak, uređaj radi u prijenosnim računalima i računalima s napajanjem koje isključuje sve izvore napajanja. Na primjer, u najnovijim modelima napajanja, USB priključak +5 volti prisutan je kao čuvar čak i kada je jedinica isključena. Uređaj neće raditi s njima, točnije, hoće, ali je uvijek uključen. Ovdje je potrebno koristiti neki drugi priključak kao izvor signala, te sukladno tome uskladiti signal izvora i aktuatora.

U ovom uređaju aktuator je relej, s kontaktima od 16 ampera i sa zavojnicom od 5 volti. Korištenje releja osigurava galvansku izolaciju izvora signala i mreže od 220 volti.

Nakon niza eksperimenata ustanovljeno je da kada se napaja, prema podacima iz putovnice, +5 volti, relej troši 150 mA struje. Ako koristite stacionarno računalo, nema problema, jer +5 volti USB priključka ide izravno iz napajanja i nemojte ga preopteretiti. Ako vam sve navedeno odgovara, možete stati i napraviti svoju verziju prema donjem dijagramu.

No, ako planirate koristiti prijenosno računalo, onda nije preporučljivo voditi dodatnih 150 mA kroz računalo, u tom slučaju trebate koristiti dodatno napajanje od 5 volti. U ovoj verziji korišteno je sklopno napajanje iz punjača s mobilnog telefona. Može se koristiti bilo koje neregulirano napajanje, pod uvjetom da može opskrbljivati ​​5 volti i 250 mA struje, uzimajući u obzir marginu. Također možete koristiti drugačiji napon, ali u ovom slučaju bit će potrebno uzeti relej s odgovarajućim naponom napajanja.Da biste uskladili izvor signala s relejem i izvorom napajanja, morate instalirati tranzistorski prekidač tipa:

Tranzistor je odabran tipa KT815 s bilo kojim slovom i otpornikom od 1 kΩ, dioda je KD522. S ovim sklopnim krugom, potrošnja struje je pokazala 4 mA, što nije toliko važno za prijenosno računalo. LED1 i LED2 označavaju stanje kruga. Po želji, zajedno s otpornicima, mogu se isključiti iz kruga.

Upravljački uređaj od 220 V montiran je u slobodnom prostoru u kućištu utičnice - mrežnom filteru.Shematska datoteka u splane nalazi

Autor je izradio program i uređaj za upravljanje raznim električnim i radijskim uređajima pomoću računala. Uređaj je spojen na jedan od COM portova, a uređajima se može upravljati i programskim tipkama i vanjskim senzorima.

Dijagram uređaja je prikazan na Sl. 1. Njegova osnova je mikrosklop 74HC595, koji je 8-bitni pomakni registar sa serijskim ulazom te serijskim i paralelnim informacijskim izlazima. Paralelni izlaz se provodi kroz međuspremnik registar s izlazima koji imaju tri stanja. Informacijski signal se dovodi na SER ulaz (pin 14), signal snimanja se dovodi na ulaz SCK (pin 11), a izlazni signal se dovodi na RSK ulaz (pin 12). Regulator napona od 5 V sastavljen je na mikro krugu DA1 za napajanje registra DD1.

Slika 1. Dijagram uređaja

Uređaj je spojen na jedan od COM portova računala. Informacijski signali šalju se na pin 7 utičnice XS1, signali za upis informacija - na pin 4, a izlazni signali informacija - na pin 3. Signali COM porta, prema RS-232 standardu, imaju razine od oko - 12 V (log 1) i oko +12 B (log 0). Uparivanje ovih razina s ulaznim razinama registra DD1 izvodi se pomoću otpornika R2, R3, R5 i zener dioda VD1-VD3 sa stabilizacijskim naponom od 5,1 V.

Upravljački signali za vanjske uređaje generiraju se na izlazima Q0-Q7 registra DD1. Visoka razina je jednaka naponu napajanja mikrosklopa (oko 5 V), niska razina je manja od 0,4 V. Ovi signali su statični i ažuriraju se u trenutku kada visoka razina stigne na RSK ulaz (pin 12) registar DD1. LED diode HL1-HL8 dizajnirane su za praćenje rada uređaja.

Uređajem se upravlja pomoću programa UmiCOM koji je razvio autor. Prikazan je izgled glavnog prozora programa sl. 2.

Slika 2. Izgled programa UniCOM

Nakon pokretanja, trebali biste odabrati slobodni COM port i brzinu prebacivanja izlaza. Stanje svakog izlaza uređaja upisuje se u retke tablice (visoka razina - 1, niska razina - 0 ili prazno). Program "nabrajajući" stupce tablice u radnom ciklusu, postavlja odgovarajuće logičke razine na izlazima uređaja. Podaci uneseni u tablicu automatski se spremaju kada program završi i ponovno se učitavaju sljedeći put kada se program pokrene. Radi jasnoće, u lijevom dijelu prozora programa, označeni su brojevi izlaza s visokom razinom.

Uređajima se može upravljati pomoću vanjskih kontaktnih senzora, koji su spojeni na ulaze 1-3 i vod +5 V. Moraju raditi na zatvaranju ili otvaranju kontakata. Primjer dijagrama povezivanja senzora prikazan je u sl. 3.

Slika 3. Spajanje kontaktnih senzora

Kada pritisnete softversku tipku "Postavke ulaza", otvara se prozor "Podudaranje ulaza/izlaza" ( sl. 4.), gdje odabirete ulaze koji će promijeniti stanje izlaza. Možete simulirati rad ulaza pritiskom na softverske tipke "1", "2", "3" glavnog prozora programa. U slučajevima kada se uređajima ne može upravljati pomoću logičkih razina, treba koristiti relej, čiji je dijagram povezivanja prikazan na sl. 5 ili tranzistorski optospojnik ( sl. 6.).

Slika 4. Koordinacija ulaza i izlaza

Slika 5. Shema povezivanja releja

Slika 6. Shema ožičenja za tranzistorski optospojnik

Većina dijelova montirana je na tiskanu ploču izrađenu od jednostranog stakloplastike obložene folijom debljine 1 ... 1,5 mm, čiji je crtež prikazan na sl. 7. Otpornici R1-R6 postavljeni su na stezaljke XS1 utičnice.

Slika 7. Nacrt PCB-a

Uređaj koristi otpornike C2-23. MLT, oksidni kondenzatori - K50-35 ili uvezeni, utičnica XS1 - DB9F. Osim zener dioda navedenih na dijagramu, možete koristiti BZX55C5V1 ili domaći KS174A, bilo koje LED diode. Uređaj se napaja iz stabiliziranog ili nereguliranog izvora napajanja napona od 12 V i struje do 100 mA.

Upravljanje uređajima preko USB porta računala.

P. VYSOCHANSKY, Rybnitsa, Transnistria, Moldavija
Računalni upravljački uređaj za različite uređaje, čiji je dijagram prikazan na sl. 1, funkcionalno sličan onome opisanom u, ali se spaja na USB priključak računala, koji se (za razliku od COM porta) danas nalazi u svakom od njih. Jedini mikro krug uređaja je uobičajeni ATmega8 mikrokontroler. Neophodan je za organiziranje komunikacije putem USB sabirnice. Iako nema namjenski hardverski modul, ova se funkcija izvodi u softveru.

Otpornik R1, spojen između pozitivnog terminala napajanja i USB D-bus linije, stavlja ga u LS način niske brzine sa brzinom prijenosa od 1,5 Mbit / s, što omogućuje dešifriranje računala u softveru. Otpornici R4 i B5 eliminiraju komunikacijske tranzijente, što povećava stabilnost. Kondenzator C1 blokira impulsni šum u krugu napajanja, što također poboljšava stabilnost uređaja. Diode VD1 i VD2 koriste se za snižavanje napona napajanja mikrokontrolera na približno 3,6 V - to je potrebno za usklađivanje razine s USB sabirnicom.
Upravljački signali instrumenta se generiraju na izlazima PB0-PB5 i PCO, PC1 mikrokontrolera. Visoka logička razina - napon oko 3,4 V.
Nizak napon je blizu nule. Na izlaze se mogu spojiti uređaji koji ne troše više od 10 mA struje (sa svakog izlaza). Ako su potrebne velike vrijednosti struje ili napona, tada se podudarni čvorovi prikazani na Sl. 5 i 6. Uređaj je sastavljen na matičnoj ploči, tiskani krug nije razvijen.Upotrijebljeni su MLT otpornici, kondenzatori C2 i CZ - visokofrekventna keramika, C1 - K50-35 ili slično uvozni. Silicijske diode s padom napona na spoju od oko 0,7 V. Program za mikrokontroler razvijen je u okruženju Bascom-AVR, verzija 1.12.0.0. Za rad s USB sabirnicom korištena je biblioteka swusb.LBX koja vrši softversko dekodiranje USB signala u stvarnom vremenu. Programski kod dobiven kao rezultat kompilacije iz datoteke s nastavkom HEX treba učitati u FLASH memoriju mikrokontrolera. Za to je korišten programator zajedno s uslužnim programom ugrađenim u Bascom-AVR. Stanje bitova konfiguracije mikrokontrolera mora odgovarati onom prikazanom na slici 2


Kada prvi put povežete uređaj s računalom, operativni sustav otkriva novi USB HID kompatibilan uređaj pod nazivom "uniUSB" i instalira potrebne upravljačke programe. Nakon nekoliko sekundi uređaj je postavljen i spreman za korištenje. Za rad s njim stvoren je program UniUSB. Predstavljen je u dvije verzije: za 32-bitne (x86) i 64-bitne (x64) Windows operativne sustave. 32-bitna verzija je testirana u operativnim sustavima: Windows 98, Windows XP, Windows 7, a 64-bitna verzija je testirana samo u Windows XP x64. UniUSB program je napisan u PureBasicu (verzija 4.31) koristeći knjižnicu korisnički definiranih funkcija HID Lib koja podržava rad s USB HID uređajima. Izgled prozora programa prikazan je na slici 3


U istoj mapi s izvršnom datotekom mora postojati datoteka pod nazivom UniUSB_code.txt ili UniCOM_code.txt. Potonja opcija je potrebna za kompatibilnost s UniCOM programom predloženim u. Ova datoteka sadrži skriptu za upravljanje vanjskim uređajima. Kada se program pokrene, podaci iz datoteke se učitavaju u tablicu koja se nalazi u glavnom prozoru, a kada program završi, spremaju se u datoteku. Lijevim klikom na ćelije tablice možete promijeniti njihovo stanje: 1 - visoka logička razina, 0 ili prazno - niska logička razina. Da biste dodali ili uklonili stupac tablice, trebate ga kliknuti desnom tipkom miša i odabrati potrebnu radnju u izborniku koji se pojavi. Kada je uređaj spojen na USB priključak, program ga detektira i aktivira gumb koji se nalazi u gornjem dijelu prozora na alatnoj traci. Pritiskom na ovu tipku pokreće se proces nabrajanja stupaca tablice i postavljanja stanja u njima naznačenih izlaza. Radi veće jasnoće, lijevo od tablice, označeni su brojevi izlaza na kojima je trenutno postavljena visoka logička razina. Brzina pretraživanja (vrijeme u milisekundama između prijelaza iz stupca u stupac) postavlja se u polju "Brzina, ms". Imajte na umu da operacijski sustav Windows obavlja više zadataka! To znači da je vrijeme procesora podijeljeno na mnoge procese, ponekad skrivene od korisnika, koji se izvršavaju redom, uzimajući u obzir prioritete postavljene u sustavu. Stoga ne treba očekivati ​​visoku točnost držanja vremenskih intervala manjim od 100 ms.
Za kratkotrajno zaustavljanje nabrajanja stupaca upotrijebite gumb, ponovnim pritiskom nastavlja se nabrajanje od točke zaustavljanja. Gumb potpuno prestaje iterirati po stupcima tablice. Ako tijekom razmjene informacija između računala i uređaja dođe do kvara ili se uređaj odvoji od USB konektora računala, program će prijaviti grešku tako što će prikazati odgovarajuću poruku u statusnoj traci.

KNJIŽEVNOST

1. Nosov T. Upravljanje uređajima preko COM-porta računala - Radio, 2007, br. 11, str.61.62.
2. Ryzhkov A. US-programer za AVR i AT89S mikrokontrolere, kompatibilan s AVR910. - Radio, 2008., br. 7, str. 28, 29.

Prema materijalima časopisa "Radio 2`2011"
Možete preuzeti firmware mikrokontrolera i PC program

Vrhunski povezani članci