Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • OS
  • Kontrolisanje uređaja preko COM porta računara. PC hardver i softver

Kontrolisanje uređaja preko COM porta računara. PC hardver i softver

Na Habré-u o upravljanju lampom putem interneta došla je ideja da se rasvjeta kod kuće kontroliše sa kompjutera, a pošto sam ga već konfigurisao za upravljanje kompjuterom sa mobilnog telefona, to znači da se svjetlom može kontrolisati sa isti telefon. Nakon što je jednom od mojih kolega pokazao članak, rekao je da je to upravo ono što mu treba. Zato što često zaspi dok gleda filmove na kompjuteru. Neko vrijeme nakon završetka filma i kompjuter zaspi i gasi monitor, ali svjetlo u prostoriji ostaje upaljeno. One. odlučeno je da je ova stvar korisna i počeo sam prikupljati informacije i detalje za ovo čudo.
Ostatak informacija je pod habracutom (pazite, ima puno slika - saobraćaj).

Dijagram uređaja

Originalna šema je preuzeta iz jedne od šema pronađenih na internetu i izgledala je ovako:

Ali samo sa malom izmjenom: dodat je otpornik od 390 Ohm između 1. pina 4N25 optokaplera i 2. LPT pina, a također je dodana LED dioda koja ukazuje na uključivanje. Kolo je sastavljeno u test modu, tj. jednostavno spojiti žicama po potrebi i testirati. U ovoj verziji jednostavno je uključivala i gasila staru sovjetsku baterijsku lampu.
Odlučeno je da ako se radi kontrola, onda ne za jedan uređaj, već za najmanje 4 uređaja (na osnovu: jedna lampa na stolu, luster sa dva prekidača, rezervna utičnica). U ovoj fazi postalo je potrebno izgraditi kompletnu shemu sklopa uređaja i počeo je odabir raznih programa.
Instalirano:

  1. KiCAD
  2. orao
Nakon što sam ih sve pogledao, zaustavio sam se na Eagle-u, pošto je u svojoj biblioteci imao “slične” dijelove. Evo šta se u njemu dogodilo:

Dijagram koristi DB9 port, tj. običan COM port, to je urađeno iz razloga uštede kako prostora na ploči tako i samih konektora (imao sam COM), a pošto ćemo koristiti samo 5 provodnika to će nam biti dovoljno sa rezervom. također 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 za kontrolu podataka;
LPT 18-25 pin (često su međusobno povezani) = COM 9 pin - ovo je naše uzemljenje.
Kolo također koristi dodatno napajanje od 12V za napajanje releja; prema planu, to će biti jednostavan kineski punjač ili možda 9V Krona (jedan relej radi dobro, morate provjeriti 4 istovremeno). Za osiguranje porta računara koriste se odvojeno napajanje i galvanska izolacija pomoću optokaplera. Ako želite, možete ga, naravno, napajati iz računarskog napajanja od 12 V, ali svako to 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. optospojnik 4n25 - 4 kom
  5. sjedište za optospojler (imao sam samo jedno za 8 nogu) - 4 kom.
  6. otpornik 390 Ohm - 4 kom.
  7. otpornik 4,7 kOhm - 4 kom.
  8. tranzistor KT815G - 4 kom.
  9. relej HJR-3FF-S-Z - 4 kom.
  10. stezaljke za 3 kontakta - 4 kom.
  11. folija PCB

Priprema PCB šeme

Nakon što sam pokušao koristiti Eagle za pripremu PCB-a, shvatio sam da bi to bilo malo komplikovano i odlučio sam pronaći lakšu opciju. Ova opcija je bio program sprint layout 5, čak i ako je napravljen za Windows, ali radi bez problema u wine pod Linuxom. Interfejs programa je intuitivan, na ruskom jeziku i program ima prilično jasnu pomoć (pomoć). Stoga su sve dalje radnje na razvoju štampane ploče izvedene u sprint rasporedu 5 (u daljem tekstu SL5).
Iako mnogi ljudi koriste ovaj program za razvoj ploča za svoje uređaje, on nije sadržavao dijelove koji su mi bili potrebni (čak ni u gomili preuzetih zbirki makroa). Stoga smo prvo morali kreirati dijelove koji nedostaju:
  1. COM port (onaj koji nije bio isti kao moj, prema montažnim rupama)
  2. utičnica
  3. stezaljka sa tri zupca
  4. relej HJR-3FF-S-Z
Vrsta ovih dijelova:

Nakon dodavanja potrebnih dijelova pristupilo se stvarnom dizajnu tiskane ploče. Trebalo je nekoliko pokušaja, bilo ih je oko pet. Svaka verzija ploče je odštampana 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. Mala greška se pojavila i u krugu releja - u stvari, tijelo releja je pomaknuto za 2-3 mm. Naravno, sve greške su ispravljene.
Na prvoj štampanoj verziji pokazalo se i da je tranzistor pogrešno spojen, dva kontakta su pomiješana.
Nakon svih ispravki i podešavanja, rezultirajuća ploča je izgledala ovako:

SL5 ima funkciju Photo View za pregled ploče, evo kako to izgleda na njoj:

Konačna verzija ploče će imati još neke izmjene na stazama, ali inače izgleda isto.

SL5 takođe ima zgodnu opciju za štampanje ploče; možete sakriti nepotrebne slojeve i odabrati boju štampe za svaki sloj, što je veoma korisno.

Priprema PCB-a

Odlučeno je da se ploča napravi LUT metodom (laser-iron tehnologija). Dalje, 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, potrebno je oprati i odmastiti. Možete ga oprati vodom i odmastiti acetonom (u mom slučaju je to bio rastvarač 646).
Zatim štampamo našu ploču na laserskom štampaču na premazanom papiru, ne zaboravljajući da štampač postavimo na najhrabriji otisak (bez uštede tonera). Ova opcija se pokazala malo neuspješnom, jer se toner razmazio, ali još jedan pokušaj je bio taman.

Sada morate prenijeti crtež s papira na tekstolit. Da bismo to učinili, izrežemo dizajn i nanesemo ga na tekstolit, pokušamo ga poravnati po potrebi, a zatim ga zagrijati glačalom. Potrebno je dobro zagrijati cijelu površinu kako bi se toner otopio i zalijepio za bakrenu površinu. Zatim ostavimo dasku da se malo ohladi i namočimo je pod tekućom vodom. Kada se papir dovoljno smoči, potrebno ga je odvojiti od ploče. Na ploči će ostati samo zaglavljeni toner. izgleda ovako:

Zatim morate pripremiti otopinu za graviranje. Za ovo sam koristio željezni hlorid. Na tegli željeznog hlorida piše da se rastvor mora napraviti 1 prema 3. Ja sam malo odstupio od ovoga i napravio 60 g gvožđe hlorida na 240 g vode, tj. Ispalo je 1 prema 4, uprkos tome, nagrizanje ploče se odvija normalno, samo malo sporije. Imajte na umu da proces rastvaranja suhog željeznog klorida u vodi proizvodi toplinu, pa ga morate sipati u vodu u malim porcijama i promiješati. Naravno, za nagrizanje je potrebno koristiti nemetalne posude, u mom slučaju to je bila plastična posuda (poput haringe). dobio sam ovo rješenje:

Prije nego što sam dasku spustio u otopinu, ljepljivom trakom zalijepio sam uže za pecanje na njenu stražnju stranu kako bih olakšao skidanje i preokretanje daske. Ako vam otopina dospije na ruke, treba je brzo oprati sapunom (sapun neutralizira), ali mrlje mogu ostati, sve ovisi o konkretnim uvjetima. Mrlje sa odeće se uopšte ne uklanjaju, ali imala sam sreću da ovo nisam testirala na sebi. Ploča treba biti uronjena u otopinu sa bakrenom stranom prema dolje i ne ravna, već pod uglom. S vremena na vrijeme preporučljivo je očistiti ploču od miniranja, jer ometa dalje jetkanje. To se može učiniti pomoću pamučnih štapića.

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

Pažnja! Nemojte sipati otopinu željeznog klorida u sudoper (kanalizaciju) - to može oštetiti metalne dijelove sudopera, a općenito rješenje može biti korisno.
Zatim moramo isprati toner, to se uspješno radi sa istim otapalom 646 koji je korišten za odmašćivanje (dugotrajni kontakt rastvarača sa 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, pošto nisam mogao pronaći tanje burgije. Ni u našem gradu nije bilo moguće pronaći steznu steznu glavu za pričvršćivanje na elektromotor, pa je sve rađeno velikom bušilicom.

Stigao je prvi uređaj

Prvi put sam uzeo samo dvije bušilice, a kada sam koristio takvu bušilicu, pokazalo se da to nije dovoljno. Jedna burgija se pokvarila, a druga se savijala. Sve što sam uspeo da izbušim prvog dana:

Sutradan sam kupio pet bušilica. A bilo ih je taman dovoljno, jer ako se ne slome (usput rečeno, samo jedan od pet se pokvario), postaju tupi, a kada se buše s tupim, gusjenice se pokvare i bakar se počinje ljuštiti. Nakon potpunog bušenja ploče dobijamo:

Nakon bušenja potrebno je kalajisati dasku. Da bih to učinio, koristio sam staru metodu - lemilicu, TAGS fluks i lim. Hteo sam da ga isprobam pomoću legure Rose, ali se ne može naći u našem gradu.

Nakon kalajisanja dobijamo sledeći rezultat:

Zatim morate oprati ploču da biste uklonili ostatke fluksa, budući da se TAGS može čistiti vodom, to se može učiniti vodom ili alkoholom. Uradio sam nešto između - oprao sam ga starom votkom i obrisao pamučnim štapićima. Nakon svih ovih koraka, naša ploča je spremna.

Ugradnja dijelova

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

Nakon ugradnje dijelova, idemo i spajamo uređaj na računalo preko 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
  • 4-pinski DB25 do 3-pinski 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će je bilo koji od 18 do 25) do 9 pinski DB9
Budući da je kao žica korištena obična upletena parica, jedna žica je nedostajala, ali za ovaj uređaj je dovoljno samo pet žica, tako da je ova opcija prikladna. Naše preklopno opterećenje je jednostavna sovjetska baterijska lampa. Pa, kao napajanje - univerzalno kinesko napajanje (4 konektora i napajanje od 3 do 12 V). Evo svega sastavljeno:

Ali uređaj već radi:

Time je završeno još jedno veče, a montaža preostalih dijelova ostavljena je za sljedeći dan.

A evo i potpuno sastavljenog uređaja:

Pa, kratak video o tome kako radi (kvalitet nije baš dobar, nije bilo načina da se snimi kako treba)

To je sve, preostaje samo pronaći normalnu futrolu za uređaj i staviti ga u upotrebu.

Softverski dio

Naravno, za kontrolu LPT porta potreban vam je neki softver, ali pošto imam Linux kod kuće, odlučeno je da jednostavno napišem jednostavan program, a zatim ga dodam i prilagodim po potrebi. Izgledala je otprilike ovako:
#include
#include
#include
#include
#define BASE 0x378
#define VRIJEME 100000
int main()
{
int x = 0x0F;
int y = 0x00;
if (ioperm(BASE, 1, 1))
{
perror("ioperm()");
izlaz(77);
}
outb(x,BASE);
return 0;
}

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

Jedino upozorenje ovog programa je da se mora izvršiti kao root, pošto funkcija ioperm nije dostupna običnim korisnicima. Mislim da vam ne trebamo govoriti kako riješiti takav problem, svako će izabrati opciju koja mu više odgovara.

Nakon toga, program je modificiran tako da je prosljeđivanjem parametara komandne linije u njega bilo moguće odrediti koji uređaj i šta da radi.
Izlaz "sw --help":
Program za upravljanje relejima preko LPT porta.
Program može imati jedan ili dva parametra.
Format parametra: sw [broj uređaja] [akcija]
broj uređaja - od 1 do 8
akcija - "uključeno", "isključeno", "st" - uključeno, isključeno, status
Primjer: "sw 2 on" za uključivanje drugog uređaja ili "sw --help" za prikaz pomoći

PS ako nekom zatreba, onda mogu postaviti negdje fajl dijagrama ploče u sl5 i izvorni kod upravljačkog programa.

Mnogi od nas bi vjerovatno željeli kontrolirati električna kola preko kompjutera. I šta? Bilo bi sjajno da. Zamislite, nazove vas prijatelj i kaže: „Dolazim za 20 minuta“, pa prođe 20 minuta, zvoni na vratima, ali ne želite da ustanete od kompjutera, otvorite vrata itd. Zamislite drugačiju situaciju: zvoni na vratima, na monitoru vam se pojavi poruka tipa „Imate goste“, pritisnete dugme na računaru - otvara se magnetna brava na vratima i vičete na celu kuću: „Uđite, ” ili ga trebate uključiti na 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 imate želju i direktne ruke, onda možete lako upravljati električnim krugovima preko PC-a .

U današnje vrijeme dosta ljudi zna programirati, može napisati program za kompjuter koji bi mogao upravljati vanjskim uređajima, ali kako spojiti isto kuhalo za vodu na kompjuter? Pa možete, na primjer, preko LPT porta, ali se to više rijetko gdje viđa, šta onda ostaje? USB!!!

Napravimo uređaj koji će se spojiti na USB i moći kontrolirati električna kola (na primjer, paliti svjetla), reagirati na zatvaranje dugmadi (na primjer, zvono na vratima) i još nešto.

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

Opis:

Ke-USB24A modul je dizajniran za povezivanje eksternih digitalnih i analognih uređaja, senzora i aktuatora sa računarom preko USB magistrale. Definiran kao dodatni (virtualni) COM port. Modul ima 24 diskretne ulazno/izlazne linije (bilo logička 0 ili logička 1) sa mogućnošću konfigurisanja smjera prijenosa podataka (ulaz/izlaz) i ugrađen 10-bitni ADC. Za upravljanje modulom obezbeđen je set komandi za kontrolu teksta (KE - komande).

Prepoznatljive karakteristike:

  • interfejs modul za USB interfejs
  • definiše Windows/Linux OS kao virtuelni COM port
  • ne zahtijeva dodatne elemente kola, odmah je spreman za upotrebu
  • 24 diskretne ulazno/izlazne linije s mogućnošću samostalnog konfigurisanja smjera prijenosa podataka (ulaz/izlaz) i spremanja postavki u nepromjenjivu memoriju modula
  • ugrađeni 10-bitni ADC sa zagarantovanom frekvencijom uzorkovanja do 400 Hz.
  • Dinamički raspon napona ulaznog analognog signala za ADC je od 0 do 5 V.
  • skup gotovih naredbi za kontrolu teksta visokog nivoa (KE - komande)
  • pogodan faktor oblika u obliku modula sa DIP blokom i USB-B konektorom
  • Mogućnost napajanja kako sa USB magistrale tako i sa eksternog izvora napajanja (režim se bira kratkospojnikom na ploči)
  • mogućnost pohranjivanja korisničkih podataka u nepromjenjivu memoriju modula (do 32 bajta)
  • mogućnost promjene deskriptora stringova USB uređaja
  • svaki modul ima jedinstveni serijski broj kojem može pristupiti softver
  • podrška za 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 ovo ono što nam treba, ALI... cijena ovog čuda počinje od 40 dolara. Verovatno ste već izgubili želju da ga kupite.

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

Obavezni kriteriji: niska cijena i laka dostupnost komponenti, lakoća montaže.

Uzmimo široko korišćeni ATmega8 (bez L na kraju) kao mikrokontroler. Karakteristike našeg modula će biti sljedeće:

  • Povežite se na PC preko USB-a.
  • Windows OS detektuje kao USB HID uređaj, vozač nije potreban.
  • Spreman da krenemo odmah.
  • 7 izlaznih linija sa logičkim stanjem (aktivno/neaktivno).
  • 2 izlazne linije sa glatkom kontrolom napona od minimuma do maksimuma. Samo ovo nije DAC (digitalno-analogni pretvarač) već PWM (pulsno širinska modulacija). Ali uz pomoć filtera možete ga lako pretvoriti u DAC.
  • 7 ulaznih linija sa logičkim stanjem (aktivno / neaktivno).
  • 1 ADC (analogno-digitalni pretvarač) sa mogućnošću povezivanja eksternog referentnog izvora napona (RP).
  • Mogućnost učitavanja novog firmvera direktno preko USB-a.

Zašto sam izabrao HID, a ne virtuelni COM port (CDC)? Prvo, drajveri nisu potrebni, drugo, HID učitava mikrokontroler nekoliko puta manje od CDC-a, pošto se podaci ne traže stalno, već samo kada to host (računar) zahteva, a generalno, COM port već umire, danas postoji praktično nema hardverskih COM portova, ostaju samo virtuelni. Logičke izlazne linije su dizajnirane za kontrolu samo dva stanja - uključeno ili isključeno, kada je isključen izlaz (noga mikrokontrolera) će biti 0V, kada je uključen - 5V, ovdje možete jednostavno spojiti LED i kontrolirati ga sa PC-a, ili možete spojiti relej (preko tranzistora) i kontrolisati jače opterećenje (rasvjeta, itd.). Izlazne linije sa regulacijom napona (PWM izlaz) omogućavaju vam da glatko mijenjate napon na nozi mikrokontrolera od 0V do +5V u koracima od 5/1024V. Linije za unos logičkog stanja dizajnirane su za praćenje stanja dugmadi, tipki itd. Kada je vod kratko spojen na masu (slučaj, GND), njegovo stanje = 0, ako nije zatvoreno - 1. ADC vam omogućava mjerenje napona, ovdje možete spojiti potenciometar, analogni temperaturni senzor ili nešto drugo, samo napon , na ovoj nozi ne bi trebalo da prelazi napon ishrane. I eksterni ION i napon napajanja modula mogu se koristiti kao referentni izvor napona za ADC. Tako da prilikom flešovanja ne morate spajati mikrokontroler na programator, omogućit ćemo upload firmvera direktno preko USB-a, bez korištenja eksternog programatora.

Dijagram uređaja:

Kao što vidite, dijagram je prilično jednostavan, samo što sam spojio konektore na dijagramu van reda, to je zato što ATmega8 ima noge za svaki port, iz nekog razloga se nalaze raštrkane, ali na samoj ploči će izgledati predivno.

Štampana ploča:

Pa, rezultat je ovaj:

Sada da shvatimo šta ćemo gdje spojiti.

  1. USB - Port. Mislim da ga svi znaju.
  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 povezivanje ION.
  12. Ovaj pin je povezan na napajanje uređaja. Zatvorite pinove 12 i 13 kratkospojnikom tako da ION napon 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.

Šta je GND?

Čak i početnici radio-amateri znaju šta je GND, ali nekim ljudima to izgleda kao zastrašujuća slova. GND je uobičajeni kontakt, da tako kažemo. Naziva se i zemlja i masa. Žica je obično crna (ponekad bijela ili nešto drugo). GND je takođe povezan sa metalnim telom uređaja. Na ploči je u većini slučajeva sav slobodan prostor popunjen GND-om u obliku velikih poligona. Naš modul ima poligone u obliku mreže, koji su takođe povezani sa kućištem USB konektora.

Program mikrokontrolera.

Pošto vam u članku želim reći kako kontrolirati krugove preko USB-a pomoću gotovog modula, neću objašnjavati kako program mikrokontrolera radi; možete preuzeti izvorni kod ispod i vidjeti, tamo ima puno komentara . Ovdje ću jednostavno pisati o identifikatorima uređaja.

Dakle, u izvorima postoji fajl 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 reda su ID uređaja i ID proizvoda, svaki USB uređaj ih ima, samo u ovoj datoteci je najprije naznačen niži bajt, zatim visoki bajt, u kompjuterskom programu je obrnuto. Slijedi naziv proizvođača (dobavljača) i naziv uređaja, a također je naznačena dužina linije u bajtovima. PC program će prvo tražiti uređaje po ID-u, a zatim, među pronađenima, pretraživati ​​po imenu.

Firmver uređaja.

U preuzetim datotekama u mapi MCUusb_bootloader pronađite datoteku main.hex- ovo je usb-bootloader, potrebno ga je učitati u MK pomoću vanjskog programatora. Nakon ulijevanja, također morate pravilno postaviti osigurače u prozoru programatora STK500 trebalo bi izgledati ovako:

Ako koristite drugi program, možete jednostavno unijeti vrijednosti HIGH i LOW bita osigurača (pogledajte snimku ekrana).

Nakon uspješnog firmvera, možete pokušati flešovati uređaj putem bootloadera. Kako on radi? Kada uključite MK (jednostavno kada se uključi napajanje, ili nakon resetovanja), bootloader se odmah pokreće, provjerava stanje, ako je tačno, tada počinje inicijalizacija bootloadera (računar pronalazi uređaj). Kao uslov imaćemo „Logički ulaz 1 = 0″, odnosno da pokrenete bootloader, morate zatvoriti logički ulaz 1 na GND i pritisnuti dugme RESET na uređaju; novi HID uređaj bi se trebao pojaviti na uređaju menadžer, koji takođe ne zahteva drajvere:

Ok, sada u fascikli MCUUSB_Controldefault pokrećemo datoteku boot.bat, trebao bi se pojaviti prozor s brojevima koji se vrte okolo:

Ako se prozor odmah zatvori, onda ste uradili 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 sa GND. I za svaki slučaj, pritisnite RESET. HID uređaj bi se također trebao pojaviti u upravitelju uređaja (računar će napisati da je pronađen novi). Uvjerite se da se ovaj uređaj pojavljuje u upravitelju.

Domaćin- to je ono što će kontrolisati uređaj, u našem slučaju računar. Detaljnije ću opisati upravljanje uređajem sa računara.

Za Delphi programere, pisanje HID kontrolnog programa neće predstavljati problem, jer na Internetu ima mnogo informacija. Ali za C++ Builder programere nije sve tako slatko, ali, kako se ispostavilo, nije sve tako loše. Na internetu sam pronašao biblioteku hidlibrary.h i uz njenu pomoć ćemo raditi sa HID uređajem.

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

U fajlu hidlibrary.h na samom vrhu je linija

Kreirajmo formu Forma ć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 tajmer. Trebalo bi izgledati ovako:

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

Kreirajmo strukturu

#pragma paket (push, 1)

struct status_t(

unsigned char logical_outputs;

unsigned char logical_inputs;

unsigned char ADC_DATA;

unsigned short int PWM1;

unsigned short int PWM2;

struct status_t DeviceStatus;

#pragma paket (pop)

#pragma paket je potreban da spriječi kompajler da poravna strukturu. IN logički_izlazi stanje svih logičkih izlaza se pohranjuje u bitskom modu, to jest, prvi bit pohranjuje stanje prvog izlaza, drugi - drugi, i tako redom do sedmog. Isto tako logički_ulazi pohranjuje stanje logičkih ulaza. IN ADC_DATA stanje ADC-a je pohranjeno, minimalna vrijednost je 0, maksimalna je 255. V PWM1 stanje prvog PWM izlaza je pohranjeno (glatka regulacija napona), u PWM2- stanje drugog, minimalna vrijednost 0, maksimalna - 1023.

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

HIDLibrary hid;

I dodajte funkciju connect().

Sada se podaci sa HID uređaja mogu tražiti pomoću funkcije hid.ReceiveData, navodeći pokazivač na strukturu kao parametar, samo prije zahtjeva morate provjeriti da li je uređaj povezan:

Sada dodajmo naš program (ili samo preuzmite izvore, tamo je sve spremno).

Dodajte ove linije negdje u kodu (po mogućnosti odmah nakon strukture):

U svojstvima tajmera navedite Enabled = True, Interval = 500. Dvaput kliknite na njega i upišite u obrađivač

if (!connect()) return; // Izađi ako uređaj nije povezan

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

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

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

ScrollBar_PWM1->Pozicija = DeviceStatus.PWM1;

ScrollBar_PWM2->Pozicija = DeviceStatus.PWM2;

ListBox_LogInputs->Clear();

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

ListBox_LogInputs->Items->Add(" Logički ulaz "+IntToStr(i+1)+" = "+BoolToStr(CheckBit(DeviceStatus.logical_inputs, i)));

Label_ADC->Caption = DeviceStatus.ADC_DATA;

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

Dvaput kliknite na CheckListBox, upišite u obrađivač

To je to, možete kompajlirati!

Test Drive.

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

Povežite uređaj sa računarom, pokrenite program. Na lijevoj strani u listi se prikazuje status svih logičkih ulaza; ako, na primjer, logički ulaz 1 nije kratko spojen na GND, tada će biti napisano “Log. ulaz 1 = -1″, ako je povezan, onda “Log. ulaz 1 = 0″. Evo ekrana:

Rezultat ADC konverzije je prikazan pod ovim listboxom. Zatvorite ADC ulaz na minus, tada će rezultat biti 0, blizu + snage, rezultat će biti 255. Ovdje možete spojiti potenciometar ili nešto drugo. Napon na ADC pinu može se izračunati pomoću formule: Voltage_ION/255*ADC_result.

Sada povežite malo opterećenje na logički izlaz 1 (LED ili samo voltmetar). Označite polje pored "Logički 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 kontrolu rasvjete ili drugih električnih uređaja. Na logičke ulaze možete spojiti tipku za zvono ili neki drugi ključ. Na ADC ulaz možete spojiti analogni senzor vlage, temperaturni senzor ili fotootpornik (znat ćete da li je vani noć ili dan).



Šta mislite o ovom članku?

Danas u svakoj elektromehaničarskoj radionici, pa tako i kod svakog radio-amatera, radni dan počinje uključivanjem računara, a tek onda pomoćne električne opreme. Inače, radni dan počinje uključivanjem računara ne samo za radio amatere, već i za mnoge korisnike ovog "uređaja", koji je postao sastavni dio naših života. Ali paljenje svakog dana ujutro i gašenje uveče, pa, recimo, štampača, aktivnih zvučnika, stolne lampe ili ko zna šta još možete naći kod običnog korisnika, postaje malo dosadno. Na osnovu dogovorenih ciljeva, cilj je bio kreirati prekidač opterećenja dizajniran za uključivanje i isključivanje svih povezanih uređaja. Slažem se da možete krenuti putem manjeg otpora i staviti običan prekidač na sve, ali izgleda da to nije put za radio amatera.To ćemo učiniti mnogo praktičnije - ugradit ćemo mašinu u mrežni filter:

Budući da uređaj prati činjenicu da se uređaj uključuje i isključuje po principu “slave-master”, najlakši način je korištenje USB porta. Odmah da napomenem da kada se koristi USB port, uređaj radi u laptopima i računarima sa napajanjem koje isključuje sve izvore napajanja. Na primjer, u najnovijim modelima napajanja, USB port +5 volti je prisutan kao standby port čak i kada je jedinica isključena. Uređaj neće raditi s njima, odnosno hoće, ali je uvijek uključen. Ovdje je potrebno koristiti neki drugi priključak kao izvor signala, te shodno tome uskladiti signal izvora i aktuatora.

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

Nakon provođenja serije eksperimenata, utvrđeno je da kada se napaja, prema podacima iz pasoša, +5 volti, relej troši 150 mA struje. Ako koristite desktop računar, nema problema, jer USB port +5 volti dolazi direktno iz napajanja i ne opterećuje ga jako. Ako ste zadovoljni sa svim gore navedenim, možete stati i napraviti svoju verziju prema dijagramu ispod.

Ali ako planirate da koristite laptop, onda nije preporučljivo da propuštate dodatnih 150 mA kroz računar; u tom slučaju morate koristiti dodatno napajanje od 5 volti. U ovoj izvedbi korišteno je prekidačko napajanje iz punjača za mobilni telefon. Može se koristiti bilo koji neregulirani izvor napajanja, pod uvjetom da može osigurati napon od 5 volti i struju od oko 250 mA, uzimajući u obzir marginu. Možete koristiti i drugi napon, ali u tom slučaju će biti potrebno uzeti relej s odgovarajućim naponom napajanja.Da bi se izvor signala uskladio s relejem i napajanjem, potrebno je ugraditi tranzistorski prekidač sljedećeg tipa:

Odabrani tranzistor je tip KT815 sa bilo kojim slovom i otpornikom od 1 kOhm, dioda - KD522. Sa ovom šemom povezivanja, potrošnja struje je pokazala 4 mA, što nije toliko značajno za laptop. LED1 i LED2 pokazuju status kola. Po želji, zajedno s otpornicima, mogu se isključiti iz kruga.

Upravljački uređaj od 220 V montiran je u slobodnom prostoru kućišta utičnice - mrežni filter.Šematski fajl u plan nalazi

Autor je razvio program i uređaj za upravljanje različitim električnim i radio uređajima pomoću računara. Uređaj je povezan na jedan od COM portova, a uređaji se mogu kontrolisati pomoću tastera na ekranu i eksternih senzora.

Dijagram uređaja je prikazan na Fig.1. Njegova osnova je 74HC595 čip, koji je 8-bitni pomakni registar sa serijskim ulazom i serijskim i paralelnim informacijskim izlazima. Paralelni izlaz se izvodi kroz bafer registar sa izlazima koji imaju tri stanja. Informacijski signal se dovodi na SER ulaz (pin 14), signal upisivanja na SCK ulaz (pin 11), a izlazni signal na RSK ulaz (pin 12). DA1 čip sadrži regulator napona od 5 V za napajanje DD1 registra.

Slika 1. Dijagram uređaja

Uređaj je povezan na jedan od COM portova računara. Informacijski signali stižu na pin 7 utičnice XS1, signali za snimanje informacija idu na pin 4, a izlazni informacijski signali na pin 3. Signali COM porta, prema RS-232 standardu, imaju nivoe od oko -12 V (log. 1) i oko +12 V (log.0). Ovi nivoi su upareni sa ulaznim nivoima registra DD1 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 se generiraju na izlazima Q0-Q7 registra DD1. Visoki nivo je jednak naponu napajanja mikrokola (oko 5 V), donji nivo je manji od 0,4 V. Ovi signali su statični i ažuriraju se kada visoki nivo stigne na RSK ulaz (pin 12) DD1 registar. 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 Fig.2.

Slika 2. Izgled UniCOM programa

Nakon pokretanja, trebali biste odabrati slobodan COM port i brzinu prebacivanja izlaza. Stanje svakog izlaza uređaja se unosi u redove tabele (visoki nivo - 1, niski nivo - 0 ili prazan). Program "sortiranje" kroz kolone tabele u radnom ciklusu postavlja odgovarajuće logičke nivoe na izlazima uređaja. Podaci uneseni u tabelu se automatski pohranjuju kada se program prekine i ponovo učitavaju sljedeći put kada se pokrene. Radi jasnoće, na lijevoj strani prozora programa označeni su brojevi izlaza na kojima je postavljen visoki nivo.

Uređajima se može upravljati i pomoću eksternih kontaktnih senzora, koji su povezani na ulaze 1-3 i liniju +5 V. Moraju raditi tako da zatvaraju ili otvaraju kontakte. Primjer dijagrama povezivanja senzora prikazan je u Fig.3.

Slika 3. Povezivanje kontaktnih senzora

Kada pritisnete softverski taster "Input Setup", otvara se prozor "Input and Output Assignment" ( Fig.4.), gdje su odabrani ulazi koji će promijeniti stanje izlaza. Možete simulirati rad ulaza pritiskom na ekranske tipke “1”, “2”, “3” glavnog prozora programa. U slučajevima kada se uređajima ne može upravljati pomoću logičkih nivoa, treba koristiti relej, čiji je dijagram povezivanja prikazan na Sl.5, ili tranzistorski optospojnik ( Fig.6.).

Slika 4. Usklađivanje ulaza i izlaza

Slika 5. Dijagram povezivanja releja

Slika 6. Dijagram povezivanja tranzistorskog optokaplera

Većina dijelova je montirana na štampanu ploču od jednostranog folijskog fiberglas laminata debljine 1...1,5 mm, čiji je crtež prikazan na Fig.7. Otpornici R1-R6 su montirani na stezaljkama utičnice XS1.

Slika 7. PCB crtež

Uređaj koristi otpornike C2-23. MLT, oksidni kondenzatori - K50-35 ili uvozni, XS1 utičnica - 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 nestabiliziranog izvora napajanja napona od 12 V i struje do 100 mA.

Kontrolišite uređaje preko USB porta računara.

P. VYSOCHANSKY, Rybnica, Transnistria, Moldavija
Računarski upravljački uređaj za različite uređaje, čiji je dijagram prikazan na sl. 1, funkcionalno sličan onom opisanom u, ali se povezuje na USB port računara, koji je (za razliku od COM porta) danas prisutan u svakom od njih. Jedini čip u uređaju je uobičajeni ATmega8 mikrokontroler. Neophodan je za organizaciju komunikacije preko USB magistrale. Iako nema namenski hardverski modul, ova funkcija se obavlja u softveru.

Otpornik R1, povezan između pozitivnog terminala napajanja i USB D-bus linije, prebacuje ga u LS režim male brzine sa brzinom od 1,5 Mbit/s, što vam omogućava da programski dešifrujete podatke računara. Otpornici R4 i B5 eliminišu prolazne procese koji se javljaju tokom razmene informacija, što povećava stabilnost rada. Kondenzator C1 blokira impulsni šum u strujnom kolu, što također poboljšava stabilnost uređaja. Diode VD1 i VD2 služe za snižavanje napona napajanja mikrokontrolera na približno 3,6 V - to je potrebno da bi se uskladio nivo sa USB magistralom.
Upravljački signali uređaja se generišu na izlazima PB0-PB5 i PSO, PC1 mikrokontrolera. Visok logički nivo - napon oko 3,4 V.
Napon niskog nivoa je blizu nule. Na izlaze možete priključiti uređaje koji troše struju ne veću od 10 mA (sa svakog izlaza). Ako su potrebne velike vrijednosti struje ili napona, tada se podudaraju čvorovi prikazani na Sl. 5 i 6. Uređaj je montiran na matičnoj ploči, štampana ploča nije razvijena.Koristi se MLT otpornici, kondenzatori C2 i SZ su visokofrekventni keramički kondenzatori, C1 je K50-35 ili slično uvozni. Silicijumske diode sa padom napona na spoju od oko 0,7 V. Program za mikrokontroler je razvijen u Bascom-AVR okruženju verzija 1.12.0.0. Za rad sa USB magistralom koristi se biblioteka swusb.LBX koja vrši softversko dekodiranje USB signala u realnom vremenu. Rezultirajući programski kod iz datoteke sa ekstenzijom HEX treba učitati u FLASH memoriju mikrokontrolera. U tu svrhu, programator je korišten u kombinaciji sa 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 sa računarom, operativni sistem će otkriti novi USB HID kompatibilan uređaj pod nazivom "uniUSB" i instalirati potrebne drajvere. Nakon nekoliko sekundi uređaj je konfiguriran i spreman za korištenje. Za rad s njim kreiran je UniUSB program. Predstavljen je u dvije verzije: za 32-bitne (x86) i 64-bitne (x64) operativne sisteme Windows porodice. 32-bitna verzija je testirana u operativnim sistemima: Windows 98, Windows XP, Windows 7, a 64-bitna verzija je testirana samo u Windows XP x64. UniUSB program je napisan na jeziku PureBasic (verzija 4.31) koristeći HID Lib biblioteku korisnički definisanih funkcija, koja podržava rad sa USB HID uređajima. Izgled prozora programa prikazan je na slici 3


U istoj fascikli sa izvršnom datotekom treba da se nalazi datoteka pod nazivom UniUSB_code.txt ili UniCOM_code.txt. Posljednja opcija je neophodna za kompatibilnost sa UniCOM programom predloženim u . Ova datoteka pohranjuje skriptu za kontrolu vanjskih uređaja. Kada se program pokrene, podaci iz datoteke se učitavaju u tabelu koja se nalazi u glavnom prozoru, a kada se posao završi, pohranjuju se u datoteku. Lijevi klik na ćelije tabele omogućava vam da promijenite njihovo stanje: 1 - visoki logički nivo, 0 ili prazno - niski logički nivo. Da biste dodali ili izbrisali kolonu tabele, potrebno je da kliknete desnim tasterom miša na nju i izaberete potrebnu radnju u meniju koji se pojavi. Kada povežete uređaj na USB port, program će ga otkriti i aktivirati dugme koje se nalazi na vrhu prozora na traci sa alatkama. Klikom na ovo dugme započinje proces sortiranja kroz kolone tabele i postavljanja izlaznih stanja naznačenih u njima. Radi veće jasnoće, lijevo od tabele označeni su brojevi izlaza na kojima je logički nivo trenutno visoko postavljen. Brzina pretraživanja (vrijeme u milisekundama između prijelaza iz stupca u kolonu) se postavlja u polju "Brzina, ms". Imajte na umu da je Windows operativni sistem multitasking! 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 sistemu. Stoga ne treba očekivati ​​veliku preciznost u održavanju vremenskih intervala manjih od 100 ms.
Da biste nakratko zaustavili pretragu kolona, ​​koristite dugme Ponovnim pritiskom nastavlja se pretraga od mesta gde je stala. Dugme potpuno zaustavlja pretragu po kolonama tabele. Ako razmjena informacija između računara i uređaja ne uspije ili se uređaj isključi iz USB konektora računara, program će prijaviti grešku tako što će prikazati odgovarajuću poruku u statusnoj traci.

LITERATURA

1. Nosov T. Upravljanje uređajima preko COM porta računara - Radio, 2007, br. 11, str. 61,62.
2. Ryzhkov A. Američki programer za AVR i AT89S mikrokontrolere, kompatibilan sa AVR910. - Radio, 2008, br. 7, str. 28, 29.

Na osnovu materijala iz časopisa "Radio 2`2011"
Možete preuzeti firmver mikrokontrolera i PC program

Najbolji članci na ovu temu