Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • Controlul încărcării prin usb. Ryabenky V.M.

Controlul încărcării prin usb. Ryabenky V.M.

P. VYSOCHANSKII, Rîbniţa, Transnistria, Moldova

Dispozitivul pentru controlul computerizat al diferitelor dispozitive, a cărui schemă este prezentată în Fig. 1, similar funcțional cu cel descris în, dar se conectează la portul USB al computerului, care (spre deosebire de portul COM) este prezent în fiecare dintre ele astăzi. Singurul cip al dispozitivului este microcontrolerul comun ATmega8. Este necesar pentru organizarea comunicării prin magistrala USB. Deși nu are un modul hardware specializat, această funcție este realizată de software.

Rezistorul R1, conectat între ieșirea pozitivă a sursei de alimentare și linia USB D-bus, îl pune în modul LS de viteză redusă cu o rată de schimb de 1,5 Mbps, ceea ce vă permite să decriptați mesajele computerului în mod programatic. Rezistoarele R4 și R5 elimină tranzitorii care apar în timpul schimbului de informații, ceea ce mărește stabilitatea lucrării. Condensatorul C1 blochează zgomotul de impuls în circuitul de alimentare, ceea ce îmbunătățește și stabilitatea dispozitivului. Diodele VD1 și VD2 sunt utilizate pentru a reduce tensiunea de alimentare a microcontrolerului la aproximativ 3,6 V - acest lucru este necesar pentru a se potrivi nivelurile cu magistrala USB. Semnalele de control al dispozitivului sunt generate la ieșirile PBO-PB5 și PCO, PC1 ale microcontrolerului. Nivel logic ridicat - tensiunea este de aproximativ 3,4 V. Tensiunea de nivel scăzut este aproape de zero. Ieșirile pot fi conectate la dispozitive care consumă un curent de cel mult 10 mA (de la fiecare ieșire). Dacă sunt necesare valori mari ale curentului sau tensiunii, atunci ar trebui utilizate noduri de potrivire, prezentate în fig. 5 și 6.

Dispozitivul este asamblat pe o placă, cel imprimat nu a fost dezvoltat. Se folosesc rezistențe MLT, condensatoarele C2 și SZ sunt ceramice de înaltă frecvență, C1 - K50-35 sau similare importate. Diode de siliciu cu o cădere de tensiune pe joncțiune de aproximativ 0,7 V.

Programul pentru microcontroler a fost dezvoltat în mediul Bascom-AVR versiunea 1.12.0.0. Pentru a lucra cu magistrala USB a fost folosită biblioteca swusb.LBX, care realizează decodarea software a semnalelor USB în timp real. Codul programului obținut ca urmare a compilării dintr-un fișier cu extensia HEX ar trebui să fie încărcat în memoria FLASH a microcontrolerului. Pentru aceasta, programatorul a fost folosit împreună cu utilitarul încorporat în Bascom-AVR. Starea biților de configurare a microcontrolerului trebuie să corespundă cu cea prezentată în fig. 2.

Prima dată când conectați dispozitivul la computer, sistemul de operare va detecta un nou dispozitiv compatibil USB HID numit „uniUSB” și va instala driverele necesare. După câteva secunde, dispozitivul este configurat și gata de utilizare. Pentru a lucra cu el, a fost creat programul UniUSB. Este prezentat în două versiuni: pentru sistemele de operare pe 32 de biți (x86) și 64 de biți (x64) din familia Windows. Versiunea pe 32 de biți a fost testată pe Windows 98, Windows XP, Windows 7, în timp ce versiunea pe 64 de biți a fost testată doar pe Windows XPx64.

Programul UniUSB este scris în PureBasic (versiunea 4.31) folosind biblioteca HIDJJb de funcții definite de utilizator care acceptă lucrul cu dispozitive USB HID. Aspectul ferestrei programului este prezentat în fig. 3.

În același folder cu fișierul său executabil, ar trebui să existe un fișier numit UniUSB_KOfl.txt sau UniCOM_KOfl.txt. Ultima opțiune este necesară pentru compatibilitatea cu programul UniCOM propus în . Acest fișier stochează scriptul pentru controlul dispozitivelor externe. Când programul este pornit, datele din fișier sunt încărcate în tabelul situat în fereastra principală, iar când lucrarea este finalizată, acestea sunt salvate în fișier. Făcând clic pe butonul stâng al mouse-ului pe celulele tabelului, vă permite să schimbați starea acestora: 1 - nivel logic ridicat, 0 sau gol - nivel logic scăzut.

Pentru a adăuga sau elimina o coloană de tabel, faceți clic dreapta pe ea și selectați acțiunea necesară din meniul care apare.

Când un dispozitiv este conectat la portul USB, programul îl va detecta și va activa butonul > situat în partea de sus a ferestrei din bara de instrumente. Apăsarea acestui buton începe procesul de iterare prin coloanele tabelului și setarea stărilor ieșirilor indicate în acestea. Pentru o mai mare claritate, numărul de ieșiri care sunt setate în prezent la un nivel logic ridicat sunt evidențiate în partea stângă a tabelului. Viteza de căutare (timp în milisecunde între tranzițiile de la coloană la coloană) este setată în câmpul „Viteză, ms”.

Vă rugăm să rețineți că sistemul de operare Windows este multitasking! Aceasta înseamnă că timpul procesorului este împărțit între multe procese, uneori ascunse utilizatorului, care sunt executate pe rând, ținând cont de prioritățile stabilite în sistem. Prin urmare, nu trebuie să ne așteptăm la o mare precizie în menținerea intervalelor de timp mai mici de 100 ms.

Pentru a opri scurt defilarea coloanelor, utilizați butonul JB. Apăsând-o din nou, va continua iterația de unde s-a oprit. Butonul ■ oprește complet iterarea peste coloanele tabelului. Dacă comunicarea dintre computer și dispozitiv eșuează sau dispozitivul este deconectat de la conectorul USB al computerului, programul va raporta o eroare prin afișarea unui mesaj corespunzător în bara de stare.

Clasa 1 Clasa 2 Clasa 3 Clasa 4 Clasa 5

Un dispozitiv de control computerizat pentru diferite dispozitive, a cărui diagramă este prezentată în fig. 1 se conectează la portul USB al computerului, care se află în fiecare dintre ele astăzi. Singurul cip al dispozitivului este un microcontroler comun ATmega8. Este necesar pentru organizarea comunicării pe autobuz USB. Deși nu are un modul hardware specializat, această funcție este realizată de software.

Poza 1

Rezistorul R1, conectat între ieșirea pozitivă a sursei de alimentare și linia USB D-bus, îl pune în modul LS de viteză redusă cu o rată de schimb de 1,5 Mbps, ceea ce vă permite să decriptați mesajele computerului în mod programatic. Rezistoarele R4 și R5 elimină tranzitorii care apar în timpul schimbului de informații, ceea ce mărește stabilitatea lucrării. Condensatorul C1 blochează zgomotul de impuls în circuitul de alimentare, ceea ce îmbunătățește și stabilitatea dispozitivului.Diodele VD1 și VD2 servesc la scăderea tensiunii de alimentare a microcontrolerului la aproximativ 3,6 V - acest lucru este necesar pentru a potrivi nivelurile cu magistrala USB.

Semnalele de control al dispozitivului sunt generate la ieșirile PB0-PB5 și PC0, PC1 ale microcontrolerului. Nivel logic ridicat - tensiunea este de aproximativ 3,4 V. Tensiunea de nivel scăzut este aproape de zero. Ieșirile pot fi conectate la dispozitive care consumă un curent de cel mult 10 mA (de la fiecare ieșire). Dacă sunt necesare valori mari ale curentului sau tensiunii, atunci ar trebui utilizate noduri de potrivire.

Dispozitivul este asamblat pe o placă de prototipare, nu a fost dezvoltată o placă de circuit imprimat.Se folosesc rezistențe MLT, condensatoare C2 și C3 - condensatoare ceramice de înaltă frecvență, C1 - K50-35 sau altele similare din import. Diode de siliciu cu o cădere de tensiune pe joncțiune de aproximativ 0,7 V.

Programul pentru microcontroler a fost dezvoltat în mediu Bascom AVR versiuni 1.12.0.0. Biblioteca obișnuia să funcționeze cu magistrala USB swusb.LBX, care efectuează decodarea software în timp real a semnalelor USB. Codul programului obținut ca urmare a compilării dintr-un fișier cu extensia HEX ar trebui să fie încărcat în memoria FLASH a microcontrolerului. Starea biților de configurare a microcontrolerului trebuie să corespundă cu cea prezentată în fig. 2.

Figura 2

Prima dată când vă conectați dispozitivul la computer, sistemul de operare va detecta un nou USB HID dispozitiv compatibil numit " uniUSB" și instalați driverele necesare. În câteva secunde, dispozitivul este configurat și gata de utilizare. Programul UniUSB a fost creat pentru a funcționa cu el. Este prezentat în două versiuni: pentru 32 de biți (x86) și 64 de biți ( x64) din familia Windows. Versiunea pe 32 de biți a fost testată pe Windows 98, Windows XP, Windows 7, iar versiunea pe 64 de biți a fost testată doar pe Windows XP x64.

Program UniUSB scris în limbaj PureBasic(versiunea 4.31) folosind biblioteca de funcții definite de utilizator HID_Lib sprijinirea lucrului cu USB HID dispozitive. Aspectul ferestrei programului este prezentat în fig. 3.

Figura 3

În același folder cu fișierul său executabil, ar trebui să existe un fișier numit UniUSB_KOfl.txt. Acest fișier stochează scriptul pentru controlul dispozitivelor externe. Când programul este pornit, datele din fișier sunt încărcate în tabelul situat în fereastra principală, iar când lucrarea este finalizată, acestea sunt salvate în fișier. Făcând clic pe butonul stâng al mouse-ului pe celulele tabelului, vă permite să schimbați starea acestora: 1 - nivel logic ridicat, 0 sau gol - nivel logic scăzut.

Pentru a adăuga sau elimina o coloană de tabel, faceți clic dreapta pe ea și selectați acțiunea necesară din meniul care apare. Când conectați un dispozitiv la portul USB, programul îl va detecta și va activa butonul „Start” situat în partea de sus a ferestrei din bara de instrumente. Apăsarea acestui buton începe procesul de iterare prin coloanele tabelului și setarea stărilor ieșirilor indicate în acestea. Pentru o mai mare claritate, numărul de ieșiri care sunt setate în prezent la un nivel logic ridicat sunt evidențiate în partea stângă a tabelului. Viteza de căutare (timp în milisecunde între tranzițiile de la coloană la coloană) este setată în câmpul „Viteză, ms”.

class="eliadunit">

Vă rugăm să rețineți că sistemul de operare Windows este multitasking! Aceasta înseamnă că timpul procesorului este împărțit între multe procese, uneori ascunse utilizatorului, care sunt executate pe rând, ținând cont de prioritățile stabilite în sistem. Prin urmare, nu trebuie să ne așteptăm la o mare precizie în menținerea intervalelor de timp mai mici de 100 ms.

Pentru a opri pentru scurt timp iterarea prin coloane, utilizați butonul „Pauză”. Apăsând-o din nou, va continua iterația de unde s-a oprit. Butonul „Oprire” oprește complet iterarea peste coloanele tabelului. Dacă comunicarea dintre computer și dispozitiv eșuează sau dispozitivul este deconectat de la conectorul USB al computerului, programul va raporta o eroare prin afișarea unui mesaj corespunzător în bara de stare.

Sursa: Radio Nr. 2, 2011

Arhivă pentru articolul „Controlul încărcării prin interfață USB”
Descriere: Texte sursă ale programelor, fișier firmware microcontroler, program uniUSB
Mărime fișier: 89,3 KB Număr de descărcări: 2 773

La Habré despre controlul unei lămpi prin Internet, a venit ideea de a controla iluminarea acasă de la un computer, iar din moment ce am configurat deja controlul computerului de la un telefon mobil, asta înseamnă că lumina poate fi controlată și de pe același telefon. . După ce i-a arătat articolul unuia dintre colegii mei de muncă, a spus că are nevoie doar de el. Deoarece adoarme adesea în timp ce se uită la filme pe computer. Computerul, la ceva timp după terminarea filmului, adoarme și el și stinge monitorul, dar lumina din cameră rămâne aprinsă. Acestea. s-a hotărât că chestia a fost utilă și am început să adun informații și detalii pentru acest miracol.
Restul informatiilor sub habracut (atentie multe poze - trafic).

Diagrama dispozitivului

Pentru schema originală, a fost luată una dintre schemele găsite pe Internet și arăta astfel:

Dar doar cu o ușoară modificare: a fost adăugat un rezistor de 390 ohmi între primul pin al optocuplerului 4N25 și al doilea pin al LPT și a fost adăugat și un LED pentru a indica includerea. Circuitul a fost asamblat în modul de testare, adică doar conectat prin fire după cum este necesar și testat. În această versiune, pur și simplu a pornit și oprit vechea lanternă sovietică.
S-a decis că, dacă controlul este deja făcut, atunci nu pentru un dispozitiv, ci pentru cel puțin 4 dispozitive (pe baza: o lampă pe masă, un candelabru pentru două întrerupătoare, o priză de rezervă). În această etapă, a devenit necesară construirea unui circuit complet al dispozitivului, a început alegerea diferitelor programe.
Au fost instalate:

  1. KiCAD
  2. Vultur
După ce le-am uitat pe toate, m-am hotărât pe Eagle, deoarece în biblioteca sa erau părți „asemănătoare”. Iată ce s-a întâmplat în ea:

Diagrama folosește portul DB9, adică un port COM obișnuit, acest lucru s-a făcut din motive de economisire atât a spațiului pe placă, cât și a conectorilor înșiși (am avut conectori COM), iar din moment ce vom folosi doar 5 conductori, acest lucru ne va fi suficient cu o marjă. faceti si un adaptor de la DB25 (LPT) la DB9 (COM), in cazul meu se face in felul urmator:
LPT 2-9 pini = COM 1-8 pini - aceștia sunt pini de date de control;
LPT 18-25 pini (deseori sunt interconectați) = COM 9 pini - acesta este pământul nostru.
Circuitul folosește și o sursă de alimentare suplimentară de 12V pentru a alimenta releul, conform planului va fi un simplu încărcător chinezesc sau poate fi o coroană de 9V (un releu funcționează bine, trebuie să verificați 4 în același timp). O sursă de alimentare separată și izolație galvanică cu un optocupler sunt utilizate pentru a securiza portul computerului. Dacă doriți, puteți, desigur, să fiți alimentat de o sursă de alimentare de 12 V pentru computer, dar fiecare face asta singur și pe riscul și riscul său.

Piese necesare pentru a crea un dispozitiv
  1. Port COM - 1 buc
  2. conector de alimentare - 1 buc
  3. LED verde - 4 buc
  4. optocupler 4n25 - 4 buc
  5. un scaun pentru optocupler (am avut doar 8 picioare) - 4 buc
  6. rezistență 390 Ohm - 4 buc
  7. rezistență 4,7 kOhm - 4 buc
  8. tranzistor KT815G - 4 buc
  9. releu HJR-3FF-S-Z - 4 buc
  10. cleme pentru 3 contacte - 4 buc
  11. folie textolit

Pregătirea Schematică PCB

După ce am încercat să folosesc Eagle pentru a pregăti un PCB, mi-am dat seama că va fi puțin complicat și am decis să caut o opțiune mai ușoară. Aceasta optiune a fost programul sprint layout 5, desi este executat pentru windows, dar ruleaza fara probleme in wine sub linux. Interfața programului este intuitivă, în limba rusă, iar programul are un ajutor (ajutor) destul de clar. Prin urmare, toate acțiunile ulterioare pentru dezvoltarea plăcii de circuit imprimat au fost efectuate în aspectul sprint 5 (denumit în continuare SL5).
Deși mulți oameni folosesc acest program pentru a dezvolta plăci pentru dispozitivele lor, nu conținea părțile de care aveam nevoie (chiar și într-o grămadă de colecții de macro descărcate). Prin urmare, a trebuit mai întâi să creez părțile lipsă:
  1. Port COM (cel care nu era la fel cu al meu, conform orificiilor de montare)
  2. priza de curent
  3. clemă cu trei pini
  4. releu HJR-3FF-S-Z
Vedere a acestor părți:

După adăugarea detaliilor necesare, a început proiectarea plăcii de circuit imprimat. A fost nevoie de mai multe încercări, au fost vreo cinci. Fiecare versiune a plăcii a fost imprimată pe carton, au fost perforate găuri și au fost introduse părți în ele. De fapt, s-a aflat că portul meu COM nu se potrivește cu cel care era în SL5. A apărut și o mică eroare în circuitul releului - de fapt, carcasa releului a fost deplasată cu 2-3 mm. Desigur, toate erorile au fost corectate.
La prima versiune tipărită, s-a dovedit că tranzistorul nu a fost conectat corect, două contacte au fost amestecate.
După toate corecțiile și ajustările, placa s-a dovedit a avea următoarea formă:

SL5 are o funcție „Photoview” pentru a vizualiza placa, iată cum arată în ea:

Pe versiunea finală a plăcii, piesele vor fi modificate puțin mai mult, dar în rest arată la fel.

SL5 are și o opțiune la îndemână de imprimare a plăcii, puteți ascunde straturi inutile și puteți alege culoarea de imprimare a fiecărui strat, ceea ce este foarte util.

Pregătirea PCB

S-a decis realizarea plăcii folosind metoda LUT (tehnologia laser-iron). În plus, întregul proces în fotografie.

Tăiați o bucată de textolit de dimensiunea necesară.

Luăm cel mai mic șmirghel și curățăm cu atenție suprafața de cupru.

După curățarea suprafeței, aceasta trebuie spălată și degresată. Puteți clăti cu apă, și degresați cu acetonă (în cazul meu a fost solventul 646).
În continuare, imprimăm tabla noastră pe o imprimantă laser pe hârtie cretata, fără a uita să setăm cea mai îndrăzneață imprimare în imprimantă (fără a economisi toner). Această opțiune s-a dovedit a fi puțin nereușită, deoarece tonerul a fost mânjit, dar o altă încercare a fost corectă.

Acum trebuie să transferați desenul de pe hârtie pe textolit. Pentru a face acest lucru, tăiem desenul și îl aplicăm pe textolit, încercăm să-l aliniem după cum este necesar și apoi îl încălzim cu un fier de călcat. Este necesar să se încălzească bine întreaga suprafață, astfel încât tonerul să se topească și să se lipească de suprafața de cupru. Apoi lasam placa sa se raceasca putin si mergem sa o inmuiam sub jet de apa. Când hârtia se udă suficient, aceasta trebuie separată de tablă. Doar tonerul aderat va rămâne pe tablă. Arata cam asa:

Următorul pas este pregătirea soluției de decapare. Am folosit clorură ferică pentru asta. Pe un borcan cu clorură ferică scrie că soluția trebuie făcută 1 la 3. M-am abătut puțin de la aceasta și am făcut 60 g clorură ferică la 240 g apă, adică. a ieșit 1 la 4, în ciuda acestui lucru, gravarea plăcii a fost normală, doar puțin mai lentă. Vă rugăm să rețineți că procesul de dizolvare a clorurii ferice uscate în apă are loc cu eliberarea de căldură, așa că trebuie turnată în apă în porții mici și amestecată. Desigur, pentru gravare, este necesar să folosiți vase nemetalice, în cazul meu a fost un recipient de plastic (ca dintr-un hering). Am venit cu aceasta solutie:

Înainte de a coborî placa în soluție, am folosit bandă adezivă pentru a lipi un fir de pescuit pe reversul ei, astfel încât să fie mai convenabil să obțineți și să întoarceți placa. Dacă soluția ajunge pe mâini, trebuie să o spălați rapid cu săpun (săpunul o neutralizează), dar petele pot rămâne, totul depinde de condițiile specifice. Petele nu se îndepărtează deloc de pe haine, dar am avut norocul să nu verific asta pentru mine. Este necesar să scufundați placa în soluție cu cupru în jos și nu toată plană, ci în unghi. Din când în când, este de dorit să curățați placa de minerit, deoarece interferează cu gravarea ulterioară. Puteți face acest lucru cu tampoane de bumbac.

Întregul proces de gravare mi-a luat 45 de minute, 40 de minute ar fi fost de ajuns, dar eram doar ocupat cu încă un lucru.
După gravare, spălăm placa cu săpun, rupem banda adezivă cu firul de pescuit și obținem:

Atenţie! Nu turnați soluția de clorură ferică în chiuvetă (canal) - acest lucru poate deteriora părțile metalice ale chiuvetei și, în general, soluția poate fi totuși la îndemână.
Apoi, trebuie să spălăm tonerul, acest lucru se face cu succes cu același solvent 646 care a fost folosit pentru degresare (contactul lung al solventului cu pielea îl poate deteriora).

Următorul pas este să găuriți. Inițial, aveam găuri de 1 mm și 1,5 mm pe placă, deoarece nu am găsit burghie mai subțiri. De asemenea, nu a fost posibil să găsim în orașul nostru o mandrina de prindere pentru a o atașa la un motor electric, așa că totul a fost făcut cu un burghiu mare.

Primul aparat a sosit

Prima dată am luat doar două burghie, iar când am folosit un astfel de burghiu, acest lucru nu a fost suficient. Un burghiu s-a rupt, iar al doilea s-a îndoit. Tot ce am reușit să forez în prima zi:

A doua zi am cumpărat cinci burghie. Și au fost doar de ajuns, pentru că dacă nu se rup (apropo, doar unul dintre cele cinci s-a rupt), atunci devin tociți, iar la găurirea cu tocituri, șinele se deteriorează, cuprul începe să se desprindă. După găurirea completă a plăcii, obținem:

După găurire, placa trebuie cositorită. Pentru a face acest lucru, am folosit vechea metodă - un fier de lipit, flux TAGS și cositor. Am vrut să încerc să folosesc aliajul lui Rose, dar nu îl găsiți în orașul nostru.

După cositorizare, obținem următorul rezultat:

Apoi, trebuie să clătiți placa pentru a îndepărta reziduurile de flux, deoarece TAGS este spălarea cu apă, puteți face acest lucru fie cu apă, fie cu alcool. Am făcut ceva între ele - am spălat-o cu vodcă veche și am șters-o cu tampoane de vată. După toți acești pași, placa noastră este gata.

Piese de montare

Pentru a verifica corectitudinea plăcii, inițial colectez doar una (din patru) linie de piese, nu știi niciodată unde s-a strecurat eroarea.

După montarea pieselor, mergem și conectăm dispozitivul la computer prin LPT, pentru aceasta un adaptor de la DB25 (LPT) la DB9 (COM) este lipit sub următoarea formă:

  • DB25 cu 2 pini la DB9 cu 1 pin
  • DB25 cu 3 pini la DB9 cu 2 pini
  • DB25 cu 4 pini la DB9 cu 3 pini
  • DB25 cu 5 pini la DB9 cu 4 pini
  • DB25 cu 6 pini la DB9 cu 5 pini
  • DB25 cu 7 pini la DB9 cu 6 pini
  • DB25 cu 8 pini la DB9 cu 7 pini
  • DB25 cu 21 de pini (puteți folosi oricare de la 18 la 25) la DB9 cu 9 pini
Deoarece a fost folosită o pereche răsucită obișnuită ca fir, un fir lipsea, dar doar cinci fire sunt suficiente pentru acest dispozitiv, așa că această opțiune este potrivită. Avem o lanternă sovietică simplă ca încărcătură comutată. Ei bine, ca sursă de alimentare - o sursă de alimentare universală chineză (4 conectori și putere de la 3 la 12 V). Aici este totul asamblat:

Și acum dispozitivul funcționează:

Aceasta s-a încheiat în altă seară și montarea pieselor rămase a fost lăsată pentru a doua zi.

Și iată dispozitivul complet asamblat:

Ei bine, un scurt videoclip despre cum funcționează (calitatea nu este foarte bună, nu a fost nimic de filmat normal)

Atâta tot, rămâne doar să găsim o carcasă normală pentru dispozitiv și să o punem în funcțiune.

Partea software

Desigur, este nevoie de ceva software pentru a controla portul LPT, dar din moment ce am Linux acasă, s-a decis să scriu eu cel mai simplu program, apoi să îl adaug și să îl adaptez după cum este necesar. Ea arăta cam așa:
#include
#include
#include
#include
#define BASE 0x378
#definiți TIME 100000
int main()
{
int x = 0x0F;
int y = 0x00;
dacă (ioperm (BAZĂ, 1, 1))
{
perror("ioperm()");
ieșire (77);
}
outb(x, BAZĂ);
returnează 0;
}

Acest program trimite portul 0x0F = 00001111 la LPT, adică. furnizează 1 la pinii 2-5 (Data0-Data3), iar aceasta este tensiunea noastră de control între pinii 2-5 și masă (18-25 pini), astfel încât toate cele patru relee se vor porni. Programul funcționează în același mod pentru a trimite 0x00 la portul pentru dezactivare, doar în loc de x, y este trimis - outb (y, BASE). Puteți citi și starea portului:
#define BASEPORT 0x378 /* lp1 */
...
printf("stare: %d\n", inb(BASEPORT));
...

Singura avertizare a acestui program este că trebuie să fie rulat ca root, deoarece funcția ioperm nu este disponibilă pentru un simplu utilizator. Cred că nu poți spune cum să rezolvi o astfel de problemă, toată lumea va alege o opțiune mai potrivită pentru el.

Ulterior, programul a fost finalizat astfel încât prin trecerea parametrilor liniei de comandă să fie posibil să se specifice cu ce dispozitiv și ce să facă.
Ieșirea „sw --help”:
Program pentru controlul releului prin portul LPT.
Un program poate avea unul sau doi parametri.
Format parametru: sw [număr dispozitiv] [acțiune]
numărul dispozitivului - de la 1 la 8
acțiune - "on", "off", "st" - activare, dezactivare, stare
Exemplu: „sw 2 on” pentru a porni al doilea dispozitiv sau „sw --help” pentru a afișa ajutor

PS dacă cineva are nevoie de el, atunci pot încărca fișierul schematic al plăcii în sl5 și codul sursă al programului de control undeva.

Computer, unele piese, unelte, oricine poate organiza un simplu control al electrocasnicelor de pe acest calculator. Multe dispozitive folosite în viața de zi cu zi au multe funcții, de exemplu, majoritatea televizoarelor moderne pot afișa un număr de canale diferite, un ventilator poate. o serie de moduri diferite de operare etc. Pentru a realiza un control atât de complex, cum ar fi, de exemplu, comutarea canalelor sau a modurilor de operare, pe lângă cele de mai sus, veți avea nevoie de cunoștințe, piese și instrumente suplimentare, dar toți cei care au cele de mai sus pot face pornirea și oprirea simplă. Arduino comunică cu computerul prin portul USB, transferul de informații de la computer la Arduino se poate face prin mediul de dezvoltare pentru Arduino (numit Arduino IDE) care poate fi descărcat de pe pagina de pe site-ul oficial Arduino. Există multe module diferite pentru ca Arduino să interacționeze cu lumea exterioară, de exemplu, un modul special cu un bloc de relee pentru comutarea sarcinilor, utilizarea unor astfel de module simplifică foarte mult munca, aici vom lua în considerare producția independentă a unui modul cu un releu pentru pornirea/oprirea aparatelor de uz casnic, dacă este necesar, puteți face mai mult de un astfel de module și le puteți utiliza cu un singur Arduino, făcând astfel posibilă controlul cu ușurință a multor aparate electrocasnice. Arduino (oricare) are un număr de pini de uz general care sunt desemnați, pe placă, pur și simplu prin numere sau numere cu un semn ondulat „~”. Conectând Arduino la un computer și scriind o schiță specială (program pentru Arduino) în el (în Arduino), puteți controla acești pini de pe acest computer prin programul „Arduino IDE” făcându-i la tensiune înaltă (aproximativ + 5V (HIGH) ) sau scăzut (aproximativ 0V). (LOW)). Tot pe Arduino există un pin „GND” (este marcat pe placă). Dacă există o tensiune înaltă pe una dintre ieșirile de uz general, atunci prin conectarea unui curent conducător între această ieșire și ieșirea „GND”, un curent electric va curge prin ceea ce este conectat, iar valoarea acestui curent va depinde de rezistența acestui obiect și poate fi calculată prin, adică cu cât rezistența este mai mică, cu atât curentul este mai mare, dar dacă rezistența este prea mică, prea mult curent va trece prin Arduino și acesta se va arde. Curentul maxim pe care îl poate produce ieșirea de uz general a Arduino poate varia în funcție de microcontrolerul utilizat în acesta, dar de obicei este de 40mA = 0,04A - acesta poate să nu fie suficient pentru a porni releul care va porni dispozitivul (dispozitivele), așa că trebuie să utilizați unul suplimentar pentru a amplifica elementul curent, cum ar fi un tranzistor bipolar. Un tranzistor bipolar are trei terminale: emițător, colector, bază. Curentul maxim al tranzistorului este, de asemenea, limitat ca cel al Arduino și este de obicei mai mare, de exemplu, popularul KT315 are un curent maxim de 100mA = 0,1A. Tranzistoarele bipolare sunt de două tipuri n-p-n și p-n-p, puteți folosi ambele tipuri, dar în moduri diferite, iar apoi vom lua în considerare utilizarea unui tranzistor KT315 al cărui tip este n-p-n. Pentru ca tranzistorul să amplifice curentul de la Arduino, este necesar să-și conecteze baza la ieșirea lui Arduino PRIN UN REZISTOR cu o rezistență de 1kOhm (se poate scrie pe rezistența 1k), emițătorul acestui tranzistor este conectat. la „GND” al Arduino și minusul sursei de alimentare sau „GND” al sursei de alimentare, a cărei tensiune egală cu tensiunea înfășurării releului existent (să spunem 12V) conectați unul dintre bornele înfășurării releului la colectorul tranzistorului, celălalt cu plusul sursei de alimentare (+12V este acceptabil) și încă unul care nu afectează câștigul, dar un detaliu FOARTE important este o diodă care trebuie conectată cu un anod la colector și o sursă de alimentare catod la plus (+12V). Dacă dioda este importată, atunci cel mai probabil va exista o bandă luminoasă pe carcasa ei - indică catodul, celălalt terminal al diodei este anodul. Ieșirile releului rămase sunt ieșirile contactelor sale, dacă există două dintre ele și nu sunt închise, atunci când se aplică suficient curent înfășurării releului, aceste contacte se vor închide, ele trebuie conectate în serie cu dispozitivul și aceasta. conexiunea serială poate fi conectată la o priză, apoi când contactele sunt închise, dispozitivul va primi 220V și se va porni. Cele de mai sus pot fi arătate în imagine:

Figura 1 - Controlul instrumentului de la un computer


Aceasta este o schemă non-standard pentru o mai bună înțelegere, de obicei sunt utilizate următoarele scheme:

Figura 2 - Controlul dispozitivului de la un computer


Deși în această schemă există și o desemnare non-standard a plăcii Arduino. Figura indică Arduino UNO (poate fi comandat de la acest link http://ali.pub/1v22bh) dar puteți folosi oricare altul. Conexiunile se pot face, de exemplu, pe o placă și fire sau lipire. După ce totul este conectat și verificat corect, puteți conecta Arduino prin USB la computer și puteți încărca schița pe acesta:

Char pc_code=0;

Void setup()
{
pinMode(2, IEȘIRE);
Serial.begin(9600);
}

Buclă goală ()
{
if(Serial.available() > 0)
{
pc_code = Serial.read();
if(pc_code=="a")
{
digitalWrite(2, HIGH);
}
else if(pc_code=="b")
{
digitalWrite(2, LOW);
}
}
}

Cum să configurați corect Arduino și să încărcați o schiță pe acesta este deja descris pe pagină. Apoi, pentru a porni dispozitivul, trebuie să trimiteți simbolul „a” la Arduino, pentru a opri simbolul „b”. Pentru a trimite un simbol către arduino, puteți, în Arduino IDE, să mergeți la fila Tools-Serial Monitor și în fereastra care apare în câmpul de text superior să introduceți simbolurile și să trimiteți apăsând butonul „trimite”, simbolul va veni la arduino și pentru acest caz dacă trimiteți simbolul „a” atunci dispozitivul se va porni, dacă „b” se va opri în consecință. Dacă Arduino nu acceptă caractere, atunci trebuie să setați aceeași viteză în colțul din dreapta jos al ferestrei de monitorizare a portului serial, așa cum este specificat în schiță, de exemplu. 9600 baud Pentru a include 2 dispozitive, puteți modifica ușor schița:

Char pc_code=0;

Void setup()
{
pinMode(2, IEȘIRE);
pinMode(3, OUTPUT);
Serial.begin(9600);
}

Buclă goală ()
{
if(Serial.available() > 0)
{
pc_code = Serial.read();
if(pc_code=="a")
{
digitalWrite(2, HIGH);
}
else if(pc_code=="b")
{
digitalWrite(2, LOW);
}
else if(pc_code=="c")
{
digitalWrite(3, HIGH);
}
else if(pc_code=="d")
{
digitalWrite(3, LOW);

Top articole similare